【机器学习】EM算法详解
对于这种无法直接求解的问题,我们通常会采用迭代求解的策略,一步一步逼近最终的结果,在EM算法中就是E步和M步的交替进行,直至收敛。EM算法用于具有隐变量模型的参数估计,如高斯混合模型,VAE算法推导的前置知识等,了解EM算法更能深刻理解许多复杂算法模型。因为ELBO没有大于等于0的保证,在kl最大化的同时,不能保证kl增加的幅度大于ELBO下降的幅度。在上面的推到中得到ELBO之后,其实求解参数的
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=1∑mlogP(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=1∑mlogzi∑P(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(Z∣X,θ)P(X,Z∣θ)
其中,上式引入了隐变量 Z Z Z和参数 θ \theta θ, P ( Z ∣ X , θ ) P(Z \mid X, \theta) P(Z∣X,θ)是后验概率。
对上式两边取对数
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(Z∣X,θ)
下面的构造就比较有技巧性了,引入 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(Z∣X,θ)
然后两边同时求关于变量 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(Z∣X,θ)]
将期望写成积分的形式(见参考文献【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∣θ)dZ−∫Zq(Z)logq(Z)P(Z∣X,θ)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∣θ)dZ−∫Zq(Z)logq(Z)P(Z∣X,θ)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(Z∣X,θ)dZ 这个其实就是 q ( Z ) q(Z) q(Z)和 P ( Z ∣ X , θ ) P(Z|X,\theta) P(Z∣X,θ)之间的相对熵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(Z∣X,θ))=∫Zq(Z)logP(Z∣X,θ)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(Z∣X,θ))
根据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(Z∣X,θ))≥0 当且仅当 q ( Z ) = P ( Z ∣ X , θ ) q(Z)=P(Z \mid X, \theta) q(Z)=P(Z∣X,θ)取等号,因此有
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(Z∣X,θ(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(Z∣X,θ(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(Z∣X,θ(t))logP(Z∣X,θ(t))P(X,Z∣θ)dZ=EZ∣X,θ(t)[logP(Z∣X,θ(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. EZ∣X,θ(t)[logP(Z∣X,θ(t))P(X,Z∣θ)]=EZ∣X,θ(t)[logP(X,Z∣θ)]−EZ∣X,θ(t)[logP(Z∣X,θ(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)] EZ∣X,θ(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θmaxEZ∣X,θ(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形式)
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)