期望极大化(EM,Expectation Maximization)是一种迭代算法,1977年由Dempster等人总结提出,用于含有隐变量(hidden variable)的概率模型参数的极大似然估计或极大后验概率估计。
概率模型有时既含有观测变量(observable variable),又含有隐变量或潜变量(latent variable)。如果概率模型的变量都是观测变量,那么给定数据后,可以直接用极大似然估计或贝叶斯估计;但当模型含有隐变量时(如一个词所属的主题,聚类中的样本列表),难以求得参数的解析解,就需要用到EM算法。
EM算的每次迭代由两步组成:
- E步:求期望步(expectation)
- M步:求极大(maximization)
1 EM算法的引入
1.1 E.g.1 两硬币模型
(1)一般情况
假设有2枚硬币A,B,正面朝上的概率分别为
p1,p2。为了估计正面朝上的概率,每次取一枚硬币,连续抛5次,记录结果如下:
则,
p1=6/(6+9)=0.4,
p2=5/(5+5)=0.5
(2)含有隐变量的情况
若每次使用哪枚硬币抛掷未知,结果如下:此时相当于增加了隐变量
Z=(z1,z2,z3,z4,z5),其中,
zi=0代表第
i轮使用硬币A抛掷,
zi=1代表使用硬币B抛掷。
为了估计出
p1,p2首先需要估计出
Z,由于
p1,p2未知,可先随机初始化
p1,p2,估计出
Z,再利用
Z估计新的
p1,p2。
方法一:
令
p1=0.2,p2=0.7,则在第一轮掷硬币中,
- 硬币A,3正2反的概率:
0.2∗0.2∗0.2∗0.8∗0.8=0.00512
- 硬币B,3正2反的概率:
0.7∗0.7∗0.7∗0.3∗0.3=0.03087
|
A |
B |
判定 |
第1轮 |
0.00512 |
0.03087 |
B |
第2轮 |
0.02048 |
0.01323 |
A |
第3轮 |
0.08192 |
0.00567 |
A |
第4轮 |
0.00512 |
0.03087 |
B |
第5轮 |
0.02048 |
0.01323 |
A |
根据最大似然估计判定得到
Z=(1,0,0,1,0),硬币A,5正10反;硬币B,6正4反。
则
p1=0.33,p2=0.6,相对于初始值更加接近真实值了。
可按照上述思路,用估计得到的
p1,p2再来估计
Z(E-步),再用
Z来估计新的
p1,p2(M-步),反复迭代下去,直到
p1,p2的值不再改变。
方法二:
上述方法中,根据每一轮使用A和B的概率,简单判定为非A即B,可不作出判定,而保留使用A和B的概率,即隐变量也是存在分布的。
如第1轮,
- 使用硬币A的概率:
0.00512/(0.00512+0.03087)=0.14
- 使用硬币B的概率:
1−0.14=0.86
依次计算出其他4轮的概率如下:
|
A |
B |
第1轮 |
0.14 |
0.86 |
第2轮 |
0.61 |
0.39 |
第3轮 |
0.94 |
0.06 |
第4轮 |
0.14 |
0.86 |
第5轮 |
0.61 |
0.39 |
此时,完成了对于隐变量
Z的概率分布的估计(E-步),再按照极大似然来估计
p1,p2(M-步)。
如针对硬币A,第1轮3正2反,相当于正面概率为
0.14∗3=0.42,反面概率为
0.14∗2=0.28,5轮列表如下:
轮数 |
正面 |
反面 |
第1轮 |
0.42 |
0.28 |
第2轮 |
1.22 |
1.83 |
第3轮 |
0.94 |
3.76 |
第4轮 |
0.42 |
0.28 |
第5轮 |
1.22 |
1.83 |
总计 |
4.22 |
7.98 |
此时,
p1=4.22/(4.22+7.98)=0.35
Do C B , Batzoglou S 在《What is the expectation maximization algorithm?》中提及的类似例子如下:
1.2 E.g.2 三硬币模型
假设有3枚硬币A,B,C,这些硬币正面向上的概率分别为
π,p,q。
进行如下抛硬币实验:先抛硬币A,根据其结果选择硬币B或C:正面选B,反面选C;然后抛出选择的硬币,出现正面记作1,出现反面记作2。
独立重复
n(n=10)次试验,观测结果如下:
1101001011根据观测结果,估计三枚硬币正面向上的概率,即三枚硬币模型参数
θ=(π,p,q)。
上述模型可以表示为:
P(x∣θ)===z∑P(x,z∣θ)z∑P(z∣θ)P(x∣z,θ)πpx(1−p)1−x+(1−π)qx(1−q)1−x
其中,随机变量
x是观测变量,表示本次试验观测结果是1或0;随机变量
z是隐变量,表示未观测到的抛掷硬币A的结果。
注意:随机变量
x的数据可以观测,随机变量
z的数据不可观测。
令观测数据
X=(x1,x2,...,xn),未观测数据
Z=(z1,z2,...,zn),则观测数据的似然函数:
P(X∣θ)==Z∑P(z∣θ)P(X∣z,θ)i=1∏n(πpxi(1−p)1−xi+(1−π)qxi(1−q)1−xi)求参数
θ=(π,p,q)的极大似然估计:
θ^=argθmaxlogP(X∣θ)
上述问题没有解析解,只能通过迭代的方法求解:选取参数的初始值,记作
θ0=(π0,p0,q0),不断迭代计算参数的估计值,直至收敛。第
j次迭代,参数估计值为
θj=(πj,pj,qj)。其中,第
j+1次迭代如下:
- E步:计算模型在参数
θj=(πj,pj,qj)下观测数据
yi来自硬币B的概率:
μ(i,j+1)=πjpjxi(1−pj)1−xi+(1−πj)qjxi(1−qj)1−xiπjpjxi(1−pj)1−xi
- M步:计算新的参数估计值:
πj+1=n1i=1∑nμ(i,j+1)
pj+1=∑i=1nμ(i,j+1)∑i=1nμ(i,j+1)xi
qj+1=∑i=1n(1−μ(i,j+1))∑i=1n(1−μ(i,j+1))xi
假设模型参数
θ0=(π0,p0,q0)=(0.5,0.5,0.5),对于
xi=1与xi=0,i=1,2,...,10均有
μ(i,1)=0.5。
根据迭代,可得到
θ1=(0.5,0.6,0.6)则
μ(i,2)=0.5,i=1,2,...,10继续迭代得到,
θ2=(0.5,0.6,0.6)模型收敛,得到参数
θ的极大似然估计:
θ^=(0.5,0.6,0.6)
π=0.5表示硬币A均匀,
p=0.6,q=0.6符合对于数据的直观观察,10次抛硬币中,正面出现了6次。
如果初始值
θ0=(0.4,0.6,0.7),迭代后得到模型参数
θ^=(0.4,0.537,0.643),说明EM算法与初始值的选择有关。
2 EM算法
2.1 算法描述
- 输入:观测变量数据
X=(x(1),x(2),...x(m)),隐变量数据
Z=(z(1),z(2),...z(m))。
- 输出:模型参数
θ
观测数据
X又称不完全数据(incomplete-data),其概率分布是
P(X∣θ)
X和
Z连在一起称完全数据(complete data),其联合概率分布是
P(Y,Z∣θ)
- 优化目标:
最大化观测数据
X关于参数
θ的对数似然函数:
L(θ)=logP(X∣θ)=X∑logP(x∣θ)=X∑logZ∑P(x,z∣θ)=X∑logZ∑P(z∣θ)P(x∣z,θ)即
θ^=argθmaxL(θ)=argθmaxX∑logZ∑P(x,z∣θ)
2.2 推导过程
L(θ)=X∑logZ∑P(x,z∣θ)=i=1∑mlogz(i)∑P(x(i),z(i);θ)=i=1∑mlogz(i)∑Qi(z(i))Qi(z(i))P(x(i),z(i);θ)≥i=1∑mz(i)∑Qi(z(i))logQi(z(i))P(x(i),z(i);θ)令
Qi(z(i))P(x(i),z(i);θ)=cc为常数由于
Qi(z(i))是一个分布,满足
Qi(z(i))>0,z∑Qi(z(i))=1则
⇒⇒z∑P(x(i),z(i);θ)=cz∑Qi(z(i))P(x(i);θ)=cQi(z(i))=cP(x(i),z(i);θ)=P(x(i);θ)P(x(i),z(i);θ)=P(z(i)∣x(i);θ))
通过极大化包含隐藏数据的对数似然的下界,从而极大化对数似然$ L(\theta)$。
此时,优化目标成为:
argθmaxi=1∑mz(i)∑Qi(z(i))logQi(z(i))P(x(i),z(i);θ)去掉常数部分
argθmaxi=1∑mz(i)∑Qi(z(i))logP(x(i),z(i);θ)
上式也就是EM算法的M步。
E步则是
logP(x(i),z(i);θ)基于条件概率分布
Qi(z(i))的期望。
2.3 算法步骤
EM通过迭代的方式逐步逼近
L(θ)的极大值(反复构造新的下界):
j次迭代后
θ的估计值为
θj,希望新的估计值
θj+1能使
L(θ)的值增加,即
L(θj+1)>L(θj)。
具体步骤如下:
- 选泽参数初始值
θ0。
- E步:计算联合分布的条件概率期望,完全数据的对数似然函数
logP(X,Z∣θ)在给定观测数据
X和当前参数
θj下对未观测数据
Z的条件概率分布
P(Z∣X,θj)的期望:
L(θ,θj)=EZ[logP(X,Z∣θ)∣X,θj]=X∑Z∑P(z∣x,θj)logP(x,z∣θ)=i=1∑mz(i)∑Qi(z(i))logP(x(i),z(i);θ)其中,
Qi(z(i))=P(z(i)∣x(i),θj))
- M步:求第
j+1次迭代的参数估计值
θj+1:
θj+1=argθmaxL(θ,θj)
- 重复EM步,直至满足收敛条件,
一般给出较小的正数
ε1,ε2,若满足
∣∣θj+1−θj∣∣≤ε1或∣∣L(θj+1,θj)−L(θj+1,θj)∣∣≤ε2则停止迭代,输出此时的
θ值。
L函数是EM算法的核心(有的教材中称其为
Q函数),每次迭代实际在求期望(E-步)及其极大化(M-步),实现参数
θj→θj+1的更新,使似然函数增大或达到局部极值。
另一种理解
EM算法还可以看做用坐标下降法来最大化对数似然下界的过程,从而得到对数似然函数取得极大值时的参数估计,也就是极大似然估计的过程。
在迭代的过程中,每次固定一个变量,对另外的求极值,最后逐步逼近极值:
- E步:固定
θ,优化
L
- M步:固定
L,优化
θ
交替将极值推向最大。
2.4 算法的收敛性
可以证明:
i=1∑mlogP(x(i);θj+1)≥i=1∑mlogP(x(i);θj)
EM算法可以收敛到局部极大值,但是却不能保证收敛到全局的极大值,因此它是局部最优的算法。当然,如果我们的优化目标
L(θ,θj)是凸的,则EM算法可以保证收敛到全局最大值,这点和梯度下降法相同。
3 EM算法与非监督学习
- 监督学习中,训练数据
(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))中的每个样本点由输入和输出对组成,通过学习决策函数
y=f(x)(判别模型)或学习条件概率分布
P(y∣x)(生成模型),实现数据的分类及回归。
- 非监督学习中,训练数据
(x(1),),(x(2),),...,(x(m),)中每个样本点只有输入没有对应的输出,如聚类。
EM算法可以用于生成模型的非监督学习,生成模型由联合概率分布
P(X,Y)表示,认为非监督学习训练数据是联合概率分布产生的数据。
EM算法是一种框架,逼近统计模型参数的最大似然或最大后验估计。
K-Means可以看做一种Hard EM算法,
- E步:给定当前簇中心,每个对象都被指派到簇中心离该对象最近的簇(期望每个对象都属于最近的簇)。
- M步:给定指定簇,对于每个簇,算法调整其中心,使得指派到该簇的对象到该中心的距离之和最小化(指派到一个簇的对象的相似度最大化)。
K-Means是模糊聚类的一种特例(隐变量是存在分布的),在模糊或基于概率模型的聚类,EM算法从初始参数出发,并且迭代直到不能改善聚类(聚类收敛或改变充分小)。
- E-步:根据当前模糊聚类或概率簇的参数,把对象指派到簇中。
- M-步:发现新的聚类或参数,最小化模糊聚类的SSE或基于概率模型的期望似然。
4 EM算法应用于高斯混合模型学习
4.1 高斯混合模型
高斯混合模型(Gaussian misture model)指具有如下形式的概率分布模型:
P(x∣θ)=j=1∑kαjϕ(x∣θj)
其中,
αj≥0是系数,
∑j=1kαj=1;
ϕ(x∣θj)为高斯分布密度,
θj=(μj,θj2)
ϕ(x∣θj)=2π
σj1exp(−2σj2(x−μj)2)
称为第
j个分模型。
4.2 高斯混合模型参数估计
假设观测数据
x1,x2,...,xm高斯混合模型
P(x∣θ)=j=1∑kαjϕ(x∣θj)生成,其中模型参数
θ=(α1,α2,...,αk;θ1,θ2,...,θk)。
可以设想观测数据
x1,x2,...,xm产生过程如下:
- 首先根据概率
αj选择第
j个高斯分布模型
ϕ(x∣θj);
- 然后根据第
j个模型的概率密度函数
ϕ(x∣θj)生成观测数据
xi。
执行上述过程
m次来生成观测数据。
反映观测数据
xi来自第
j个模型的隐变量
γ是未知的,定义如下:
γij={1,0,第i个观测来自第j个分模型otherwisei=1,2,...,m;j=1,2,...,k
γij是0-1随机变量。
- E步:根据当前模型参数,计算模型
i对观测数据
yi的响应度:
γ^ij=∑j=1kαjϕ(xi∣θj)αjϕ(xi∣θj)
- M步:计算新一轮迭代的模型参数:
μ^j=∑i=1mγ^ij∑i=1mγ^ijyi
θ^j2=∑i=1mγ^ij∑i=1mγ^ij(xi−μj)2
α^j=m∑i=1mγ^ij
EM算法还可以解释为F函数(F function)的极大-极大算法(maximization-maximization algorithm),基于这个解释有若干变形与推广,如广义期望极大算法(GEM,Generalized Expectation Maximization)
附:数学基础
(1)Jensen不等式
- 如果
f是凸函数,
X是随机变量,则
f(E[X])⩽E[f(X)],特别地,如果
f是严格凸函数,那么等号成立当且仅当
P(x=E[X])=1时(
X是常量);
- 如果
f是凹函数,
X是随机变量,则
f(E[X])⩾E[f(X)],特别地,如果
f是严格凹函数,那么等号成立当且仅当
P(x=E[X])=1时(
X是常量);
- 当
f是(严格)凹函数当且仅当
−f是(严格)凸函数。
函数
f是凸函数,
X是随机变量,有0.5的概率是
a,有0.5的概率是
b。
X的期望值
E(x)就是
(a+b)/2,可以看出
E[f(X)]⩾f(E[X])成立。
(2) 坐标下降法
坐标下降法是一种对多个参数分步迭代最终得到目标函数局部极大值(极小值)的方法。
如求目标函数
f(μ,θ)极值,可给定初值
θ0,然后分别计算:
μ1=argμmaxf(μ,θ0)
θ1=argθmaxf(μ1,θ)
μ2=argμmaxf(μ,θ1)
θ2=argθmaxf(μ2,θ)显然,
f(μ1,θ0)⩽f(μ2,θ1)...⩽f(μi+1,θi)⩽fmax
不断迭代后,
f(μi+1,θi)的值也逐渐逼近
fmax,此时
θi和
μi+1即为参数估计的值。