EM算法簡述
EM算法是一種迭代算法,主要用於含有隱變量的概率模型參數的極大似然估計,或極大后驗概率估計。EM算法的每次迭代由兩步完成:
E步,求期望
M步,求極大。
EM算法的引入
如果概率模型的變量都是觀測變量,那么給定數據,可以直接用極大似然估計法或貝葉斯估計法估計模型參數,但是當模型中含有隱變量時,就不能簡單地使用這些估計方法。因此提出了EM算法。
EM算法流程
假定集合
由觀測數據
和未觀測數據
組成,
和
分別稱為不完整數據和完整數據。假設Z的聯合概率密度被參數化地定義為
,其中
表示要被估計的參數。
的最大似然估計是求不完整數據的對數似然函數
的最大值而得到的:
EM算法包括兩個步驟:由E步和M步組成,它是通過迭代地最大化完整數據的對數似然函數
的期望來最大化不完整數據的對數似然函數,其中:
假設在算法第t次迭代后
獲得的估計記為
,則在(t+1)次迭代時,E-步:計算完整數據的對數似然函數的期望,記為:
M-步:通過最大化
來獲得新的
。通過交替使用這兩個步驟,EM算法逐步改進模型的參數,使參數和訓練樣本的似然概率逐漸增大,最后終止於一個極大點。
直觀地理解EM算法,它也可被看作為一個逐次逼近算法:事先並不知道模型的參數,可以隨機的選擇一套參數或者事先粗略地給定某個初始參數,確定出對應於這組參數的最可能的狀態,計算每個訓練樣本的可能結果的概率,在當前的狀態下再由樣本對參數修正,重新估計參數λ,並在新的參數下重新確定模型的狀態,這樣,通過多次的迭代,循環直至某個收斂條件滿足為止,就可以使得模型的參數逐漸逼近真實參數。
可見上述算法流程中Q()是EM算法的核心,稱為Q函數。
即完整數據的對數似然函數logP(x,y|
)關於在給定觀測數據x和當前參數
下對未觀測數據y的條件概率分布P(y|x,
)的期望稱為Q函數,![]()
EM算法的導出
我們面對一個含有隱變量的概率模型,目標是極大化觀測數據(不完全數據)x關於參數
的對數似然函數,即極大化
L(
)=logP(x|
)=logΣyP(X,y|
)=log(ΣyP(X|y,
)P(y|
))
注意到這一極大化主要困難是式中有未觀測數據並有包含和(或積分)的對數
示例
給定樣本T = {X1, X2, …, Xm},現在想給每個Xi一個Zi,即標出: {(X1,Z1), (X2,Z2),…,(Xm,Zm)}(z是隱形變量,zi=j可以看成是Xi被划分為j類),求對T的最大似然估計:

其實Zi也是個向量,因為對於每一個Xi,都有多種分類的情況。設第i個樣本Xi在Z上的概率分布為Qi(Zi),即Qi(Zi=j)表示Xi被划分到類j的概率,因此有ΣQi(Zi) = 1。

(2)到(3)是利用Jensen不等式,因為log(x)為凹函數,且
這個就是p(xi, zi; θ)/Qi(zi)的期望。
現在,根據Jensen不等式取等號的條件:

因為這個式子對於Zi等於任何值時都成立,且有ΣQi(Zi) = 1,所以可以認為:Σp(xi, zi;θ) = c。此時可以推出:

式子中,Zi是自變量,若θ已知,則可計算出Qi(zi)。
至此,終於可以描述算法過程了:
1)給θ一個初始值;
2)固定當前的θ,讓不等式(3)取等號,算出Qi(zi);-------> E 步
3)將2)算出的Qi(zi)代入g(Q, θ) =
,並極大化g(Q,θ),得到新的θ。-------------->M步
4)循環迭代2)、3)至收斂。
證明EM算法收斂
當θ取到θt值時,求得
那么可得如下不等式:

(10)=>(11)是因為Jensen不等式,因為等號成立的條件是θ為θt的時候得到的
,而現在
中的θ值為θt+1,所以等號不一定成立,除非θt+1=θt,
(11)=>(12)是因為θt+1已經使得
取得最大值,那必然不會小於(12)式。
所以l(θ)在迭代下是單調遞增的,且很容易看出l(θ)是有上界的(單調有界收斂),則EM算法收斂性得證。
EM算法E步說明
上述EM算法描述,主要是參考Andrew NG教授的講義,如果看過李航老師的《統計方法學》,會發現里面的證明以及描述表明上有些許不同,Andrew NG教授的講義的說明(如上述)將隱藏變量的作用更好的體現出來,更直觀,證明也更簡單,而《統計方法學》中則將迭代之間θ的變化羅列的更為明確,也更加准確的描述了EM算法字面上的意思:每次迭代包含兩步:E步,求期望;M步,求極大化。下面列出《統計方法學》書中的EM算法,與上述略有不同:
EM算法(2):
選取初始值θ0初始化θ,t=0
Repeat {
E步:
M步:
}直到收斂
(13)式中,Y={y1,y2,...,ym},Z={z1,z2,...,zm},不難看出將(9)式中兩個Σ對換,就可以得出(13)式,而(13)式即是關於分布z的一個期望值,而需要求這個期望公式,那么要求出所有的EM算法(1)中E步的值,所以兩個表明看起來不同的EM算法描述其實是一樣的。
總結:EM算法就是通過迭代地最大化完整數據的對數似然函數的期望,來最大化不完整數據的對數似然函數。
參考文獻:
1.《統計學習方法》
2. http://blog.csdn.net/hechenghai/article/details/41896213
3.https://baike.baidu.com/item/em%E7%AE%97%E6%B3%95/1866163?fr=aladdin


