FengHZ's Blog Summer is for falling in love.

An introduction to Variational Autoencoders-Background,Loss function and Application


前言

Variational autoencoders(VAE)是一类生成模型,它将深度学习与统计推断相结合,可用于学习高维数据$X$的低维表示$z$。与传统自编码器不同,Variational autoencoders 假设$X$与$z$都是满足某种分布假设的随机变量(向量),因此Variational autoencoder 本质是对随机向量分布参数的估计(如均值,方差等矩估计)。在这个假设下,我们可以利用分布函数假设与预测参数对$p(X\vert z)$与$p(z\vert X)$进行估计,用最大似然设计损失函数,并利用概率分布$p(X\vert z)$来对$X$进行采样与生成。

本文旨在对VAE进行基于背景,损失函数以及应用方面的介绍。本文先对VAE所需要的数学知识与基本假设进行简要描述。同时,在写作本文主体部分过程中,本文主要以Tutorial on Variational Autoencoders为主干进行翻译工作,并辅以其它参考资料对该文献的观点进行选择性删减,重整理与补充性叙述,同时对该文章中省略或笔者认为叙述不清数学证明与显然性描述进行补全与解释。为了对照方便起见,本文自第二部分起,主要结构与该文献结构一致,读者可以自行选择直接阅读本文,或者阅读该文献并辅以本文进行辅助理解。

本文写作过程中主要参考资料为:

Section.1 数学知识与基本假设

1.1 流形假设,定义与性质

1.1.1 流形的定义与性质

1.1.1.1 直观理解

流形是局部具有欧几里得性质的空间,是曲线与曲面的推广。欧式空间就是一个最简单的流形实例。几何形体的拓扑结构是柔软的,因为所有的isomorphic会保持拓扑结构不变,而解析几何则是“硬”的,因为整体结构是固定的。光滑流形可以认为是两者之间的模型,它的无穷小结构是硬的,但是整体结构是软的。硬度是容纳微分结构的原因,而软度则可以成为很多需要独立的局部扰动的数学与物理模型。一般流形可以通过把许多平直的片折弯粘连而成,一个直观的理解就是生活中用的麻将席,麻将席整体是柔软的,但是其局部(一小片一小片竹板)则是硬的。

1.1.1.2 严格定义

流形定义为:

假设$M$是豪斯多夫空间(即空间中任意两个点都可以通过邻域来分离),假设对于任意一点 $x\in M$,都存在$x$的一个邻域,这个邻域同胚(即存在两个拓扑空间中的双连续函数)于$m$维欧式空间$R^m$的一个开集,就称$M$是一个$m$维流形。

1.1.2 流形假设

流形假设就是真实世界中的高维数据(比如说图像)位于一个镶嵌在高维空间中的低维流形上。比如我们获得了二维随机向量$(x,y)$的一组采样:

\[(1,1),(2,2),(3,3),...,(n,n)\]

那么这组数据就是在二维空间中的一条线上(镶嵌在二维空间中的一维流形),即该组二维数据可以由$x=t,y=t,t\in R$生成。

流形假设即数据$x=(x_1,….,x_N)$由k维空间中的$y=(y_1,…,y_k)$经连续函数(不一定光滑,不一定线性,也不一定是双射)所构成:

\[x_i=f_i(y_1,...,y_k),\forall i \in \{1,..,N\}\]

一个直观理解是手写数字的生成模型,如图所示。手写数字由$(v_1,v_2)$所生成,在$v_2$上的线性变换即为手写数字的旋转,在$v_1$上的线性变换则对应了手写数字的放缩。

fig1

流形假设是非常重要的假设,该假设可以部分解释为什么深度学习work。同时当考虑到符合流形假设的一些问题的时候(如图像处理等),这个假设可以给我们一些直观,并能够在工程中进行应用(如VAE)。

1.2 潜变量空间模型假设

该部分是对文献Tutorial on Variational Autoencoders Section1.1的翻译,提前放在此处用于与流形假设对比从而辅助理解。如果读者对生成模型不甚熟悉,可以先跳过该部分,直接进入Section.2的阅读。

1.2.1 潜变量空间模型介绍

当训练一个生成模型的时候,生成数据不同维度之间的依赖越强,那么模型就越难进行训练。以生成手写数字0-9为例,如果数字的左半部分是数字5的左半部分,那么右半部分就不可能是数字0的右半部分,不然生成的图像显然不是一个真实的数字。直观上,一个好的生成模型应该在生成每一个像素所对应值之前先决定到底要生成哪个数字(这样可以避免生成四不像的目标),而所谓的决定就是潜变量。也就是说,在我们的模型想要生成数字之前,将先从集合${0,…,9}$中随机选一个数字$z$,然后确保模型画出来的结果与$z$相匹配。这里z被称为潜在的,因为我们直接得到的是模型所生成的结果,而并不需要知道是哪个$z$生成了这个结果。对于潜变量,我们可以用计算机视觉相关的技术进行推断。

当我们说我们的生成模型”代表”了数据集时,我们需要确保对数据集中的每一个$X$,存在至少一个潜变量$z$可以让模型通过$z$生成与$X$非常相似的结果。

1.2.2 潜变量空间假设的数学描述与直观意义

该假设的数学化描述如下:

假设我们有生成空间$\mathcal{X}$,同时有一个潜变量空间$Z$,并在$Z$上定义了随机向量$z$的概率密度函数$P(z)$,那么我们可以依据$P(z)$对潜变量向量进行采样。假设我们有一族函数${f(z;\theta)},z\in Z,\theta\in \Theta$,满足:

\[f:Z\times \Theta \mapsto \mathcal{X}\]

$f$是一个确定的映射,但如果$z$是随机向量,同时$\theta$是确定向量,那么$f(z,\theta)$是生成空间$\mathcal{X}$中的随机向量。给定一个训练集${X_i},\forall i,X_i\in \mathcal{X}$,我们的目标是最大化:

\[P(X_i)=\int P(X_i\vert z;\theta)P(z)dz\]

注意在这里我们用$P(X_i\vert z;\theta)$表示$P(X_i=f(z;\theta))$,即给定潜变量空间的潜变量向量$z$时,模型生成$X_i$的概率。这个目标函数的直观是最大似然理论,即如果模型生成训练样本$X_i$的概率最大时,它更有可能生成与训练样本相似的样本,而不是生成与训练样本完全不相似的样本。

在变分自编码器领域中,我们对于生成空间的条件分布假设一般是高斯分布,即:

\[P(X\vert z;\theta)\sim N(X\vert f(z;\theta),\sigma ^2 *I)\]

该概率密度函数的均值为$f(z;\theta)$,同时生成空间的各维度互相独立,且方差为$\sigma ^2$。在高斯分布假设下,有一些$z$可以生成仅仅是与$X$相似的样本而并不与$X$一致。总之,在训练过程中,我们的模型并不会生成与训练样本$X$完全一样的输出。

1.2.3 对$p(X\vert z)$的高斯分布假设

高斯分布假设的意义在于,我们可以用梯度下降算法(或者其它的优化技术),取定潜变量$z$后,通过 令$f(z;\theta)$靠近$X$ 来最大化目标函数$P(X\vert z)$,并在训练过程中逐渐让训练集数据的生成概率变大。

令$f(z;\theta)$靠近$X$的解释如下:

\[\text{在高斯分布假设下满足:} -\log (p(X\vert z))=C_1 + C_2*\Vert f(z,\theta)-X\Vert_2^2\]

因此最小化$-\log (P(X\vert z))$等价于最小化$X$与$f(z,\theta)$的二范数。如果高斯分布不满足,比如$P(X\vert z)$是一个Dirac delta function,那么我们就没有办法最大化概率函数,因为此时$f(z;\theta)$所预测的并不是均值,而是以概率1收敛到$P(X\vert z)$的预测,此时我们没有办法定义梯度。

1.2.4 Bernoulli分布假设

假设生成空间$X$是二值化的,那么$P(X\vert z)$可以进行Bernoulli分布假设,其参数为$f(z;\theta)$,此时最大似然如下:

\[P(X\vert z)= \log (\Pi p(x_{ij}\vert z))=\sum_{i,j}\log (f(z,\theta)_{ij})\]

此时同样可以计算梯度并用梯度下降法优化模型。

1.3 信息论

这里我将补充一些信息论的基本知识。

考虑一个离散随机变量$x$,我们研究如下问题:当我们获得了这个随机变量的一个观测的时候,我们到底得到了多少信息?信息量可以度量 “令你惊讶的程度”,即如果有两个互斥事件$A,B$,有一个先验信息为 $P(A)<P(B)$,然后我们观测到A事件发生了,那么我们所获得的信息一定会多于观测到B事件发生所获得的信息。因此,对$x$信息的度量$h(x)$应该与$x$的分布函数$p(x)$相关。我们可以做出如下两条显然的假设:

\[if\ p(x,y)=p(x)p(y),then\ h(x,y)=h(x)+h(y)\\ if\ p(x)<p(y),\ then\ h(x)>h(y)\]

基于这两条假设,我们可以有:

\[h(x)=-\log _{2}p(x)\]

我们沿用香农信息论的记号,以2作为对数基底。

基于$h(x)$我们考虑一个新问题,假设一个信息发送者想要把一个随机变量$x$的值传送给一个接收者,那么在这个传输过程中,传输信息量的期望可以基于$x$的分布函数$p(x)$进行如下计算:

\[H[x]=-\sum_xp(x)ln(p(x))\]

$H[x]$被称为随机变量$x$的熵(entropy),注意这里我们用自然对数作为基底(即在2为基底的结果上乘系数$ln2$,令$p(x)ln(p(x))=0,if\ p(x)=0$。

这里我们不加证明地给出一个结论,这个结论在在香农的无噪声编码理论中阐述了熵与最短编码长度的关系,即熵是传输一个随机变量的状态的编码比特数目的下界。

1.3.1 熵的统计学视角理解

我们可以通过统计学观点理解熵。假设我们有$N$个完全相同的物体,它们需要被分别装到若干个箱子中,满足第$i^{th}$个箱子装$n_i$个物体。考虑装配方法的排列组合,先假设$N$个物体各自不相同,那么一共有$N!$种装配方法,同时考虑物体完全相同,因此每一个箱子装配的先后顺序无所谓,因此装配方法的个数$W$为:

\[W=\frac{N!}{\Pi_{i}n_i !}\]

$W$被称作多样性。考虑$N$个物体多样性的对数,并在每个物体上做平均,则有:

\(H=\frac{ln(W)}{N} = \frac{ln(N!)}{N}-\frac{\sum_i ln(n_i !)}{N}\) 考虑令$N\rightarrow \infty$,同时固定$n_i/N=p_i\geq 0$,并利用极限$ln(N!)=Nln(N)-N$,此时有:

\[H=-\sum_{i} p_i ln(p_i)\]

因此我们可以将箱子解释为离散随机变量$X$的观测$x_i$,满足$p(X=x_i)=p_i$,离散随机变量$X$的交叉熵为:

\[H[p]=-\sum_{i} p(x_i) ln(p(x_i))\]

1.3.2 熵的极值

假设$x_i$有M种状态,同时满足$\sum_{i=1}^{M} p(x_i)=1$,最大化$H[p]$可以用拉格朗日乘子法:

\[\hat{H} = -\sum_{i=1}^{M} p(x_i)ln(p(x_i)) + \lambda (\sum_{i=1}^{M} p(x_i)-1)\]

对其求导得该式在$\forall i,p(x_i)=\frac{1}{M}$时取得最大值。

1.3.3 从离散随机变量推广到连续随机变量

我们可以将熵的定义推广到连续随机变量。给定一个连续随机变量$x$,我们将它的取值空间分为若干长度为$\Delta$的区间,写作

\[[0,\Delta],[\Delta,2\Delta],...,[i\Delta,(i+1)\Delta],...]\]

如果我们把每一个区间看成是一个箱子,那么随机变量$x$落入每一个箱子的概率可以记为:

\[\int_{i\Delta}^{(i+1)\Delta}p(x)dx\]

由均值定理,$\exists x_i \in [i\Delta,(i+1)\Delta]$,满足:

\[\int_{i\Delta}^{(i+1)\Delta}p(x)dx = p(x_i)\Delta\]

此时我们用$Delta$将连续变量离散化了,用离散随机变量的熵计算方法有

\[H_{\Delta} = - \sum_{i} p(x_i)\Delta ln(p(x_i)\Delta)=-\sum_{i}p(x_i)\Delta ln(p(x_i)) - ln\Delta\]

同时有:

\[lim_{\Delta \rightarrow 0}{\sum_{i} p(x_i)\Delta ln(p(x_i))} = -\int p(x)ln(p(x))dx\]

该部分被称为微分熵,注意到离散随机变量与连续随机变量的熵仅差一个$ln\Delta$,但是当$\Delta \rightarrow 0$时,该项发散,也就是说对一个连续随机变量进行精确刻画需要大量的比特。略去发散项,我们定义连续随机变量微分熵为:

\[H[x]=-\int p(x)ln(p(x)) dx\]

与离散随机变量相似,我们求使得连续随机变量微分熵最小的分布,为了保证连续随机变量的一阶矩与二阶矩存在,我们加如下限制条件:

\[\int_{-\infty}^{\infty} p(x)dx=1\\ \int_{-\infty}^{\infty} xp(x)dx=u\\ \int_{-\infty}^{\infty} (x-u)^2 p(x)dx=\sigma^2\]

采用变分法,微分熵$H[x]$在以上三个限制条件下取得最大值当且仅当

\[p(x)=\frac{1}{(2\pi \sigma ^2)^{\frac{1}{2}}}exp{-\frac{(x-u)^2}{2\sigma ^2}}\]

即,高斯分布是使得微分熵最大的分布,此时$H[x]=\frac{1}{2}(1+ln(2\pi\sigma^2))$ ,注意此时微分熵可以小于0(但是总熵还是大于0的,这是因为总熵=微分熵-$ln(\Delta)$)。

1.3.4 条件熵

通过微分熵的定义我们可以自然推出条件熵:

\[H[x,y] = -\int\int p(x,y)ln(p(x,y)) dxdy\\ H[x\vert y]=-\int p(y)\int p(x\vert y)ln(p(x\vert y))dxdy\\ H[y\vert x]=-\int p(x) \int p(y\vert x)ln(p(y\vert x))dydx\]

同时我们有:

\[H[x,y]=H[y\vert x]+H[x]\]

1.3.5 相对熵与KL散度

我们之前写过一个从似然角度给出的KL散度分析,这里我们用相对熵来进行分析。

考虑一个未知的概率分布$p(x)$,我们用概率分布$q(x)$对它进行估计。假设我们利用$q(x)$来构建一个编码系统以传输随机变量$x$的值,那么比利用$p(x)$来构建编码系统而言增加的平均信息量为:

\[-\int p(x)ln(q(x)) dx -H_p[x] =-\int p(x) ln(\frac{q(x)}{p(x)})dx=KL(p\Vert q)\]

Section.2 Tutorial on Variational Autoencoders

2.1 Introduction

在机器学习中,生成模型是一个重要的领域。生成模型研究高维空间$\mathcal{X}$上的随机向量$X$的分布$P(X)$。图像生成是生成模型中的一大主要应用,每一个图像都有几千乃至于几百万像素,因此图像可以视作一个典型的高维空间上的数据点。而生成模型的工作为捕捉像素之间的依赖关系,比如相邻像素有相似的颜色,并构成了一个物体。我们可以给予一些限制,使得生成模型能够捕捉特定的依赖关系。最简单的生成模型直接计算$X$的概率$P(X)$,那些更像是真实图像的$X$获得概率更大,而更像是噪声的$X$概率更小。但是这种简单的预测作用有限,因为精确区分真实图像与噪声并不能直接帮助我们合成更加逼真的图像。

给定一个数据集,我们关心如何生成那些与数据集中的样本相似的目标,而不是生成完全相同的目标。以图像数据集为例,给定一个由原始图像所组成的数据集,我们目标是生成从未见过的新图像。这个生成技术对于图像设计者而言是非常有用的,它可以用于手写数数据集的扩展,也可以用于游戏中进行森林,草地等的填充(给定一些原始的植物图像)。将以上例子写成目标函数的形式,即给定一个定义于$\mathcal{X}$上的未知分布函数$P_{gt}(X)$,以及来自于分布$P_{gt}(X)$的采样$X$,生成模型目标为学习分布$P$使得P尽可能接近$P_{gt}$。

如何训练模型以学习分布$P_{gt}$一直以来是机器学习的重点问题,而大部分方法都或多或少命中以下3种缺陷中的某几条:

  • 模型需要的数据空间假设过强
  • 模型很难找到最优值点,往往只能收敛到次优值
  • 模型需要过多计算资源,如需要Markov Chain Monte Carlo采样方法

近年来,深度学习的兴起使得利用反向传播算法来训练强大的拟合工具成为可能,利用神经网络来构建生成模型是当下的研究热点。其中,变分自编码器(Variational Autoencoder,VAE)基于数据空间假设非常弱,可以通过反向传播算法进行快速训练,模型容量非常大,泛化误差很低这四大优点成为当前最流行的模型之一。本篇Tutorial旨在对VAE进行非正式的介绍,它适用于那些想要使用生成模型,但是对变分贝叶斯方法以及最小化描述编码长度(笔者注:就是KL散度)模型不甚了解的人。这篇Tutorial由UCB和CMU视觉组共同贡献,因此在描述上更偏向于视觉方向,欢迎来稿修正。

2.1.1 潜变量模型

这里参考1.2即可

2.2 变分自动编码器

VAE的数学基础与经典自动编码器(如稀疏自动编码器去噪自编码器)的数学基础基本无关。VAE最大化目标函数公式$(1)$,而其模型如图1所述。VAE被称作变分自动编码器则因为它最终的训练目标确实可以拆解为一个编码器和一个解码器,这个结构与传统自动编码器非常相似。不同于稀疏自编码器,损失函数中并没有调整稀疏惩罚的参数,同时与传统自动编码器不同,我们可以直接利用$P(X)$对目标进行采样生成(而不是用计算量巨大的Markov Chain Monte Carlo方法)

笔者注:Markov Chain Monte Carlo是一种采样方法,它从概率分布$p(z)=\hat{p}(z)/Z_p$中进行采样。利用马氏链模型,它能保证$z^{(t)}->p(z),t\rightarrow \infty$.

\[P(X)=\int P(X\vert z;\theta)P(z)dz \tag{1}\]

figure1

为了最大化目标函数公式$(1)$,VAE面对两个问题:如何定义潜变量$z$(比如确定潜变量应该代表什么样的信息),以及如何计算在潜变量$z$上的积分,VAE很好地处理了这两个问题。

如何选择潜变量

首先,如何选择潜变量$z$使得我们能通过$z$捕捉潜在空间信息呢?我们回顾手写数字的例子。在模型生成一个数字之前所做出的”潜在空间”决定是非常复杂的。它不仅仅需要选择一个数字,还需要选择这个数字所需要绘画的角度,笔画的宽度还有其它的抽象特性,而且这些选择往往是有相关性的,比如绘制的角度很尖锐的数字往往意味着画的速度很快,而也会导致笔画更细。在理想的情形下,我们希望能由生成模型来自动找出潜变量,从而避免手动设计与选择潜变量空间中每一个维度所编码的信息(当然我们也希望在必要的时候能够让潜变量的某维度编码特定的语义),同时我们想避免描述潜变量不同维度之间的依赖关系。VAE处理这些问题的方法比较不显然,VAE假设潜变量空间中的每一个维度是彼此独立的,同时每一个维度都不能简单地描述或解释,同时潜变量满足先验分布$\mathcal{N}(0,I)$,I是单位矩阵。 figure2

潜变量的正态分布假设

为什么我们需要做出这个假设呢?我们不加证明地给出一个结论,即在$d$维空间上的任意随机向量都可以由$d$个相互独立的正态分布随机变量经过某种复杂的映射得到,这个映射一定是存在的。比如说,如果我们想得到一个$2d$随机向量,它的值都位于一个环上。我们选正态的$2d$随机向量$z$,并做映射$g(z)=\frac{z}{10}+\frac{z}{\Vert z \Vert}$,该映射的结果如图2所述。因此,只要我们有足够强大的拟合手段,那么我们就可以将独立正态潜变量$z$映射到任意分布的潜变量,然后再把这些潜变量映射到生成空间$\mathcal{X}$上的元素。以这个观为为基础,我们再来看待公式

\[P(X\vert z;\theta) = \mathcal{N}(X\vert f(z;\theta),\sigma^2*I)\]

假设$f(z;\theta)$是一个多层神经网络,我们可以想象网络先用前几层将服从高斯分布的潜变量$z$映射到服从某种目标分布的潜变量值,这个潜变量的维度编码了一些特定的语义信息(如数字特征,笔画宽度,绘制角度等),然后用接下来的网络层将这些潜变量映射到生成空间里的点。通过这个解释,我们发现该模型对潜变量结构的存在性并没有做出很强的假设,即如果潜变量存在某种特定的结构能够帮助模型更精准地生成训练集(如最大化训练集样本的出现概率),那么网络会让某些层学习这种结构。

如何计算潜变量$z$上的积分

考虑最大化似然函数公式$(1)$,同时利用潜变量假设$P(z)=N(z\vert 0,I)$。我们的目的是找到$P(X)$的公式化表达,同时对这个公式进行梯度计算,用随机梯度下降法(SDG)优化模型。利用中心极限定理来对积分进行离散化,并估计$P(X)$是一个非常直观的想法,即先对潜变量$z$进行采样为${z_1,…,z_n}$,然后计算

\[P(X)\approx \frac{1}{n}\sum_{i}P(X\vert z_i)\]

如果生成空间是极高维空间,那么得到$P(X)$较为精确的估计所需要的$n$极大。为了直观展现这个问题,我们再回到手写数字识别的例子上。一个手写数字被存储在$28\times 28$分辨率的像素空间上,如图3所述。考虑图3(a),这是一个训练样本$X$,我们希望最大化它的出现概率$P(X)$。如果一个模型基于某个潜变量采样$z’$生成了图3(b)这个数字样本$X’$,这个样本无疑是比较糟糕的,因此我们需要设置$P(X\vert z’)$的$\sigma$超参数使得这个潜变量对$P(X)$的出现概率影响尽量小。而图3(c)则是一个很好的生成样本,我们希望生成这个样本的潜变量对$P(X)$的贡献尽量大。事实上,图3(c)仅仅是把图3(a)中的数字向右向下移动了一个像素。我们来证明以上两个目的不可能同时达到。

figure3

回顾1.2.3节,我们对$P(X\vert z)$做出各维度独立的高斯分布假设,这使得最大化$X$的对数似然概率等价于最小化$\Vert f(z)-X\Vert_2$。计算图3(b)与图3(c)的欧氏距离,图3(b)的距离为0.0387,而图3(c)的距离为0.2693。因此如果我们想要让图3(b)对$P(X)$的贡献尽量少,那么我们需要设置$\sigma$让它非常之小(这样中心化程度极大,离期望稍微远一点,概率密度就会急剧下降),那么此时因为图3(c)的欧式距离较大,此时图3(c)对$P(X)$的贡献更加小,这样就产生了矛盾,而真正对$P(X)$贡献大的样本则需要更加接近于图3(a)才行,这就意味着我们需要采样成千上万个数字,才能得到一个对$P(X)$贡献足够大的样本。我们也许可以利用一个良好的图像相似度矩阵来进行加权度量,但是对于无标注图像的相似度度量同样是一个工程难题。在这个问题上,VAE所选择的采样方法能够较好地解决这个问题,我们将在2.2.1节中叙述VAE解决这个问题的手法。

2.2.1 构造目标函数

联系上文,直接在潜变量$z$的先验分布$p(z)=N(0,I)$上进行采样从而估计公式$(1)$具有实践上的困难之处,因为对于$N(0,I)$分布上的绝大部分$z$,$P(X\vert z)$都几乎是0,这些采样对$P(X)$的估计毫无用处。基于这个困难,一个很自然的想法是,给定$X$的信息作为先验,从最有可能生成一个待估计样本$X$的潜变量分布$P(z\vert X)$中对$z$进行采样,并用这些采样来高效估计$P(X)$。

因此,VAE增加了一个编码函数$g(X)$来对分布$P(z\vert X)$进行估计,我们记$g(X)$的估计分布为$Q(z\vert X)$。$g(X)$输出最有可能生成$X$的潜变量$z$的分布参数,并用这些参数来构建$Q(z\vert X)$。此时在$Q(z\vert X)$下进行采样的效率远远高于在$P(z)$下的采样效率,这让我们对$E_{z\sim Q}P(X\vert z)$的计算更加容易。然而,如果潜变量$z$从分布$Q$中进行采样而不是从$N(0,I)$中进行采样,那又如何计算$P(X)$并优化它呢?VAE的核心基石之一就是指出了$E_{z\sim Q}P(X\vert z)$与$P(X)$的关系,并利用这种关系构建了优化目标函数,我们将详细阐述这种关系的推导过程。

我们从$P(z\vert X)$与$Q(z\vert X)$的关系展开,研究这两个分布关系的工具为KL散度($\mathcal{D}$),关于$\mathcal{D}$的知识背景可以回顾1.3.5节。

\[\mathcal{D}[Q(z\vert X)\Vert P(z\vert X)]=E_{z\sim Q}[\log (Q(z\vert X))-\log ( P(z\vert X))]\tag{2}\]

注意$P(z\vert X)=\frac{P(X\vert z)P(z)}{P(X)}$,将该等式代入$(2)$式,得到$(3)$式:

\[\mathcal{D}[Q(z\vert X)\Vert P(z\vert X)]=E_{z\sim Q}[\log (Q(z\vert X))-\log (P(X\vert z))-\log ( P(z))]+\log (P(X))\tag{3}\]

简单调换次序我们有:

\[\log (P(X))-\mathcal{D}[Q(z\vert X)\Vert P(z\vert X)]=E_{z\sim Q}[\log (P(X\vert z))]-\mathcal{D}[Q(z\vert X)\Vert P(z)]\tag{4}\]

公式$(4)$为VAE的核心,我们可以深入研究$(4)$所表达的意思。公式$(4)$的左边包含我们想要优化的两个部分,第一部分是最大化似然概率$\log (P(X))$,第二部分是最小化$\mathcal{D}[Q(z\vert X)\Vert P(z\vert X)]$,它使得$g(X)$对最有可能生成一个待估计样本$X$的潜变量分布$P(z\vert X)$的预测$Q(z\vert X)$尽量靠谱。公式$(4)$的右边是可以用随机梯度下降法来进行优化的目标,它乍一看非常像自动编码器,$Q$将$X$编码到潜变量空间$z$,而$P$将潜变量$z$解码重生成$X$,这也就回答了VAE中用”AutoEncoder”一词进行描述的理由,我们后面将对这一种直观联系进行细节分析。注意到$\mathcal{D}[Q(z\vert X)\Vert P(z\vert X)]\geq 0$,因此公式$(4)$右边可以看作是$\log (P(X))$的下界。给定一个$X$,公式$(4)$的右边下界可以作为一个粗略的估计,展现我们的模型对样本$X$的信息的捕捉程度(在多大程度上能够生成与$X$相似的结果)。

因此,我们采用公式$(4)$作为目标函数时需要最大化$\log (P(X))$同时最小化$\mathcal{D}[Q(z\vert X)\Vert P(z\vert X)]$。当潜变量空间的条件预测$Q(z\vert X)$尽量接近条件概率分布$P(z\vert X)$时,目标函数转换为直接最大化$\log (P(X))$,此时难以估计的分布$P(z\vert X)$可以用$Q(z\vert X)$进行简单地计算。

另一种目标函数的构造方法(笔者注)

上文中基于$\mathcal{D}[Q(z\vert X)\Vert P(z\vert X)]$构造了目标函数,构造过程非常精巧,但是直接想到用$\mathcal{D}[Q(z\vert X)\Vert P(z\vert X)]$进行构造并不是一件直观而容易的事情,这里我们直接从$\log (P(X))$出发展开构造如下:

\[\begin{aligned} L=\log (P(X))=\sum_zQ(z\vert X)\log (p(X))\\ = \sum_zQ(z\vert X)\log (\frac{p(z,X)}{P(z\vert X)}) \\=\sum_zQ(z\vert X)\log (\frac{p(z,X)}{Q(z\vert X)})+\sum_z Q(z\vert X)\log (\frac{Q(z\vert X)}{P(z\vert X)})\\ =L^V+\mathcal{D}[Q(z\vert X)\Vert P(z\vert X)] \end{aligned}\]

然后展开对$L^V$的分析:

\[\begin{aligned} L^V=\sum_z Q(z\vert X)\log (\frac{P(z)}{Q(z\vert X)})+\sum_zQ(z\vert X)\log (P(X\vert z))\\ =-\mathcal{D}(Q(z\vert X)\vert \vert P(z))+E_{z\sim Q}[\log P(X\vert z)] \end{aligned}\]

这个过程比较自然。

Jensen-Inequality 分析

了解了细节以后,我们可以从 Jensen-Inequality出发给出一个非常简洁的期望表达形式

\[\log p(X) = \log \int_{z}p(X,z)dz = \log \int_{z}q_{\phi}(z\vert X)\frac{p(X,z)}{q_{\phi}(z\vert X)}dz\\ =\log E_{z\sim q_{\phi}(z\vert X)}\frac{p(X,z)}{q_{\phi}(z\vert X)} \geq E_{z\sim q_{\phi}(z\vert X)}\log \frac{p(X,z)}{q_{\phi}(z\vert X)} = L^{V} = (4)\]

这里等号成立当且仅当

\[q_{\phi}(z\vert X) = p(z\vert X)\]

2.2.2 优化目标函数

本章解决目标函数的优化问题,即如何采用随机梯度下降法优化公式$(4)$的右半部分:

\[E_{z\sim Q}[\log (P(X\vert z))]-\mathcal{D}[Q(z\vert X)\Vert P(z)]\tag{5}\]
2.2.2.1 计算$\mathcal{D}[Q(z\vert X)\Vert P(z)]$

首先我们需要对$Q(z\vert X)$的分布形式进行假设,一般我们选择$Q(z\vert X)\sim N(z \vert \mu(X;\theta),\Sigma(X;\theta))$,这里正态分布的参数$\mu,\Sigma$都是由$\theta$所确定的函数,参数$\theta$可以从数据中学到(因此为书写方便起见,我们将隐藏$\theta$),在实际使用中,我们用深度神经网络来学习$\mu,\Sigma$,同时令$\Sigma$是一个对角矩阵。正态假设与对角矩阵假设方便了对$(5)$进行计算,因为此时$Q(z\vert X)$与$p(z)$都是多元正态分布随机变量,而$\mathcal{D}[Q(z\vert X)\Vert P(z)]$可以由正态分布的KL散度公式进行计算。

2.2.2.2 计算$E_{z\sim Q}[\log (P(X\vert z))]$

计算$E_{z\sim Q}[\log (P(X\vert z))]$需要一些技巧。我们可以使用采样方法来估计$E_{z\sim Q}[\log (P(X\vert z))]$,但是要得到一个好的估计需要对$z$进行多次采样,并经过$f$进行多次计算,这样计算量比较大。在工程中,在训练集中取定一个样本$X$,我们一般基于$Q(z\vert x)$对$z$进行一次采样,然后计算$P(X\vert z)$并以之作为期望的估计。

注意给定一个训练集$D$,对于$D$中的所有样本,我们最大化目标函数的期望,即:

\[E_{X\sim D}[E_{z\sim Q}[\log (P(X\vert z))]-\mathcal{D}[Q(z\vert X)\Vert P(z)]]\tag{6}\]

对$(6)$式进行梯度计算时,得到的梯度也必然是期望的形式。给定一个$D$中的样本$X$,我们可以利用$Q(z\vert X)$进行采样$z$,然后计算

\[\log (P(X\vert z))-\mathcal{D}[Q(z\vert X)\Vert P(z)]\tag{7}\]

作为$(6)$式的估计,同时它的梯度也可以计算梯度作为对$(6)$式梯度的期望的估计,因此我们可以考虑选取多组$(X,z)$进行估计,并求平均,之后结果将以中心极限定理收敛到$(6)$式的梯度。注意在$(6)$式中求$\log (P(X\vert z))$依赖于分布$Q$,但是这个依赖关系在$(7)$式中消失了,这使得在实际计算过程中$P,Q$可以进行一定程度上的分离。这种计算流程可以总结为图四(左)的流程。但是,这个流程没有解决反向传播的问题,因为从分布$Q(z\vert X)$对z进行采样的操作并不是一个”连续”的操作,同时也不能计算梯度。随机梯度下降法可以处理随机输入的问题,但是不能处理神经网络中的随机模块,因此我们需要用”重参数化技巧”(reparameterization trick)来解决这个问题。给定分布$Q(z\vert X)$的参数$\mu(X),\Sigma(X)$,将原采样过程$z=sample(N(\mu(X),\Sigma(X)))$重参数化为:

\[z=\mu(X)+\Sigma^{\frac{1}{2}}(X)*\epsilon,\epsilon\sim N(0,I)\]

figure4

在重参数化下,计算流程变为图四(右)的流程。此时给定$X,\epsilon$,公式$(7)$是$P,Q$的确定连续函数,因此我们可以用随机梯度下降法对其进行优化。

2.2.3 对训练好的模型进行测试

测试阶段是生成新样本的阶段,在这个阶段中,我们将编码部分抹去,并在$z\sim N(0,I)$中直接对$z$进行采样(而不用重参数化),然后生成$f(z)$作为生成样本(这里可以回顾1.2节潜变量模型),图5给出了测试的流程。

figure5

2.2.4 对目标函数的深度理解与解释

看到这里,读者应该有一个观念是VAE的学习过程是$well-defined$,同时VAE的训练目标为对训练集中的任意$X$,最大化$\log (P(X))$。但是VAE的损失函数中并不仅有$\log (P(X))$这一项,因此本节旨在对”目标函数是如何工作的”这一任务进行深度分析,我们将从以下三个角度进行展开:

  • 是否存在目标函数能够最大化$P(X)$,同时令$\mathcal{D}[Q(z\vert X)\Vert P(z\vert X)]=0$
  • 如何从信息论角度解释损失函数
  • VAE的损失函数中是否有正则化项
2.2.4.1 最优目标函数的存在性

VAE模型很大程度上依赖于假设$Q(z\vert X)$服从高斯分布,其均值$\mu(X)$,方差$\Sigma(X)$都是$X$的函数。最大化公式$(4)$的左半部分要求最大化$P(X)$的同时令${D}[Q(z\vert X)\Vert P(z\vert X)]=0$。然而,${D}[Q(z\vert X)\Vert P(z\vert X)]=0$并不一定成立,这是因为任取编码函数$z=g(X)$,$P(z\vert X)$并不一定是高斯分布,也就是说此时${D}[Q(z\vert X)\Vert P(z\vert X)]$永远不为0。因此,我们需要一对潜变量空间分布参数预测函数$g$和生成函数$f$,$(f,g)$在最大化似然函数$\log (P(X))$的同时,将$X$映射到服从高斯分布的潜变量空间,从而使得${D}[Q(z\vert X)\Vert P(z\vert X)]=0$。

那么,对于任意生成空间上的分布函数$P_{gt}(X)$,是否总能存在一组$(f,g)$,满足${D}[Q(z\vert X)\Vert P(z\vert X)]=0$,同时$P(X)\rightarrow P_{gt}(X)$呢?我们可以证明,对于一维空间上的$X$而言,在$P(X)\sim N(u,\sigma)$,同时$Q(z\vert X)$服从高斯分布,其均值$\mu(X)$,方差$\Sigma(X)$都是$X$的函数这两条假设下,一定能找到一组$(f,g)$,使得当$\sigma\rightarrow 0$时,有:

\[\begin{aligned} P(X)\rightarrow P_{gt}(X)\\ \mathcal{D}[Q(z\vert X)\Vert P(z\vert X)]\rightarrow 0 \end{aligned}\]
一维情况的证明

假设$P_{gt}(X)$为任意一个一维随机变量$X$的分布函数,假设$P_{gt}>0,a.e.$,$P_{gt}$无限次可微,同时$\forall n,\exists M(n)\in R,\vert P_{gt}^{(n)} \vert<M(n)$,我们想要在VAE的假设下用VAE来进行估计$P_{gt}$。回顾VAE优化的目标函数:

\[\log (P_{\sigma}(X))-\mathcal{D}[Q_{\sigma}(z\vert X)\Vert P_{\sigma}(z\vert X)]\tag{2.4.1-1}\]

这里:

\[\begin{aligned} P_{\sigma}(X\vert z)\sim N(X\vert f(z),\sigma^2),z\sim N(0,1)\\ P_{\sigma}(X)=\int_{z}P_{\sigma}(X\vert z)P(z)dz\\ Q_{\sigma}(z\vert X)\sim N(z\vert u_{\sigma}(X),\Sigma_{\sigma}(X)) \end{aligned}\]

注意我们全部加了一个$\sigma$的下标,这是因为我们将在$\sigma \rightarrow 0$的情况下证明收敛性。式$(2.4.1-1)$达到理论最优解当且仅当$P_{\sigma}=P_{gt},\mathcal{D}[Q(z\vert X)\Vert P(z\vert X)]=0$,接下来我们证明存在潜变量$z$分布的拟合函数$g$和生成空间变量$X$分布的拟合函数$f$,使得$\sigma \rightarrow 0$时达到理论最优解。

假设$F$为$P_{gt}$的概率分布函数,$G$为$z\sim N(0,1)$的分布函数,那么$G(z)$是服从均匀分布$Unif(0,1)$的随机变量(任意随机变量的概率分布函数都是服从均匀分布$Unif(0,1)$的随机变量,留给读者自证)。构造$f(z)=F^{-1}(G(z))$,我们来证明,当$\sigma \rightarrow 0$时:

\[P_{\sigma}(X)=\int_{z}P_{\sigma}(X\vert z)P(z)dz \rightarrow P_{gt}(X)\tag{2.4.1-2}\]

证明式$(2.4.1-2)$等价于证明:

\[\sigma \rightarrow 0,F(x)=\int_{-\infty}^{x}\int_{z}e^{-\frac{(x-F^{-1}(G(z))}{2\sigma^2}}\frac{1}{\sqrt{2\pi}\sigma}G'(z)dzdx \tag{2.4.1-3}\]

这里笔者不直接给出它的分析形式的证明(其实就是笔者证明不出来,求求谁读了这篇B\log 打救我一下谢谢),但是笔者利用连续型随机变量分布函数利用采样方法拟合的过程进行近似证明如下(笔者要开始放飞自我了):

首先用$Fubini$定理交换式$(2.4.1-3)$的积分次序(笔者也不知道这里能不能用这个定理但是感觉反正都是有界可积连续函数应该可以用,不证了就当我是物理系的):

\[\sigma \rightarrow 0,F(x)=\int_{z}\int_{-\infty}^{x}e^{-\frac{(x-F^{-1}(G(z))}{2\sigma^2}}\frac{1}{\sqrt{2\pi}\sigma}dxG'(z)dz \tag{2.4.1-4}\]

当$\sigma \rightarrow 0$时,正态分布$X\sim N(u,\sigma)$的概率密度图将逼近于狄拉克函数:

dirac

因此$\sigma \rightarrow 0,\int_{-\infty}^{x}e^{-\frac{(x-F^{-1}(G(z))}{2\sigma^2}}\frac{1}{\sqrt{2\pi}\sigma}dx$可以理解为先对随机变量$z$进行采样,然后用$G(z)$生成均匀分布$Unif(0,1)$上的采样,也就是对$F(X)$纵轴的均匀采样(注意$F(x)\sim Unif(0,1)$,然后用$F^{-1}(G(z))$将对纵轴的采样映射到对$X$的采样过程。经过$n$次采样,我们得到了分布函数$F(X)$上的$n$个点,按$X$的采样大小从小到大排列为$(X_1,F(X_1),…,X_n,F(X_n)$,用这$n$个点分段线性拟合$F(X)$:

F

积分$\int_{z}$的过程可以看作是令$n\rightarrow \infty$的过程,而$\sigma \rightarrow 0$的过程可以看作是采样的过程,因此式$(2.4.1-3)$成立(我的马鸭我终于糊弄过去了)。

然后我们证明存在潜变量$z$分布的拟合函数$g$,令:

\[\sigma \rightarrow 0,\mathcal{D}[Q(z\vert X)\Vert P(z\vert X)]\rightarrow 0\]

一个很自然的想法是构造$g=f^{-1}$,即$g(X)=G^{-1}(F(X))$,同时令$u_{\sigma}(X)=g(X),\Sigma_{\sigma}(X)=(g’(X)*\sigma)^2$。

此时$Q_{\sigma}(z\vert X)\sim N(z\vert g(X),(g’(X)*\sigma)^2$。

利用KL散度的仿射变换不变性,我们作出如下形式上的转变,令

\[z_0=\frac{z-g(X)}{\sigma}+g(X)\]

此时有:

\[\begin{aligned} Q^0(z_0\vert X)&\sim N(\vert g(X),g'(X)^2)\\ P_{\sigma}^0(z_0 \vert X)&=P_{\sigma}(z=g(X)+\sigma*(z_0-g(X))\vert X)*\sigma\\ \mathcal{D}[Q(z\vert X)\Vert P(z\vert X)]&=\mathcal{D}[Q^0(z_0\vert X)\Vert P_{\sigma}^0(z_0\vert X)] \end{aligned}\]

进行这样的变换是为了让$Q$的分布独立于$\sigma$,此时我们证明$\forall z,P_{\sigma}^0(z_0\vert X)\rightarrow Q^0(z_0\vert X)$。

令$r=g(X)+(z_0-g(X))*\sigma$,我们有:

\[P_{\sigma}^0(z_0\vert X) = P_{\sigma}(z=r\vert X=X)*\sigma\\ = \frac{P_{\sigma}(X=X\vert z=r)* P(z=r)* \sigma}{P_{\sigma}(X=X)} \tag{2.4.1-5}\]

注意到我们已经证明了$\sigma \rightarrow 0,P(X)\rightarrow P_{gt}(X)$,同时此时有$r\rightarrow g(X)$,因此$P_{\sigma}(X=X),P(z=r)$都是常数,我们将$(2.4.1-5)$写成:

\[C* N(X\vert f(r)*\sigma,\sigma^2)\tag{2.4.1-6}\]

我们将$f(r)$在$g(X)$处进行泰勒展开(这是很自然的,因为$\sigma \rightarrow 0,r\rightarrow g(X)$),注意$fg(X)=X$,我们有:

\[f(r)=X+f'(g(X))*(z_0-g(X))*\sigma+\sum_{n=2}^{\infty}\frac{f^{(n)}(g(X))((z^0-g(X))*\sigma)^n}{n!}\]

代入$(2.4.1-6)$,同时展开正态分布概率密度,我们有:

\[\frac{C* f'(g(X))}{\sigma}* N(z_0\vert g(X)- \\ \sum_{n=2}^{\infty}\frac{f^{(n)}(g(X))((z^0-g(X))* \sigma)^n}{n!f'(g(X))*\sigma},\frac{1}{f'(g(X))^2})\tag{2.4.1-7}\]

这里有一个小trick是$\frac{1}{f’(g(X))}=g’(X),f=g^{-1}$,我们简单证明一下:

\[\begin{aligned} f'(g(X))&=\frac{f(g(X)+d(g(X)))-f(g(X))}{d(g(X))}\\ &=\frac{f(g(X+dx))-f(g(X))}{g(X+dx)-g(X)}\\ &=\frac{1}{g'(X)} \end{aligned}\]

同时因为$f^{(n)}$有界连续,因此后面求和项都可以看作是0($\sigma \rightarrow 0$)。注意$C$是归一化参数,因此前面的参数项部分可以看作为1,此时$(2.4.1-7)$收敛到$Q^0(z_0\vert X)$。

综上所述,在一维情况下,当$\sigma \rightarrow 0$时,

\[\begin{aligned} P(X)\rightarrow P_{gt}(X)\\ \mathcal{D}[Q(z\vert X)\Vert P(z\vert X)]\rightarrow 0 \end{aligned}\]

成立。

2.2.4.2 信息论视角的解释

我们可以用信息论视角来以及”最小编码长度”原则看待公式$(4)$,其实基于”最小编码长度”已经有很多编码器模型,如Boltzman Machine,深度信念网络,生物钟算法等。$\log (P(X))$可以理解为在理想编码下重建$X$所需要的信息量(回顾1.3节),公式$(4)$的右半部分$E_{z\sim Q}[\log (P(X\vert z))]-\mathcal{D}[Q(z\vert X)\Vert P(z)]$可以理解为重构$X$的两个阶段。首先我们需要一些比特来编码$z$,回顾1.3节关于$KL$散度的信息论解释,我们用$\mathcal{D}[Q(z\vert X)\Vert P(z)]$来度量需要构造$z$的比特数,这是因为在我们的模型中,我们假设从$N(0,I)$中进行采样得到的$z$不包含$X$的任何信息,因此,$\mathcal{D}[Q(z\vert X)\Vert P(z)]$可以度量从$Q(z\vert X)$中进行采样所带来的关于$X$的额外信息量。$P(X\vert z)$度量了在最优编码下从$z$重构$X$所需要信息量。因此,在理想编码下所重建$X$需要的信息量$\log (P(X))$可以看作是从$z$重构$X$所需要的信息量$P(X\vert z)$上从$Q(z\vert X)$中对$z$进行采样所带来的关于$X$的额外信息量,再减去我们用$Q$作为一个次优化编码器的编码代价$\mathcal{D}[Q(z\vert X)\Vert P(z\vert X)]$。注意这里$P(X\vert z)$并没有对$X$的不同维度信息的依赖关系进行编码,因此即使是最优编码器也需要对$X$的每一个维度进行独立地编码与重构。

2.2.4.3 VAE与正则化参数

如果我们将$\mathcal{D}[Q(z\vert X)\Vert P(z\vert X)]$视作是一个正则化项,并与稀疏自动编码器[10]建立联系,这将是一个有趣的视角。那么,VAE是否含有正则化项呢?在稀疏自动编码器中,我们用$\lambda \Vert \phi(X) \Vert_0$来增加稀疏约束,而$\lambda$则是需要手动设置的正则化参数。在VAE的目标函数$(4)$中,我们似乎没有看到正则化参数的存在性,这意味着我们可以少一个需要手动调节的超参数。但是,对于一个给定的模型,我们可以让VAE中的某些参数起到正则化的作用。

一个很自然的想法是令$z’\sim N(0,\lambda *I)$,但是这种变换可以通过构造新的$f’,g’$来解决,如令:

\[f'(z')=f(\frac{z}{\lambda});\Sigma'(X)=\Sigma(X)*\lambda^2\]

这样$\lambda$并没有起作用。

我们也可以尝试在$P(X)$上下文章。注意到$P(X\vert z)\sim N(f(z),\sigma^2*I)$,此时$\log (P(X\vert z)=C-\frac{1}{2}\Vert X-f(z)\Vert_2^2 /\sigma^2$,$C$是不依赖于$f$一个常数。在该公式中,$\sigma^2$可以看作是在$\Vert X-f(z)\Vert_2^2$与$\mathcal{D}[Q(z\vert X)\Vert P(z\vert X)]$之间的加权参数。注意到这一类正则化情况当且仅当我们给出$P(X\vert z)$的独立正态性假设才成立,而如果$X$是二值的,同时我们用Bernouli分布作为$P(X\vert z)$的分布假设,那么这种正则化情况就不存在了。

如何用信息论来解释上文中出现的正则化情况呢?我们可以认为,当$X$是二值的,我们可以直接计算编码$X$所需要的字节数,而公式$(4)$的右边也用同样的单位来计算编码字节。而当$X$是连续随机变量的时候,信息熵趋向于无穷(回顾1.3节,从离散随机变量到连续随机变量),此时$\sigma$限制了我们对重建$X$的精确要求度(这是很好理解的,因为$\sigma$是正态分布随机变量的方差,它决定了概率密度函数的中心化程度),这个限制使得信息熵可以有限可计算(就像$\Delta$一样)。

2.3 条件自动编码器

回到手写数字的例子。如果我们的目的不是生成新的数字,而是在已有的由某个人所写的一系列数字上增加一个相似的,我们应该怎么办呢?这与计算机图形学中所称的”空洞补充”问题非常相似:给出一个缺失了一部分物体的图像,如何对这些空洞进行填充,使得填充的像素能够在视觉上面被认为是”比较相像”?该问题的一个重要难点在于,填充的结果可以是非常多的,所能进行额外填充的像素也具有无数选择(比如对8切掉一半进行填充,可以是8,也可以是6等)。在这个情形下,标准回归模型仅仅对一种预测与ground truth之间的差异进行惩罚,因此它的填充结果可能是所有可能填充结果的平均值,这在应用中表现为标准回归模型预测出的是一片模糊噪声,代表着结果被平均化了。我们需要模型能够将一系列(或者是一张)图像作为输入,同时输出一个比较复杂的分布模型,我们可以对这个模型进行采样,每个采样对应一个填充结果,我们可以对上文中所提到的VAE的数学进行一些小小的变化,从而将VAE转换为CVAE(conditional variational autoencoder),从而解决一个输入可以对应多个输出的”空洞填充”问题,同时CVAE并不需要我们预先给定输出空间的分布结构。

给定一个需要进行”空洞填充”的输入$X$(注意这里的$X$代表具有缺失部分的输入,而并非ground truth),同时给定$X$对应的ground truth输出$Y$,我们假设潜变量$z\sim N(0,I)$,满足

\[P(Y\vert X)=N(f(z,X),\sigma^2*I)\]

这里$f$是将潜变量与残缺输入$X$映射到完整输入$Y$确定性函数,我们可以增加$X$作为先验条件,将公式$(2)-(4)$重写如下:

\[\begin{aligned} \mathcal{D}[Q(z\vert \vert Y,X)\Vert P(z\vert Y,X)]=E_{z\sim Q(.\vert X,Y)}[\log (Q(z\vert Y,X))-\log (P(z\vert Y,X))]\\ =E_{z\sim Q(.\vert X,Y)}[\log (Q(z\vert Y,X)) - \log (P(Y\vert z,X)) - \log (P(z\vert X))]+\log (P(Y\vert X)) \end{aligned}\]

注意这里用到了:

\[\begin{aligned} P(z \vert Y,X)=\frac{P(z,Y,X)}{P(Y,X)}&=\frac{P(Y \vert z,X)P(z \vert X)P(X)}{P(Y \vert X)P(X)}\\ &=\frac{P(Y \vert z,X)P(z \vert X)}{P(Y \vert X)}\ \end{aligned}\]

最后我们有:

\[\begin{aligned} \log (P(Y \vert X))-\mathcal{D}[Q(z \vert Y,X)\Vert P(z \vert Y,X)]\\ =E_{z\sim Q(. \vert Y,X)}[\log (P(Y \vert z,X))]-\mathcal{D}[Q(z \vert Y,X)\Vert P(z \vert X)] \end{aligned}\]

注意这里$P(z\vert X)$仍然服从$N(0,I)$,因为我们的模型假设$z$独立于$X$进行采样,如图6所述是我们的模型结构,在测试过程中,给定$f$,我们通过对$z\sim N(0,I)$进行采样来得到$P(Y\vert X)$中对$Y$的采样。

figure6

2.4 工程实例

Caffe 实现代码可以在github上获得

2.4.1 手写数字识别上的VAE

为了证明VAE在分布学习上容量很大,我们在MNIST数据集上训练VAE。同时为了证明模型并不依赖于网络初始化或者是网络框架,我们不用现有已经发表的VAE框架,而是使用Caffe实现的基本手写数字自动编码器例子(当然,我们使用ReLU作为非线性激活函数以及Adam优化算法这两个能加快收敛的方法进行改进)。注意到MNIST图像是0-1的二值图像,因此我们采用Sigmoid Cross Entropy Loss作为$P(X\vert z)$的损失。这种损失函数的概率解释是:假设我们通过对$X_i’\sim Bernoulli(X_i)$进行采样得到新的数据点$X’$,那么交叉熵度量了$X’$的期望出现概率。这样我们就构造了基于随机二值采样的MNIST数据集的变分自动编码器版本。虽然我们所设计的网络模型比较深,但是训练过程其实并不复杂,收敛很快。从采样$z\sim N(0,I)$中生成的图像如图7所述。这些生成图像的质量很难去评价,因为没有度量生成图像与训练集中图像相似度的统一标准。但是,那些显然不是数字的”失败”例子是非常值得研究的。这些失败的例子往往都好像”在两个不同的数字中间”,如在$(7,1)$这个位置的数组就像在$7$与$9$中间,这是因为我们将一个连续分布映射到了离散二值分布上面来了。

figure7

还有一个实践细节是,VAE模型对于潜变量$z$的维度非常不敏感,除非$z$维度很大或者$z$维度很小时才会引起问题。实践表明,如果$z$的维度很小,那么模型将很难捕捉所有的变化,比如$z$维度小于4的时候模型的生成结果会非常糟糕。同时,$dim(z)=1000$时结果非常不错,但是$dim(z)=10000$时模型结果也会变差,这是一个非常值得注意的现象。因为从理论上而言,如果$dim(z)=n$时模型结果很好,那么$dim(z)=m»n$时模型结果应该也不会变得很糟糕,这是因为模型可以自动忽略那些额外的维度。然而,在实践过程中,当$dim(z)$过大的时候,随机梯度下降法无法让损失$\mathcal{D}[q(z\vert X\Vert p(z)]$变得足够小。

2.5 MNIST上的条件变分自编码器

这里我们展示用条件自编码器(CVAE)来补全MNIST手写数字的过程(仅给出每个数字的一半)。在这个情况下,CVAE工作得非常好,但是回归模型工作得也不差。一个很显然的原因是MNIST手写数字数据集的大小太小了,一个与CVAE模型容量相似的回归模型就可以记住整个数据集并导致过拟合,而这种过拟合在回归模型上就体现为类似于最近邻匹配的补全结果。但是我们注意到,当输出的补全图像相对比较”模糊”的时候,CVAE明显优越于简单回归模型。为了让输出变得”模糊”,我们对原问题做如下变换。首先,输入$X$来自于真实图像$Y$中间的某一行,我们认为凭借这一行的信息,网络仍然能够识别特定的训练样本。第二,我们令每一行的值二值化为$(0,1)$。图8展现了在这种变换下的结果。

figure8

注意此时回归模型倾向于让输出”模糊化”(虽然有些时候回归模型在做出错误预测时候也会输出很低的置信度,但是这表示过拟合仍然是回归模型的主要问题)。正如我们在2.4中所述,回归模型倾向于用均值来对输出进行填充以让平均距离最小化。而CVAE则不同,它首先选择了到底要输出哪个数字,其次才进行生成预测,这使得它的输出模糊更少,生成的图像更有置信度。



Comments

Content