EM(Expectation Maximization)算法原理小结


适用问题:概率模型参数估计

模型特点:含有隐变量的概率模型

模型类型:-

损失函数:对数似然损失

学习策略:极大似然估计,最大后验概率估计

学习算法:迭代算法

1. EM 算法

EM算法是一种 迭代算法,用于含有隐变量概率模型参数的极大似然估计或极大后验概率估计。EM算法的每次迭代分2步:

  • E步:求期望
  • M步:求极大

1.2 为什么需要EM算法?

通常求解概率模型参数时,是采用极大似然估计的方法求解,即目标是极大化观测数据(设为 Y Y Y)关于参数 θ \theta θ的对数似然函数,即极大化 L ( θ ) = l o g P θ ( Y ) L(\theta)=log P_{\theta}(Y) L(θ)=logPθ(Y)或写成 L ( θ ) = l o g P ( Y ∣ θ ) L(\theta)=log P(Y|\theta) L(θ)=logP(Yθ)

当概率模型还含有隐变量 Z Z Z时,则

L ( θ ) = l o g P θ ( Y ) = l o g ∑ Z P θ ( Y , Z ) = l o g ∑ Z P θ ( Y ∣ Z ) P θ ( Z ) L(\theta)=log P_{\theta}(Y)=log \sum\limits_ZP_{\theta}(Y,Z)=log \sum\limits_ZP_{\theta}(Y|Z)P_{\theta}(Z) L(θ)=logPθ(Y)=logZPθ(Y,Z)=logZPθ(YZ)Pθ(Z)

此时对数似然函数中 l o g log log 里含有求和(或者叫积分),很难得到解析解,即无法使用求偏导令其等于0的方式求解,此时则可采用求解 近似最优解 (工程上),那么EM算法就是一种通过迭代,逐步逼近 L ( θ ) L(\theta) L(θ)极大值的方法

EM 算法的基本思想:假设在第n次迭代后 θ \theta θ的估计值为 θ n \theta_n θn,则我们希望新的估计值 θ \theta θ能使得 L ( θ ) L(\theta) L(θ)增加,即有 L ( θ ) > L ( θ n ) L(\theta)>L(\theta_n) L(θ)>L(θn),并逐步达到极大值。也就是说,当此时 θ n \theta_n θn为已知,我们的目标就转化为,只要使得: L ( θ ) > L ( θ n ) L(\theta)>L(\theta_n) L(θ)>L(θn),即迭代得到的 θ \theta θ 在不断使得似然变大,那么就可以通过迭代,逐步求得近似最优解(最优解就是似然最大时的解)。

1.2 EM 算法推导

假设当迭代 n 次后,得到参数 θ n \theta_n θn,即此时 θ n \theta_n θn为已知,则

L ( θ ) − L ( θ n ) = l o g P θ ( Y ) − l o g P θ n ( Y ) = l o g ∑ Z P θ ( Y ∣ Z ) P θ ( Z ) − l o g P θ n ( Y ) = l o g ∑ Z P θ ( Y ∣ Z ) P θ ( Z ) ⏟ I 1 − l o g P θ n ( Y ) ⏟ I 2 \begin{aligned}L(\theta)-L(\theta_n)&=log P_{\theta}(Y)-log P_{\theta_n}(Y)\\&=log \sum\limits_ZP_{\theta}(Y|Z)P_{\theta}(Z)-log P_{\theta_n}(Y)\\&= \underbrace{log \sum\limits_ZP_{\theta}(Y|Z)P_{\theta}(Z)}_{I_1}-\underbrace{ log P_{\theta_n}(Y)}_{I_2}\end{aligned} L(θ)L(θn)=logPθ(Y)logPθn(Y)=logZPθ(YZ)Pθ(Z)logPθn(Y)=I1 logZPθ(YZ)Pθ(Z)I2 logPθn(Y)

I 1 = l o g ∑ Z P θ ( Y ∣ Z ) P θ ( Z ) = l o g ∑ Z P θ ( Y ∣ Z ) P θ ( Z ) ⋅ P θ n ( Z ∣ Y ) P θ n ( Z ∣ Y ) = l o g ∑ Z P θ n ( Z ∣ Y ) P θ ( Y ∣ Z )    P θ ( Z ) P θ n ( Z ∣ Y ) ⩾ ∑ Z P θ n ( Z ∣ Y ) l o g P θ ( Y ∣ Z )    P θ ( Z ) P θ n ( Z ∣ Y ) \begin{aligned}I_1&=log \sum\limits_ZP_{\theta}(Y|Z)P_{\theta}(Z)\\&=log \sum\limits_ZP_{\theta}(Y|Z)P_{\theta}(Z)\cdot \frac{P_{\theta_n}(Z|Y)}{P_{\theta_n}(Z|Y)}\\&=log \sum\limits_Z P_{\theta_n}(Z|Y) \frac{P_{\theta}(Y|Z)\;P_{\theta}(Z)}{P_{\theta_n}(Z|Y)}\\&\geqslant \sum\limits_Z P_{\theta_n}(Z|Y) log \frac{P_{\theta}(Y|Z)\;P_{\theta}(Z)}{P_{\theta_n}(Z|Y)}\end{aligned} I1=logZPθ(YZ)Pθ(Z)=logZPθ(YZ)Pθ(Z)Pθn(ZY)Pθn(ZY)=logZPθn(ZY)Pθn(ZY)Pθ(YZ)Pθ(Z)ZPθn(ZY)logPθn(ZY)Pθ(YZ)Pθ(Z)

上面 I 1 I_1 I1利用了“琴生不等式”,即把 P θ n ( Z ∣ Y ) P_{\theta_n}(Z|Y) Pθn(ZY)看成权重/系数,且满足 P θ n ( Z ∣ Y ) ⩾ 0 P_{\theta_n}(Z|Y)\geqslant0 Pθn(ZY)0以及 ∑ Z P θ n ( Z ∣ Y ) = 1 \sum\limits_Z P_{\theta_n}(Z|Y)=1 ZPθn(ZY)=1,则可以使用“琴生不等式”

【补充】:琴生(Jensen)不等式
当为凸函数时,有 f ( x 1 + x 2 2 ) ⩾ 1 2 [ f ( x 1 ) + f ( x 2 ) ] f(\frac{x_1+x_2}{2})\geqslant \frac{1}{2}[f(x_1)+f(x_2)] f(2x1+x2)21[f(x1)+f(x2)]
推广有: f ( ∑ w i x i ) ⩾ ∑ w i f ( x i ) f(\sum w_i x_i)\geqslant \sum w_i f(x_i) f(wixi)wif(xi),当 ∑ w i = 1 \sum w_i=1 wi=1 w i > 0 w_i>0 wi>0 为正数
推广有: f ( E ( X ) ) ⩾ E ( f ( X ) ) f(E(X))\geqslant E(f(X)) f(E(X))E(f(X))

I 2 = l o g P θ n ( Y ) = l o g P θ n ( Y ) ⋅ 1 = l o g P θ n ( Y ) ⋅ ∑ Z P θ n ( Z ∣ Y ) = ∑ Z P θ n ( Z ∣ Y ) l n P θ n ( Y ) \begin{aligned}I_2 & =log P_{\theta_n}(Y)\\&=log P_{\theta_n}(Y) \cdot 1\\&=log P_{\theta_n}(Y) \cdot \sum\limits_Z P_{\theta_n}(Z|Y)\\& =\sum\limits_Z P_{\theta_n}(Z|Y) lnP_{\theta_n}(Y)\end{aligned} I2=logPθn(Y)=logPθn(Y)1=logPθn(Y)ZPθn(ZY)=ZPθn(ZY)lnPθn(Y)

则有:

L ( θ ) − L ( θ n ) = I 1 − I 2 ⩾ ∑ Z P θ n ( Z ∣ Y ) l o g P θ ( Y ∣ Z )    P θ ( Z ) P θ n ( Z ∣ Y ) − ∑ Z P θ n ( Z ∣ Y ) l o g P θ n ( Y ) = ∑ Z P θ n ( Z ∣ Y ) [ l o g P θ ( Y ∣ Z )    P θ ( Z ) P θ n ( Z ∣ Y ) − l o g P θ n ( Y ) ] = ∑ Z P θ n ( Z ∣ Y ) l o g P θ ( Y ∣ Z )    P θ ( Z ) P θ n ( Z ∣ Y )    P θ n ( Y ) \begin{aligned}L(\theta)-L(\theta_n)=I_1-I_2 &\geqslant \sum\limits_Z P_{\theta_n}(Z|Y) log \frac{P_{\theta}(Y|Z)\;P_{\theta}(Z)}{P_{\theta_n}(Z|Y)}-\sum\limits_Z P_{\theta_n}(Z|Y) log P_{\theta_n}(Y)\\&=\sum\limits_Z P_{\theta_n}(Z|Y) \big[ log \frac{P_{\theta}(Y|Z)\;P_{\theta}(Z)}{P_{\theta_n}(Z|Y)}-log P_{\theta_n}(Y)\big]\\&=\sum\limits_Z P_{\theta_n}(Z|Y) log \frac{P_{\theta}(Y|Z) \;P_{\theta}(Z)}{P_{\theta_n}(Z|Y)\;P_{\theta_n}(Y)}\end{aligned} L(θ)L(θn)=I1I2ZPθn(ZY)logPθn(ZY)Pθ(YZ)Pθ(Z)ZPθn(ZY)logPθn(Y)=ZPθn(ZY)[logPθn(ZY)Pθ(YZ)Pθ(Z)logPθn(Y)]=ZPθn(ZY)logPθn(ZY)Pθn(Y)Pθ(YZ)Pθ(Z)

EM算法关键:下边界函数

B ( θ ∣ θ n ) = L ( θ n ) + ∑ Z P θ n ( Z ∣ Y ) l o g P θ ( Y ∣ Z )    P θ ( Z ) P θ n ( Z ∣ Y )    P θ n ( Y ) B(\theta|\theta_n)=L(\theta_n)+\sum\limits_Z P_{\theta_n}(Z|Y) log \frac{P_{\theta}(Y|Z) \;P_{\theta}(Z)}{P_{\theta_n}(Z|Y)\;P_{\theta_n}(Y)} B(θθn)=L(θn)+ZPθn(ZY)logPθn(ZY)Pθn(Y)Pθ(YZ)Pθ(Z),则有:

L ( θ ) ⩾ B ( θ ∣ θ n ) L(\theta) \geqslant B(\theta|\theta_n) L(θ)B(θθn)

B ( θ ∣ θ n ) B(\theta|\theta_n) B(θθn) L ( θ ) L(\theta) L(θ)下边界函数(这是EM算法的关键)

并且此下边界函数还有个特点 B ( θ n ∣ θ n ) = L ( θ n ) B(\theta_n|\theta_n)=L(\theta_n) B(θnθn)=L(θn)

因为当 θ = θ n \theta=\theta_n θ=θn时,
l o g P θ ( Y ∣ Z )    P θ ( Z ) P θ n ( Z ∣ Y )    P θ n ( Y ) = l o g P θ n ( Y ∣ Z )    P θ n ( Z ) P θ n ( Z ∣ Y )    P θ n ( Y ) = l o g P θ n ( Y , Z ) P θ n ( Y , Z ) = l o g 1 = 0 log \frac{P_{\theta}(Y|Z) \;P_{\theta}(Z)}{P_{\theta_n}(Z|Y)\;P_{\theta_n}(Y)}=log \frac{P_{\theta_n}(Y|Z) \;P_{\theta_n}(Z)}{P_{\theta_n}(Z|Y)\;P_{\theta_n}(Y)}=log\frac{P_{\theta_n}(Y,Z)}{P_{\theta_n}(Y,Z)}=log1=0 logPθn(ZY)Pθn(Y)Pθ(YZ)Pθ(Z)=logPθn(ZY)Pθn(Y)Pθn(YZ)Pθn(Z)=logPθn(Y,Z)Pθn(Y,Z)=log1=0

即有 B ( θ n ∣ θ n ) = L ( θ n ) + 0 B(\theta_n|\theta_n)=L(\theta_n)+0 B(θnθn)=L(θn)+0

因为有 L ( θ ) ⩾ B ( θ ∣ θ n ) L(\theta)\geqslant B(\theta|\theta_n) L(θ)B(θθn) L ( θ n ) = B ( θ n ∣ θ n ) L(\theta_n)=B(\theta_n|\theta_n) L(θn)=B(θnθn),也就是说任何使得 B ( θ ∣ θ n ) B(\theta|\theta_n) B(θθn)增大的 θ \theta θ,也可以使得 L ( θ ) L(\theta) L(θ)增大,而为了使 L ( θ ) L(\theta) L(θ)有尽可能大的增长,则选择 θ n + 1 \theta_{n+1} θn+1时就选能使 B ( θ ∣ θ n ) B(\theta|\theta_n) B(θθn)达到极大值的 θ \theta θ,即 θ n + 1 = arg ⁡ max ⁡ θ B ( θ ∣ θ n ) \theta_{n+1}=\arg \max\limits_{\theta}B(\theta|\theta_n) θn+1=argθmaxB(θθn),即求下边界函数的max,其对应的 θ \theta θ就为 θ n + 1 \theta_{n+1} θn+1

EM算法解释

EM算法解释

通过上图来看一下是如何迭代求解最终的 θ ∗ \theta^* θ 的:

  • 当在 θ n \theta_n θn这一点时, L ( θ ) L(\theta) L(θ)与此时的下边界函数 B ( θ ∣ θ n ) B(\theta|\theta_n) B(θθn)(橘色曲线)相切,即有 L ( θ n ) = B ( θ n ∣ θ n ) L(\theta_n)=B(\theta_n|\theta_n) L(θn)=B(θnθn),然后求得 B ( θ ∣ θ n ) B(\theta|\theta_n) B(θθn)的max 对应的 θ \theta θ即为 θ n + 1 \theta_{n+1} θn+1,即 θ n + 1 = arg ⁡ max ⁡ θ B ( θ ∣ θ n ) \theta_{n+1}=\arg \max\limits_{\theta}B(\theta|\theta_n) θn+1=argθmaxB(θθn)
  • 当在 θ n + 1 \theta_{n+1} θn+1这一点时,此时定有 L ( θ n + 1 ) > L ( θ n ) L(\theta_{n+1})>L(\theta_n) L(θn+1)>L(θn)(因为其下边界在这一点处取得max),此时其对应的下边界函数 B ( θ ∣ θ n + 1 ) B(\theta|\theta_{n+1}) B(θθn+1)(红色曲线),与 L ( θ ) L(\theta) L(θ) θ n + 1 \theta_{n+1} θn+1这点相切。即有 L ( θ n + 1 ) = B ( θ n + 1 ∣ θ n + 1 ) L(\theta_{n+1})=B(\theta_{n+1}|\theta_{n+1}) L(θn+1)=B(θn+1θn+1),然后求得 B ( θ ∣ θ n + 1 ) B(\theta|\theta_{n+1}) B(θθn+1)的max 对应的 θ \theta θ即为 θ n + 2 \theta_{n+2} θn+2,即 θ n + 2 = arg ⁡ max ⁡ θ B ( θ ∣ θ n + 1 ) \theta_{n+2}=\arg \max\limits_{\theta}B(\theta|\theta_{n+1}) θn+2=argθmaxB(θθn+1)
  • 当在 θ n + 2 \theta_{n+2} θn+2这一点时,此时定有 L ( θ n + 2 ) > L ( θ n + 1 ) L(\theta_{n+2})>L(\theta_{n+1}) L(θn+2)>L(θn+1)(因为其下边界在这一点处取得max),此时其对应的下边界函数 B ( θ ∣ θ n + 2 ) B(\theta|\theta_{n+2}) B(θθn+2)

下边界函数也一直在随着迭代变化,即每一步迭代,就会得到新的下边界函数,通过求解新的下边界函数的max去得到新的 θ \theta θ,而新的 L ( θ ) L(\theta) L(θ)一定是在不断增大的,如此迭代下去,不断逼近似然函数的max,以及相对应的参数 θ \theta θ,满足迭代停止条件(例如 ∥ θ n + 1 − θ n ∥ < ϵ \|\theta_{n+1}-\theta_n\|\lt\epsilon θn+1θn<ϵ)时,那么此时得到的 θ \theta θ就可以认为是最优解的近似值,即 θ ∗ \theta^* θ,此时对应的似然 L ( θ ∗ ) L(\theta^*) L(θ)也近似达到最大值。

迭代逼近优化思想:
总结来说,就是因为前面的对数似然函数的log里有加和项,不能直接通过求偏导令其等于0的方式求解,即求不到解析解,所以就通过这种迭代逼近的方法去得到近似解。

具体实现就是:
下边界函数 B ( θ ∣ θ n ) B(\theta|\theta_n) B(θθn)的最大值对应的 θ \theta θ,然后通过不断地迭代,其对数似然 L ( θ ) L(\theta) L(θ)也在不断增大,直至找到最优解的近似解。

继续看下边界函数

B ( θ ∣ θ n ) = L ( θ n ) + ∑ Z P θ n ( Z ∣ Y ) l o g P θ ( Y ∣ Z )    P θ ( Z ) P θ n ( Z ∣ Y )    P θ n ( Y ) = ∑ Z P θ n ( Z ∣ Y ) l o g P θ ( Y ∣ Z )    P θ ( Z ) + L ( θ n ) − ∑ Z P θ n ( Z ∣ Y ) l o g P θ n ( Z ∣ Y )    P θ n ( Y ) ⏟ 对 θ 来 说 是 常 数 项 = Q ( θ ∣ θ n ) + C ( θ n ) \begin{aligned}B(\theta|\theta_n)&=L(\theta_n)+\sum\limits_Z P_{\theta_n}(Z|Y) log \frac{P_{\theta}(Y|Z) \;P_{\theta}(Z)}{P_{\theta_n}(Z|Y)\;P_{\theta_n}(Y)}\\&= \sum\limits_Z P_{\theta_n}(Z|Y) log P_{\theta}(Y|Z) \;P_{\theta}(Z)+\underbrace{L(\theta_n)- \sum\limits_Z P_{\theta_n}(Z|Y) log P_{\theta_n}(Z|Y)\;P_{\theta_n}(Y)}_{对\theta来说是常数项}\\&=Q(\theta|\theta_n)+C(\theta_n)\end{aligned} B(θθn)=L(θn)+ZPθn(ZY)logPθn(ZY)Pθn(Y)Pθ(YZ)Pθ(Z)=ZPθn(ZY)logPθ(YZ)Pθ(Z)+θ L(θn)ZPθn(ZY)logPθn(ZY)Pθn(Y)=Q(θθn)+C(θn)

即令 Q ( θ ∣ θ n ) = ∑ Z P θ n ( Z ∣ Y ) l o g P θ ( Y ∣ Z )    P θ ( Z ) Q(\theta|\theta_n)=\sum\limits_Z P_{\theta_n}(Z|Y) log P_{\theta}(Y|Z) \;P_{\theta}(Z) Q(θθn)=ZPθn(ZY)logPθ(YZ)Pθ(Z)

下边界函数求偏导,后面常数项求导后就会为0。

Q Q Q函数可以看成是下边界函数 B B B函数的简化版。来看一下 Q Q Q函数是什么?

Q ( θ ∣ θ n ) = ∑ Z P θ n ( Z ∣ Y ) l o g P θ ( Y ∣ Z )    P θ ( Z ) = ∑ Z P θ n ( Z ∣ Y ) l o g P θ ( Y , Z ) Q(\theta|\theta_n)=\sum\limits_Z P_{\theta_n}(Z|Y) log P_{\theta}(Y|Z) \;P_{\theta}(Z)= \sum\limits_Z P_{\theta_n}(Z|Y) log P_{\theta}(Y,Z) Q(θθn)=ZPθn(ZY)logPθ(YZ)Pθ(Z)=ZPθn(ZY)logPθ(Y,Z)

其中 ∑ Z P θ n ( Z ∣ Y ) l o g P θ ( Y , Z ) \sum\limits_Z P_{\theta_n}(Z|Y) log P_{\theta}(Y,Z) ZPθn(ZY)logPθ(Y,Z) 可以看成是 l o g P θ ( Y , Z ) log P_{\theta}(Y,Z) logPθ(Y,Z) 以条件概率 P θ n ( Z ∣ Y ) P_{\theta_n}(Z|Y) Pθn(ZY) 为概率 求期望
Expectation w.r.t. P θ n ( Z ∣ Y ) P_{\theta_n}(Z|Y) Pθn(ZY) ,即 E Z ∣ Y [ l o g P θ ( Y , Z ) ] E_{Z|Y}\big[log P_{\theta}(Y,Z)\big] EZY[logPθ(Y,Z)],这个期望就是 Q Q Q函数。

Q Q Q函数的定义

完全数据的对数似然函数 log ⁡ P θ ( Y , Z ) \log P_\theta(Y, Z ) logPθ(Y,Z)关于在给定观测数据 Y Y Y和当前参数 θ n \theta_{n} θn下对未观测数据 Z Z Z的条件概率分布 P θ n ( Z ∣ Y ) P_{\theta_n}\left(Z \mid Y\right) Pθn(ZY)的期望称为Q函数:

Q ( θ ∣ θ n ) = E Z ∣ Y , θ n [ l o g P θ ( Y , Z ) ] Q(\theta|\theta_n)=E_{Z|Y,\theta_n}\big[log P_{\theta}(Y,Z)\big] Q(θθn)=EZY,θn[logPθ(Y,Z)]

EM算法

EM算法

1.3 算法总结

最大似然因为含有隐变量不好求解,则通过EM方法,求取似然函数的下边界函数,通过迭代的方法,得到最优解的近似解 θ ∗ \theta^* θ

下边界函数 B ( θ ∣ θ n ) B(\theta|\theta_n) B(θθn)(或者说 Q ( θ ∣ θ n ) Q(\theta|\theta_n) Q(θθn))求偏导,即令 ∂ Q ( θ ∣ θ n ) ∂ θ = 0 \frac{\partial Q(\theta|\theta_n)}{\partial \theta}=0 θQ(θθn)=0,得到的最优值 θ n + 1 \theta_{n+1} θn+1变成了第n+1次迭代的参数值,再把参数值带回去,构造出下一次的下边界函数 B ( θ ∣ θ n + 1 ) B(\theta|\theta_{n+1}) B(θθn+1)(或者说 Q ( θ ∣ θ n + 1 ) Q(\theta|\theta_{n+1}) Q(θθn+1))…无限逼近真实似然的情况(似然的最大值)。

EM算法是很多机器学习领域算法的基础,比如高斯混合模型参数估计、隐式马尔科夫算法(HMM)等等。

最后:如果本文中出现任何错误,请您一定要帮忙指正,感激~

参考

[1] 统计学习方法(第2版) 李航

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值