EM算法公式推导
最近一直在B站上看一个UP主的机器学习白板推导,感觉很有益处,因为之前看过的各种博客似乎都一直强调对EM算法的感性认识,缺少了很多的推导过程。我想,要完全理性地了解这个算法,还是要一步一步地通过推导。
主要参考资料:白板推导视频
公式导出:ELBO+KL divergence
在上一讲EM算法公式推导(一)我们说到了EM算法有
θ
\theta
θ的迭代公式
θ
(
t
+
1
)
=
arg max
θ
∫
z
log
P
(
x
,
z
∣
θ
)
⋅
P
(
z
∣
x
,
θ
(
t
)
)
d
z
\theta^{(t+1)}=\argmax _{\theta} \int_{z} \log P(x, z | \theta) \cdot P\left(z | x, \theta^{(t)}\right) d z
θ(t+1)=θargmax∫zlogP(x,z∣θ)⋅P(z∣x,θ(t))dz
= arg max θ E z ∣ x , θ ( t ) [ log P ( x , z ∣ θ ) ] =\argmax_{\theta}E_{z|x,\theta^{(t)}}[\log P(x, z| \theta)] =θargmaxEz∣x,θ(t)[logP(x,z∣θ)]
对这个迭代公式怎么来的并没有详细的说明,这节将要推出这个公式。
始终不变的是:我们要求的是
log
P
(
X
∣
θ
)
\log P(X|\theta)
logP(X∣θ)。
log
P
(
x
∣
θ
)
=
log
P
(
x
,
z
∣
θ
)
−
log
P
(
z
∣
x
,
θ
)
=
log
P
(
x
,
z
∣
θ
)
)
Q
(
z
)
−
log
P
(
z
∣
x
,
θ
Q
(
z
)
\begin{aligned} \log P(x|\theta)=&\log P(x,z|\theta)-\log P(z|x,\theta) \\ =&\log \frac{P(x,z|\theta))}{Q(z)}-\log \frac{P(z|x,\theta}{Q(z)} \end{aligned}
logP(x∣θ)==logP(x,z∣θ)−logP(z∣x,θ)logQ(z)P(x,z∣θ))−logQ(z)P(z∣x,θ
其中
Q
(
z
)
Q(z)
Q(z)是一个满足
Q
(
z
)
≠
0
Q(z)\neq 0
Q(z)=0的分布。
两边同时在
Q
(
z
)
Q(z)
Q(z)上对z求期望。左边与
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
\begin{aligned}\log P(x|\theta)=&\int_zQ(z)\log \frac{P(x,z|\theta)}{Q(z)}dz \\ -&\int_z Q(z)\log \frac{P(z|x,\theta)}{Q(z)}dz \end{aligned}
logP(x∣θ)=−∫zQ(z)logQ(z)P(x,z∣θ)dz∫zQ(z)logQ(z)P(z∣x,θ)dz
定义ELBO(Evidence Lower Bound)
=
∫
z
Q
(
z
)
log
P
(
x
,
z
∣
θ
)
Q
(
z
)
d
z
=\int_zQ(z)\log \frac{P(x,z|\theta)}{Q(z)}dz
=∫zQ(z)logQ(z)P(x,z∣θ)dz
K
L
(
P
(
z
∣
x
,
θ
)
∣
∣
Q
(
z
)
)
=
−
∫
z
Q
(
z
)
log
P
(
z
∣
x
,
θ
)
Q
(
z
)
d
z
KL(P(z|x,\theta)||Q(z))=-\int_z Q(z)\log \frac{P(z|x,\theta)}{Q(z)}dz
KL(P(z∣x,θ)∣∣Q(z))=−∫zQ(z)logQ(z)P(z∣x,θ)dz
故可以得到:
log
P
(
x
∣
θ
)
=
E
L
B
O
+
K
L
(
P
(
z
∣
x
,
θ
)
∣
∣
Q
(
z
)
)
\log P(x|\theta)=ELBO+KL(P(z|x,\theta)||Q(z))
logP(x∣θ)=ELBO+KL(P(z∣x,θ)∣∣Q(z))
KL divergence是恒大于等于0的,其中等于0的条件是
P
(
z
∣
x
,
θ
)
≡
Q
(
z
)
P(z|x,\theta)\equiv Q(z)
P(z∣x,θ)≡Q(z)
ELBO给出了左边式子的一个下界(这也是它名字的由来)。
我们在用EM算法进行迭代的过程中,实际上是在不断增加它的下界ELBO
在这个过程中要减小KL divergence,所以有
Q
(
z
)
=
P
(
z
∣
x
,
θ
(
t
)
)
Q(z)=P(z|x,\theta^{(t)})
Q(z)=P(z∣x,θ(t))
综上
θ
(
t
+
1
)
=
arg max
θ
E
L
B
O
=
arg max
θ
∫
z
Q
(
z
)
log
P
(
z
,
x
∣
θ
)
Q
(
z
)
d
z
=
arg max
θ
∫
z
P
(
z
∣
x
,
θ
(
t
)
)
log
P
(
z
,
x
∣
θ
)
P
(
z
∣
x
,
θ
(
t
)
)
d
z
=
arg max
θ
∫
z
P
(
z
∣
x
,
θ
(
t
)
)
log
P
(
x
,
z
∣
θ
)
d
z
=
arg max
θ
E
z
∣
x
,
θ
(
t
)
[
log
P
(
x
,
z
∣
θ
)
]
\begin{aligned}\theta^{(t+1)}=&\argmax_{\theta} ELBO \\ =&\argmax_{\theta}\int_zQ(z)\log \frac{P(z,x|\theta)}{Q(z)}dz \\ =&\argmax_{\theta}\int_zP(z|x,\theta^{(t)})\log \frac{P(z,x|\theta)}{P(z|x,\theta^{(t)})}dz \\ =&\argmax_{\theta}\int_zP(z|x,\theta^{(t)})\log P(x,z|\theta)dz \\ =&\argmax_{\theta}E_{z|x,\theta^{(t)}}[\log P(x, z| \theta)] \end{aligned}
θ(t+1)=====θargmaxELBOθargmax∫zQ(z)logQ(z)P(z,x∣θ)dzθargmax∫zP(z∣x,θ(t))logP(z∣x,θ(t))P(z,x∣θ)dzθargmax∫zP(z∣x,θ(t))logP(x,z∣θ)dzθargmaxEz∣x,θ(t)[logP(x,z∣θ)]
到此,就得到了文章一开头的公式。
公式导出:ELBO+ Jensen Inequality
现在利用Jensen不等式来进行数学推导,导出ELBO之前的公式都不变
综上
θ
(
t
+
1
)
=
arg max
θ
E
L
B
O
=
arg max
θ
E
q
[
log
P
(
z
,
x
∣
θ
)
Q
(
z
)
]
\begin{aligned}\theta^{(t+1)}=&\argmax_{\theta} ELBO \\ =&\argmax_{\theta}E_q[\log \frac{P(z,x|\theta)}{Q(z)}] \end{aligned}
θ(t+1)==θargmaxELBOθargmaxEq[logQ(z)P(z,x∣θ)]
注意到对数函数是一个上凸函数,所以根据Jensen Inequality 有:
E
(
log
x
)
≤
log
E
(
x
)
E(\log x)\leq \log E(x)
E(logx)≤logE(x)
故
E
q
[
log
P
(
z
,
x
∣
θ
)
Q
(
z
)
]
≤
log
E
q
(
P
(
z
,
x
∣
θ
)
Q
(
z
)
)
E_q[\log \frac{P(z,x|\theta)}{Q(z)}] \leq \log E_q(\frac{P(z,x|\theta)}{Q(z)})
Eq[logQ(z)P(z,x∣θ)]≤logEq(Q(z)P(z,x∣θ))
取等的条件是
P
(
z
,
x
∣
θ
)
Q
(
z
)
=
C
o
n
s
t
\frac{P(z,x|\theta)}{Q(z)}=Const
Q(z)P(z,x∣θ)=Const
C
o
n
s
t
Const
Const表示一个常数,设为
C
C
C。
P ( x , z ∣ θ ) = C ⋅ Q ( z ) ∫ z P ( x , z ∣ θ ) d z = C ∫ z Q ( z ) d z = C P ( x ∣ θ ) = C \begin{aligned} P(x,z|\theta)&=C\cdot Q(z) \\ \int_zP(x,z|\theta)dz&=C\int_zQ(z)dz=C \\ P(x|\theta)&=C \end{aligned} P(x,z∣θ)∫zP(x,z∣θ)dzP(x∣θ)=C⋅Q(z)=C∫zQ(z)dz=C=C
故有
Q
(
z
)
=
P
(
z
,
x
∣
θ
)
C
=
P
(
z
,
x
∣
θ
)
P
(
x
∣
θ
)
=
P
(
z
∣
x
,
θ
)
Q(z)=\frac{P(z,x|\theta)}{C}=\frac{P(z,x|\theta)}{P(x|\theta)}=P(z|x,\theta)
Q(z)=CP(z,x∣θ)=P(x∣θ)P(z,x∣θ)=P(z∣x,θ)
所以可以将 Q ( z ) = P ( z ∣ x , θ ) Q(z)=P(z|x,\theta) Q(z)=P(z∣x,θ)代回到一开始的式子中得到:
θ ( t + 1 ) = arg max θ E L B O = arg max θ ∫ z Q ( z ) log P ( z , x ∣ θ ) Q ( z ) d z = arg max θ ∫ z P ( z ∣ x , θ ( t ) ) log P ( z , x ∣ θ ) P ( z ∣ x , θ ( t ) ) d z = arg max θ ∫ z P ( z ∣ x , θ ( t ) ) log P ( x , z ∣ θ ) d z = arg max θ E z ∣ x , θ ( t ) [ log P ( x , z ∣ θ ) ] \begin{aligned}\theta^{(t+1)}=&\argmax_{\theta} ELBO \\ =&\argmax_{\theta}\int_zQ(z)\log \frac{P(z,x|\theta)}{Q(z)}dz \\ =&\argmax_{\theta}\int_zP(z|x,\theta^{(t)})\log \frac{P(z,x|\theta)}{P(z|x,\theta^{(t)})}dz \\ =&\argmax_{\theta}\int_zP(z|x,\theta^{(t)})\log P(x,z|\theta)dz \\ =&\argmax_{\theta}E_{z|x,\theta^{(t)}}[\log P(x, z| \theta)] \end{aligned} θ(t+1)=====θargmaxELBOθargmax∫zQ(z)logQ(z)P(z,x∣θ)dzθargmax∫zP(z∣x,θ(t))logP(z∣x,θ(t))P(z,x∣θ)dzθargmax∫zP(z∣x,θ(t))logP(x,z∣θ)dzθargmaxEz∣x,θ(t)[logP(x,z∣θ)]