1. 引言
EM算法是Dempster等人在1977年提出来的一种迭代算法,用于含有隐变量的概率模型参数的极大似然估计或极大后验概率估计。EM算法的每次迭代由两步组成:E步,求期望;M步,求极大,因此,该算法也被称为期望极大算法,简称EM算法。
2. EM算法原理介绍
2.1 EM算法的原理
一般地,用Y表示观测随机变量的数据,Z表示隐随机变量的数据,Y和Z连在一起称为完全数据,观测数据Y又称为不完全数据。假设给定观测数据Y,其概率分布是P(Y∣θ),其中θ是需要估计的模型参数,那么不完全数据Y的似然函数是P(Y∣θ),对数似然函数是L(θ)=logP(Y∣θ),假设Y和Z的联合概率分布是P(Y,Z∣θ),那么完全数据对数似然函数是logP(Y,Z∣θ)。
EM算法就是通过极大化不完全数据Y的对数似然函数来对参数θ进行估计,即极大化:
L(θ)=logP(Y∣θ)=logZ∑P(Y,Z∣θ)=log(Z∑P(Y∣Z,θ)P(Z∣θ))由于上式中含有未观测的数据和求和的对数,因此,没法直接对参数进行极大化估计。事实上,EM算法是通过迭代逐步近似极大化L(θ),假设在第i次迭代后θ的估计值是θ(i),我们希望估计值θ能使L(θ)增加,即L(θ)>L(θ(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))logP(Z∣Y,θ(i))P(Y∣Z,θ)P(Z∣θ)−logP(Y∣θ(i))=Z∑P(Z∣Y,θ(i))logP(Z∣Y,θ(i))P(Y∣θ(i))P(Y∣Z,θ)P(Z∣θ)令
B(θ,θ(i))=^L(θ(i))+Z∑P(Z∣Y,θ(i))logP(Z∣Y,θ(i))P(Y∣θ(i))P(Y∣Z,θ)P(Z∣θ)则
L(θ)⩾B(θ,θ(i))即函数B(θ,θ(i))是L(θ)的一个下界,并且有:
L(θ(i))=B(θ(i),θ(i))因此,任何可以使B(θ,θ(i))增大的θ也可以使L(θ)增大,因此,每次迭代时可以直接对B(θ,θ(i))进行极大化更新θ:
θ(i+1)=argθmaxB(θ,θ(i))对其求θ偏导,有:
θ(i+1)=argθmax(L(θ(i))+Z∑P(Z∣Y,θ(i))logP(Z∣Y,θ(i))P(Y∣θ(i))P(Y∣Z,θ)P(Z∣θ))=argθmax(Z∑P(Z∣Y,θ(i))log(P(Y∣Z,θ)P(Z∣θ)))=argθmax(Z∑P(Z∣Y,θ(i))logP(Y,Z∣θ))=argθmaxQ(θ,θ(i))上式等价于EM算法的一次迭代,即求Q函数及其极大化,EM算法是通过不断求解下界的极大化逼近求解对数似然函数极大化的算法。最终,EM算法可以归纳如下:
EM算法:
- 输入:观测变量Y,隐变量数据Z,联合分布P(Y,Z∣θ),条件分布P(Z∣Y,θ);
- 输出:模型参数θ
- 选择参数初始值θ(0),开始迭代;
- E步:记θ(i)为第i次迭代参数θ的估计值,在第i+1次迭代的E步,计算期望,即Q函数:Q(θ,θ(i))=Ez[logP(Y,Z∣θ)∣Y,θ(i)]=Z∑logP(Y,Z∣θ)P(Z∣Y,θ(i))这里,P(Z∣Y,θ(i))是在给定观测数据Y和当前的参数估计θ(i)下的隐变量数据Z的条件概率分布;
- M步:求使Q(θ,θ(i))极大化的θ,确定第i+1次迭代的参数的估计值:
θ(i+1)=argθmaxQ(θ,θ(i))
- 重复4、5步骤,直到收敛,即∥∥θ(i+1)−θ(i)∥∥<ε1或者∥∥Q(θ(i+1),θ(i))−Q(θ(i),θ(i))∥∥<ε2,其中,ε1,ε2为设定的阈值。
2.2 EM算法在高斯混合模型中的应用
EM算法的一个重要的应用是高斯混合模型的参数估计。首先,先看下什么是高斯混合模型。
高斯混合模型: 高斯混合模型是指具有如下形式的概率分布模型:
P(y∣θ)=k=1∑Kαkϕ(y∣θk)其中,αk是系数,αk⩾0,∑k=1Kαk=1,ϕ(y∣θk)是高斯分布函数,θk=(μk,σk2):
ϕ(y∣θk)=2πσk1exp(−2σk2(y−μk)2)称为第k个分模型。
假设观测数据y1,y2,⋯,yN由高斯混合模型生成,
P(y∣θ)=k=1∑Kαkϕ(y∣θk)其中,θ=(α1,α2,⋯,αK;θ1,θ2,⋯,θK),接下来用EM算法估计高斯混合模型的参数θ。
可以设想观测数据yj,j=1,2,⋯,N是这样产生的:首先依概率αk选择第k个高斯分布模型ϕ(y∣θk),然后依第k个分模型的概率分布ϕ(y∣θk)生成观测数据yj,这时,观测数据yj,j=1,2,⋯,N是已知的,反映观测数据yj来自第k个分模型是未知的,用隐变量γjk表示,其定义如下:
其中,γjk是0-1随机变量。因此,可以得到完全数据的似然函数:
其中,nk=∑j=1Nγjk,∑k=1Knk=N。因此,完全数据的对数似然函数可以表达为:
logP(y,γ∣θ)=k=1∑Knklogαk+j=1∑Nγjk[log(2π1)−logσk−2σk21(yj−μk)2]
接下来,可以计算Q函数:
Q(θ,θ(i))=E[logP(y,γ∣θ)∣y,θ(i)]=E{k=1∑Knklogαk+j=1∑Nγjk[log(2π1)−logσk−2σk21(yj−μk)2]}=k=1∑K{j=1∑N(Eγjk)logαk+j=1∑N(Eγjk)[log(2π1)−logσk−2σk21(yj−μk)2]}这里需要计算E(γjk∣y,θ),记为γ^jk,其计算如下:

将γ^jk=Eγjk,nk=∑j=1NEγjk代入Q函数得:
Q(θ,θ(i))=k=1∑Knklogαk+j=1∑Nγ^jk[log(2π1)−logσk−2σk21(yj−μk)2]
接下来是M步,计算Q函数的极大值,
θ(i+1)=argθmaxQ(θ,θ(i))用μ^k,σ^k2α^k,k=1,2,⋯,K分别表示θ(i+1)的各参数,分别对μk,σk2,αk求偏导并令其为0得:
μ^k=∑j=1Nγ^jk∑j=1Nγ^jkyj,k=1,2,⋯,Kσ^k2=∑j=1Nγ^jk∑j=1Nγ^jk(yj−μk)2,k=1,2,⋯,Kα^k=Nnk=N∑j=1Nγ^jk,k=1,2,⋯,K 重复以上过程,直到收敛为止。高斯混合模型参数估计的EM算法可以总结如下:
高斯混合模型参数估计的EM算法:
- 输入:观测数据y1,y2,⋯,yN,高斯混合模型;
- 输出:高斯混合模型的参数;
- 取参数的初始值开始迭代
- E步:依据当前的参数,计算分模型k对观测数据yj的响应度:
γ^jk=∑k=1Kαkϕ(yj∣θk)αkϕ(yj∣θk),j=1,2,⋯,N;k=1,2,⋯,K
- M步:计算新一轮迭代的模型参数:
μ^k=∑j=1Nγ^jk∑j=1Nγ^jkyj,k=1,2,⋯,Kσ^k2=∑j=1Nγ^jk∑j=1Nγ^jk(yj−μk)2,k=1,2,⋯,Kα^k=Nnk=N∑j=1Nγ^jk,k=1,2,⋯,K
- 重复4、5步,直到收敛。
3. 总结
- EM算法对初始值比较敏感。
- EM算法由于是通过迭代的思想,采用下界不断逼近对数似然函数,因此,得到的参数估计可能是局部最优解。