最近一直在B站上看一个UP主的机器学习白板推导,感觉很有益处,因为之前看过的各种博客似乎都一直强调对EM算法的感性认识,缺少了很多的推导过程。我想,要完全理性地了解这个算法,还是要一步一步地通过推导。
主要参考资料:白板推导视频
在上一讲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∣θ)]
到此,就得到了文章一开头的公式。
现在利用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∣θ)]