EM算法总结
https://applenob.github.io/em.html
EM算法总结
在概率模型中,最常用的模型参数估计方法应该就是最大似然法。
EM算法本质上也是最大似然,它是针对模型中存在隐变量的情况的最大似然。
下面通过两个例子引入。
没有隐变量的硬币模型
假设有两个硬币,AA和BB,这两个硬币具体材质未知,即抛硬币的结果是head的概率不一定是50%。
在这个实验中,我们每次拿其中一个硬币,抛10次,统计结果。
实验的目标是统计AA和BB的head朝上的概率,即估计θ̂ Aθ^A和θ̂ Bθ^B。
对每一枚硬币来说,使用极大似然法来估计它的参数:
假设硬币AA正面朝上的次数是nAhnhA,反面朝上的次数是:nAtntA。
似然函数:L(θA)=(θA)nAh(1−θA)nAtL(θA)=(θA)nhA(1−θA)ntA。
对数似然函数:logL(θA)=nAh⋅log(θA)+nAt⋅log(1−θA)logL(θA)=nhA⋅log(θA)+ntA⋅log(1−θA)。
θ̂ A=argmaxθAlogL(θA)θ^A=argmaxθAlogL(θA) 。
对参数求偏导:∂logL(θA)∂θA=nAhθA−nAt1−θA∂logL(θA)∂θA=nhAθA−ntA1−θA。
令上式为00,解得:θ̂ A=nAhnAh+nAtθ^A=nhAnhA+ntA。
即θ̂ A=numberofheadsusingcoinAtotalnumberofflipsusingcoinAθ^A=numberofheadsusingcoinAtotalnumberofflipsusingcoinA。
有隐变量的硬币模型
这个问题是上一个问题的困难版,即给出一系列统计的实验,但不告诉你某组实验采用的是哪枚硬币,即某组实验采用哪枚硬币成了一个隐变量。
这里引入EM算法的思路:
- 1.先随机给出模型参数的估计,以初始化模型参数。
- 2.根据之前模型参数的估计,和观测数据,计算隐变量的分布。
- 3.根据隐变量的分布,求联合分布的对数关于隐变量分布的期望。
- 4.重新估计模型参数,这次最大化的不是似然函数,而是第3步求的期望。
一般教科书会把EM算法分成两步:E步和M步,即求期望和最大化期望。
E步对应上面2,3;M对应4。
EM算法
输入:观测变量数据YY,隐变量数据ZZ,联合分布P(Y,Z|θ)P(Y,Z|θ),条件分布P(Z|Y,θ)P(Z|Y,θ);
输出:模型参数θθ。
- 1.选择参数的初始值θ(0)θ(0),开始迭代;
- 在第i+1i+1次迭代:
- 2.E步:Q(θ,θ(i))=∑zlogP(Y,Z|θ)P(Z|Y,θ(i))Q(θ,θ(i))=∑zlogP(Y,Z|θ)P(Z|Y,θ(i))
- 3.M步:Q(i+1)=argmaxθQ(θ,θ(i))Q(i+1)=argmaxθQ(θ,θ(i))
- 4.重复2,3直至收敛。