EM算法
期望最大化算法,是寻找具有潜在变量地概率模型地最大似然解的一种通用的方法。下面介绍一般形式的EM算法的推导过程。
我们把所有的观测变量联合起来记作X={x1,x2,...,xN},将所有的隐含变量记作Z={z1,z2,xN}。这里只考虑Z的状态是离散值的情况,我们假设每个样本xn点由对应的隐含变量zn决定。于是对于生成式模型,我们希望模型的参数集θ能够使得p(X∣θ)的概率达到最大。因此很容易想到最大化模型的似然函数就能解出最优的参数集θ。
我们通过计算(X,Z)的联合概率密度分布计算X的边缘概率密度:
p(X∣θ)=Z∑p(X,Z∣θ)(1)
对上式使用极大似然法求解参数θ的最优解过程中,需要对左右同时取对数,观察右边部分ln∑Zp(X,Z∣θ),我们会发现对潜在变量的求和出现在了对数运算内部,这阻止了对数运算直接作用于联合概率分布,使得最大似然解的形式更加复杂。
问题的转化
后面的介绍中,我们称{X,Z}为完整的数据集,并且我们称实际观测的数据集X为不完整的,完整数据集的对数似然函数为ln p(X,Z∣θ),我们假定这个完整数据集的对数似然函数进行最大化是很容易的。
下面介绍将最大化p(X∣θ)的目标转化成最优化p(X,Z∣θ)的过程。我们引入一个定义在潜在变量上的分布q(Z),对于任意的q(Z),下面的分解式成立:
ln p(X∣θ)=L(q,θ)+KL(q∣∣p)(2)
其中,我们定义了
L(q,θ)=Z∑q(Z)ln{q(Z)p(X,Z∣θ)}KL(q∣∣p)=−Z∑q(Z)ln{q(Z)p(Z∣X,θ)}(3)
证明公式(2)
利用概率的乘积规则p(X,Z∣θ)=p(Z∣X,θ) p(X∣θ),于是ln (X,Z∣θ)=ln p(Z∣X,θ)+ln p(X∣θ),然后代入L(q,θ)的表达式。这得到了两项,一项消去了KL(q∣∣p),而另外一项给出了所需的对数似然函数ln p(X∣θ),其中我们用到了归一化的概率分布q(Z)的积分等于1的事实。
我们来观察公式(2),右边的两项都是关于变量q(Z)和模型参数集{θ}的的函数,右边的第二项表示的是KL散度KL(q,θ)是q(Z)和后验概率分布p(X,Z∣θ)之间的Kullback−Leibler散度。我们知道Kullback−Leibler散度满足KL(q,θ)≥0,当且仅当q(Z)=p(Z∣X,θ)时等号成立。因此从公式(2)中我们可以得到一个结论:L(q,θ)是ln p(X∣θ)的一个下界。因此,既然ln p(X∣θ)无法使用极大似然法得到一个解析解,那么只要找到一种方法让这个下界不断接近ln p(X∣θ),就能找到使得似然函数p(X∣θ)最大化的参数集θ。下面介绍这些方法中一个通用的方法:EM算法。
EM算法的实现过程
EM算法是一个两阶段的迭代优化算法,用于寻找ln p(X∣θ)最大似然解θopt。转化公式(2)包含两个参数{q(Z),θ},假设参数向量的当前值为θ旧,EM算法分类两个步骤:
- E步骤:固定θ旧,q(Z)分布被设置为当前参数值θ旧下的后验概率分布p(Z∣X,θ旧),(2)式中的第二项KL(q∣∣p)=−∑Zq(Z)ln{q(Z)p(Z∣X,θ)}的取值为0。因此ln p(X∣θ旧)=L(q,θ旧),这使得θ旧固定的情况下,下界上移到对数似然函数值相同的位置。θ旧在未达到最大似然解θopt之前,ln p(X∣θ旧)≤ln p(X∣θopt),于是我们通过M步骤更新θ旧为θ新,使得θ新不断地逼近θopt。

- M步骤:保持E步骤中计算得到的q(Z)=p(Z∣X,θ旧)固定,使下界L(q,θ)关于θ进行最大化,得到某个新值θ新。这会使下界L增大(除非达到了极大值),这会使得对应的对数似然函数ln p(X∣θ新)增大。原因是当前潜在变量的分布q(Z)由旧的参数值确定并且保持了固定,因此它不会等于新的后验概率分布p(Z∣X,θ新),从而KL散度不为0。于是对数似然函数的增加量大于下界的增加量(下界增加量+新的KL散度值)。

M步骤我们推导了通过对下界L(q,θ)进行最大化,更新迭代得到的θ新对应的对数似然函数ln p(X∣Z,θ新)>ln p(X∣Z,θ旧),我们只要将E步骤中旧的参数θ旧用M步骤的θ新代替,如此持续迭代,就能使参数$\theta 不断逼近最优解\theta ^{opt}$。
最大化下界L(q,θ)
我们将注意力放在M步骤中L(q,θ)的最大化上,使用q(Z)=p(Z∣X,θ旧)代入下界函数L(q,θ)得到:
L(q,θ)=Z∑p(Z∣X,θ旧)ln p(X,Z∣θ)−Z∑p(Z∣X,θ旧)ln p(Z∣X,θ旧)=Q(θ,θ旧)+常数(4)
其中,常数就是分布q的熵,与θ无关。观察公式(4)可知,M步骤后下界的增大值实际上等于完整数据似然函数的期望,我们记作Q(θ,θ旧)。最大化L(q,θ)又转化成了最大化Q(θ,θ旧),至此我们就将最大化p(X∣θ)目标转化成了关于p(X,Z∣θ)的问题,这样做的好处是使得我们要优化的θ只出现在对数运算内部,如果联合概率分布p(X,Z∣θ)由指数族分布的成员组成,或者其乘积组成,那么对数运算会抵消指数运算,大大简化了运算的复杂度,解决了原来无法得到θ解析解的问题。
Q(θ,θ旧)的最大化
经过上文的推导,我们对问题进行了两次转化,第一次在M步骤中将最优化ln p(X∣θ)的目标转化成最优化下界L(q,θ)的问题,第二次转化是将最优化下界L(q,θ)的目标转化成最优化Q(θ,θ旧)的目标。
我们来讨论独立同分布数据集的情况,X由N个数据点{xn}组成,而Z由对应的N个潜在变量{zn}组成,其中n={1,2,...,N}。根据独立性假设,我们有p(X,Z)=∏np(xn,zn),并通过关于{zn}边缘概率分布,我们有P(X)=∏np(xn),使用加和规则和乘积规则,我们看到E步骤计算的后验概率分布的形式为:
p(Z∣X,θ)=∑Zp(X,Z∣θ)P(X,Z∣θ)=∑Z∏n=1Np(xn,zn∣θ)∏n=1Np(xn,zn∣θ)=n=1∏Np(zn∣xn,θ)(5)
因此后验概率分布也可以关于n进行分解。在高斯混合模型中,这个结果意味着混合分布的每个分量对于一个特定的数据点xn的”责任“只与xn的值和混合分量的参数θ有关,而与其他数据点无关。
从参数空间角度理解EM算法

如上图所示,红色曲线表示(不完整数据)的对数似然函数,它的最大值是我们想要的。我们首先选择某一个初始的参数θ旧,然后第一个E步骤中,我们计算潜在变量上的后验概率分布p(Z∣X,θ旧),我们使用p(Z∣X,θ旧)代替q(Z)代入进而得到了一个较小的下界函数L(q,θold),用蓝色曲线表示,下界和对数似然函数在θold处相切。并且这个下界函数L(q,θold)是一个凹函数,对于指数族分布的混合分布来说,有唯一的最大值,注意前面证明过下界函数L(q,θold)的最大值始终小于似然函数的最大值。因此在M步骤中,下界函数L(q,θ)被最大化,得到了新的参数θnew,这个参数给出了比θold处更大的似然函数值。接下来的E步骤构建一个新的下界,它在θnew处和似然函数相切,用绿色曲线表示。重复上面的步骤直到下界函数的最大值的增加率小于某个阈值。