EM算法是一种迭代算法,用于含有隐变量(hidden variable)的概率模型参数的极大似然估计,或极大后验概率估计,我们经常会从样本观察数据中,找出样本的模型参数。 最常用的方法就是极大化模型分布的对数似然函数。
但是在一些情况下,我们得到的观察数据有未观察到的隐含数据,由于我们有未知的隐含数据和模型参数,因而无法直接用极大化对数似然函数得到模型分布的参数。怎么办呢?这就是EM算法可以派上用场的地方了。
EM算法解决这个的思路是使用启发式的迭代方法,既然我们无法直接求出模型分布参数,那么我们可以先猜想隐含数据(隐变量)「EM算法的E步」,接着基于观察数据和猜测的隐含数据一起来极大化对数似然,求解我们的模型参数*「EM算法的M步然后继续极大化对数似然,求解我们的模型参数(EM算法的M步)。以此类推,不断的迭代下去,直到模型分布参数基本无变化,算法收敛,找到合适的模型参数。
一、Jensen不等式与Lazy Statistician规则
Jensen不等式的意义是:如果f是凸函数,X是随机变量,那么函数的期望大于等于期望的函数,即:
E ( f ( X ) ) ≥ f ( E ( X ) ) E(f(X))\geq f(E(X)) E(f(X))≥f(E(X))
特别地,如果f是严格凸函数,那么 E ( f ( X ) ) = f ( E ( X ) ) E(f(X))= f(E(X)) E(f(X))=f(E(X))当且仅当X是常数时取等号。
因为当X为常数时 f ( X ) f(X) f(X)为一定值, E ( f ( X ) ) = f ( X ) E(f(X))=f(X) E(f(X))=f(X), f ( E ( X ) ) = f ( X ) f(E(X))=f(X) f(E(X))=f(X)
如下如所示:
在这个表达式中,若t相当于 x 1 x_1 x1的概率,(1-t)相当于 x 2 x_2 x2的概率:
t f ( x 1 ) + ( 1 − t ) f ( x 2 ) ≥ f ( t x 1 + ( 1 − t ) x 2 ) , t ∈ ( 0 , 1 ) tf(x_1)+(1-t)f(x_2) \geq f(tx_1+(1-t)x_2),t\in \left ( 0,1 \right ) tf(x1)+(1−t)f(x2)≥f(tx1+(1−t)x2),t∈(0,1)
二、EM算法的推导
假设我们有一个样本集
{
x
(
1
)
,
x
(
2
)
,
.
.
.
,
x
(
m
)
}
\left \{ x^{(1)},x^{(2)},...,x^{(m)} \right \}
{x(1),x(2),...,x(m)},包含m个独立的样本。但每一个样本i对应的
z
(
i
)
z^{(i)}
z(i)是未知的,也就是隐变量。故我们需要估计概率模型
p
(
x
,
z
)
p(x,z)
p(x,z)的参数
θ
\theta
θ,但是由于里面包含隐变量z,所以很难用最大似然求解,但是我们要是想办法知道了z,那么就很容易求解了。
对于参数估计,我们本质上还是想获得一个使似然函数最大的 θ \theta θ:
θ = a r g m a x θ   ∑ i = 1 m   l o g P ( x i ∣ θ ) \boldsymbol{\theta =\underset{\theta}{argmax}\: \sum_{i=1}^{m}\: logP(x^i\mid \theta)} θ=θargmax∑i=1mlogP(xi∣θ)
如果我们得到的观察数据有未观察到的隐含数据 z = ( z ( 1 ) , z ( 2 ) , . . . , z ( m ) ) z=(z^{(1)},z^{(2)},...,z^{(m)}) z=(z(1),z(2),...,z(m)),那么由边缘分布可以写成联合分布之和,我们得到极大化模型分布的对数似然函数如下:
θ = a r g m a x θ   ∑ i = 1 m   l o g P ( x i ∣ θ ) = a r g m a x θ   ∑ i = 1 m   l o g    ∑ z i P ( x i , z i ∣ θ ) \boldsymbol{\theta =\underset{\theta}{argmax}\: \sum_{i=1}^{m}\: logP(x^i\mid \theta) =\underset{\theta}{argmax}\: \sum_{i=1}^{m}\: log\:\:\sum_{z^{i}}P(x^i,z^i\mid \theta)} θ=θargmax∑i=1mlogP(xi∣θ)=θargmax∑i=1mlog∑ziP(xi,zi∣θ)
对于每一个样例 x i x^i xi,让 Q i Q_i Qi表示该样例隐含变量z的某种分布, Q i Q_i Qi满足条件 ∑ z Q i ( z ) = 1 , Q i ( z ) ≥ 0 \sum_{z}Q_{i}(z)=1,Q_{i}(z)\geq 0 ∑zQi(z)=1,Qi(z)≥0。(如果z是连续性的,那么 Q i Q_i Qi是概率密度函数,需要将求和符号换做积分符号)。比如要将班上学生聚类,假设隐藏变量z是身高,那么就是连续的高斯分布。如果按照隐藏变量是男女,那么就是伯努利分布了。
下面的公式阐述了这个思想:
上面公式推导中多了一个未知的变量而已,我也可以分别对未知的θ和z分别求偏导,再令其等于0,求解出来不也一样吗?但是可以看到里面有“和的对数”,求导后形式会非常复杂(自己可以想象下 l o g ( f 1 ( x ) + f 2 ( x ) + f 3 ( x ) + … ) log(f1(x)+ f2(x)+ f3(x)+…) log(f1(x)+f2(x)+f3(x)+…)复合函数的求导),所以很难求解得到未知参数z和θ,所以在(2)式中分子分母乘以一个相等的函数,但还是有"和的对数",这里就用到了我们前面讲的 J e n s e n Jensen Jensen不等式,将"和的对数"转变成了"对数的和",并且等号变成了不等号,因此:
∑ i = 1 m   l o g P ( x i ∣ θ ) \sum_{i=1}^{m}\: logP(x^i\mid \theta) ∑i=1mlogP(xi∣θ)就这么巧妙的有了一个下界,并且如果满足 J e n s e n Jensen Jensen不等式的等号,则有:
P ( x i , z i ∣ θ ) Q i ( z i ) = c , c 为 常 数 \frac{P(x^i,z^i\mid \theta)}{Q_{i}(z^{i})}=c,c为常数 Qi(zi)P(xi,zi∣θ)=c,c为常数
下面推导下 z i z^i zi的分布 Q i ( z i ) Q_{i}(z^{i}) Qi(zi):
应用到一个简单的小公理: 1 2 = 1 2 + 2 4 = 1 + 2 2 + 4 = 3 6 \frac{1}{2}=\frac{1}{2}+\frac{2}{4}=\frac{1+2}{2+4}=\frac{3}{6} 21=21+42=2+41+2=63
P ( x i , z i ∣ θ ) Q i ( z i ) = ∑ z P ( x i , z i ∣ θ ) ∑ z Q i ( z i ) = ∑ z P ( x i , z i ∣ θ ) 1 = c \frac{P(x^i,z^i\mid \theta)}{Q_{i}(z^{i})}=\frac{\sum_zP(x^i,z^i\mid \theta)}{\sum_zQ_{i}(z^{i})}=\frac{\sum_zP(x^i,z^i\mid \theta)}{1}=c Qi(zi)P(xi,zi∣θ)=∑zQi(zi)∑zP(xi,zi∣θ)=1∑zP(xi,zi∣θ)=c
得:
c = ∑ z P ( x i , z i ∣ θ ) c=\sum_zP(x^i,z^i\mid \theta) c=∑zP(xi,zi∣θ)
故:
Q i ( z i ) = P ( x i , z i ∣ θ ) c = P ( x i , z i ∣ θ ) ∑ z P ( x i , z i ∣ θ ) = P ( x i , z i ∣ θ ) P ( x i ∣ θ ) = P ( z i ∣ x i , θ ) Q_{i}(z^{i})=\frac{P(x^i,z^i\mid \theta)}{c}=\frac{P(x^i,z^i\mid \theta)}{\sum_zP(x^i,z^i\mid \theta)}=\frac{P(x^i,z^i\mid \theta)}{P(x^i\mid \theta)}=P(z^i\mid x^i,\theta) Qi(zi)=cP(xi,zi∣θ)=∑zP(xi,zi∣θ)P(xi,zi∣θ)=P(xi∣θ)P(xi,zi∣θ)=P(zi∣xi,θ)
而且:
∑ z Q i ( z ) P ( x i , z i ∣ θ ) Q i ( z i ) \sum_{z}Q_{i}(z)\frac{P(x^i,z^i\mid \theta)}{Q_{i}(z^{i})} ∑zQi(z)Qi(zi)P(xi,zi∣θ)就是 P ( x i , z i ∣ θ ) Q i ( z i ) \frac{P(x^i,z^i\mid \theta)}{Q_{i}(z^{i})} Qi(zi)P(xi,zi∣θ)在分布为 Q i ( z i ) Q_{i}(z^{i}) Qi(zi)下的期望,这就是我们的E步(求期望)。
上面的关于E步的公式推导,都是建立在 J e n s e n Jensen Jensen不等式取等号的前提下完成的,所以E步求得的期望越大,那么我们要优化的似然估计 l o g P ( x i ∣ θ ) logP(x^i\mid \theta) logP(xi∣θ)也就越大。
因此我们的M步就是要求出使得该期望最大的参数 θ \theta θ,因此我们要最大化下式:
a r g m a x θ   ∑ i = 1 m    ∑ z i Q i ( z i ) l o g P ( x i , z i ∣ θ ) Q i ( z i ) \boldsymbol{\underset{\theta}{argmax}\: \sum_{i=1}^{m}\:\:\sum_{z^{i}}Q_{i}(z^i)log\frac{P(x^i,z^i\mid \theta)}{Q_{i}(z^i)}} θargmax∑i=1m∑ziQi(zi)logQi(zi)P(xi,zi∣θ)
去掉常数项,注意
Q i ( z i ) = P ( z i ∣ x i , θ j ) Q_{i}(z^{i})=P(z^i\mid x^i,\theta^j) Qi(zi)=P(zi∣xi,θj)
是第j次迭代后得到的 θ j \theta^j θj,所以为常数,将其去掉后得:
a r g m a x θ   ∑ i = 1 m    ∑ z i Q i ( z i ) l o g P ( x i , z i ∣ θ ) \boldsymbol{\underset{\theta}{argmax}\: \sum_{i=1}^{m}\:\:\sum_{z^{i}}Q_{i}(z^i)log{P(x^i,z^i\mid \theta)}} θargmax∑i=1m∑ziQi(zi)logP(xi,zi∣θ)
这就是M步!
三、EM算法流程
现在我们总结下EM算法的流程!
输入:观察数据 x = { x ( 1 ) , x ( 2 ) , . . . , x ( m ) } x=\left \{ x^{(1)},x^{(2)},...,x^{(m)} \right \} x={x(1),x(2),...,x(m)},联合分布为 P ( x , z ∣ θ ) P(x,z\mid \theta) P(x,z∣θ),条件分布为 P ( z ∣ x , θ ) P(z\mid x,\theta) P(z∣x,θ),最大迭代次数为 J J J。
-
随机初始化模型参数 θ \theta θ的初值 θ 0 \theta^0 θ0.
-
for j from 1 to J开始EM算法迭代:
- E步:计算联合分布的条件概率期望:
Q i ( z i ) = P ( z i ∣ x i , θ j ) Q_{i}(z^{i})=P(z^i\mid x^i,\theta^j) Qi(zi)=P(zi∣xi,θj)
L ( θ , θ j ) = ∑ i = 1 m    ∑ z i Q i ( z i ) l o g P ( x i , z i ∣ θ ) L(\theta,\theta^j)=\sum_{i=1}^{m}\:\:\sum_{z^{i}}Q_{i}(z^i)log{P(x^i,z^i\mid \theta)} L(θ,θj)=∑i=1m∑ziQi(zi)logP(xi,zi∣θ)
- M步:极大化 L ( θ , θ j ) L(\theta,\theta^{j}) L(θ,θj),得到 θ j + 1 \theta^{j+1} θj+1:
θ j + 1 = a r g m a x θ   L ( θ , θ j ) \theta^{j+1}=\underset{\theta}{argmax}\:L(\theta,\theta^{j}) θj+1=θargmaxL(θ,θj)
- 如果 θ j \theta^{j} θj已收敛,则算法停止。否则继续回到E步,进行迭代。
输出:模型参数 θ \theta θ.
四、EM算法收敛性分析
EM算法提供一种近似计算含有隐变量概率模型的极大似然估计的方法,EM算法的最大优点是简单性和普适性,我们很自然地要问:EM算法得到的估计序列是否收敛?如果收敛,是否收敛到全局最大值或局部极大值?下面证明其收敛性!
假设 P ( X ∣ θ ) P(X\mid\theta) P(X∣θ)为观测数据的似然函数,其中 X = { x ( 1 ) , x ( 2 ) , . . . , x ( m ) } X=\left \{ x^{(1)},x^{(2)},...,x^{(m)} \right \} X={x(1),x(2),...,x(m)}, θ i ( i = 1 , 2 , . . . ) \theta^i(i=1,2,...) θi(i=1,2,...)为EM算法得到的参数估计序列, P ( X ∣ θ j ) ( i = 1 , 2 , . . . ) P(X\mid\theta^j)(i=1,2,...) P(X∣θj)(i=1,2,...)为对应的似然函数序列,那么我们需要只需证明下式成立就可以:
P ( X ∣ θ i + 1 ) ≥ P ( X ∣ θ i ) P(X\mid\theta^{i+1})\geq P(X\mid\theta^{i}) P(X∣θi+1)≥P(X∣θi)
证明:由于
P ( X ∣ θ ) = P ( X , Z ∣ θ ) P ( Z ∣ X , θ ) P(X\mid\theta)=\frac{P(X,Z\mid\theta)}{P(Z\mid X,\theta)} P(X∣θ)=P(Z∣X,θ)P(X,Z∣θ)
取对数得
l o g P ( X ∣ θ ) = l o g P ( X , Z ∣ θ ) − l o g P ( Z ∣ X , θ ) logP(X\mid\theta)=logP(X,Z\mid\theta)-logP(Z\mid X,\theta) logP(X∣θ)=logP(X,Z∣θ)−logP(Z∣X,θ)
上面公式两端都取在条件概率 P ( Z ∣ X , θ j ) P(Z\mid X,\theta^j) P(Z∣X,θj)分布下的期望
∑ z l o g P ( X ∣ θ ) P ( Z ∣ X , θ j ) = ∑ z l o g P ( X , Z ∣ θ ) P ( Z ∣ X , θ j ) − ∑ z l o g P ( Z ∣ X , θ ) P ( Z ∣ X , θ j ) \sum_{z}logP(X\mid\theta)P(Z\mid X,\theta^j)=\sum_{z}logP(X,Z\mid\theta)P(Z\mid X,\theta^j)-\sum_{z}logP(Z\mid X,\theta)P(Z\mid X,\theta^j) ∑zlogP(X∣θ)P(Z∣X,θj)=∑zlogP(X,Z∣θ)P(Z∣X,θj)−∑zlogP(Z∣X,θ)P(Z∣X,θj)
整理得
l o g P ( X ∣ θ ) = ∑ z l o g P ( X , Z ∣ θ ) P ( Z ∣ X , θ j ) − ∑ z l o g P ( Z ∣ X , θ ) P ( Z ∣ X , θ j ) logP(X\mid\theta)=\sum_{z}logP(X,Z\mid\theta)P(Z\mid X,\theta^j)-\sum_{z}logP(Z\mid X,\theta)P(Z\mid X,\theta^j) logP(X∣θ)=∑zlogP(X,Z∣θ)P(Z∣X,θj)−∑zlogP(Z∣X,θ)P(Z∣X,θj)
令
L ( θ , θ j ) = ∑ z l o g P ( X , Z ∣ θ ) P ( Z ∣ X , θ j ) L(\theta,\theta^j)=\sum_{z}logP(X,Z\mid\theta)P(Z\mid X,\theta^j) L(θ,θj)=∑zlogP(X,Z∣θ)P(Z∣X,θj)
H ( θ , θ j ) = ∑ z l o g P ( Z ∣ X , θ ) P ( Z ∣ X , θ j ) H(\theta,\theta^j)=\sum_{z}logP(Z\mid X,\theta)P(Z\mid X,\theta^j) H(θ,θj)=∑zlogP(Z∣X,θ)P(Z∣X,θj)
于是对数似然函数可以写成
l o g P ( X ∣ θ ) = L ( θ , θ j ) − H ( θ , θ j ) logP(X\mid\theta)=L(\theta,\theta^j)-H(\theta,\theta^j) logP(X∣θ)=L(θ,θj)−H(θ,θj)
在上式中将 θ \theta θ分别取 θ j \theta^j θj和 θ j + 1 \theta^{j+1} θj+1并相减,有
l o g P ( X ∣ θ j + 1 ) − l o g P ( X ∣ θ j ) logP(X\mid\theta^{j+1})-logP(X\mid\theta^j) logP(X∣θj+1)−logP(X∣θj)
= [ L ( θ j + 1 , θ j ) − L ( θ j , θ j ) ] − [ H ( θ j + 1 , θ j ] − H ( θ j , θ j ) ] =[L(\theta^{j+1},\theta^j)-L(\theta^j,\theta^j)]-[H(\theta^{j+1},\theta^j]-H(\theta^j,\theta^j)] =[L(θj+1,θj)−L(θj,θj)]−[H(θj+1,θj]−H(θj,θj)]
因此,我们只需证明上式的右端非负即可,而上式的第一项是由 θ j + 1 \theta^{j+1} θj+1使 L ( θ , θ j ) L(\theta,\theta^{j}) L(θ,θj)达到极大,所以有
L ( θ j + 1 , θ j ) − L ( θ j , θ j ) ≥ 0 L(\theta^{j+1},\theta^j)-L(\theta^j,\theta^j)\geq0 L(θj+1,θj)−L(θj,θj)≥0
其第二项证明如下
H ( θ j + 1 , θ j ) − H ( θ j , θ j ) H(\theta^{j+1},\theta^j)-H(\theta^j,\theta^j) H(θj+1,θj)−H(θj,θj)
= ∑ z l o g P ( Z ∣ X , θ j + 1 ) P ( Z ∣ X , θ j ) − ∑ z l o g P ( Z ∣ X , θ j ) P ( Z ∣ X , θ j ) =\sum_{z}logP(Z\mid X,\theta^{j+1})P(Z\mid X,\theta^{j})-\sum_{z}logP(Z\mid X,\theta^j)P(Z\mid X,\theta^j) =∑zlogP(Z∣X,θj+1)P(Z∣X,θj)−∑zlogP(Z∣X,θj)P(Z∣X,θj)
= ∑ z ( l o g P ( Z ∣ X , θ j + 1 ) P ( Z ∣ X , θ j ) ) P ( Z ∣ X , θ j ) =\sum_{z}\left ( log\frac{P(Z\mid X,\theta^{j+1})}{P(Z\mid X,\theta^{j})} \right )P(Z\mid X,\theta^{j}) =∑z(logP(Z∣X,θj)P(Z∣X,θj+1))P(Z∣X,θj)
≤ l o g ( ∑ z P ( Z ∣ X , θ j + 1 ) P ( Z ∣ X , θ j ) P ( Z ∣ X , θ j ) ) \leq log\left (\sum_{z}\frac{P(Z\mid X,\theta^{j+1})}{P(Z\mid X,\theta^{j})} P(Z\mid X,\theta^{j}) \right ) ≤log(∑zP(Z∣X,θj)P(Z∣X,θj+1)P(Z∣X,θj))
= l o g ( ∑ z P ( Z ∣ X , θ j + 1 ) ) = 0 =log\left (\sum_{z} P(Z\mid X,\theta^{j+1}) \right )=0 =log(∑zP(Z∣X,θj+1))=0
因此
l o g P ( X ∣ θ j + 1 ) − l o g P ( X ∣ θ j ) ≥ 0 logP(X\mid\theta^{j+1})-logP(X\mid\theta^j)\geq0 logP(X∣θj+1)−logP(X∣θj)≥0
从上面的推导可以看出,EM算法可以保证收敛到一个稳定点,但是却不能保证收敛到全局的极大值点,因此它是局部最优的算法,当然,如果我们的优化目标 L ( θ , θ j ) L(θ,θ^j) L(θ,θj)是凸的,则EM算法可以保证收敛到全局最大值,这点和梯度下降法这样的迭代算法相同。
五、EM算法总结
监督学习是由训练数据 { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } \left \{ (x_1,y_1),(x_2,y_2),...,(x_N,y_N) \right \} {(x1,y1),(x2,y2),...,(xN,yN)}学习条件概率分布 P ( Y ∣ X ) P(Y\mid X) P(Y∣X)或决策函数 Y = f ( X ) Y=f(X) Y=f(X)作为模型,用于分类、回归、标注等任务,这时训练数据中的每个样本点由输入和输出对组成。
但有时训练数据只有输入没有对应的输出 { ( x 1 , ∗ ) , ( x 2 , ∗ ) , . . . , ( x N , ∗ ) } \left \{ (x_1,*),(x_2,*),...,(x_N,*) \right \} {(x1,∗),(x2,∗),...,(xN,∗)},从这样的数据学习模型称为非监督学习问题。EM算法可以用于生成模型的非监督学习。生成模型由联合概率分布 P ( X , Y ) P(X,Y) P(X,Y)表示,可用认为非监督学习训练数据上联合概率分布产生的数据。X为观测数据,Y为未观测数据(隐变量)。
另外,在应用中,初值的选择变得非常重要,常用的办法是选取几个不同的初值进行迭代,然后对得到的各个估计值加以比较,从中选择最好的。