EM算法
引入
在我们的概率模型中,有时观察及所要,但很多时候模型中还隐含了很多的潜在变量。对于这一类情况,我们就不能简单的直接使用极大似然等估计方法,而EM算法就是适用于含有隐变量问题的极大似然估计法。
我们以掷硬币问题为例,假设现在有两枚硬币记为 A 和 B ,两枚硬币正面朝上的概率分别记为 θA,θB 。现在我们要这两个参数的值,显然我们需要进行掷硬币实验,如果我们对于两枚硬币各进行 n 轮掷硬币实验,每轮实验进行 k 次,A硬币第 i 轮实验结果记为 {ai(1),ai(2),⋯,ai(n)} ,通过极大似然估计法,可以很容易得到:
θA=nk∑i=1n∑j=1kI(ai(k)=1)
但是考虑这样一种情况,将两枚硬币的实验混在一起,共进行 k 次 n 轮掷硬币实验, 得到 {xi(1),xi(2),⋯,xi(n)} 这样我们就不能直接使用极大似然法进行估计了。这里我们就要引入一个隐变量 Z ,代表了所使用的硬币序列 {z1,z2,⋯,zk} ,其中使用A硬币时 Z=1 ,否则 Z=0 。
为了解决这一个问题,我们考虑一个地带的方法来进行求解,首先我们为两个参数假定一个初值 θA1,θB1 ,这样我们就可以得出在这样的初值假设下两枚硬币被使用的概率
PA1=(θA1)Ni(1−θA1)Ni+(θB1)Ni(1−θB1)Ni(θA1)Ni(1−θA1)NiPB1=(θA1)Ni(1−θA1)Ni+(θB1)Ni(1−θB1)Ni(θB1)Ni(1−θB1)Ni
其中 Ni 表示第 i 轮实验中硬币正面朝上的次数。,对于 k 个概率值求均值,得到了这个概率之后,我们可以进一步用这个概率,估计得到新的参数值,重复这个过程直到参数收敛。
通过这个例子,我们来总结EM算法的过程:
对于观测变量 Y ,隐变量 Z 联合分布 P(Y,Z∣θ) ,条件分布 P(Z∣Y,θ)
- 选择参数的初值 θ(0)
- E步:记 θ(i) 为第 i 次迭代的估计值, 在第 i+1 次迭代的E步计算:
Q(θ,θ(i))=EZ[logP(Y,Z∣θ)∣Y,θ(i)]=Z∑logP(Y,Z∣θ)P(Z∣Y,θ(i))
- M步:求使 Q(θ,θ(i)) 极大化的 θ ,则:
θ(i+1)=argθmaxQ(θ,θ(i))
请注意,对于任意的初值,EM算法都可以得到收敛的结果,但是算法是对于初值是敏感的,因为EM算法的优化对象不是凸函数,会收敛到局部极值点。
算法推导
对于一个含有隐变量的概率模型,我们要通过极大化对数似然函数的方式来得到参数的估计值,即:
θ∗=argθmaxL(θ)=argθmaxlogP(Y∣θ)=argθmaxlogZ∑P(Y,Z∣θ)=argθmaxlogZ∑P(Y∣Z,θ)P(Z∣θ)
这个优化问题的难点就在于 Z 的分布是完全未知且要求一个和的对数。前面通过迭代的方式来求这个极大值,现在我们来说明迭代的方法是有效的。
假设第 i 次迭代得到的结果是 θ(i) ,那么:
L(θ)−L(θ(i))=log(Z∑P(Y∣Z,θ)P(Z∣θ))−logP(Y∣θ(i))
利用凹函数的Jensen不等式放缩得到:
L(θ)−L(θ(i))=log(Z∑P(Z∣Y,θ(i))P(Z∣Y,θ(i))P(Y∣Z,θ)P(Z∣θ))−logP(Y∣θ(i))≥Z∑P(Z∣Y,θ(i))log(P(Z∣Y,θ(i))P(Y∣Z,θ)P(Z∣θ))−logP(Y∣θ(i))=Z∑P(Z∣Y,θ(i))log(P(Z∣Y,θ(i))P(Y∣θ(i))P(Y∣Z,θ)P(Z∣θ))
令 B(θ,θ(i))=L(θ(i))+∑ZP(Z∣Y,θ(i))log(P(Z∣Y,θ(i))P(Y∣θ(i))P(Y∣Z,θ)P(Z∣θ)) ,则 B(θ(i),θ) 是对数似然函数的下界。为了实现对数似然函数的最大化,可以等价的转化为 B(θ,θ(i)) 的最大化,即:
θ(i+1)=argθmaxB(θ,θ(i))=argθmax[L(θ(i))+Z∑P(Z∣Y,θ(i))log(P(Z∣Y,θ(i))P(Y∣θ(i))P(Y∣Z,θ)P(Z∣θ))]=argθmaxZ∑P(Z∣Y,θ(i))log(P(Y∣Z,θ)P(Z∣θ))=argθmaxZ∑P(Z∣Y,θ(i))logP(Y,Z∣θ)=argθmaxQ(θ,θ(i))
不再详细对于算法的收敛性进行证明,通过前人的探索,可以知道的是,对于任意的参数初值,算法最终一定会收敛,但是EM算法仍然是初值敏感的,对于不同的初值会得到不同的收敛结果。为了得到更好的估计结果,通常可以对于初值进行随机采样,从所有的结果中选择最优项。