【机器学习】EM算法详解

1 引言

  EM算法用于具有隐变量模型的参数估计,如高斯混合模型,VAE算法推导的前置知识等,了解EM算法更能深刻理解许多复杂算法模型。

  本文为自学内容的记录,其中多有参考他人博客的地方在参考文献一并给出链接。

2 为什么需要EM算法

3 EM算法的推导

  对于 m m m个相互独立的样本 x = ( x 1 , x 2 , … , x m ) x=(x_1, x_2,\dots,x_m) x=(x1,x2,,xm),对应的隐含数据 z = ( z 1 , z 2 , … , z m ) z=(z_1,z_2,\dots,z_m) z=(z1,z2,,zm),此时 ( x , z ) (x,z) (x,z)为完全数据,样本模型的参数为 θ \theta θ 则观察数据 x i x_i xi的概率为 P ( x i ∣ θ ) P(x_i|\theta) P(xiθ),完全数据 ( x i , z i ) (x_i,z_i) (xi,zi)的似然函数为 P ( x i , z i ∣ θ ) P(x_i,z_i|\theta) P(xi,ziθ)

  假如没有隐含变量 z z z,仅需要找到合适的 θ \theta θ 极大对数似然函数即可:
θ = arg ⁡ max ⁡ θ L ( θ ) = arg ⁡ max ⁡ θ ∑ i = 1 m log ⁡ P ( x i ∣ θ ) \theta=\arg \max _{\theta} L(\theta)=\arg \max _{\theta} \sum_{i=1}^{m} \log P\left(x_{i} \mid \theta\right) θ=argθmaxL(θ)=argθmaxi=1mlogP(xiθ)
增加隐含变量 z z z之后,我们的目标变成了找到合适的 θ \theta θ z z z让对数似然函数最大:
θ , z = arg ⁡ max ⁡ θ , z L ( θ , z ) = arg ⁡ max ⁡ θ , z ∑ i = 1 m log ⁡ ∑ z i P ( x i , z i ∣ θ ) \theta, z=\arg \max _{\theta, z} L(\theta, z)=\arg \max _{\theta, z} \sum_{i=1}^{m} \log \sum_{z_{i}} P\left(x_{i}, z_{i} \mid \theta\right) θ,z=argθ,zmaxL(θ,z)=argθ,zmaxi=1mlogziP(xi,ziθ)

  如果上式在 l o g log log里面会出现积分(求和)符号,导致对似然函数的求导变得困难,无法求解。对于这种无法直接求解的问题,我们通常会采用迭代求解的策略,一步一步逼近最终的结果,在EM算法中就是E步和M步的交替进行,直至收敛。

4 ELBO+KL形式

根据条件概率公式则
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(ZX,θ)P(X,Zθ)
其中,上式引入了隐变量 Z Z Z和参数 θ \theta θ P ( Z ∣ X , θ ) P(Z \mid X, \theta) P(ZX,θ)是后验概率。
对上式两边取对数
log ⁡ P ( X ∣ θ ) = log ⁡ P ( X , Z ∣ θ ) − log ⁡ P ( Z ∣ X , θ ) \log P(X \mid \theta)=\log P(X, Z \mid \theta)-\log P(Z \mid X, \theta) logP(Xθ)=logP(X,Zθ)logP(ZX,θ)

下面的构造就比较有技巧性了,引入 Z Z Z的概率分布 q ( Z ) q(Z) q(Z) q ( Z ) q(Z) q(Z)可以是任意一个分布,个人感觉这里是为了凑 K L KL KL散度公式,十分巧妙(见参考文献【8】))并且
∫ Z q ( Z ) d Z = 1 \int_{Z} q(Z) d Z=1 Zq(Z)dZ=1,则上式可以写为:

log ⁡ P ( X ∣ θ ) = log ⁡ P ( X , Z ∣ θ ) q ( Z ) − log ⁡ P ( Z ∣ X , θ ) q ( Z ) \log P(X \mid \theta)=\log \frac{P(X, Z \mid \theta)}{q(Z)}-\log \frac{P(Z \mid X, \theta)}{q(Z)} logP(Xθ)=logq(Z)P(X,Zθ)logq(Z)P(ZX,θ)

然后两边同时求关于变量 Z Z Z的期望

E Z [ log ⁡ P ( X ∣ θ ) ] = E Z [ log ⁡ P ( X , Z ∣ θ ) q ( Z ) ] − E Z [ log ⁡ P ( Z ∣ X , θ ) q ( Z ) ] \mathbb{E}_{Z}[\log P(X \mid \theta)]=\mathbb{E}_{Z}\left[\log \frac{P(X, Z \mid \theta)}{q(Z)}\right]-\mathbb{E}_{Z}\left[\log \frac{P(Z \mid X, \theta)}{q(Z)}\right] EZ[logP(Xθ)]=EZ[logq(Z)P(X,Zθ)]EZ[logq(Z)P(ZX,θ)]

将期望写成积分的形式(见参考文献【10】

∫ Z q ( Z ) log ⁡ P ( X ∣ θ ) d Z = ∫ Z q ( Z ) log ⁡ P ( X , Z ∣ θ ) q ( Z ) d Z − ∫ Z q ( Z ) log ⁡ P ( Z ∣ X , θ ) q ( Z ) d Z \int_{Z} q(Z) \log P(X \mid \theta) d Z=\int_{Z} q(Z) \log \frac{P(X, Z \mid \theta)}{q(Z)} d Z-\int_{Z} q(Z) \log \frac{P(Z \mid X, \theta)}{q(Z)} d Z Zq(Z)logP(Xθ)dZ=Zq(Z)logq(Z)P(X,Zθ)dZZq(Z)logq(Z)P(ZX,θ)dZ

同时由于 l o g ( P ( X ∣ θ ) ) log(P(X|\theta)) log(P(Xθ)) Z Z Z无关,上式又可变换为:

log ⁡ P ( X ∣ θ ) = ∫ Z q ( Z ) log ⁡ P ( X , Z ∣ θ ) q ( Z ) d Z − ∫ Z q ( Z ) log ⁡ P ( Z ∣ X , θ ) q ( Z ) d Z \log P(X \mid \theta)=\int_{Z} q(Z) \log \frac{P(X, Z \mid \theta)}{q(Z)} d Z-\int_{Z} q(Z) \log \frac{P(Z \mid X, \theta)}{q(Z)} d Z logP(Xθ)=Zq(Z)logq(Z)P(X,Zθ)dZZq(Z)logq(Z)P(ZX,θ)dZ
此处细节不了解的可见参考文献【9】,注意上式最右边的积分项 − ∫ Z q ( Z ) log ⁡ P ( Z ∣ X , θ ) q ( Z ) d Z -\int_{Z} q(Z) \log \frac{P(Z \mid X, \theta)}{q(Z)} d Z Zq(Z)logq(Z)P(ZX,θ)dZ 这个其实就是 q ( Z ) q(Z) q(Z) P ( Z ∣ X , θ ) P(Z|X,\theta) P(ZX,θ)之间的相对熵Kullback-Leibler divergence (KL divergence),记作:

D K L ( q ( Z ) ∥ P ( Z ∣ X , θ ) ) = ∫ Z q ( Z ) log ⁡ q ( Z ) P ( Z ∣ X , θ ) d Z D_{K L}(q(Z) \| P(Z \mid X, \theta))=\int_{Z} q(Z) \log \frac{q(Z)}{P(Z \mid X, \theta)} d Z DKL(q(Z)P(ZX,θ))=Zq(Z)logP(ZX,θ)q(Z)dZ

所以有

log ⁡ P ( X ∣ θ ) = ∫ Z q ( Z ) log ⁡ P ( X , Z ∣ θ ) q ( Z ) d Z + D K L ( q ( Z ) ∥ P ( Z ∣ X , θ ) ) \log P(X \mid \theta)=\int_{Z} q(Z) \log \frac{P(X, Z \mid \theta)}{q(Z)} d Z+D_{K L}(q(Z) \| P(Z \mid X, \theta)) logP(Xθ)=Zq(Z)logq(Z)P(X,Zθ)dZ+DKL(q(Z)P(ZX,θ))

根据KL divergence的性质 D K L ( q ( Z ) ∥ P ( Z ∣ X , θ ) ) ≥ 0 D_{K L}(q(Z) \| P(Z \mid X, \theta)) \geq 0 DKL(q(Z)P(ZX,θ))0 当且仅当 q ( Z ) = P ( Z ∣ X , θ ) q(Z)=P(Z \mid X, \theta) q(Z)=P(ZX,θ)取等号,因此有

log ⁡ P ( X ∣ θ ) ≥ ∫ Z q ( Z ) log ⁡ P ( X , Z ∣ θ ) q ( Z ) d Z \log P(X \mid \theta) \geq \int_{Z} q(Z) \log \frac{P(X, Z \mid \theta)}{q(Z)} d Z logP(Xθ)Zq(Z)logq(Z)P(X,Zθ)dZ

因此便得到了 log ⁡ P ( X ∣ θ ) \log P(X \mid \theta) logP(Xθ)的一个下界称为Evidence Lower Bound (ELBO),后面就可以通过迭代的方式不断抬高ELBO使得 log ⁡ P ( X ∣ θ ) \log P(X \mid \theta) logP(Xθ)增大。但目前还有一个问题, q ( Z ) q(Z) q(Z)是未知的下界还是没法求。我们可以直接在每一轮迭代时令 q ( Z ) = P ( Z ∣ X , θ ( t ) ) q(Z)=P\left(Z \mid X, \theta^{(t)}\right) q(Z)=P(ZX,θ(t)),此时 D K L ( q ( Z ) ∥ P ( Z ∣ X , θ ( t ) ) ) = 0 D_{K L}\left(q(Z) \| P\left(Z \mid X, \theta^{(t)}\right)\right)=0 DKL(q(Z)P(ZX,θ(t)))=0
,因为我们想要ELBO和 log ⁡ P ( X ∣ θ ) \log P(X \mid \theta) logP(Xθ)的差距尽可能的小,这样抬高ELBO才会使得 log ⁡ P ( X ∣ θ ) \log P(X \mid \theta) logP(Xθ)的增益更大,所以将KL这一项直接置为0是比较合理的,此时ELBO就变为:
∫ Z P ( Z ∣ X , θ ( t ) ) log ⁡ P ( X , Z ∣ θ ) P ( Z ∣ X , θ ( t ) ) d Z = E Z ∣ X , θ ( t ) [ log ⁡ P ( X , Z ∣ θ ) P ( Z ∣ X , θ ( t ) ) ] \int_{Z} P\left(Z \mid X, \theta^{(t)}\right) \log \frac{P(X, Z \mid \theta)}{P\left(Z \mid X, \theta^{(t)}\right)} d Z=\mathbb{E}_{Z \mid X, \theta^{(t)}}\left[\log \frac{P(X, Z \mid \theta)}{P\left(Z \mid X, \theta^{(t)}\right)}\right] ZP(ZX,θ(t))logP(ZX,θ(t))P(X,Zθ)dZ=EZX,θ(t)[logP(ZX,θ(t))P(X,Zθ)]
展开有
E Z ∣ X , θ ( t ) [ log ⁡ P ( X , Z ∣ θ ) P ( Z ∣ X , θ ( t ) ) ] = E Z ∣ X , θ ( t ) [ log ⁡ P ( X , Z ∣ θ ) ] − E Z ∣ X , θ ( t ) [ log ⁡ P ( Z ∣ X , θ ( t ) ] \mathbb{E}_{Z \mid X, \theta^{(t)}}\left[\log \frac{P(X, Z \mid \theta)}{P\left(Z \mid X, \theta^{(t)}\right)}\right]=\mathbb{E}_{Z \mid X, \theta^{(t)}}[\log P(X, Z \mid \theta)]-\mathbb{E}_{Z \mid X, \theta^{(t)}}\left[\log P\left(Z \mid X, \theta^{(t)}\right]\right. EZX,θ(t)[logP(ZX,θ(t))P(X,Zθ)]=EZX,θ(t)[logP(X,Zθ)]EZX,θ(t)[logP(ZX,θ(t)]

因为我们最终的目标是求出某个 θ ^ \hat \theta θ^ 使得ELBO最大,上式的第二项与 θ \theta θ无关,可看成是一个常数,所以可以直接扔掉,则上式变为:

E Z ∣ X , θ ( t ) [ log ⁡ P ( X , Z ∣ θ ) ] \mathbb{E}_{Z \mid X, \theta^{(t)}}[\log P(X, Z \mid \theta)] EZX,θ(t)[logP(X,Zθ)]

这样我们得到了EM算法E-step求期望的那个式子。紧接着就是求解 θ \theta θ ,使得该期望达到最大,即M-step
θ ( t + 1 ) = arg ⁡ max ⁡ θ E Z ∣ X , θ ( t ) [ log ⁡ P ( X , Z ∣ θ ) ] \theta^{(t+1)}=\arg \max _{\theta} \mathbb{E}_{Z \mid X, \theta^{(t)}}[\log P(X, Z \mid \theta)] θ(t+1)=argθmaxEZX,θ(t)[logP(X,Zθ)]

以上便是EM算法的ELBO+KL形式的推导过程。

4.1 QA

  在上面的推到中得到ELBO之后,其实求解参数的问题就转化为使得ELBO最大的问题,参考文献【9】
在这里插入图片描述
在这里插入图片描述

为什么要最大化ELBO,而不是直接最大化KL?
  因为ELBO没有大于等于0的保证,在kl最大化的同时,不能保证kl增加的幅度大于ELBO下降的幅度。

5 算法收敛性证明

6 参考文献

[1]Jensen不等式初步理解及证明
[2]联合概率、边缘概率、条件概率之间的关系&贝叶斯公式[3]凸函数
[4]原函数图像与导函数图像的关系探究
[5]人人都能看懂的EM算法推导
[6]机器学习-白板推导系列(十)-EM算法(Expectation Maximization)
[7]EM算法之KL散度和Jensen不等式
[8]关于KL散度(Kullback-Leibler Divergence)的笔记
[9]EM算法总结:从 ELBO + KL散度出发
[10]如何计算数学期望
[11]深入理解EM算法(ELBO+KL形式)

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这些引用资料提供了机器学习算法代码讲解的内容。其中,提到了机器学习算法的基本原理和Python实现的算法实例,包括回归算法、决策树与集成算法、聚类算法、贝叶斯算法、支持向量机、推荐系统、主成分分析、EM算法、神经网络、时间序列分析等。指出这篇指南的目的是简化学习机器学习的旅程,并提供了高水平理解和R、Python代码,以便读者实践和学习。强调立即开始学习机器学习,并通过做练习、应用代码来感受乐趣。综合这些资料,我们可以得出结论,这些引用提供了机器学习算法代码的讲解和实践的指南。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [机器学习算法原理详解+代码实战](https://download.csdn.net/download/yohnyang/87280731)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [10 种机器学习算法的要点(附 Python 和 R 代码)](https://blog.csdn.net/onlyForCloud/article/details/48968999)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值