一、前言
這是本人寫的第一篇博客,是學習李航老師的《統計學習方法》書以及斯坦福機器學習課Andrew Ng的EM算法課后,對EM算法學習的介紹性筆記,如有寫得不恰當或錯誤的地方,請指出,並多多包涵,謝謝。另外本人數學功底不是很好,有些數學公式我會說明的仔細點的,如果數學基礎好,可直接略過。
二、基礎數學知識
在正式介紹EM算法之前,先介紹推導EM算法用到的數學基礎知識,包括凸函數,Jensen不等式。
1.凸函數
對於凸函數,凹函數,如果大家學過高等數學,都應該知道,需要注意的是國內教材如同濟大學的《高等數學》的這兩個概念跟國外剛好相反,為了能更好的區別,本文章把凹凸函數稱之為上凸函數,下凸函數,具體定義如下:
上凸函數:函數f(x)滿足對定義域上任意兩個數a,b都有f[(a+b)/2] ≥ [f(a)+f(b)]/2
下凸函數:函數f(x)滿足對定義域上任意兩個數a,b都有f[(a+b)/2] ≤ [f(a)+f(b)]/2
更直觀的可以看圖2.1和2.2:

可以清楚地看到圖2.1上凸函數中,f[(a+b)/2] ≥ [f(a)+f(b)]/2,而且不難發現,如果f(x)是上凸函數,那么-f(x)是下凸函數。
當a≠b時,f[(a+b)/2] > [f(a)+f(b)]/2成立,那么稱f(x)為嚴格的上凸函數,等號成立的條件當且僅當a=b,下凸函數與其類似。
2.Jensen不等式
有了上述凸函數的定義后,我們就能很清楚的Jensen不等式的含義,它的定義如下:
如果f是上凸函數,X是隨機變量,那么f(E[X]) ≥ E[f(X)]
特別地,如果f是嚴格上凸函數,那么E[f(X)] = f(E[X])當且僅當p(X=E[X]),也就是說X是常量。
那么很明顯 log x 函數是上凸函數,可以利用這個性質。
有了上述的數學基礎知識后,我們就可以看具體的EM算法了。
三、EM算法所解決問題的例子
在推導EM算法之前,先引用《統計學習方法》中EM算法的例子:
例1. (三硬幣模型) 假設有3枚硬幣,分別記作A,B,C。這些硬幣正面出現的概率分別為π,p和q。投幣實驗如下,先投A,如果A是正面,即A=1,那么選擇投B;A=0,投C。最后,如果B或者C是正面,那么y=1;是反面,那么y=0;獨立重復n次試驗(n=10),觀測結果如下: 1,1,0,1,0,0,1,0,1,1假設只能觀測到投擲硬幣的結果,不能觀測投擲硬幣的過程。問如何估計三硬幣正面出現的概率,即π,p和q的值。
解:設隨機變量y是觀測變量,則投擲一次的概率模型為
有n次觀測數據Y,那么觀測數據Y的似然函數為
那么利用最大似然估計求解模型解,即
這里將概率模型公式和似然函數代入(1)式中,可以很輕松地推出 (1)=> (2) => (3),然后選取θ(π,p,q),使得(3)式值最大,即最大似然。然后,我們會發現因為(3)中右邊多項式+符號的存在,使得(3)直接求偏導等於0或者用梯度下降法都很難求得θ值。
這部分的難點是因為(3)多項式中+符號的存在,而這是因為這個三硬幣模型中,我們無法得知最后得結果是硬幣B還是硬幣C拋出的這個隱藏參數。那么我們把這個latent 隨機變量加入到 log-likelihood 函數中,得
略看一下,好像很復雜,其實很簡單,請容我慢慢道來。首先是公式(4),這里將zi做為隱藏變量,當z1為結果由硬幣B拋出,z2為結果由硬幣C拋出,不難發現
注:一下Q中有些許漏了下標j,但不影響理解
接下來公式說明(4)=> (5)(其中(5)中Q(z)表示的是關於z的某種分布,
),很直接,在P的分子分母同乘以Q(zi)。最后是(5)=>(6),到了這里終於用到了第二節介紹的Jensen不等式,數學好的人可以很快發現,
就是
的期望值(如果不懂,可google期望公式並理解),
且log是上凸函數,所以就可以利用Jensen不等式得出這個結論。因為我們要讓log似然函數l(θ)最大,那么這里就要使等號成立。根據Jensen不等式可得,要使等號成立,則要使
成立。
再因為
,所以得
,c為常數,那么
這里可以發現
OK,到這里,可以發現公式(6)中右邊多項式已經不含有“+”符號了,如果知道Q(z)的所有值,那么可以容易地進行最大似然估計計算,但是Q的計算需要知道θ的值。這樣的話,我們是不是可以先對θ進行人為的初始化θ0,然后計算出Q的所有值Q1(在θ0固定的情況下,可在Q1取到公式(6)的極大值),然后在對公式(6)最大似然估計,得出新的θ1值(在固定Q1的情況下,取到公式(6)的極大值),這樣又可以計算新的Q值Q1,然后依次迭代下去。答案當然是可以。因為Q1是在θ0的情況下產生的,可以調節公式(6)中θ值,使公式(6)的值再次變大,而θ值變了之后有需要調節Q使(6)等號成立,結果又變大,直到收斂(單調有界必收斂),如果到現在還不是很清楚,具體清晰更廣義的證明可以見下部分EM算法說明。
ps:看到上述的橙黃色內容,如果大家懂得F函數的極大-極大算法的話,就可以知道其實它們是一碼事。
另外對公式(6)進行求偏導等於0,求最大值,大家可以自己練習試試,應該很簡單的,這里不做過多陳述。
在《統計學習方法》書中,進行兩組具體值的計算
(1)π0=0.5, p0=0.5, q0=0.5,迭代結果為π=0.5, p=0.6, q=0.5
(2)π0=0.4, p0=0.6, q0=0.7,迭代結果為π=0.4064, p=0.5368, q=0.6432
兩組值的最后結果不相同,這說明EM算法對初始值敏感,選擇不同的初值可能會有不同的結果,只能保證參數估計收斂到穩定點。因此實際應用中常用的辦法就是選取多組初始值進行迭代計算,然后取結果最好的值。
在進行下部分內容之前,還需說明下一個東西。在上面的舉例說明后,其實可以發現上述的解決方法跟一個簡單的聚類方法很像,沒錯,它就是K-means聚類(不懂的見百度百科關於K-means算法的說明)。K-means算法先假定k個中心,然后進行最短距離聚類,之后根據聚類結果重新計算各個聚類的中心點,一次迭代,是不是很像,而且K-means也是初始值敏感,因此其實K-means算法也包含了EM算法思想,只是這邊EM算法中用P概率計算,而K-means直接用最短距離計算。所以EM算法可以用於無監督學習。在下一篇文章,我准備寫下典型的用EM算法的例子,高斯混合模型(GMM,Gaussian Mixture Model)。
四、EM算法
1.模型說明
考慮一個參數估計問題,現有
共n個訓練樣本,需有多個參數θ去擬合數據,那么這個log似然函數是:

可能因為θ中多個參數的某種關系(如上述例子中以及高斯混合模型中的3類參數),導致上面的log似然函數無法直接或者用梯度下降法求出最大值時的θ值,那么這時我們需要加入一個隱藏變量z,以達到簡化l(θ),迭代求解l(θ)極大似然估計的目的。
2.EM算法推導
這小節會對EM算法進行具體推導,許多跟上面例子的解法推導是相同的,如果已經懂了,可以加速閱讀。首先跟“三硬幣模型”一樣,加入隱變量z后,假設Q(z)是關於隱變量z的某種分布,那么有如下公式:

公式(7)是加入隱變量,(7)=>(8)是在
基礎上分子分母同乘以
,(8)=>(9)用到Jensen不等式(跟“三硬幣模型”一樣),等號成立的條件是
,c是常數。再因為
,則有如下Q的推導:
再一次重復說明,要使(9)等式成立,則
為yj,z的后驗概率。算出
后(9)就可以進行求偏導,以剃度下降法求得θ值,那么又可以計算新的
值,依次迭代,EM算法就實現了。
EM算法(1):
選取初始值θ0初始化θ,t=0
Repeat {
E步:
M步:
}直到收斂
3.EM算法收斂性證明
當θ取到θt值時,求得
那么可得如下不等式:

(10)=>(11)是因為Jensen不等式,因為等號成立的條件是θ為θt的時候得到的
,而現在
中的θ值為θt+1,所以等號不一定成立,除非θt+1=θt,
(11)=>(12)是因為θt+1已經使得
取得最大值,那必然不會小於(12)式。
所以l(θ)在迭代下是單調遞增的,且很容易看出l(θ)是有上界的(單調有界收斂),則EM算法收斂性得證。
4.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算法的基本思路就已經理清,它計算是含有隱含變量的概率模型參數估計,能使用在一些無監督的聚類方法上。在EM算法總結提出以前就有該算法思想的方法提出,例如HMM中用的Baum-Welch算法就是。
在EM算法的推導過程中,最精妙的一點就是(10)式中的分子分母同乘以隱變量的一個分布,而套上了Jensen不等式,是EM算法順利的形成。
六、主要參考文獻
[1]Rabiner L, Juang B. An introduction to hidden markov Models. IEEE ASSP Magazine, January 1986,EM算法原文
[2]http://v.163.com/special/opencourse/machinelearning.html,Andrew NG教授的公開課中的EM視頻
[3]http://cs229.stanford.edu/materials.html, Andrew NG教授的講義,非常強大,每一篇都寫的非常精煉,易懂
[4]http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006936.html, 一個將Andrew NG教授的公開課以及講義理解非常好的博客,並且我許多都是參考他的
[5]http://blog.csdn.net/abcjennifer/article/details/8170378, 一個浙大研一的女生寫的,里面的博客內容非常強大,csdn排名前300,ps:本科就開博客,唉,我的大學四年本科就給了游戲,玩,慚愧哈,導致現在啥都不懂。
[6]李航.統計學習方法.北京:清華大學出版社,2012
下節預告:高斯混合模型(GMM,Gaussian Mixture Model)及例子,大家可以看看JerryLead的http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006924.html,寫得挺好,大部分翻譯自 Andrew NG教授的講義




