EM(Expectation Maximization) 算法推导(二)

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

= arg max θ E z x , θ ( t ) [ log P ( x , z θ ) ] =\argmax_{\theta}E_{z|x,\theta^{(t)}}[\log P(x, z| \theta)]

对这个迭代公式怎么来的并没有详细的说明,这节将要推出这个公式。

始终不变的是:我们要求的是 log P ( X θ ) \log P(X|\theta)
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}
其中 Q ( z ) Q(z) 是一个满足 Q ( z ) 0 Q(z)\neq 0 的分布。
两边同时在 Q ( z ) Q(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}

定义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
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

故可以得到:
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))

KL divergence是恒大于等于0的,其中等于0的条件是
P ( z x , θ ) Q ( z ) P(z|x,\theta)\equiv Q(z)
ELBO给出了左边式子的一个下界(这也是它名字的由来)。

我们在用EM算法进行迭代的过程中,实际上是在不断增加它的下界ELBO
在这个过程中要减小KL divergence,所以有
Q ( z ) = P ( z x , θ ( t ) ) Q(z)=P(z|x,\theta^{(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}

到此,就得到了文章一开头的公式。

公式导出: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}

注意到对数函数是一个上凸函数,所以根据Jensen Inequality 有:
E ( log x ) log E ( x ) E(\log x)\leq \log E(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)})

取等的条件是 P ( z , x θ ) Q ( z ) = C o n s t \frac{P(z,x|\theta)}{Q(z)}=Const
C o n s t Const 表示一个常数,设为 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}

故有
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 ) = P ( z x , θ ) Q(z)=P(z|x,\theta) 代回到一开始的式子中得到:

θ ( 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}

发布了9 篇原创文章 · 获赞 11 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Code_Tookie/article/details/104249542