Paper Reading: Auto-Encoding Variational Bayes

正文索引 [隐藏]

🚧

Problem Scenario

假设我们的数据集$X$包含N个i.i.d.的,从某个连续或者离散分布采样出来的样本。我们记对应的随机变量为$x$。但是如果我们只知道这些后验分布的采样结果,我们很难去分析它们,因此我们不妨设出它的先验为$z$。那么我们有这样的一个生成过程:

  1. 首先从一个先验分布$p_{\theta^*}(z)$中采样得到$z^{(i)}$
  2. 然后从一个给定$z=z^{(i)}$的条件分布$p_{\theta^*}(x|z)$中得到$x^{(i)}$

其中的$p_{\theta^*}(z)$和$p_{\theta^*}(x|z)$服从参数族分布$p_{\theta}(z)$和$p_{\theta}(x|z)$

这篇文章针对这样的一个对只有后验分布数据引入了某种未知先验的建模,

  1. 提出了一个对参数族分布中$\theta$的一个比较好的优化下界
  2. 给出了一个给定$\theta$时根据后验$x$推断$z$的有效近似
  3. 以及给出了最终$x$的边缘推断(也就是给出了$x$的分布函数,可以用于生成)

显然我们发现就算我们得知了$\theta$, 我们也很难轻松地得到这样的条件分布$p_\theta(z \mid x)$, 因此我们选择引入另外一个识别模型$q_\phi(z \mid x)$,我们声称$\phi$是变分参数而$\theta$是生成参数。

The variational bound

之后就要介绍这篇文章最早应用的变分下界的公式了

当然我们要优化的是log likelihood,其中的每一项我们将雨$\phi$相关的KL散度单独拉出来:

\begin{equation}
\log p_{\boldsymbol{\theta}}\left(\mathbf{x}^{(i)}\right)=D_{K L}\left(q_{\boldsymbol{\phi}}\left(\mathbf{z} \mid \mathbf{x}^{(i)}\right) \| p_{\boldsymbol{\theta}}\left(\mathbf{z} \mid \mathbf{x}^{(i)}\right)\right)+\mathcal{L}\left(\boldsymbol{\theta}, \boldsymbol{\phi} ; \mathbf{x}^{(i)}\right)
\end{equation}

由于KL散度非负,我们我们整理一下KL散度之外的部分,显然$\mathcal{L}$是log likelihood的下界:

\begin{equation}
\mathcal{L}\left(\boldsymbol{\theta}, \boldsymbol{\phi} ; \mathbf{x}^{(i)}\right)=\mathbb{E}_{q_{\phi}(\mathbf{z} \mid \mathbf{x})}\left[\log p_{\boldsymbol{\theta}}\left(\mathbf{x}\right)-\log q_{\boldsymbol{\phi}}(\mathbf{z} \mid \mathbf{x})+\log p_{\boldsymbol{\theta}}(\mathbf{z}\mid \mathbf{x})\right]
\end{equation}

我们合并一下很容易得到如下的表达式:

\begin{equation}
\mathcal{L}\left(\boldsymbol{\theta}, \boldsymbol{\phi} ; \mathbf{x}^{(i)}\right)=\mathbb{E}_{q_{\phi}(\mathbf{z} \mid \mathbf{x})}\left[-\log q_{\boldsymbol{\phi}}(\mathbf{z} \mid \mathbf{x})+\log p_{\boldsymbol{\theta}}(\mathbf{x}, \mathbf{z})\right]
\end{equation}

又由于通常来说我们会选取漂亮的$p_\theta(\mathbf{z})$,因此我们很乐意单独把与它相关的KL散度单独拉出来,我们就有第二个重要的表达式

\begin{equation}
\mathcal{L}\left(\boldsymbol{\theta}, \boldsymbol{\phi} ; \mathbf{x}^{(i)}\right)=-D_{K L}\left(q_{\boldsymbol{\phi}}\left(\mathbf{z} \mid \mathbf{x}^{(i)}\right) \| p_{\boldsymbol{\theta}}(\mathbf{z})\right)+\mathbb{E}_{q_{\phi}\left(\mathbf{z} \mid \mathbf{x}^{(i)}\right)}\left[\log p_{\boldsymbol{\theta}}\left(\mathbf{x}^{(i)} \mid \mathbf{z}\right)\right]
\end{equation}

之后作者将基于这两种形式给出两种算法。

我们先看为什么这个变分下界怎么去优化。考虑我们常用的蒙特卡洛梯度估计的方法:

$$
\nabla_{\phi} \mathbb{E}_{q_{\phi}(\mathbf{z})}[f(\mathbf{z})]=\mathbb{E}_{q_{\phi}(\mathbf{z})}\left[f(\mathbf{z}) \nabla_{\phi} \log q_{\phi}(\mathbf{z})\right] \\
=1 =
\simeq \frac{1}{L} \sum_{l=1}^{L} f(\mathbf{z}) \nabla_{\phi} \log q_{\phi}\left(\mathbf{z}^{(l)}\right)
$$