另一个角度推导变分自编码器 | Variational Auto-Encoder VAE

1,099 阅读3分钟

接着这篇文章进行另一个角度的公式推导:

变分自编码器 | Variational Auto-Encoder

在数学上,我们可以将潜变量和我们观察到的数据想象成一个联合分布p(x,z)p( x , z)来建模,VAE就是学习一个模型,使所有观测xx的似然p(x)p ( x )最大化。我们有两种方法可以操纵这个联合分布来恢复纯观测数据p(x)p ( x )的似然; 我们可以显式地将潜变量zz边缘化:

p(x)=p(x,z)dz1p(\boldsymbol{x})=\int p(\boldsymbol{x}, \boldsymbol{z}) d \boldsymbol{z} \quad 1

或者使用概率的链式法则:

p(x)=p(x,z)p(zx)2p(\boldsymbol{x})=\frac{p(\boldsymbol{x}, \boldsymbol{z})}{p(\boldsymbol{z} |\boldsymbol{x})} \quad 2

很不幸,我们没办法用上边两个公式直接去计算极大似然:

  • 在公式1中我们没办法知道潜变量zz的所有取值。

  • 在公式2我们也没办法知道真实潜编码器p(zx)p ( z | x )

但是,利用这两个方程,我们可以推导出一个称为证据下界( ELBO )的项,顾名思义,它是证据的下界。在这种情况下,证据被量化为观测数据的对数似然。然后,最大化ELBO成为优化潜变量模型的代理目标;在最好的情况下,当ELBO被强大的参数化和完美优化时,它就完全等价于证据。形式上,ELBO的方程为:

Eqϕ(zx)[logp(x,z)qϕ(zx)]\mathbb{E}_{q_\phi(\boldsymbol{z} \mid \boldsymbol{x})}\left[\log \frac{p(\boldsymbol{x}, \boldsymbol{z})}{q_\phi(\boldsymbol{z} \mid \boldsymbol{x})}\right]

推理过程

我们先用公式1直接推,可以得到:

logp(x)=logp(x,z)dz (Apply Equation 1) =logp(x,z)qϕ(zx)qϕ(zx)dz (Multiply by 1=qϕ(zx)qϕ(zx) ) =logEqϕ(zx)[p(x,z)qϕ(zx)] (Definition of Expectation) Eqϕ(zx)[logp(x,z)qϕ(zx)] (Apply Jensen’s Inequality) \begin{aligned} \log p(\boldsymbol{x}) & =\log \int p(\boldsymbol{x}, \boldsymbol{z}) d \boldsymbol{z} & & \text { (Apply Equation 1) } \\ & =\log \int \frac{p(\boldsymbol{x}, \boldsymbol{z}) q_\phi(\boldsymbol{z} \mid x)}{q_{\boldsymbol{\phi}}(\boldsymbol{z} \mid \boldsymbol{x})} d z & & \text { (Multiply by } 1=\frac{q_\phi(\boldsymbol{z} \mid x)}{q_{\boldsymbol{\phi}}(\boldsymbol{z} \mid x)} \text { ) } \\ & =\log \mathbb{E}_{q_\phi(\boldsymbol{z} \mid \boldsymbol{x})}\left[\frac{p(\boldsymbol{x}, \boldsymbol{z})}{q_\phi(\boldsymbol{z} \mid \boldsymbol{x})}\right] & & \text { (Definition of Expectation) } \\ & \geq \mathbb{E}_{q_\phi(\boldsymbol{z} \mid \boldsymbol{x})}\left[\log \frac{p(\boldsymbol{x}, \boldsymbol{z})}{q_\phi(\boldsymbol{z} \mid \boldsymbol{x})}\right] & & \text { (Apply Jensen's Inequality) } \end{aligned} 从这我们可以知道Eqϕ(zx)[logp(x,z)qϕ(zx)]\mathbb{E}_{q_\phi(\boldsymbol{z} \mid \boldsymbol{x})}\left[\log \frac{p(\boldsymbol{x}, \boldsymbol{z})}{q_\phi(\boldsymbol{z} \mid \boldsymbol{x})}\right]

确实是个下界。这是直接应用了琴生不等式得到的下界,我们不能确定它为什么是个下界,就是不知道具体原理,所以现在我们用第二段推导:

logp(x)=logp(x)qϕ(zx)dz (Multiply by 1=qϕ(zx)dz)=qϕ(zx)(logp(x))dz (Bring evidence into integral) =Eqϕ(zx)[logp(x)] (Definition of Expectation) =Eqϕ(zx)[logp(x,z)p(zx)] (Apply Equation 2) =Eqϕ(zx)[logp(x,z)qϕ(zx)p(zx)qϕ(zx)] (Multiply by 1=qϕ(zx)qϕ(zx))=Eqϕ(zx)[logp(x,z)qϕ(zx)]+Eqϕ(zx)[logqϕ(zx)p(zx)] (Split the Expectation) =Eqϕ(zx)[logp(x,z)qϕ(zx)]+DKL(qϕ(zx)p(zx)) (Definition of KL Divergence) Eqϕ(zx)[logp(x,z)qϕ(zx)] (KL Divergence always 0 ) \begin{aligned} \log p(x) & =\log p(x) \int q_\phi(z \mid x) d z & & \text { (Multiply by } \left.1=\int q_\phi(z \mid x) d z\right) \\ & =\int q_\phi(z \mid x)(\log p(x)) d z && \text { (Bring evidence into integral) } \\ & =\mathbb{E}_{q_\phi(\boldsymbol{z} \mid \boldsymbol{x})}[\log p(x)] & & \text { (Definition of Expectation) } \\ & =\mathbb{E}_{q_\phi(z \mid x)}\left[\log \frac{p(x, z)}{p(z \mid x)}\right] & & \text { (Apply Equation 2) } \\ & =\mathbb{E}_{q_\phi(z \mid x)}\left[\log \frac{p(x, z) q_\phi(z \mid x)}{p(z \mid x) q_\phi(z \mid x)}\right] & & \text { (Multiply by } \left.1=\frac{q_\phi(z \mid x)}{q_\phi(\boldsymbol{z} \mid x)}\right) \\ & =\mathbb{E}_{q_\phi(z \mid x)}\left[\log \frac{p(\boldsymbol{x}, \boldsymbol{z})}{q_\phi(\boldsymbol{z} \mid x)}\right]+\mathbb{E}_{q_\phi(z \mid x)}\left[\log \frac{q_\phi(z \mid x)}{p(z \mid x)}\right] & & \text { (Split the Expectation) } \\ & =\mathbb{E}_{q_\phi(z \mid x)}\left[\log \frac{p(x, z)}{q_\phi(z \mid x)}\right]+D_{\mathrm{KL}}\left(q_\phi(z \mid x) \| p(z \mid x)\right) & & \text { (Definition of KL Divergence) } \quad ⭐\\ & \geq \mathbb{E}_{q_\phi(z \mid x)}\left[\log \frac{p(x, z)}{q_\phi(z \mid x)}\right] & & \text { (KL Divergence always } \geq 0 \text { ) } \end{aligned}

从这个推导中,我们清楚地从⭐那一步可以看到证据等于ELBO加上近似后验qϕ(zx)q_\phi ( z | x )和真实后验p(zx)p ( z | x )之间的KL散度。

现在我们就可以知道,第一次推导中琴声不等式是直接把这个KL散度项去掉了。

我们现在知道,ELBO确实是一个下界。证据与ELBO的差值是一个严格非负的KL项,因此ELBO的值永远不能超过证据。 为什么要寻求ELBO的最大化。

在引入了我们想要建模的潜变量zz之后,我们的目标是学习到中间这个bottleneck的潜变量表示。

换句话说,我们想要优化我们的变分后验qϕ(zx)q_\phi ( z | x )的参数来精确匹配真实的后验分布p(zx)p ( z | x ),这是通过最小化它们的KL散度(理想情况下为零)来实现的。但是我们无法获得p(zx)p ( z | x )的真实分布,直接最小化这个KL散度项是困难的。

注意到在⭐那一步,我们的证据项logp(x)\log p ( x)的似然始终是关于ϕ\phi的常数,因为它是通过将联合分布p(x,z)p( x , z)中的所有潜变量zz边缘化来计算的,并不依赖于ϕ\phi。所以ELBO和KL散度项加总为常数,因此ELBO项关于ϕ\phi的任何最大化也就意味着KL散度项的最小化。因此,可以最大化ELBO作为学习如何完美建模真实潜在后验分布的代理表示:我们越优化ELBO,我们的近似后验就越接近真实后验。

在变分自编码器( Variational Autoencoder,VAE )的默认形式中,我们直接最大化ELBO。但是让我们进一步剖析ELBO项:

Eqϕ(zx)[logp(x,z)qϕ(zx)]=Eqϕ(zx)[logpθ(xz)p(z)qϕ(zx)]=Eqϕ(zx)[logpθ(xz)]+Eqϕ(zx)[logp(z)qϕ(zx)] (Chain Rule of Probability) =Eqϕ(zx)[logpθ(xz)]reconstruction term DKL(qϕ(zx)p(z))prior matching term  (De Expectation) \begin{aligned} \mathbb{E}_{q_\phi(\boldsymbol{z} \mid \boldsymbol{x})}\left[\log \frac{p(\boldsymbol{x}, \boldsymbol{z})}{q_{\boldsymbol{\phi}}(\boldsymbol{z} \mid \boldsymbol{x})}\right] & =\mathbb{E}_{q_{\boldsymbol{\phi}}(\boldsymbol{z} \mid \boldsymbol{x})}\left[\log \frac{p_{\boldsymbol{\theta}}(\boldsymbol{x} \mid \boldsymbol{z}) p(\boldsymbol{z})}{q_{\boldsymbol{\phi}}(\boldsymbol{z} \mid \boldsymbol{x})}\right] \\ & =\mathbb{E}_{q_{\boldsymbol{\phi}}(\boldsymbol{z} \mid \boldsymbol{x})}\left[\log p_{\boldsymbol{\theta}}(\boldsymbol{x} \mid \boldsymbol{z})\right]+\mathbb{E}_{q_{\boldsymbol{\phi}}(\boldsymbol{z} \mid \boldsymbol{x})}\left[\log \frac{p(\boldsymbol{z})}{q_{\boldsymbol{\phi}}(\boldsymbol{z} \mid \boldsymbol{x})}\right] &&\text { (Chain Rule of Probability) } \\ & =\underbrace{\mathbb{E}_{q_{\boldsymbol{\phi}}(\boldsymbol{z} \mid \boldsymbol{x})}\left[\log p_{\boldsymbol{\theta}}(\boldsymbol{x} \mid \boldsymbol{z})\right]}_{\text {reconstruction term }}-\underbrace{D_{\mathrm{KL}}\left(q_{\boldsymbol{\phi}}(\boldsymbol{z} \mid \boldsymbol{x}) \| p(\boldsymbol{z})\right)}_{\text {prior matching term }} &&\text { (De Expectation) } \end{aligned}

  • 第一项可以认为是重建项:我们先从变分分布中采样zqϕ(zx)\mathbf{z} \sim q_\phi(\mathbf{z} \mid \mathbf{x}),然后用解码器将其解码。

  • 第二项可以认为是先验匹配项:我们学到的分布和先验的相似程度。

当我们尽力最大化这一项的时候,就是让第一项尽量大,让第二项尽量小,这就意味着:

  • 第一项是让解码器尽量去从变分分布中重建数据。

  • 第二项是让编码器去学习一个实际分布,让变分分布和先验更相似,而不是崩溃成为delta函数。


本文正在参加「金石计划」