可觀測數據Y,不可觀測數據Z,模型參數爲
Θ
,那麼我們的目標就是(極大似然函數):
maxΘ∏i=1mp(xi;Θ)
log似然函數:
maxΘ∑i=1mlogp(xi;Θ)
加入隱變量:
maxΘ∑i=1mlog∑zip(xi,zi;Θ)
令
L(Θ)=∑i=1mlog∑zip(xi,zi;Θ)
其實到這裏,我們可以嘗試對似然函數求偏導,令其爲0,求解參數,但是發現這個函數由於和的對數的存在,變得無法求解。
所以事實上,EM算法是通過迭代逐步近似極大化
L(Θ)
的。我們可以對式子做一些變換。
L(Θ)=∑i=1mlog∑ziQ(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=1mlog∑ziQ(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算法是一個不斷更新下界,不斷最大化下界的過程。
具體在M-step我們還有個約束
∑i=1KQ(zi)=1
我們可以用拉格朗日函數來求偏導,從而得到參數的值。