前言

变分自编码器,英文原名Variational Auto-Encoder,来自于2014年的论文Auto-Encoding Variational Bayes[1], 是图像领域有力的描述提取器,能够在更高维度完成对图像的高层次处理任务(如分割、识别等),其数学原理根植于最大似然估计与贝叶斯推断。

一般目的

生成式模型的一般目的,都是为了估计给定的概率密度pθ(z)p_{\boldsymbol{\theta}}(\mathbf{z}),这里的z\mathbf{z}是符合理想分布pp的随机变量,一般不能直接观测到,直接观测到的随机变量是x\mathbf{x},它服从的观测分布是qq,因此如何缩小这两个分布的差距,使得观测分布qq无限逼近真实分布qq,是描述提取器的核心任务。

为了估计出一个合理的条件概率分布qϕ(xz)q_{\boldsymbol{\phi}}(\mathbf{x|z}),让它与理想分布pθ(xz)p_{\boldsymbol{\theta}}(\mathbf{x|z})尽可能接近,必须想办法缩小它们之间的差距,这个差距一般用KL散度来衡量,因此,变分贝叶斯算法的目的就是最小化KL散度。

一言以蔽之,一般目的就是最小化观测分布与真实分布的KL散度。

Variational Auto-Encoder

变分自编码器源出自变分贝叶斯算法Variational Bayes,是一种描述提取模型,容易存在生成图像模糊的问题,不过其对先验概率空间的估计方法可以借鉴。

注意别弄混了VAE与GAN甚至后面的DDM的关系,它并不是生成式模型,VAE是一种高级的映射,将图像映射至高维的特征空间(隐空间)。

重要概念

变分下界

贝叶斯算法中的一个重要概念就是变分下界。因为直接最小化真实分布与观测分布的KL散度较为困难,多采用变分下界辅助求解。利用真实分布与散度的关系,可以得到:

logpθ(x)=DKL[qϕ(zx)pθ(zx)]+L(θ,ϕ;x)\log p_{\boldsymbol{\theta}}(\mathbf{x})=D_\mathrm{KL}[q_{\boldsymbol{\phi}}(\mathbf{z|x})||p_{\boldsymbol{\theta}}(\mathbf{z|x})]+\mathcal{L}(\boldsymbol{\theta},\boldsymbol{\phi};\mathbf{x})

式中第一项是KL散度,是一个正的数,而第二项就是变分下界,即需要最大化的项。根据等式,可以推算出变分下界的表达式:

L(θ,ϕ;x)=Eqϕ(zx)[logpθ(xz)]DKL[qϕ(zx)pθ(z)]=Eqϕ(zx)[logpθ(x,z)logqϕ(zx)]\begin{aligned} \mathcal{L}(\boldsymbol{\theta},\boldsymbol{\phi};\mathbf{x})&=\mathbb{E}_{q_{\boldsymbol{\phi}}(\mathbf{z|x})}[\log p_{\boldsymbol{\theta}}(\mathbf{x|z})]-D_\mathrm{KL}[q_{\boldsymbol{\phi}}(\mathbf{z|x})||p_{\boldsymbol{\theta}}(\mathbf{z})]\\ &=\mathbb{E}_{q_{\boldsymbol{\phi}}(\mathbf{z|x})}[\log p_{\boldsymbol{\theta}}(\mathbf{x,z})-\log q_{\boldsymbol{\phi}}(\mathbf{z|x})] \end{aligned}

一个很自然的想法是求解该变分下界的导数,使用梯度下降。但是需要指出,这里的概率密度函数qϕ(zx)q_{\boldsymbol{\phi}}(\mathbf{z|x})是没有解析式的,因此其梯度必须通过MC采样求解,而每一步梯度下降如果都MC采样一次,那这个算法的计算量将是究极大的,并且当待估计的分布方差较大时,MC采样的效率将进一步下降,计算得到的梯度将更不准确,模型极有可能无法收敛。因此文中采用了另一种方式,这就是SGVB估计器Stochastic Gradient Variational Bayes

SGVB估计器

引入某一先验的确定变换z(i,l)=gϕ(ϵ(l),x(i)),ϵlr(ϵ)\mathbf{z}^{(i,l)}=g_{\boldsymbol{\phi}}(\boldsymbol{\epsilon}^{(l)},\bm{x}^{(i)}),\boldsymbol{\epsilon}^l\sim r(\boldsymbol{\epsilon})(本操作在原始论文中被称为换元法Reparameterization,将在下文介绍),对期望一项使用MC积分完成估计计算,由此可得两种变分下界的估计式:

L(θ,ϕ;x)1Ll=1Llogpθ(x,z(l))logqϕ(z(l)x)L(θ,ϕ;x)1Ll=1Llogpθ(xz(l))DKL[qϕ(zx)pθ(z)]\begin{aligned} \mathcal{L}(\boldsymbol{\theta},\boldsymbol{\phi};\mathbf{x})&\approx\frac{1}{L}\sum_{l=1}^L\log p_{\boldsymbol{\theta}}(\mathbf{x,z}^{(l)})-\log q_{\boldsymbol{\phi}}(\mathbf{z}^{(l)}|\mathbf{x})\\ \mathcal{L}(\boldsymbol{\theta},\boldsymbol{\phi};\mathbf{x})&\approx\frac{1}{L}\sum_{l=1}^L\log p_{\boldsymbol{\theta}}(\mathbf{x|z}^{(l)})-D_\mathrm{KL}[q_{\boldsymbol{\phi}}(\mathbf{z}|\mathbf{x})||p_{\boldsymbol{\theta}}(\mathbf{z})] \end{aligned}

本方法实际上是限定了随机过程取定样本函数ϵ\boldsymbol{\epsilon}的情况,在该情况下沿着该样本函数遍历整个样本空间。当取定的样本函数足够多时,可以从样本上逼近随机过程的真实分布,因此,本方法将要求整个样本空间是平稳的,显然数据集并不会随着训练次数的增加而发生变化,因此本方法是适用的。(但是GAN就不一定了)使用SGVB最大化该变分下界,就能对VAE完成优化。

换元法

换元法是一种计算技巧,将随机过程的采样值由MC采样改变为确定性的映射。

具体地说,如果没有换元法,获取一个随机变量必须通过该变量的分布进行MC采样,通常复杂一点的分布都不好求解。

而有了换元法之后,可以通过某一个简单的分布,用确定的映射关系求解出一个采样值,这样只需要计算一个简单的确定性分布就能够应对所有的分布情况(例如使用标准的多元高斯分布)。

对某个观测随机变量z\mathbf{z},如果提前已知其服从分布N(μ,σ2)\mathcal{N}(\bm{\mu},\bm{\sigma}^2)一种简单的获取样本值的方式是:

z=μ+σϵ,ϵN(0,I)\mathbf{z}=\boldsymbol{\mu}+\boldsymbol{\sigma}\odot\boldsymbol{\epsilon},\boldsymbol{\epsilon}\sim\mathcal{N}(0,\mathbf{I})

其中μ,σ\boldsymbol{\mu},\boldsymbol{\sigma}是两个待估计的参数,\odot是逐元素乘法,这样对任意的高斯随机变量,都不需要单独再定义一个高斯分布去采样,而通过一个标准的高斯分布就能够得到任意高斯分布的采样值。

在VAE的原始论文[1]中,作者总共给出了三种可选的换元法方法,分别是反函数法、高斯法和构造法,利用三种方法能够在观测分布的基础上快速写出理想分布,就能够保证整个算法的复杂度不致于过高,否则,通过MC方法直接求解理想分布的将会是一个非常耗时的操作。

参考文献


[1] Kingma D. P. , Welling M. .Auto-Encoding Variational Bayes[M/OL].arXiv,2022