EM算法原理

EM算法原理

转载 原文地址:https://www.cnblogs.com/pinard/p/6912636.html

EM算法也称期望最大化(Expectation-Maximum,简称EM)算法,它是一个基础算法,是很多机器学习领域算法的基础,比如隐式马尔科夫算法(HMM), LDA主题模型的变分推断等等。本文就对EM算法的原理做一个总结。

1. EM算法要解决的问题

我们经常会从样本观察数据中,找出样本的模型参数。 最常用的方法就是极大化模型分布的对数似然函数。

但是在一些情况下,我们得到的观察数据有未观察到的隐含数据,此时我们未知的有隐含数据和模型参数,因而无法直接用极大化对数似然函数得到模型分布的参数。怎么办呢?这就是EM算法可以派上用场的地方了。

EM算法解决这个的思路是使用启发式的迭代方法,既然我们无法直接求出模型分布参数,那么我们可以先猜想隐含数据(EM算法的E步),接着基于观察数据和猜测的隐含数据一起来极大化对数似然,求解我们的模型参数(EM算法的M步)。由于我们之前的隐藏数据是猜测的,所以此时得到的模型参数一般还不是我们想要的结果。不过没关系,我们基于当前得到的模型参数,继续猜测隐含数据(EM算法的E步),然后继续极大化对数似然,求解我们的模型参数(EM算法的M步)。以此类推,不断的迭代下去,直到模型分布参数基本无变化,算法收敛,找到合适的模型参数。

从上面的描述可以看出,EM算法是迭代求解最大值的算法,同时算法在每一次迭代时分为两步,E步和M步。一轮轮迭代更新隐含数据和模型分布参数,直到收敛,即得到我们需要的模型参数。

一个最直观了解EM算法思路的是K-Means算法,在K-Means聚类时,每个聚类簇的质心是隐含数据。我们会假设K个初始化质心,即EM算法的E步;然后计算得到每个样本最近的质心,并把样本聚类到最近的这个质心,即EM算法的M步。重复这个E步和M步,直到质心不再变化为止,这样就完成了K-Means聚类。

当然,K-Means算法是比较简单的,实际中的问题往往没有这么简单。上面对EM算法的描述还很粗糙,我们需要用数学的语言精准描述。

2. EM算法的推导

对于m个样本观察数据 x = ( x ( 1 ) , x ( 2 ) , . . . x ( m ) ) ​ x=(x^{(1)},x^{(2)},...x^{(m)})​ x=(x(1),x(2),...x(m)) 中,找出样本的模型参数θ, 极大化模型分布的对数似然函数如下:
θ = a r g m a x θ ∑ i = 1 m l o g P ( x ( i ) ∣ θ ) θ=\underset{\theta}{argmax}\sum_{i=1}^{m}logP(x^{(i)}|θ) θ=θargmaxi=1mlogP(x(i)θ)
如果我们得到的观察数据有未观察到的隐含数据 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 ) ∣ θ ) θ=\underset{\theta}{argmax}\sum_{i=1}^{m}logP(x^{(i)}|θ)=\underset{\theta}{argmax}\sum_{i=1}^{m}log\sum_{z(i)}P(x^{(i)},z^{(i)}|θ) θ=θargmaxi=1mlogP(x(i)θ)=θargmaxi=1mlogz(i)P(x(i),z(i)θ)
上面这个式子是没有 办法直接求出θ 的。因此需要一些特殊的技巧,我们首先对这个式子进行缩放如下:
∑ i = 1 m l o g ∑ z ( i ) P ( x ( i ) , z ( i ) ∣ θ ) = ∑ i = 1 m l o g ∑ z ( i ) Q i ( z ( i ) ) P ( x ( i ) , z ( i ) ∣ θ ) Q i ( z ( i ) ) ( 1 ) ≥ ∑ i = 1 m ∑ z ( i ) Q i ( z ( i ) ) l o g P ( x ( i ) , z ( i ) ∣ θ ) Q i ( z ( i ) ) ( 2 ) \sum_{i=1}^{m}log\sum_{z(i)}P(x^{(i)},z^{(i)}|θ)=\sum_{i=1}^{m}log\sum_{z(i)}Q_i(z^{(i)})\frac {P(x^{(i)},z^{(i)}|θ)}{Q_i(z^{(i)})} (1) \\\geq\sum_{i=1}^{m}\sum_{z(i)}Q_i(z^{(i)})log\frac {P(x^{(i)},z^{(i)}|θ)}{Q_i(z^{(i)})}(2) i=1mlogz(i)P(x(i),z(i)θ)=i=1mlogz(i)Qi(z(i))Qi(z(i))P(x(i),z(i)θ)(1)i=1mz(i)Qi(z(i))logQi(z(i))P(x(i),z(i)θ)(2)
上面第(1)式引入了一个未知的新的分布 Q i ( z ( i ) ) ​ Q_i(z^{(i)})​ Qi(z(i)),第(2)式用到了Jensen不等式:
l o g ∑ j λ j y j ≥ ∑ j λ j l o g y j , λ j ≥ 0 , ∑ j λ j = 1 log\sum_{j}λ_{j}y_{j}≥\sum_{j}λ_{j}logy_{j},λ_j≥0,\sum_jλ_j=1 logjλjyjjλjlogyj,λj0,jλj=1
或者说由于对数函数是凹函数,所以有:
f ( E ( x ) ) ≥ E ( f ( x ) ) , 如 果 f ( x ) 是 凹 函 数 f(E(x))≥E(f(x)),如果f(x)是凹函数 f(E(x))E(f(x)),f(x)
此时,如果要满足Jensen不等式的等号,则有:
P ( x ( i ) , z ( i ) ∣ θ ) Q i ( z ( i ) ) = c , c 为 常 数 \frac {P(x^{(i)},z^{(i)}|θ)}{Q_i(z^{(i)})}=c,c为常数 Qi(z(i))P(x(i),z(i)θ)=c,c
由于 Q i ( z ( i ) ) Q_i(z^{(i)}) Qi(z(i))是一个分布,所以满足:
∑ z Q i ( z ( i ) ) = 1 \sum_{z}Q_i(z^{(i)})=1 zQi(z(i))=1
从上面两式,我们可以得到:
Q i ( z ( i ) ) = 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)}|θ)}{\sum_{z}P(x^{(i)},z^{(i)}|θ)}=\frac {P(x^{(i)},z^{(i)}|θ)}{P(x^{(i)}|θ)}=P(z^{(i)}|x^{(i)},θ)) Qi(z(i))=zP(x(i),z(i)θ)P(x(i),z(i)θ)=P(x(i)θ)P(x(i),z(i)θ)=P(z(i)x(i),θ))
如果 Q i ( z ( i ) ) = P ( z ( i ) ∣ x ( i ) , θ ) ) Q_i(z^{(i)})=P(z^{(i)}|x^{(i)},θ)) Qi(z(i))=P(z(i)x(i),θ)) , 则第(2)式是我们的包含隐藏数据的对数似然的一个下界。如果我们能极大化这个下界,则也在尝试极大化我们的对数似然。即我们需要最大化下式:
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 ) ) ( 3 ) \underset{\theta}{argmax}\sum_{i=1}^{m}\sum_{z(i)}Q_i(z^{(i)})log\frac {P(x^{(i)},z^{(i)}|θ)}{Q_i(z^{(i)})}(3) θargmaxi=1mz(i)Qi(z(i))logQi(z(i))P(x(i),z(i)θ)(3)
(3)式等价为:
a r g m a x θ ∑ i = 1 m ( ∑ z ( i ) Q i ( z ( i ) ) l o g P ( x ( i ) , z ( i ) ∣ θ ) − ∑ z ( i ) Q i ( z ( i ) ) l o g Q i ( z ( i ) ) ) ( 4 ) \underset{\theta}{argmax}\sum_{i=1}^{m}(\sum_{z(i)}Q_i(z^{(i)})log{P(x^{(i)},z^{(i)}|θ)}-\sum_{z(i)}Q_i(z^{(i)})log{Q_i(z^{(i)})})(4) θargmaxi=1m(z(i)Qi(z(i))logP(x(i),z(i)θ)z(i)Qi(z(i))logQi(z(i)))(4)
去掉上式中为常数的部分(后面减掉的 ∑ z ( i ) Q i ( z ( i ) ) l o g Q i ( z ( i ) ) \sum_{z(i)}Q_i(z^{(i)})log{Q_i(z^{(i)})} z(i)Qi(z(i))logQi(z(i))),这部分求 θ \theta θ过程中是不用考虑的。

则我们需要极大化的对数似然下界为:

a r g m a x θ ∑ i = 1 m ∑ z ( i ) Q i ( z ( i ) ) l o g P ( x ( i ) , z ( i ) ∣ θ ) a r g m a x θ ∑ i = 1 m ∑ z ( i ) P ( z ( i ) ∣ x ( i ) , θ ) ) l o g P ( x ( i ) , z ( i ) ∣ θ ) \underset{\theta}{argmax}\sum_{i=1}^{m}\sum_{z^{(i)}}Q_i(z^{(i)})log{P(x^{(i)},z^{(i)}|θ)} \\\underset{\theta}{argmax}\sum_{i=1}^{m}\sum_{z^{(i)}}P(z^{(i)}|x^{(i)},θ))log{P(x^{(i)},z^{(i)}|θ)} θargmaxi=1mz(i)Qi(z(i))logP(x(i),z(i)θ)θargmaxi=1mz(i)P(z(i)x(i),θ))logP(x(i),z(i)θ)
上式也就是我们的EM算法的M步,那E步呢?注意到上式中 Q i ( z ( i ) ) Q_i(z^{(i)}) Qi(z(i))是一个分布,因此 ∑ z ( i ) Q i ( z ( i ) ) l o g P ( x ( i ) , z ( i ) ∣ θ ) \sum_{z^{(i)}}Q_i(z^{(i)})log{P(x^{(i)},z^{(i)}|θ)} z(i)Qi(z(i))logP(x(i),z(i)θ)可以理解为 l o g P ( x ( i ) , z ( i ) ∣ θ ) log{P(x^{(i)},z^{(i)}|θ)} logP(x(i),z(i)θ)基于条件概率分布 Q i ( z ( i ) ) Q_i(z^{(i)}) Qi(z(i))的期望。

至此,我们理解了EM算法中E步和M步的具体数学含义。

3. EM算法流程

现在我们总结下EM算法的流程。

输入:

观察数据 x = ( x ( 1 ) , x ( 2 ) , . . . x ( m ) ) x=(x^{(1)},x^{(2)},...x^{(m)}) x=(x(1),x(2),...x(m)) ,联合分布 P ( x , z ; θ ) P(x,z;θ) P(x,z;θ) , 条件分布 P ( z ∣ x , θ ) P(z|x,θ) P(zx,θ) , 最大迭代次数 J 。

  1. 随机初始化模型参数* θ θ θ* 的初值 θ 0 θ_0 θ0

  2. for j from 1 to J开始EM算法迭代:

a) E步:计算联合分布的条件概率期望:
Q i ( z ( i ) ) = P ( z ( i ) ∣ x ( i ) , θ j ) ) L ( θ , θ j ) = ∑ i = 1 m ∑ z ( i ) Q i ( z ( i ) ) l o g P ( x ( i ) , z ( i ) ∣ θ ) Q_i(z^{(i)})=P(z^{(i)}|x^{(i)},θ^j)) \\ L(θ,θ^j )=\sum_{i=1}^m\sum_{z^{(i)}}Q_i(z^{(i)})logP(x^{(i)},z^{(i)}|θ) Qi(z(i))=P(z(i)x(i),θj))L(θ,θj)=i=1mz(i)Qi(z(i))logP(x(i),z(i)θ)
  b) M步:极大化 L ( θ , θ j ) L(θ,θ^j) L(θ,θj) ,得到 θ j + 1 θ^{j+1} θj+1 :
θ j + 1 = a r g m a x θ L ( θ , θ j ) θ^{j+1}=\underset{\theta}{argmax}L(θ,θ^{j}) θj+1=θargmaxL(θ,θj)
      c) 如果 θ j + 1 ​ θ^{j+1}​ θj+1 已收敛,则算法结束。否则继续回到步骤a)进行E步迭代。

输出:模型参数θ

4. EM算法的一些思考

如果我们从算法思想的角度来思考EM算法,我们可以发现我们的算法里已知的是观察数据,未知的是隐含数据和模型参数,在E步,我们所做的事情是固定模型参数的值,优化隐含数据的分布,而在M步,我们所做的事情是固定隐含数据分布,优化模型参数的值。比较下其他的机器学习算法,其实很多算法都有类似的思想。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值