EM算法(Expectation-maximization algorithm),即最大期望算法,在统计中被用于寻找,依赖于不可观察的隐性变量的概率模型中,参数的最大似然估计。
在统计计算中,最大期望(EM)算法是在概率模型中寻找参数最大似然估计或者最大后验估计的算法,其中概率模型依赖于无法观测的隐藏变量(Latent Variable)。最大期望经常用在机器学习和计算机视觉的数据聚类(Data Clustering)领域。最大期望算法经过两个步骤交替进行计算,第一步是计算期望(E),利用对隐藏变量的现有估计值,计算其最大似然估计值;第二步是最大化(M),最大化在E步上求得的最大似然值(Maximum likelihood estimation)来计算参数的值。M步上找到的参数估计值被用于下一个E步计算中,这个过程不断交替进行。 —— [ 维基百科 ]
在介绍EM算法之前,先引入极大似然估计
极大似然估计
假如我们遇见了以下的问题:调查男生的身高分布,随机测量100个男生的身高,则得到了样本量为100的样本。假设男生身高服从正态分布,即 N(μ,σ) ,接下来要做的就是估计 θ=(μ,σ)T ,此时可用极大似然估计。
假设n个独立同分布样本
{x1,…,xn}
,密度函数为
p(x;θ)
。于是联合密度函数
在样本 xi 已知,而参数 θ 未知的情况下,上式可看为 θ 的函数,即
称 L(θ) 为 θ 的似然函数。
称
若似然函数
L(θ)
连续可微,可以通过求
L(θ)
的极大值来求解,即令似然函数的导数为0。
由于
L(θ)
是“连乘”的式子,求导会很复杂。可以通过
ln(x)
转化成“连加”形式。
由于 ln(x) 是严格单调递增函数,所以 l(θ) 与 L(θ) 在同一点达到最大值。由此,求解问题转化成了求解似然方程
注:
- 有些情况的极大似然估计不能通过上述方式求得,例如均匀分布。
- 有些情况的极大似然估计不存在。
EM算法
问题
如果上述问题变为不局限于男生,是调查学生的身高分布,随机抽样了100个学生的身高,而这100个样本有男生也有女生,并且没有标记男女。由常识可知,男生的身高分布和女生身高分布是不同的。此时样本有了类别之分,某个样本不知道是服从男生的分布还是女生的分布。就不能直接用极大似然估计了。
对于这个问题,记
z=1
为男性,
z=2
为女性,男身高分布为
N(μ1,σ1)
,女身高分布为
N(μ2,σ2)
,即
(x│z=j)∼N(μj,σj)
。
于是
其中 p(x|z=j;θ) 为 N(μj,σj) 的密度函数, θ=(μ1,σ1,μ2,σ2,ϕ) , ϕ=p(z=1) 。
分析
样本集是 {x1,…,xn} ,每个样本 xi 对应的类别 zi 是未知的,即隐含变量。例如上述问题中 {x1,x2,x3}={171,158,175} ,虽未知但实际对应的 {z1,z2,z3}={1,2,1} 。
参数 θ 已知时, zi 的分布也已知,即 p(zi;θ) ,若此时给定 zi 的取值, xi 的分布已知,即 p(xi│zi;θ) ,由此 p(xi,zi;θ) 和 p(zi│xi;θ) 均可计算得到。
推导
对每个
xi
,希望找到
zi
,使得
p(xi,zi;θ)
最大。
似然函数
因为有取值未知的隐变量 z 存在,使得求解
考虑每一个样本
xi
,让
Qi
表示该样例隐含变量
zi
的某种分布,
Qi
满足的条件是
∑ziQi(zi)=1
,
Qi(zi)≥0
。(如果
z
是连续的,那么
将似然函数可以如下演化
上述不等号成立是利用了Jensen不等式。
知识补充(Jensen不等式)
如果 f 是凸函数,
X 是随机变量,那么
E[f(X)]≥f(EX)
特别地,如果 f 是严格凸函数,那么E[f(X)]=f(EX) 当且仅当 p(X=EX)=1 ,即 X 是常量。
![]()
图中,实线f 是凸函数, X 是随机变量,有0.5的概率是a ,有0.5的概率是 b 。X 的期望值就是 a 和b 的中值了,图中可以看到 E[f(X)]≥f(EX) 成立。Jensen不等式应用于凹函数时,不等号方向反向,也就是
E[f(X)]≤f(EX)
下面证明如下不等式
证明:
令
f(t)=lnt
,则
f′′(t)=−1x2<0
,即
f(t)
是凹函数,有
令 Y=g(zi)=p(xi,zi;θ)Qi(zi) ,则
不等式成立,当且仅当 p(xi,zi;θ)Qi(zi)=c 时等号成立。
上述过程可以看作是对
l(θ)
求了下界
J(Qi,θ)=∑i∑ziQi(zi)lnp(xi,zi;θ)Qi(zi)
。
假设
θ
已经给定,那么
J(Qi,θ)
的值就决定于
Qi
了。我们可以通过调整
Qi
使下界不断上升,以逼近
l(θ)
的真实值,那么什么时候算是调整好了呢?当不等式变成等式时,说明我们调整后的
J(Qi,θ)
能够等价于
l(θ)
了。
此时固定
Qi
,调整
θ
使下界
J(Qi,θ)
达到最大值。此时为新的
θ
,再固定
θ
,调整
Qi
……直到收敛到似然函数
l(θ)
的最大值处的
θ∗
。
整个过程如下图所示:
在
θ
确定的时候,为了能让下界
J(Qi,θ)
逼近
l(θ)
,需要Jensen不等式的等号成立。由证明过程可得等号成立的条件为
此时可得
代入上式
至此,我们推出了在固定其他参数 θ 后, Qi(zi) 的计算公式就是后验概率,解决了 Qi(zi) 如何选择的问题。这一步就是E步,建立 l(θ) 的下界。
接下来的M步,就是在给定 Qi(zi) 后,调整 θ ,去极大化 l(θ) 的下界。
算法步骤
- 给定 θ 的初值 θ0
- E步:对于每一个样本
xi
,通过
θ(t)
得到
Q(t)i(zi)
:
Q(t)i(zi):=p(zi|xi;θ(t))
- M步:通过
Q(t)i(zi)
计算的到
θ(t+1)
:
θ(t+1):=argmaxθ∑i∑ziQ(t)i(zi)lnp(xi,zi;θ)Q(t)i(zi):=argmaxθ∑i∑ziQ(t)i(zi)lnp(xi,zi;θ)
算法的另一种表述
- 给定 θ 的初值 θ(0)
- E步:通过给定的
θ(t)
得到
lnp(x,z;θ)
的关于
z
的期望
H(θ,θ(t)):=Ez|x,θ(t)[lnp(x,z;θ)]:=∑zp(z|x;θ(t))lnp(x,z;θ) - M步: 计算
θ(t+1):=argmaxθH(θ,θ(t))