EM算法原理簡析——圖解


一、 扯淡

轉眼間畢業快一年了,這期間混了兩份工作,從游戲開發到算法。感覺自己還是喜歡算法,可能是大學混了幾年算法吧!所以不想浪費基礎。。。

我是個懶得寫博客的人,混了幾年coding,寫的博客不超過10篇。現在參加工作,必須得改掉懶的壞習慣,以后多嘗試寫寫,好總結總結,也方便以后復習用。

二、算法

1. 前言

  1.1 EM會涉及一些數學知識,比如最大似然估計和Jensen不等式等知識,這些知識最煩了,動不動就一堆推導公式,看着就覺得蛋疼,經過它講的原理比較簡單,多以在此略過。

  1.2 本文的側重點是理解EM,試圖以“數形結合”的方式來幫助大家理解其原理。(因為博主看了很多相關的文章,大多是一堆數學公式,看了半天也不好理解,雖然感覺是這個樣子)。

2. 算法描述

  給定樣本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)至收斂。

 

3. 證明算法的收斂

  1)首先我們知道上節所提到的g(Q,θ)為最大似然函數L(θ)的下界函數,也就是說,無論Q、θ怎么變,g永遠在L下面;

  2)函數L(θ)是關於θ的函數,z是從θ抽離的隱含變量,其實它也是關於θ的函數;

  3)g(Q,θ)是關於Q、θ的函數,但我們可以看做是θ的函數,而Q只是控制函數圖像的,例如:f(x) = a*x^2 +1 ,雖然a、x都是可變的,但是為了畫圖,我們把f(x)看做x的函數。

有了以上前提,我們就能畫出它們的關系:

 

如上圖,描述了EM的迭代過程:(z代替了公式中的Q)

  1)起始狀態θ0, z0,則函數g(z,θ)看成是g_z0(θ);

  2)θ=θ0不變,讓不等式3)取等號,即z由z0變為z1,此時讓g_z1(θ) 相切於點P1,因為此時不等式取等號:L(θ0)=g_z1(θ0);--------------->E步

  3)p1不一定是g_z1的極值點,因此求得極值點M1(常規方法:求導=0);---------------->M步

  4)依據2)中的方法,再次調整z,得到函數g_z2(θ),是其於L(θ)相切於p2;------------------>E步

  5)p2不一定是函數g_z2(θ)的極值點(因為函數g的圖像改變了,g_z1->g_z2),因此再對g_z2(θ)求極值點M2;-------------------->M步

  ……

  n)迭代至g_zn(θn-1)與L(θ)區部極值點非常接近為止。

 

由以上得,EM算法可以逼近L(θ)的極值點,但可能是局部極值點,因此要改變初始值,執行多次。

EM的數學證明也很簡單,可以參照以下博客:http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006936.html

其中包含了jensen不等式的證明。

PS:個人思路,不對的地方還請指出,我會及時改進,謝謝!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM