一、概述
假设有如下数据:
X:observed data
Z:unobserved data(latent variable)
(X,Z):complete data
θ:parameter
EM算法的目的是解决具有隐变量的参数估计(MLE、MAP)问题。EM算法是一种迭代更新的算法,其计算公式为:
θt+1=Ez∣x,θt[logp(x,z∣θ)]=θargmax∫zlogp(x,z∣θ)⋅p(z∣x,θt)dz
这个公式包含了迭代的两步:
①E step:计算p(x,z∣θ)在概率分布p(z∣x,θt)下的期望
②S step:计算使这个期望最大化的参数得到下一个EM步骤的输入
二、EM的算法收敛性
现在要证明迭代求得的θt序列会使得对应的p(x∣θt)是单调递增的,也就是说要证明p(x∣θt)≤p(x∣θt+1)。首先我们有:
logp(x∣θ)=logp(x,z∣θ)−logp(z∣x,θ)
接下来等式两边同时求关于p(z∣x,θt)的期望:
左边=∫zp(z∣x,θt)⋅logp(x∣θ)dz=logp(x∣θ)∫zp(z∣x,θt)dz=logp(x∣θ)右边=Q(θ,θt)∫zp(z∣x,θt)⋅p(x,z∣θ)dz−H(θ,θt)∫zp(z∣x,θt)⋅logp(z∣x,θ)dz因此有logp(x∣θ)=∫zp(z∣x,θt)⋅p(x,z∣θ)dz−∫zp(z∣x,θt)⋅logp(z∣x,θ)dz
这里我们定义了Q(θ,θt),称为Q函数(Q function),这个函数也就是上面的概述中迭代公式里用到的函数,因此满足Q(θt+1,θt)≥Q(θt,θt)。
接下来将上面的等式两边θ分别取θt和θt+1并相减:
logp(x∣θt+1)−logp(x∣θt)=[Q(θt+1,θt)−Q(θt,θt)]−[H(θt+1,θt)−H(θt,θt)]
我们需要证明logp(x∣θt+1)−logp(x∣θt)≥0,同时已知Q(θt+1,θt)−Q(θt,θt)≥0,现在来观察H(θt+1,θt)−H(θt,θt):
H(θt+1,θt)−H(θt,θt)=∫zp(z∣x,θt)⋅logp(z∣x,θt+1)dz−∫zp(z∣x,θt)⋅logp(z∣x,θt)dz=∫zp(z∣x,θt)⋅logp(z∣x,θt)p(z∣x,θt+1)dz≤log∫zp(z∣x,θt)p(z∣x,θt)p(z∣x,θt+1)dz=log∫zp(z∣x,θt+1)dz=log1=0这里应用了Jensen不等式:logj∑λjyj≥j∑λjlogyj,其中λj≥0,logj∑λj=1也可以使用KL散度来证明∫zp(z∣x,θt)⋅logp(z∣x,θt)p(z∣x,θt+1)dz≤0:两个概率分布P(x)和Q(x)的KL散度的定义为DKL(P∣∣Q)=Ex∼P[logQ(x)P(x)],KL散度是恒≥0的。因此∫zp(z∣x,θt)⋅logp(z∣x,θt)p(z∣x,θt+1)dz=−KL(p(z∣x,θt)∣∣p(z∣x,θt+1))≤0
因此得证logp(x∣θt+1)−logp(x∣θt)≥0。这说明使用EM算法迭代更新参数可以使得logp(x∣θ)逐步增大。
另外还有其他定理保证了EM的算法收敛性。首先对于θi(i=1,2,⋯)序列和其对应的对数似然序列L(θt)=logp(x∣θt)(t=1,2,⋯)有如下定理:
①如果p(x∣θ)有上界,则L(θt)=logp(x∣θt)收敛到某一值L∗;
②在函数Q(θ,θ′)与L(θ)满足一定条件下,由EM算法得到的参数估计序列θt的收敛值θ∗是L(θ)的稳定点。
三、EM的算法的导出
- ELBO+KL散度的方法
logp(x∣θ)=logp(x,z∣θ)−logp(z∣x,θ)=logq(z)p(x,z∣θ)−logq(z)p(z∣x,θ)q(z)=0以上引入一个关于z的概率分布q(z),然后式子两边同时求对q(z)的期望左边=∫zq(z)⋅logp(x∣θ)dz=logp(x∣θ)∫zq(z)dz=logp(x∣θ)右边=ELBO(evidencelowerbound)∫zq(z)logq(z)p(x,z∣θ)dzKL(q(z)∣∣p(z∣x,θ))−∫zq(z)logq(z)p(z∣x,θ)dz
因此我们得出logp(x∣θ)=ELBO+KL(q∣∣p),由于KL散度恒≥0,因此logp(x∣θ)≥ELBO,则ELBO就是似然函数logp(x∣θ)的下界。
使得logp(x∣θ)=ELBO时,就必须有KL(q∣∣p)=0,也就是q(z)=p(z∣x,θ)时。
在每次迭代中我们取q(z)=p(z∣x,θt),就可以保证logp(x∣θt)与ELBO相等,也就是:
logp(x∣θ)=ELBO∫zp(z∣x,θt)logp(z∣x,θt)p(x,z∣θ)dzKL(p(z∣x,θt)∣∣p(z∣x,θ))−∫zp(z∣x,θt)logp(z∣x,θt)p(z∣x,θ)dz当θ=θt时,logp(x∣θt)取ELBO,即logp(x∣θt)=ELBO∫zp(z∣x,θt)logp(z∣x,θt)p(x,z∣θt)dz=0−∫zp(z∣x,θt)logp(z∣x,θt)p(z∣x,θt)dz=ELBO
也就是说logp(x∣θ)与ELBO都是关于θ的函数,且满足logp(x∣θ)≥ELBO,也就是说logp(x∣θ)的图像总是在ELBO的图像的上面。对于q(z),我们取q(z)=p(z∣x,θt),这也就保证了只有在θ=θt时logp(x∣θ)与ELBO才会相等,因此使ELBO取极大值的θt+1一定能使得logp(x∣θt+1)≥logp(x∣θt)。该过程如下图所示:

然后我们观察一下取ELBO取极大值的过程:
θt+1=θargmaxELBO=θargmax∫zp(z∣x,θt)logp(z∣x,θt)p(x,z∣θ)dz=θargmax∫zp(z∣x,θt)logp(x,z∣θ)dz−与θ无关θargmax∫zp(z∣x,θt)p(z∣x,θt)dz=θargmax∫zp(z∣x,θt)logp(x,z∣θ)dz=θargmaxEz∣x,θt[logp(x,z∣θ)]
由此我们就导出了EM算法的迭代公式。
- ELBO+Jensen不等式的方法
首先要具体介绍一下Jensen不等式:对于一个凹函数 f(x)(国内外对凹凸函数的定义恰好相反,这里的凹函数指的是国外定义的凹函数),我们查看其图像如下:

t∈[0,1]c=ta+(1−t)bϕ=tf(a)+(1−t)f(b)凹函数恒有f(c)≥ϕ也就是f(ta+(1−t)b)≥tf(a)+(1−t)f(b)当t=21时有f(2a+2b)≥2f(a)+2f(b)可以理解为先求期望再求函数恒≥先求函数再求期望即f(E)≥E[f]
接下来应用Jensen不等式来导出EM算法:
logp(x∣θ)=log∫zp(x,z∣θ)dz=log∫zq(z)p(x,z∣θ)⋅q(z)dz=logEq(z)[q(z)p(x,z∣θ)]≥ELBOEq(z)[logq(z)p(x,z∣θ)]
这里应用了Jensen不等式得到了上面出现过的ELBO,这里的f(x)函数也就是log函数,显然这是一个凹函数。当logq(z)P(x,z∣θ)这个函数是一个常数时会取得等号:
q(z)p(x,z∣θ)=C⇒q(z)=Cp(x,z∣θ)⇒∫zq(z)dz=∫zC1p(x,z∣θ)dz⇒1=C1∫zp(x,z∣θ)dz⇒C=p(x∣θ)将C代入q(z)=Cp(x,z∣θ)得q(z)=p(x∣θ)p(x,z∣θ)=p(z∣x,θ)
这种方法到这里就和上面的方法一样了,总结来说就是:
logp(x∣θ)≥ELBOEq(z)[logq(z)p(x,z∣θ)]当q(z)=p(z∣x∣θ)时取等号,因此在迭代更新过程中取q(z)=p(z∣x,θt)。接下来的推导过程就和第1种方法一样了。
四、广义EM
上面介绍的EM算法属于狭义的EM算法,它是广义EM的一个特例。在上面介绍的EM算法的E步中我们假定q(z)=p(z∣x,θt),但是如果这个后验p(z∣x,θt)无法求解,那么必须使⽤采样(MCMC)或者变分推断等⽅法来近似推断这个后验。前面我们得出了以下关系:
logp(x∣θ)=∫zq(z)logq(z)p(x,z∣θ)dz−∫zq(z)logq(z)p(z∣x,θ)dz=ELBO+KL(q∣∣p)
当我们对于固定的θ,我们希望KL(q∣∣p)越小越好,这样就能使得ELBO更大:
固定θ,q^=qargminKL(q∣∣p)=qargmaxELBO
ELBO是关于q和θ的函数,写作L(q,θ)。以下是广义EM算法的基本思路:
Estep:qt+1=qargmaxL(q,θt)Mstep:θt+1=qargmaxL(qt+1,θ)
再次观察一下ELBO:
ELBO=L(q,θ)=Eq[logp(x,z)−logq]=Eq[logp(x,z)]H[q]−Eq[logq]
因此,我们看到,⼴义 EM 相当于在原来的式⼦中加⼊熵这⼀项。
五、EM的变种
EM 算法类似于坐标上升法,固定部分坐标,优化其他坐标,再⼀遍⼀遍的迭代。如果在 EM 框架中,⽆法求解z后验概率,那么需要采⽤⼀些变种的 EM 来估算这个后验:
①基于平均场的变分推断,VBEM/VEM
②基于蒙特卡洛的EM,MCEM