EM learning

在機器學習問題中,經常需要根據採樣數據,推測其分佈。一般都要用到極大似然估計(maximum likelihood)。

比如對於一組數據{x1,x2,...,xm },假設其分佈函數是p(x|θ) ,爲了求出分佈函數的參數θ ,我們假設如果這個θ 對應的分佈函數最大,那麼此時的分佈函數就是這組數據的真實分佈。這有種從結果推測原因的感覺。p(x|θ) 中的θ 是原因,是x符合的分佈,因此我們採樣數據才能夠得到{x1,x2,...,xm }。但是現在我們爲了推測θ ,反而從觀測數據開始反推。

極大似然估計算法推測θ

θ=argmaxθp(x|θ)

但是對於比較複雜的模型,參數比較多,很難直接通過計算求出極大似然函數。所以就有了EM算法,通過迭代的方式,不斷逼近極大似然函數。

EM算法的核心公式:

l(θ)=ilogp(x(i);θ)=ilogz(i)p(x(i),z(i);θ)=ilogz(i)Q(z(i)i)p(x(i),z(i);θ)Q(z(i)i)iz(i)Q(z(i)i)logp(x(i),z(i);θ)Q(z(i)i)

上面的推導中,用到了Jensen不等式,因爲log函數是個凹函數。取等條件是p(x(i),z(i);θ)Q(z(i)i) 爲常數(關於θ )。

所以,取

Q(z(i)i)=p(x(i),z(i);θ)zp(x(i),z;θ)=p(z(i)|x(i);θ)

那麼,我們現在可以通過改變Q(z(i)i) 的取值,來逼近極大似然函數。而且我們知道,當Q(z(i)i)=p(z(i)|x(i);θ) 的時候,l(θ) 可以取得最大值。

至此,EM算法的思路已經很清晰了:

repeat until converge{
(E step) 求出每個樣本數據對應的函數

Qi(z(i)i):=p(z(i)|x(i);θ)

(M step) 求出極大似然估計參數θ

θ=argmaxθiz(i)Q(z(i)i)logp(x(i),z(i);θ)Q(z(i)i)

}

直觀地理解上面的算法流程,在每次的迭代更新中,算法都會將樣本數據代入到當前的模型中,進行計算。然後利用計算的結果更新模型。在下一次的迭代中,因爲模型被更新過了,所以在E step中利用樣本數據進行計算的結果也會發生變化。

可以證明,在不斷的迭代中,計算結果總是朝着θ 越來越接近極大似然的方向進行的(只需要證明第t+1次迭代後的似然函數比第t次迭代後的似然函數大,就可以了,即l(t+1)l(t) )。那麼,循環很多次之後,計算結果也就非常接近真實情況啦!

利用EM算法,推測GMM模型的參數

未完,待續。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章