在这篇文章中,我们介绍了Jianlin提出的关于期望最大化的另一种看法,使用KL散度,来自https://kexue.fm。与使用詹森不等式的常见看法不同,使用KL散度推导期望最大化的过程更短且更直观。
建林的帖子 (written in Chinese)
从我们关于EM的上一篇帖子中,我们知道EM的目标是最大化训练数据集的期望对数似然。在这里,我们想扩展这个概念,以显示这样的优化是更一般的优化形式的特例:最小化KL散度。给定两个概率分布$p(x)$和$q(x)$,KL衡量$q(x)$与$p(x)$的接近程度。
\begin{align} {KL} (p(x) \parallel q(x)) &= \sum_x p(x) \log \frac{p(x)}{q(x)} \tag{KL散度} \end{align}
要使用KL散度的概念推导EM,假设我们希望使用$p_{\theta}(x)$来近似训练数据集的潜在分布$p_{true}(x)$。鉴于$p_{true}(x)$是已知的(作为常量),最小化KL散度等同于最大化训练数据集的期望对数似然。
\begin{align} \theta_{best} &= \operatorname*{argmin}_{\theta} {KL} (p_{true}(x) \parallel p_{\theta}(x)) \\ &= \operatorname*{argmin}_{\theta} \sum_x p_{true}(x) \log \frac{p_{true}(x)}{p_{\theta}(x)} \\ &= \operatorname*{argmin}_{\theta} \sum_x p_{true}(x) \log p_{true}(x) - \sum_x p_{true}(x) \log p_{\theta}(x) \tag{第一项是常数} \\ &= \operatorname*{argmin}_{\theta} - \sum_x p_{true}(x) \log p_{\theta}(x) \tag{交叉熵} \\ &= \operatorname*{argmax}_{\theta} \mathbb{E}_x (\log p_{\theta}(x)) \tag{0} \end{align}
其中 (0) 是一般 EM 算法的目标。
引入用于解释X的隐藏变量Z,我们可以使用X和Z的联合概率重写我们的目标。
\begin{align} & {KL} (p_{true}(x, z) \parallel p_{\theta}(x, z)) \\ &= \sum_{x, z} p_{true}(x, z) \log \frac{p_{true}(x, z)}{p_{\theta}(x, z)} \\ &= \sum_{x} p_{true}(x) \sum_{z} p_{true}(z | x) \log \frac{p_{true}(z|x)p_{true}(x)}{p_{\theta}(z|x)p_{\theta}(x)} \\ &= \mathbb{E}_x \Big[ \sum_{z} p_{true}(z | x) \log \frac{p_{true}(z|x)p_{true}(x)}{p_{\theta}(z|x)p_{\theta}(x)} \Big] \\ &= \mathbb{E}_x \Big[ \sum_{z} p_{true}(z | x) \log \frac{p_{true}(z|x)}{p_{\theta}(z|x)p_{\theta}(x)} + \sum_{z} p_{true}(z | x) \log p_{true}(x) \Big] \\ &= \mathbb{E}_x \Big[ \sum_{z} p_{true}(z | x) \log \frac{p_{true}(z|x)}{p_{\theta}(z|x)p_{\theta}(x)} \Big] + \mathbb{E} \Big[ \log p_{true}(x) \Big] \\ &= \mathbb{E}_x \Big[ \sum_{z} p_{true}(z | x) \log \frac{p_{true}(z|x)}{p_{\theta}(z|x)p_{\theta}(x)} \Big] + C \tag{1} \end{align}
为了最小化 (1),我们可以调整两个项:$p_{true}(z | x)$ 和 $p_{\theta}(z|x)p_{\theta}(x)$。类似于EM,我们可以在假设另一部分是常量的情况下优化一个部分,并且我们可以交替进行。因此,如果我们假设 $p_{\theta}(z|x)p_{\theta}(x)$ 是已知的,那么 $p_{true}(z | x)$ 可以调整以最小化 (1),如下所示
\begin{align} p_{true}(z | x) &= \operatorname*{argmin}_{p_{true}(z | x)} \mathbb{E}_x \Big[ \sum_{z} p_{true}(z | x) \log \frac{p_{true}(z|x)}{p_{\theta}(z|x)p_{\theta}(x)} \Big] \\ &= \operatorname*{argmin}_{p_{true}(z | x)} \mathbb{E}_x \Big[ \sum_{z} p_{true}(z | x) \log \frac{p_{true}(z|x)}{p_{\theta}(z|x)} - \sum_{z} p_{true}(z | x) \log p_{\theta}(x) \Big] \\ &= \operatorname*{argmin}_{p_{true}(z | x)} \mathbb{E}_x \Big[ {KL} (p_{true}(z | x) \parallel p_{\theta}(z | x)) - C \Big] \\ &= \operatorname*{argmin}_{p_{true}(z | x)} \mathbb{E}_x \Big[ {KL} (p_{true}(z | x) \parallel p_{\theta}(z | x)) \Big] \tag{2} \\ &= p_{\theta}(z | x) \tag{期望步骤} \end{align}
从 (2) 到 (E-step),我们需要利用 ${KL}(p_{\theta}(z \vert x) \parallel p_{\theta}(z \vert x)) = 0$ 这个事实。在 M 步中,我们假设 $p_{true}(z \vert x)$ 是常数,并且等于 $p_{\theta}(z \vert x)$
\begin{align} \theta_{new} &= \operatorname*{argmin}_{\theta} \mathbb{E}_x \Big[ \sum_{z} p_{true}(z | x) \log \frac{p_{true}(z|x)}{p_{\theta}(z|x)p_{\theta}(x)} \Big] \\ &= \operatorname*{argmin}_{\theta} \mathbb{E}_x \Big[\sum_{z} p_{true}(z | x) \log p_{true}(z | x) - \sum_{z} p_{true}(z | x) \log {p_{\theta}(z|x)p_{\theta}(x)} \Big] \\ &= \operatorname*{argmax}_{\theta} \mathbb{E}_x \Big[\sum_{z} p_{true}(z | x) \log {p_{\theta}(z|x)p_{\theta}(x)} \Big] \\ &= \operatorname*{argmax}_{\theta} \mathbb{E}_x \Big[\sum_{z} p_{\theta}(z | x) \log p_{\theta}(x, z) \Big] \tag{M步} \end{align}
上述结果与EM算法的定义相同。