EM算法原理總結

    EM算法也稱指望最大化(Expectation-Maximum,簡稱EM)算法,它是一個基礎算法,是不少機器學習領域算法的基礎,好比隱式馬爾科夫算法(HMM), LDA主題模型的變分推斷等等。本文就對EM算法的原理作一個總結。html

1. EM算法要解決的問題

    咱們常常會從樣本觀察數據中,找出樣本的模型參數。 最經常使用的方法就是極大化模型分佈的對數似然函數。算法

    可是在一些狀況下,咱們獲得的觀察數據有未觀察到的隱含數據,此時咱們未知的有隱含數據和模型參數,於是沒法直接用極大化對數似然函數獲得模型分佈的參數。怎麼辦呢?這就是EM算法能夠派上用場的地方了。機器學習

    EM算法解決這個的思路是使用啓發式的迭代方法,既然咱們沒法直接求出模型分佈參數,那麼咱們能夠先猜測隱含數據(EM算法的E步),接着基於觀察數據和猜想的隱含數據一塊兒來極大化對數似然,求解咱們的模型參數(EM算法的M步)。因爲咱們以前的隱藏數據是猜想的,因此此時獲得的模型參數通常還不是咱們想要的結果。不過不要緊,咱們基於當前獲得的模型參數,繼續猜想隱含數據(EM算法的E步),而後繼續極大化對數似然,求解咱們的模型參數(EM算法的M步)。以此類推,不斷的迭代下去,直到模型分佈參數基本無變化,算法收斂,找到合適的模型參數。函數

    從上面的描述能夠看出,EM算法是迭代求解最大值的算法,同時算法在每一次迭代時分爲兩步,E步和M步。一輪輪迭代更新隱含數據和模型分佈參數,直到收斂,即獲得咱們須要的模型參數。學習

    一個最直觀瞭解EM算法思路的是K-Means算法,見以前寫的K-Means聚類算法原理。在K-Means聚類時,每一個聚類簇的質心是隱含數據。咱們會假設$K$個初始化質心,即EM算法的E步;而後計算獲得每一個樣本最近的質心,並把樣本聚類到最近的這個質心,即EM算法的M步。重複這個E步和M步,直到質心再也不變化爲止,這樣就完成了K-Means聚類。優化

    固然,K-Means算法是比較簡單的,實際中的問題每每沒有這麼簡單。上面對EM算法的描述還很粗糙,咱們須要用數學的語言精準描述。htm

2. EM算法的推導

    對於$m$個樣本觀察數據$x=(x^{(1)},x^{(2)},...x^{(m)})$中,找出樣本的模型參數$\theta$, 極大化模型分佈的對數似然函數以下:$$\theta = arg \max \limits_{\theta}\sum\limits_{i=1}^m logP(x^{(i)};\theta)$$blog

    若是咱們獲得的觀察數據有未觀察到的隱含數據$z=(z^{(1)},z^{(2)},...z^{(m)})$,此時咱們的極大化模型分佈的對數似然函數以下:$$\theta = arg \max \limits_{\theta}\sum\limits_{i=1}^m logP(x^{(i)};\theta) = arg \max \limits_{\theta}\sum\limits_{i=1}^m log\sum\limits_{z^{(i)}}P(x^{(i)}, z^{(i)};\theta) $$get

    上面這個式子是沒有 辦法直接求出$\theta$的。所以須要一些特殊的技巧,咱們首先對這個式子進行縮放以下:$$\begin{align} \sum\limits_{i=1}^m log\sum\limits_{z^{(i)}}P(x^{(i)}, z^{(i)};\theta)   & = \sum\limits_{i=1}^m log\sum\limits_{z^{(i)}}Q_i(z^{(i)})\frac{P(x^{(i)}, z^{(i)};\theta)}{Q_i(z^{(i)})} \\ & \geq  \sum\limits_{i=1}^m \sum\limits_{z^{(i)}}Q_i(z^{(i)})log\frac{P(x^{(i)}, z^{(i)};\theta)}{Q_i(z^{(i)})} \end{align}$$數學

    上面第(1)式引入了一個未知的新的分佈$Q_i(z^{(i)})$,第(2)式用到了Jensen不等式:$$log\sum\limits_j\lambda_jy_j \geq \sum\limits_j\lambda_jlogy_j\;\;,  \lambda_j \geq 0, \sum\limits_j\lambda_j =1$$

    或者說因爲對數函數是凹函數,因此有:$$f(E(x)) \geq E(f(x))\;\; 若是f(x) 是凹函數$$

    此時若是要知足Jensen不等式的等號,則有:$$\frac{P(x^{(i)}, z^{(i)};\theta)}{Q_i(z^{(i)})} =c, c爲常數$$

    因爲$Q_i(z^{(i)})$是一個分佈,因此知足:$$ \sum\limits_{z}Q_i(z^{(i)}) =1 $$

    從上面兩式,咱們能夠獲得:$$Q_i(z^{(i)})  = \frac{P(x^{(i)}, z^{(i)};\theta)}{\sum\limits_{z}P(x^{(i)}, z^{(i)};\theta)} =  \frac{P(x^{(i)}, z^{(i)};\theta)}{P(x^{(i)};\theta)} = P( z^{(i)}|x^{(i)};\theta))$$

    若是$Q_i(z^{(i)}) = P( z^{(i)}|x^{(i)};\theta)) $, 則第(2)式是咱們的包含隱藏數據的對數似然的一個下界。若是咱們能極大化這個下界,則也在嘗試極大化咱們的對數似然。即咱們須要最大化下式:$$ arg \max \limits_{\theta} \sum\limits_{i=1}^m \sum\limits_{z^{(i)}}Q_i(z^{(i)})log\frac{P(x^{(i)}, z^{(i)};\theta)}{Q_i(z^{(i)})}$$

    去掉上式中爲常數的部分,則咱們須要極大化的對數似然下界爲:$$ arg \max \limits_{\theta} \sum\limits_{i=1}^m \sum\limits_{z^{(i)}}Q_i(z^{(i)})log{P(x^{(i)}, z^{(i)};\theta)}$$

    上式也就是咱們的EM算法的M步,那E步呢?注意到上式中$Q_i(z^{(i)})$是一個分佈,所以$\sum\limits_{z^{(i)}}Q_i(z^{(i)})log{P(x^{(i)}, z^{(i)};\theta)}$能夠理解爲$logP(x^{(i)}, z^{(i)};\theta)$基於條件機率分佈$Q_i(z^{(i)})$的指望。

    至此,咱們理解了EM算法中E步和M步的具體數學含義。

3. EM算法流程

    如今咱們總結下EM算法的流程。

    輸入:觀察數據$x=(x^{(1)},x^{(2)},...x^{(m)})$,聯合分佈$p(x,z ;\theta)$, 條件分佈$p(z|x; \theta)$, 最大迭代次數$J$。

    1) 隨機初始化模型參數$\theta$的初值$\theta^{0}$。

    2) for j  from 1 to J開始EM算法迭代:

      a) E步:計算聯合分佈的條件機率指望:$$Q_i(z^{(i)}) = P( z^{(i)}|x^{(i)},\theta^{j})) $$$$L(\theta, \theta^{j}) = \sum\limits_{i=1}^m\sum\limits_{z^{(i)}}Q_i(z^{(i)})log{P(x^{(i)}, z^{(i)};\theta)}$$

      b) M步:極大化$L(\theta, \theta^{j})$,獲得$\theta^{j+1}$: $$\theta^{j+1} = arg \max \limits_{\theta}L(\theta, \theta^{j}) $$

      c) 若是$\theta^{j+1}$已收斂,則算法結束。不然繼續回到步驟a)進行E步迭代。

    輸出:模型參數$\theta$。

4. EM算法的收斂性思考

    EM算法的流程並不複雜,可是還有兩個問題須要咱們思考:

    1) EM算法能保證收斂嗎?

    2) EM算法若是收斂,那麼能保證收斂到全局最大值嗎?  

    首先咱們來看第一個問題, EM算法的收斂性。要證實EM算法收斂,則咱們須要證實咱們的對數似然函數的值在迭代的過程當中一直在增大。即:$$\sum\limits_{i=1}^m logP(x^{(i)};\theta^{j+1}) \geq \sum\limits_{i=1}^m logP(x^{(i)};\theta^{j})$$

    因爲$$L(\theta, \theta^{j}) = \sum\limits_{i=1}^m\sum\limits_{z^{(i)}}P( z^{(i)}|x^{(i)};\theta^{j}))log{P(x^{(i)}, z^{(i)};\theta)}$$

    令:$$H(\theta, \theta^{j}) =  \sum\limits_{i=1}^m\sum\limits_{z^{(i)}}P( z^{(i)}|x^{(i)};\theta^{j}))log{P( z^{(i)}|x^{(i)};\theta)}$$

    上兩式相減獲得:$$ \sum\limits_{i=1}^m logP(x^{(i)};\theta) = L(\theta, \theta^{j}) - H(\theta, \theta^{j})$$

    在上式中分別取$\theta$爲$\theta^j$和$\theta^{j+1}$,並相減獲得:$$\sum\limits_{i=1}^m logP(x^{(i)};\theta^{j+1})  - \sum\limits_{i=1}^m logP(x^{(i)};\theta^{j}) = [L(\theta^{j+1}, \theta^{j}) - L(\theta^{j}, \theta^{j}) ] -[H(\theta^{j+1}, \theta^{j}) - H(\theta^{j}, \theta^{j}) ] $$

    要證實EM算法的收斂性,咱們只須要證實上式的右邊是非負的便可。

    因爲$\theta^{j+1}$使得$L(\theta, \theta^{j})$極大,所以有:$$L(\theta^{j+1}, \theta^{j}) - L(\theta^{j}, \theta^{j})  \geq 0$$

    而對於第二部分,咱們有:$$ \begin{align} H(\theta^{j+1}, \theta^{j}) - H(\theta^{j}, \theta^{j})  & = \sum\limits_{i=1}^m\sum\limits_{z^{(i)}}P( z^{(i)}|x^{(i)};\theta^{j})log\frac{P( z^{(i)}|x^{(i)};\theta^{j+1})}{P( z^{(i)}|x^{(i)};\theta^j)} \\ & \leq  \sum\limits_{i=1}^mlog(\sum\limits_{z^{(i)}}P( z^{(i)}|x^{(i)};\theta^{j})\frac{P( z^{(i)}|x^{(i)};\theta^{j+1})}{P( z^{(i)}|x^{(i)};\theta^j)}) \\ & = \sum\limits_{i=1}^mlog(\sum\limits_{z^{(i)}}P( z^{(i)}|x^{(i)};\theta^{j+1})) = 0  \end{align}$$

    其中第(4)式用到了Jensen不等式,只不過和第二節的使用相反而已,第(5)式用到了機率分佈累積爲1的性質。

    至此,咱們獲得了:$\sum\limits_{i=1}^m logP(x^{(i)};\theta^{j+1})  - \sum\limits_{i=1}^m logP(x^{(i)};\theta^{j})  \geq 0$, 證實了EM算法的收斂性。

    從上面的推導能夠看出,EM算法能夠保證收斂到一個穩定點,可是卻不能保證收斂到全局的極大值點,所以它是局部最優的算法,固然,若是咱們的優化目標$L(\theta, \theta^{j}) $是凸的,則EM算法能夠保證收斂到全局最大值,這點和梯度降低法這樣的迭代算法相同。至此咱們也回答了上面提到的第二個問題。

 5. EM算法的一些思考

    若是咱們從算法思想的角度來思考EM算法,咱們能夠發現咱們的算法裏已知的是觀察數據,未知的是隱含數據和模型參數,在E步,咱們所作的事情是固定模型參數的值,優化隱含數據的分佈,而在M步,咱們所作的事情是固定隱含數據分佈,優化模型參數的值。比較下其餘的機器學習算法,其實不少算法都有相似的思想。好比SMO算法(支持向量機原理(四)SMO算法原理),座標軸降低法(Lasso迴歸算法: 座標軸降低法與最小角迴歸法小結), 都使用了相似的思想來求解問題。

    你們也能夠去比較下這些算法的優化方法,看思路上是否是有共同之處。

(歡迎轉載,轉載請註明出處。歡迎溝通交流: liujianping-ok@163.com) 

相關文章
相關標籤/搜索