EM算法
首先举一个含有隐变量的例子
有三枚硬币A,B,C,首先抛A硬币,如果A正面朝上则抛B,如果A 反面朝上则抛C,我们只记录B,C硬币的结果。这个过程重复N次得到观测到的结果 Y={y1,y2,…,yN} ,现在要求计算出A,B,C正面朝上的概率分别是多少。
我们设每次抛硬币过程中,A硬币的结果为Z。因为Z是无法观测到的,我们称它为隐变量。
记
θ
={P(A),P(B),P(C)},表示模型的参数,最大似然概率为
L(θ)=logp(Y|θ)=log∑Zp(Y,Z|θ)
由于存在隐变量,无法直接采用最大似然估计算出硬币出现正面的概率。
假设第i步求出
θ(i)
,那么下一步求出的
θ
要满足
L(θ)>L(θ(i))
,只有这样才有可能求出最优解
L(θ)−L(θ(i))=log∑Zp(Y,Z|θ)−logp(Y|θ(i))=log∑Zp(Y,Z|θ)p(Y|θ(i))=log∑Zp(Z|Y,θ(i))p(Y,Z|θ)p(Z|Y,θ(i))p(Y|θ(i))≥∑Zp(Z|Y,θ(i))logp(Y,Z|θ)p(Z|Y,θ(i))p(Y|θ(i))
上式的不等号可由琴森不等式得到,对于凸函数f(x)可以得到如下不等式
f(∑i=1Nλixi)≥∑i=1Nλif(xi)
其中 ∑Ni=1λi=1
所以
L(θ)≥L(θ(i))+∑Zp(Z|Y,θ(i))logp(Y,Z|θ)p(Z|Y,θ(i))p(Y|θ(i))
想要使 L(θ) 最大,那么其下限必须要取最大,问题转化为最大化似然函数的下限。
θ=argmaxθ(L(θ(i))+∑Zp(Z|Y,θ(i))logp(Y,Z|θ)p(Z|Y,θ(i))p(Y|θ(i)))=argmaxθ∑Zp(Z|Y,θ(i))logp(Y,Z|θ)
记
Q(θ,θ(i))=∑Zp(Z|Y,θ(i))logp(Y,Z|θ)
所以期望最大算法可以表示为:
初始化 θ(0) (对初值敏感)
E步
求出期望 Q(θ,θ(i))=∑Zp(Z|Y,θ(i))logp(Y,Z|θ)
M步
最大化Q函数,求出 θ(i+1)
上述两步不但迭代,直到 θ 发生很小的变化为止。
从上面的推到过程中可以看到,我们是在求Q函数的最大化,求出来的值只是似然函数的下限,因此EM算法找的是局部最优解