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形式)