可观测数据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
我们可以用拉格朗日函数来求偏导,从而得到参数的值。