EM算法——一步步推導

可觀測數據Y,不可觀測數據Z,模型參數爲 Θ ,那麼我們的目標就是(極大似然函數):

maxΘi=1mp(xi;Θ)

log似然函數:

maxΘi=1mlogp(xi;Θ)

加入隱變量:

maxΘi=1mlogzip(xi,zi;Θ)

L(Θ)=i=1mlogzip(xi,zi;Θ)

其實到這裏,我們可以嘗試對似然函數求偏導,令其爲0,求解參數,但是發現這個函數由於和的對數的存在,變得無法求解。

所以事實上,EM算法是通過迭代逐步近似極大化 L(Θ) 的。我們可以對式子做一些變換。

L(Θ)=i=1mlogziQ(zi)p(xi,zi;Θ)Q(zi)

其中 Q(zi) 爲隱變量的概率分佈。

這裏插入一點凹函數的性質,如果一個函數f(x)的二階導數f」(x) >= 0, 那麼:

f(E[x])E[f(x)]

凹函數

如果f」(x) > 0,那麼該凹函數爲嚴格凹函數,那麼等號成立當且僅當x爲常數, 或者說 p( x = E[x] ) = 1。

ziQ(zi)p(xi,zi;Θ)Q(zi) 可以看做是在求期望,並且函數logx的二階導數爲-1/x^2 < 0, 所以爲嚴格凹函數,所以:

L(Θ)=i=1mlogziQ(zi)p(xi,zi;Θ)Q(zi)=i=1mlogE[p(xi,zi;Θ)Q(zi)]i=1mE[logp(xi,zi;Θ)Q(zi)]=i=1mQ(zi)logp(xi,zi;Θ)Q(zi)

爲了讓上面嚴格凸函數的等號成立,也就是爲了讓 L(Θ) 的下界緊貼,我們令

p(xi,zi;Θ)Q(zi)=c

其中c爲常數.
而且

Q(zi)=p(xi,zi;Θ)zip(xi,z;Θ)=p(xi,zi;Θ)p(xi;Θ)=p(zi;xi,Θ)

所以EM算法,先隨機初始化參數 Θ

E-step:

Q(zi)=p(zi;xi,Θ)

M-step:

Θ=argmaxΘi=1mQ(zi)logp(xi,zi;Θ)Q(zi)

所以EM算法是一個不斷更新下界,不斷最大化下界的過程。

EM

具體在M-step我們還有個約束

i=1KQ(zi)=1

我們可以用拉格朗日函數來求偏導,從而得到參數的值。