最大期望算法(Expectation-Maximization algorithm,EM)

  最大期望算法,也被译作最大化算法(Minorize-Maxization,MM),是在概率模型中寻找参数最大似然估计或者最大后验估计的算法,其中概率模型依赖于无法观测的隐性变量。
  最大期望算法就是E-step和M-step交替进行计算,直至满足收敛条件。所以它是一种迭代算法。
  EM算法适用场景:当数据有缺失值时,即数据不完整时。还有很多机器学习模型的求解经常用到Em,比如GMM(高斯混合模型)、HMM(隐马尔科夫模型)等等。

一、EM算法的广义步骤

  E-step:利用可用的数据来估算(猜测)潜在变量的值;
  M-step:根据E步骤中生成的估计值,使用完整的数据更新参数。

二、先写出EM的公式

  这里以最大似然估计作为准则:

[ {hat theta _{MLE}} = arg max log P(X|theta ) ]

  EM公式

[{theta ^{(t + 1)}} = arg mathop {max }limits_theta int_Z {log } P(X,Z|theta )P(Z|X,{theta ^{(t)}})dZ ]

  (int_Z {log } P(X,Z|theta )P(Z|X,{theta ^{(t)}})dZ)也可以写作({E_{Z|X,{theta ^{(t)}}}}[log P(X,Z|theta )])或者(sumlimits_Z {log P(X,Z|theta )P(Z|X,{theta ^{(t)}})})

三、其收敛性的证明

  此处的证明并不是非常严格的证明。要证明其收敛,就是要证明当({theta ^{(t)}} to {theta ^{(t + 1)}})(P(X|{theta ^{(t)}}) to P(X|{theta ^{(t + 1)}}))(P(X|{theta ^{(t)}}) le P(X|{theta ^{(t + 1)}}))。证明过程如下:

  证明:

[log P(X|theta ) = log P(X,Z|theta ) - log P(Z|X,theta ) ]

  等式两边关于({Z|X,{theta ^{(t)}}})分布同时求期望:

  左边:

[begin{array}{l} {E_{Z|X,{theta ^{(t)}}}}[log P(X|theta )]\ = int_Z {log } P(X|theta )P(Z|X,{theta ^{(t)}})dZ\ = log P(X|theta )int_Z {P(Z|X,{theta ^{(t)}})} dZ\ = log P(X|theta ) end{array} ]

  右边:

[begin{array}{l} {E_{Z|X,{theta ^{(t)}}}}left[ {log P(X,Z|theta ) - log P(Z|X,theta )} right]\ = int_Z {log P(X,Z|theta )P(Z|X,{theta ^{(t)}})dZ - } int_Z {log P(Z|X,theta )P(Z|X,{theta ^{(t)}})dZ} end{array} ]

  令(Q(theta ,{theta ^{(t)}}) = int_Z {log P(X,Z|theta )P(Z|X,{theta ^{(t)}})dZ})(H(theta ,{theta ^{(t)}}) = int_Z {log P(Z|X,theta )P(Z|X,{theta ^{(t)}})dZ})

  则

[{E_{Z|X,{theta ^{(t)}}}}left[ {log P(X,Z|theta ) - log P(Z|X,theta )} right] = Q(theta ,{theta ^{(t)}}) - H(theta ,{theta ^{(t)}}) ]

  由EM的算法公式可得:(因为就是要求满足要求的最大(theta)作为(theta ^{(t+1)})

[Q({theta ^{(t + 1)}},{theta ^{(t)}}) ge Q(theta ,{theta ^{(t)}}) ]

  也即:((theta)(theta ^{(t)})时)

[Q({theta ^{(t + 1)}},{theta ^{(t)}}) ge Q({theta ^{(t)}},{theta ^{(t)}}) ]

  对于(H(theta ,{theta ^{(t)}}))

[begin{array}{l} H({theta ^{(t + 1)}},{theta ^{(t)}}) - H({theta ^{(t)}},{theta ^{(t)}})\ = int_Z {log P(Z|X,{theta ^{(t + 1)}})} P(Z|X,{theta ^{(t)}})dZ - int_Z {log P(Z|X,{theta ^t})} P(Z|X,{theta ^{(t)}})dZ\ = int_Z {P(Z|X,{theta ^{(t)}})} log frac{{P(Z|X,{theta ^{(t + 1)}})}}{{P(Z|X,{theta ^t})}}dZ\ = - KL(P(Z|X,{theta ^{(t)}})||P(Z|X,{theta ^{(t + 1)}}))\ le 0 end{array} ]

  也即(H({theta ^{(t + 1)}},{theta ^{(t)}}) le H({theta ^{(t)}},{theta ^{(t)}}))
  综上,(P(X|{theta ^{(t)}}) le P(X|{theta ^{(t + 1)}})),证毕。

四、公式推导方法1

说明下数据:
  X: observed data   (X = { {x_1},{x_2}, cdots {x_N}})
  Z: unovserved data(latent data)    (Z = { {z_i}} _{i = 1}^K)
  (X,Z): complete data
  (theta): parameter

4.1 E-M步骤公式

  E-step:

[P(Z|X,{theta ^{(t)}}) to {E_{Z|X,{theta ^{(t)}}}}[log P(X,Z|theta )] ]

  M-step:

[{theta ^{(t + 1)}} = arg mathop {max }limits_theta {E_{Z|X,{theta ^{(t)}}}}[log P(X,Z|theta )] ]

4.2 推导过程

[log P(X|theta ) = log (X,Z|theta ) - log (Z|X,theta ) ]

  等价代换,引入分布(q(Z)):

[log P(X|theta ) = log frac{{P(X,Z|theta )}}{{q(z)}} - log frac{{P(Z|X,theta )}}{{q(z)}} , q(Z) ne 0 ]

  两边同时关于分布(q(Z))求期望

  对于左边:

[begin{array}{l} {E_{q(Z)}}[log P(X|theta )] = int_Z {log } P(X|theta )P(Z|X,{theta ^{(t)}})dZ\ = log P(X|theta )int_Z {P(Z|X,{theta ^{(t)}})} dZ\ = log P(X|theta ) end{array} ]

  对于右边:

[begin{array}{l} {E_{Z|X,{theta ^{(t)}}}}left[ {log frac{{P(X,Z|theta )}}{{q(z)}} - log frac{{P(Z|X,theta )}}{{q(z)}}} right]\ = int_Z {log frac{{P(X,Z|theta )}}{{q(z)}}} q(z)dZ - int_Z {log frac{{P(Z|X,theta )}}{{q(z)}}} q(z)dZ\ = ELBO + KLleft( {q(Z)||P(Z|X,theta )} right) end{array} ]

  其中({P(Z|X,theta )})为后验概率。ELBO为evidence lower bound

[begin{array}{l} therefore log P(X|theta ) = ELBO + KLleft( {q||P} right)\ because KLleft( {q||P} right) ge 0\ therefore log P(X|theta ) ge ELBO end{array} ]

  则取最大值,就等价于ELBO取最大值,此时:

[{{hat theta }^{(t + 1)}} = arg mathop {max }limits_theta ELBO = arg mathop {max }limits_theta int_Z {log frac{{P(X,Z|theta )}}{{q(z)}}} q(z)dZ ]

  (because)(q=P)时,(KL=0),即(log P(X|theta ) = ELBO)的等号成立。

  则取(q(z) = P(Z|X,{theta ^{(t)}})),即上一时刻的后验。
  (therefore)

[begin{array}{l} {{hat theta }^{(t + 1)}} = arg mathop {max }limits_theta int_Z {log frac{{P(X,Z|theta )}}{{P(Z|X,{theta ^{(t)}})}}} P(Z|X,{theta ^{(t)}})dZ\ = arg mathop {max }limits_theta int_Z {left[ {log P(X,Z|theta ) - log P(Z|X,{theta ^{(t)}})} right]} P(Z|X,{theta ^{(t)}})dZ end{array} ]

  此时(theta ^{(t)})为上一时刻的参数,故在此可视作常数,则减号后面的参数都视作常数,与目标(theta)无关,在求解是无用,故可以省去。

  则此时:

[{{hat theta }^{(t + 1)}} = arg mathop {max }limits_theta int_Z {log P(X,Z|theta )} P(Z|X,{theta ^{(t)}})dZ ]

  证毕

五、公式推导方法2(涉及Jensen不等式)

5.1 Jensen不等式

  对于concave function(凹函数),设(t in [0,1]),则有(fleft( {t cdot a + (1 - t) cdot b} right) ge tfleft( a right) + (1 - t)fleft( b right))。特别的,当(a = b = frac{1}{2})时,(fleft( {frac{{a + b}}{2}} right) ge frac{{fleft( a right) + fleft( b right)}}{2})。从期望的角度来看就是(fleft( E right) ge Eleft( f right)),先期望后函数大于等于先函数后期望。

5.2 关于E-M算法的理解

  对于E-step(theta ^{(t)})是上一次求出的参数,在这一步就是常数,然后对于后验分布(Z|X,{theta ^{(t)}})求关于最大似然函数({log P(X,Z|theta )})的期望,即写出一个关于(theta)的函数。
  对于M-step: 针对E-step写出的期望函数,求使参数(theta)满足其取最大值的参数作为当前时刻的参数目标(theta ^{(t+1)}).

5.3 推导过程

[log P(X|theta ) = log int_Z {P(X,Z|theta )} dZ ]

联合分布的边缘积分=边缘概率分布

  引入分布(q(Z)):

[begin{array}{l}原式= log int_Z {frac{{P(X,Z|theta )}}{{q(Z)}}} cdot q(Z)dZ\ = log left[ {{E_{Z|X,{theta ^{(t)}}}}left( {frac{{P(X,Z|theta )}}{{q(Z)}}} right)} right] end{array} ]

  由Jensen不等式:

[原式ge {E_{Z|X,{theta ^{(t)}}}}left[ {log left( {frac{{P(X,Z|theta )}}{{q(Z)}}} right)} right] = ELBO ]

  当({frac{{P(X,Z|theta )}}{{q(Z)}}} = c),(c)为常数时,等号成立。

  则(q(Z) = frac{1}{c}P(X,Z|theta )),两边同时对(Z)求积分:

[begin{array}{c} int_Z {q(Z)dZ = int_Z {frac{1}{c}P(X,Z|theta )dZ} } \ \ 1 = frac{1}{c}P(X|theta ) end{array} ]

  (therefore)(q(Z) = P(X|theta ) cdot P(X,Z|theta ) = P(Z|X,theta ))

  后续步骤同方法一。

六、广义EM算法

  ①狭义EM算法是广义EM算法的一种特例;
  ②生成模型中如果(Z)的复杂度太高,则后验概率(P(Z|X,theta))很难求出(intractable)。但是像GMM和HNN的(Z)是结构化的,相对简单,所以可以用狭义EM算法进行优化。

[begin{array}{l} log P(X|theta ) = ELBO + KL(q||P)\ = {E_{q(Z)}}left[ {log frac{{P(X,Z|theta )}}{{q(Z)}}} right] - {E_{q(Z)}}left[ {log frac{{P(Z|X,theta )}}{{q(Z)}}} right] end{array} ]

广义EM步骤:

  ( left{ begin{array}{l} 1.固定theta :hat q = arg mathop {min }limits_q KL(q||P) = arg mathop {max }limits_q ELBO(hat q,theta)\ 2.固定hat q:theta = arg mathop {max }limits_theta ELBO(hat q,theta) end{array} right. )

  对应的:

  ( left{ begin{array}{l} E-step:{q^{(t + 1)}} = arg mathop {max }limits_q ELBO(q,{theta ^{(t)}})\ M-step:{theta ^{(t + 1)}} = arg mathop {max }limits_theta ELBO({q^{(t + 1)}},{theta ^{(t)}}) end{array} right. )


[ELBO(q,theta ) = {E_{q(Z)}} log P(X,Z|theta ) - {E_{q(Z)}}log q(Z) ]

  其中(- {E_{q(Z)}}log q(Z))是熵(H[q(z)]),则

[ELBO(q,theta ) = {E_{q(Z)}} log P(X,Z|theta ) + H[q(z)] ]

  广义EM是先固定一个参数在计算另一个参数,故可以从坐标上升法的角度去看。

七、EM算法的改进

①变分贝叶斯EM算法,VBEM/VIEM/VEM,三个简称叫法不同,但内容基本一致;
②蒙特卡洛EM算法,MCEM。

以上内容是在B站上up主的白板推导系列和几何周志华的西瓜书总结的内容,强烈推荐该系列课程,通俗易懂,还有一定的实时性,附上链接机器学习白板推导系列
本人第一次发博,不周之处还请多多批评,欢迎交流。

内容来源于网络如有侵权请私信删除

文章来源: 博客园

原文链接: https://www.cnblogs.com/Wdragon/p/14755766.html

你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!