这篇笔记记录了 ELBO 的推导过程。
在变分自编码器 VAE 中,我们希望拟合真实分布:
$$ p_{\text{data}}(x) $$
但是真实分布是未知的,但我们可以通过 marginalization trick,对样本 $x$ 和隐变量 $z$ 的联合分布进行积分,得到 $x$ 的边缘分布:
$$ p_{\text{data}}(x) = \int p_{\text{data}}(x, z) dz $$
但是这个积分是难以计算的,因为隐变量 $z$ 是连续的,在图像生成这种连续高维空间中,不可能遍历所有可能的 $z$ 积分路径。因此我们需要找到一种方法来近似这个分布。
但是,如果我们能找到一个p(x) 的下界,那么最大化下界就等效于逼近真实分布。这个我们要找的下界就是 ELBO。
为了推导 ELBO,我们需要一些预备知识。由于本篇笔记重点在 ELBO,在这里提到的知识不会过多解释,感兴趣的读者可以自行查阅相关资料。
总体来说,我们希望把 p(x) 写成某种期望的形式,然后利用 Jensen’s 不等式,得到其下界。
Importance Sampling 的思想,分子分母同时乘以 $q(z|x)$,得到:
$$ \begin{aligned} p_{\text{data}}(x) &= \int p_{\text{data}}(x, z) dz \\ &= \int p_{\text{data}}(x, z) \frac{q(z|x)}{q(z|x)} dz \\ \end{aligned} $$
引入 q 这个分布有两个好处,一是可以方便写成期望的形式使得我们可以用 Jensen’s 不等式,二是 q 可以是任意分布,我们可以人为指定这个分布比如说高斯分布。
改写成期望形式,得到:
$$ \begin{aligned} p_{\text{data}}(x) &= \int p_{\text{data}}(x, z) \frac{q(z|x)}{q(z|x)} dz \\ &= \int q(z|x) [\frac{p_{\text{data}}(x, z)}{q(z|x)}] dz \\ &= \mathbb{E}{z \sim q(z|x)} \left[ \frac{p{\text{data}}(x, z)}{q(z|x)} \right] \\ \end{aligned} $$
我们需要再这个期望外面套一个 log 函数(为了利用 Jensen’s 不等式)。
$$ \begin{aligned} \log p_{\text{data}}(x) = \log \mathbb{E}{z \sim q(z|x)} \left[ \frac{p{\text{data}}(x, z)}{q(z|x)} \right] \end{aligned} $$
根据 Jensen’s 不等式,log 是凹函数,所以有 因此我们有:
$$ \log \mathbb{E}[x] \geq \mathbb{E}[\log x] $$
$$ \begin{aligned} \log p_{\text{data}}(x) \geq \mathbb{E}{z \sim q(z|x)} \left[ \log \frac{p{\text{data}}(x, z)}{q(z|x)} \right] =: ELBO \end{aligned} $$
不等式右边就是 ELBO,它是 $\log p_{\text{data}}(x)$ 的下界。