Tutorial on Varitional Autoencoder/CARL DOERSCH学习记录

Abstract

在仅仅三年的时间里,变分自编码器(VAEs)已经成为复杂分布的无监督学习最流行的方法之一。VAEs之所以吸引人,是因为它建立在标准函数逼近器(神经网络)的基础上,可以用随机梯度下降法进行训练。VAEs已经在生成多种复杂数据方面显示出了潜力,包括手写数字[1,2]、人脸[1,3,4]、门牌号[5,6]、CIFAR图像[6]、物理模型场景[4]、分割[7]、预测未来静态图像[8]等。本教程介绍了VAEs背后的直觉,解释了它们背后的数学原理,并描述了一些经验行为。不需要先验知识的变分贝叶斯方法。

1 Introduction

生成式建模是机器学习的一个广泛领域,它处理分布P(X)的模型,在一些潜在的高维空间X中的数据点X上定义。例如,图像是一种流行的数据类型,我们可以为其创建生成模型。每个数据点(图像)有成千上万个维度(像素),而生成模型的工作就是以某种方式捕获像素之间的依赖关系,例如,附近的像素有相似的颜色,并被组织成对象。捕获这些依赖项的确切含义取决于我们想对模型做什么。一种简单的模型允许对P(X)进行数值表示计算。在图像的情况下,X值看起来像真实的图像应该得到高概率,而图像看起来像随机噪声应该得到低概率。然而,这样的模型不一定有用:知道一个图像不太可能并不能帮助我们合成一个可能的图像。

相反,人们通常关心的是生成更多与数据库中已有的示例类似的示例,但并不完全相同。我们可以从一个原始图像数据库开始,合成新的、看不见的图像。我们可能会在一个三维模型的数据库中加入一些植物,然后在一个视频游戏中制造更多的植物来填满一片森林。我们可以使用手写文本,并尝试生成更多的手写文本。我们可以形式化地设置通过未知分布的 Pgt(X) 来生成已知 X 的分布,目标是学习一个可以从中取样的模型 P ,使 P 与 Pgt 尽可能相似。

训练这种模型一直以来都是机器学习社区一个长期存在的问题,并且,大多数方法都存在一下三种严重缺陷之一:首先,可能需要对数据中的结构进行强假设。第二,可能会作出严重的近似,导致次优模型。第三,可能依赖于计算昂贵的推理过程,如马尔可夫链蒙特卡罗方法。近年来,一些研究成果在神经网络的训练中取得了巨大的进展,通过反向传播作为强大的函数逼近器[9]。这些进展已经产生了有前途的框架,可以使用基于反向传播的函数逼近器来生成生成模型。

其中一种受欢迎的模型就是变分自编码器[1,3],这篇教程的主角。该模型进行弱假设,训练通过反向传播迅速进行。VAE确实做了近似,但是由这种近似引入的误差对于高容量模型来说是小的,这些特点促成了它的迅速普及。

本教程旨在对VAEs进行非正式的介绍,而不是正式的关于它的科学论文。它的目的是帮助那些可能使用生成模型,但没有强大的背景在变量贝叶斯方法的人,其中的VAE是基于“最小描述长度”编码模型。本教程开始在UC伯克利和卡耐基梅隆的计算机视觉阅读组的演示,并因此偏向一个视觉观众。欢迎改进建议。

    1. Preliminaries:Latent Variable Models

在生成模型的训练中,维度之间的依赖关系越复杂,模型的训练就越困难。以生成手写字符的图像为例。为了简单起见,假设我们只关心对数字0-9建模。如果字符的左半边包含5的左半边,那么右半边就不能包含0的左半边,否则字符看起来就很明显不像任何实数。直观地说,如果模型首先决定要生成哪个字符,然后再将值赋给任何特定像素,这会有帮助。这种决策形式上称为潜变量。也就是说,在我们的模型绘制任何东西之前,它首先从集合【0...9】中随机抽取一个数字值z,然后确保所有笔划都与该字符匹配。z之所以称为潜在变量,是因为只要给定一个由模型生成的字符,我们不一定知道哪些潜在变量的设置生成了该字符。我们需要用计算机视觉来推断。

在我们可以说我们的模型代表了我们的数据集之前,我们需要确保对于数据集中的每个数据点X,都有一个(或多个)潜在变量的设置,这会导致模型生成与X非常相似的东西。正式地说,我们在高维空间Z中有一个潜在变量z的向量,我们可以根据在Z上定义的某些概率密度函数(PDF)P(z)轻松对其进行采样。然后,假设我们有一个确定性函数f(z;θ)族,在某个空间Θ中由向量θ参数化,其中f:zΘX。f是确定的,但如果z是随机的,θ是固定的,那么f(z;θ)是空间X中的随机变量。我们希望优化θ,这样我们可以从P(z)中采样z,并且,在高概率下,f(z;θ)将类似于我们数据集中的X。

为了使这一概念在数学上精确,我们的目标是在整个生成过程中最大化每一个X在训练集中的概率,根据:A。这里,f(z;θ)被一个分布P(X | z;θ)所代替,这使得我们可以利用全概率定律使X对z的依赖关系变得明确。这个框架的直觉称为最大似然是,如果模型很可能产生训练集样本,那么它也很可能产生相似的样本,并且不可能产生不同的样本。在VAEs中,这种输出分布的选择通常是高斯的,即P(X | z;θ)=N(X | f(z;θ),σ2i。也就是说,它的平均值f(z;θ)和协方差等于单位矩阵I乘以某个标量σ(这是一个超参数)。这种替换对于形式化直觉是必要的,即某些z需要产生类似于X的样本。通常,特别是在早期的训练中,我们的模型不会产生与任何特定X相同的输出。通过高斯分布,我们可以使用梯度下降(或任何其他优化技术)通过使f(z;θ)接近X来增加P(X),即。,逐步使生成模型下的训练数据更有可能。如果P(X | z)是狄拉克三角函数,这是不可能的,因为如果我们确定地使用X=f(z;θ)!注意,输出分布不要求是高斯分布:例如,如果X是二进制的,那么P(X | z)可能是由f(z;θ)参数化的伯努利。重要的性质是P(X | z)可以计算,并且在θ上是连续的。从这里开始,我们将省略f(z;θ)中的θ以避免混乱。

Figure 1:以图形模型表示的标准VAE模型。请注意,明显缺乏任何结构,甚至没有编码器路径:可以在没有任何输入的情况下从模型中采样。这里,矩形是板符号,这意味着我们可以在模型参数θ保持不变的情况下,从z和X N次采样。

2 变分自编码

VAEs的数学基础实际上与经典的自编码器关系不大,如稀疏自编码器[10,11]或去噪自编码器[12,13]。根据图1所示的模型,VAEs近似地最大化了方程1。它们被称为自动编码器,只是因为从这个设置派生出的最终培训目标确实有编码器和解码器,并且类似于传统的自动编码器。与稀疏自编码器不同,通常没有类似于稀疏惩罚的调优参数。与稀疏和去噪的自动编码器不同,我们可以直接从P(X)中采样(不需要执行马尔科夫链蒙特卡罗,如[14])。要解方程1,VAEs必须处理两个问题:如何定义潜在变量z(即决定它们代表什么信息),如何处理z上的积分,VAEs给出了两者的明确答案。

Figure 2:给定一个具有一个分布的随机变量z,我们可以创建另一个具有完全不同分布的随机变量X=g(z)。左:高斯分布的样本。右图:通过函数g(z)=z/10+z/| | z | | |映射成环的相同样本。这是VAEs用来创建任意分布的策略:确定性函数g是从数据中学习的。

首先,我们如何选择潜在变量z来捕捉潜在信息?回到我们的数字示例,模型在开始绘制数字之前需要做出的潜在决策实际上相当复杂。它不仅需要选择数字,还需要选择数字的绘制角度、笔划宽度以及抽象的风格属性。更糟糕的是,这些属性可能是相关的:如果一个人写得更快,可能会产生一个角度更大的数字,这也可能导致笔划更细。理想情况下,我们希望避免手工决定z的每个维度编码什么信息(尽管我们可能希望手工指定某些维度的信息[4])。我们还希望避免显式地描述依赖关系,即z维度之间的潜在结构。VAEs采用了一种不寻常的方法来处理这个问题:他们假设z的维数没有简单的解释,而是断言z的样本可以从一个简单的分布中抽取,即N(0,i),其中i是单位矩阵。这怎么可能?关键是要注意,在d维中的任何分布都可以通过取一组正态分布的d变量并通过一个足够复杂的函数1映射它们来生成。例如,假设我们想构造一个二维随机变量,其值位于环上。如果z是二维正态分布,则g(z)=z/10+z/| | z | |大致呈环形,如图2所示。因此,提供强大的函数逼近器,我们可以简单地学习一个函数,它将我们的独立的,正态分布的Z值映射到模型所需的任何潜在变量,然后将这些潜在变量映射到X。实际上,还记得P(X | z;θ)=N(X | f(z;θ),σ2i。如果f(z;θ)是一个多层神经网络,那么我们可以想象该网络使用它的前几层将正态分布的z s映射到具有正确统计特性的潜在值(如数字标识、笔划权重、角度等)。然后它可以使用后面的层将这些潜在值映射到完全呈现的数字。一般来说,我们不必担心确保潜在的结构存在。如果这样的潜在结构有助于模型准确地再现(即最大化训练集的可能性),那么网络将在某一层学习该结构。

Figure 3:仅用采样很难测量模型下图像的似然性。给定图像X(a),中间的样本(b)在欧氏距离上比右边的样本(c)要近得多。由于像素距离与感知距离有很大的不同,因此样本需要在像素距离非常接近数据点X的情况下,才能被认为是模型下X可能存在的证据。

1:在一维中,可以使用由高斯分布的CDF组成的期望分布的逆累积分布函数(CDF)。这是反变换采样的一个扩展。对于多个维度,从单个维度的边际分布开始执行所述过程,然后重复每个附加维度的条件分布。见Devroye等人的反演方法和条件分布方法。

现在剩下的就是最大化方程1,其中p(z)=n(z×0,i)。正如机器学习中常见的那样,如果我们能找到一个P(X)的可计算公式,并且我们可以取该公式的梯度,那么我们就可以使用随机梯度上升来优化模型。实际上,计算p(x)的概念实际上是简单的:我们首先对大量z值{Z1,…,Zn}进行采样,然后计算A。这里的问题是,在高维空间中,在我们得到P(X)的精确估计之前,n可能需要非常大。要了解原因,请考虑我们的手写数字示例。假设我们的数字数据点存储在28x28个图像的像素空间中,如图3所示。由于P(X | z)是各向同性高斯,X的负对数概率是f(z)和X之间的比例平方欧氏距离。假设图3(a)是我们试图找到P(X)的目标(X)。生成图3(b)所示图像的模型可能是一个坏模型,因为这个数字与2不太相似。我们希望这个样品能有助于P(X)。然而,不幸的是,我们不能同时拥有它:X和图3(c)之间的平方距离是.2693(假设像素范围在0和1之间),但是X和图3(b)之间的平方距离是.0387。这里的教训是,为了拒绝如图3(b)所示的样本,我们需要将σ设置得非常小,这样模型需要生成比图3(c)更像X的东西!即使我们的模型是一个精确的数字生成器,在生成与图3(a)中的2非常相似的2之前,我们可能需要对数千个数字进行采样。我们可以通过使用更好的相似度度量来解决这个问题,但是在实践中,这些度量很难在复杂的领域(比如视觉)中进行工程,而且如果没有表明哪些数据点彼此相似的标签,就很难对它们进行训练。相反,VAEs在不改变相似性度量的情况下,改变采样过程以使其更快。

2.1 设定目标

当我们使用抽样计算方程式1时,有没有捷径可以走?实际上,对于大多数z,P(X | z)几乎为零,因此对P(X)的估计几乎没有贡献。变分自动编码器背后的关键思想是尝试对可能产生X的z值进行采样,并从中计算P(X)。意味着我们需要一个新的函数Q(z | X),它可以取X的一个值,并给出可能产生X的z值上的分布。希望Q下的z值的空间比P(z)下的所有z值的空间要小得多。例如,这让我们相对容易地计算E。但是,如果z是用PDF Q(z)从任意分布中采样的,而PDF Q(z)不是N(0,I),那么这如何帮助我们优化P(X)?我们需要做的第一件事是关联Ez-QP(X | z)和P(X)。我们稍后再看Q的来源。

Ez-QP(X | z)与P(X)之间的关系是变分贝叶斯方法的基石之一。我们从P(z | X)和Q(z)之间的Kullback-Leibler散度(KL散度或D)的定义开始,对于某些任意Q(可能依赖于X,也可能不依赖于X)

这里,对数P(X)超出了预期,因为它不依赖于z。否定两边,重新排列,并将E的一部分收缩成KL散度项,得到

注意X是固定的,Q可以是任何分布,而不仅仅是一个很好地将X映射到z的分布,z的分布可以产生X。因为我们对推断P(X)感兴趣,所以构造一个依赖于X的Q是有意义的,特别是一个使D变小的Q。

这个等式服务于变分自动编码器的核心,值得花些时间思考它所说的2。在两个句子中,左手有我们想要最大化的数量:log p(x)(加上一个误差项,这使得Q产生Z,它可以再现给定的x;如果Q是高容量,这个术语将变小)。右边是我们可以通过随机梯度下降来优化的东西,给出了Q的正确选择(尽管它可能还不明显)。请注意,特别是框架,等式5的右侧突然形成了一个类似于自动编码器的形式,因为Q将X编码为z,P将其解码以重构X。我们稍后将更详细地探讨这一联系。

现在来了解更多关于5号方程式的细节。从左手边开始,我们最大化log p(x),同时同时最小化d[q(z×x)kp p(z x)]。P(z | X)不是我们可以用解析方法计算的:它描述了在图1中我们的模型下可能产生类似于X的样本的z值。然而,左边的第二项是拉Q(z | x)来匹配P(z | x)。假设我们对Q(z | x)使用一个任意大容量模型,那么Q(z | x)将有望实际匹配P(z | x),在这种情况下,kl发散项将为零,我们将直接优化对数P(x)。作为一个额外的好处,我们已经使难处理的P(z | X)变得容易处理:我们可以使用Q(z | X)来计算它。

2.2 优化的目标

如何在方程5的右边进行随机梯度下降呢?首先,我们需要对Q(z | X)将采用的形式更具体一些。通常的选择是,Q(z | X)=N(z |(X;ϑ),σ(X;ϑ)),其中u和∑是具有参数ϑ的任意确定性函数,可以从数据中学习(我们将在后面的方程中省略ϑ)。在实际应用中,u和∑再次通过神经网络实现,并且∑被约束为对角矩阵。这种选择的优点是计算性,因为它们清楚地说明了如何计算右手边。最后一项D现在是两个多元高斯分布之间的KL散度,可以用封闭形式计算为k是分布的维数。在我们的例子中,这个化简为。方程5右边的第一个项有点复杂。我们可以用抽样来估计Ez Q[log P(X | z)],但要得到一个好的估计值,需要通过许多z到f的样本,这将是昂贵的。因此,作为随机梯度下降的标准,我们取Z的一个样本,并将p作为z的近似值。毕竟,我们已经在从数据集D采样的x的不同值上做随机梯度下降。如果我们取这个方程的梯度,梯度符号可以移到期望值中。因此,我们可以从分布Q(z | X)中抽取X的单个值和z的单个值,并计算。然后我们可以在任意多个X和z样本上平均这个函数的梯度,结果收敛到方程8的梯度。然而,方程9存在一个重大问题。Ez Q[log P(X | z)]不仅依赖于P的参数,还依赖于Q的参数。然而,在等式9中,这种依赖性已经消失了。为了使VAEs工作,必须驱动Q产生X的编码,使P能够可靠地解码。从另一个角度看问题,等式9中描述的网络与图4(左)中所示的网络非常相似。这个网络的前向传递工作得很好,如果输出在X和z的多个样本上取平均值,就会得到正确的期望值。然而,我们需要通过一个从Q(z|X)中采样z的层来反向传播误差,这是一个不连续的操作,没有梯度。通过反向传播的随机梯度下降法可以处理随机输入,但不能处理网络中的随机单元。解决方案称为中的重新参数化技巧,是将采样移动到输入层。给定(X)和∑(X)Q(z | X)的均值和协方差,我们可以从N((X)和∑(X))中首先采样enn(0,I),然后计算z=(X)+∑1/2(X)e。如图4(右)所示。请注意,这些期望都与依赖于我们的模型参数的分布无关,因此我们可以在保持相等的同时安全地将梯度符号移到这些分布中。也就是说,给定一个固定的X和e,这个函数在P和Q的参数上是确定的和连续的,这意味着反向传播可以计算一个适用于随机梯度下降的梯度。值得指出的是,重新参数化技巧只有在我们可以通过计算函数h(η,X)从Q(z | X)中采样时才有效,其中η是来自未学习的分布的噪声。此外,h在X中必须是连续的,这样我们可以通过它进行反向支撑。这意味着Q(z | X)(因此P(z))不能是离散分布!如果Q是离散的,那么对于固定的η,h需要忽略X,或者h(η,X)需要在某个点从Q的样本空间中的一个可能值跳到另一个可能值,即不连续性。

2.3 测试所学模型

在测试时,当我们想要生成新的样本时,我们只需在解码器中输入z N(0,I)的值。也就是说,我们删除了编码器,包括改变z分布的乘法和加法操作。这个(非常简单的)测试时间网络如图5所示。假设我们要评估模型下测试示例的概率。总的来说,这是不可处理的。但是,请注意,D[Q(z | X)kP(z | X)]_。由于z上的期望值需要采样,所以这个下界仍然不能完全以封闭形式计算。然而,来自Q的采样z给出了期望的估计,其收敛速度通常比来自N(0,I)的采样z快得多,如第2节所述。因此,这个下限可以成为一个有用的工具,用来大致了解我们的模型捕获特定数据点X的能力

2.4解释我们的目标

到目前为止,您应该相信VAEs中的学习是可处理的,并且它优化了整个数据集的log P(X)之类的东西。但是,我们并没有精确地优化log P(X),因此本节的目的是更深入地了解目标函数的实际工作。我们讨论三个主题。首先,我们问除了log P(X)外,优化D[Q(z|X)kP(z|X)]会引入多少误差。其次,从信息论的角度描述了VAE框架,特别是方程5的r.h.s.,并将其与其他基于最小描述长度的方法联系起来。最后,我们研究了VAEs是否具有类似于稀疏自编码中的稀疏惩罚的正则化参数。

2.4.1来自D的误差

该模型的可处理性取决于我们的假设,即可以将Q(z | X)建模为具有一定平均值(X)和方差Σ(X)的高斯模型。只有当D[Q(z | X)kP(z | X)变为零时,P(X)才收敛于真分布。不幸的是,要确保这一点并不容易。即使我们假设(X)和∑(X)是任意大容量的,对于我们用来定义P的任意f函数,后验P(z | X)也不一定是高斯的。对于固定P,这可能意味着D永远不会变成零。然而,好消息是有无限多的f函数导致我们的模型生成任何给定的输出分布。这些函数中的任何一个都可以使logp (X)最大化。因此,我们所需要的是一个函数f,它使logp (X)最大化,并使P(z|X)对所有X都是高斯的。如果是这样,D[Q(z | X)kP(z | X)]将把我们的模型拉向分布的参数化。那么,对于所有我们想要近似的分布,是否存在这样的函数?我还不知道有人在一般情况下证明这一点,但事实证明,可以证明这样的函数确实存在,只要c相对于地面真值分布的CDF曲率(至少在1D中是一个小的;一个证据包含在附录A中)。在实践中如此小的σ为现有的机器学习算法,可能会导致问题自梯度将变得严重了。然而,值得欣慰的是,至少在这种情况下,VAEs的近似误差为零。这一事实表明,未来的理论工作可能会告诉我们,在更多的实际设置中,VAEs有多少近似误差。似乎可以将附录A中的证明技术扩展到多个维度,但这将留给以后的工作

2.4.2 信息理论解释

看右边的另一重要途径方程5是在信息理论方面,特别是最小描述长度原则驱使许多VAE年代的前辈像亥姆霍兹机器[16],[17]和生物钟的算法,深度信念网[18],玻耳兹曼机[19]。log P(X)可以看作是在我们的模型中使用理想编码构造X所需的总比特数。方程5的右边把这看作是构造x的两步过程。我们首先用一些位元来构造z。回想一下,KL发散是以比特(或nats)为单位测量的。我们使用D[Q(z | X)| | P(z)]来测量构造z所需的位,因为在我们的模型下,我们假设从P(z)=N(z | 0,I)采样的任何z都不能包含关于X的信息。因此,我们需要度量当z来自Q(z|X)而不是来自P(z)时我们获得的关于X的额外信息的数量(更多细节,请参阅[20,21]的bits back参数)。在第二步中,P(X | z)测量在理想编码下从z重建X所需的信息量。因此,总比特数(log P(X))是这两个步骤的总和,减去我们为Q是次优编码(D[P(z | X)| | Q(z | X))而付出的代价。请注意,第二步是一种相当浪费的方式来编码关于X:P(X | z)的信息,在我们的模型下,X的维度之间的任何相关性都不建模,因此即使是理想的编码也必须分别对每个维度进行编码。

2.4.3 VAEs与正则化参数

从方程5来看,有趣的是把D[Q(z | X)| P(z)]看作一个正则化项,很像稀疏自编码器中的稀疏正则化[10]。从这个观点出发,我们很有兴趣问变分自动编码器是否有任何“正则化参数”。也就是说,在稀疏自动编码器目标中,目标函数中有一个λ正则化参数,如下所示:

其中,Ψ和φ分别是编码器和解码器函数,k·k0是一个L0范数,它鼓励编码稀疏。必须手动设置该λ。人们很容易认为这个参数可能来自于将z改为z0这样的值,但事实证明这并没有改变模型。要知道这一点,请注意,我们可以把这个常数用f 0(z0)=f(z0/λ)、0(X)=(X)λ和∑0(X)=∑(X)λ2来表示,从而将它们吸收到P和Q中。这将产生一个目标函数,其值(方程5的右侧)与我们用z N(0,I)得到的损失相同。此外,由于z0/λN(0,I),采样X的模型将相同。

然而,正则化参数还有另一个来源。回想一下,P (X | z) N (f (z),σ2我):因此,改变这种σ会改变P (X | z)而不影响D [Q (z | X) kP (z)]。更详细地说,对数P(X | z)=cc12kxf(z)k2/σ2,其中C是一个不依赖于f的常数,因此在优化过程中可以忽略。因此,σ可被视为等式5的r.h.s.的两个项之间的加权因子。但是请注意,此参数的存在取决于我们对给定z的X分布的选择。 如果X是二进制的并且我们使用Bernoulli输出模型,则此正则化参数将消失,而将其归还的唯一方法是使用黑客手段,例如复制X的尺寸。从信息论的角度来看,这是有意义的:当X是二进制的时候,我们实际上可以计算编码X所需的比特数,方程5右边的两项都使用相同的单位来计算这些比特数。然而,当X是连续的,每个样本包含无限的信息。我们选择的σ决定我们如何准确地预计模型重建X,这是必要的,以便信息内容可以成为有限的。

3条件变分自编码器

让我们回到生成手写数字的运行示例。假设我们不想生成新的数字,相反,我们想把数字添加到一个由一个人编写的现有的数字串中。这类似于计算机图形学中一个真正实际的问题,称为补孔:给定一个用户删除了不想要的对象的现有图像,其目标是用看似合理的像素填充这个洞。这两个问题的一个重要困难是合理输出的空间是多模态的:下一个数字或外推像素有很多可能。面对这样的问题,回归器所能产生的最佳解决方案是介于可能性之间的某种东西,因为它使期望的距离最小化。在数字的情况下,这很可能看起来像一个无意义的模糊,是所有可能的数字和所有可能出现的样式的平均图像我们需要的是一个算法,它接收一个字符串或图像,并产生一个复杂的,多模态分布,我们可以从中采样。输入条件变分自动编码器(CVAE)[7,8],它通过简单地调节输入的整个生成过程来修改前一节中的数学。CVAEs允许我们处理输入到输出映射为一对多的问题,而不需要我们显式地指定输出分布的结构。

给定一个输入X和一个输出Y,我们想要创建一个模型P(Y | X),该模型最大程度地提高地面真理的可能性(我为在此重新定义X表示歉意。但是,标准的机器学习符号将X映射为Y,所以我 也会)。 我们通过引入潜在变量z N(0,I)来定义模型,使得

其中f是一个确定性函数,我们可以从数据中学习。我们可以在X上重写公式2到5,如下所示:

注意,P(z|X)仍然是N (0, I),因为我们的模型假设z在测试时独立于X采样。这个模型的结构如图6所示。

在测试时,我们可以从分布P(Y|X)中简单地采样z N (0, I)。

去噪的自编码器[12,13]可以看作是回归模型的一种轻微的泛化,可能会改善其行为。也就是说,我们会说噪声的分布只是简单地删除像素,因此去噪的自动编码器必须在给定噪声的情况下重建原始图像。但是,请注意,这仍然不能解决问题。标准的去噪自编码器仍然要求给定噪声样本的原始样本的条件分布遵循一个简单的参数分布。但对于像图像补丁这样的复杂数据,情况就不同了。

4 举例

这些使用Caffe[22]的示例可以在网上找到:http://github.com/cdoersch/vae_教程。为了证明VAE框架的分布学习能力,我们在MNIST上训练一个变分自动编码器。为了说明该框架并不严重依赖初始化或网络结构,我们不使用现有的已发布的VAE网络结构,而是使用包含在CAFE(22)中的基本MNIST自动编码器示例。(然而,我们使用ReLU非线性[9]和ADAM[23],因为这两种方法都是加速收敛的标准技术。)虽然MNIST是实值,但它被限制在0和1之间,因此我们使用P(X | z)的Sigmoid交叉熵损失。这有一个概率解释:假设我们创建了一个新的数据点X'通过独立地将每个维度采样为Xi'~Bernoulli(Xi)。交叉熵度量X'的期望概率。因此,我们实际上是在建模X,MNIST的随机二值化版本,但我们只是给q一个数据X的摘要。诚然,这不是VAE框架所规定的,但在实践中效果很好,并在VAE的其他文献[6]中得到了应用。虽然我们的模型比[1]和[3]要深很多,但是训练模型并不难。训练只进行了一次(尽管重新开始训练5次,以找出使损失下降最快的学习率)。由噪声产生的数字如图7所示。

图8:接受过MNIST培训的CVAE样本。模型正在调节的输入是中央列,在前两个图像中以蓝色和橙色突出显示。模型必须只给出这些噪声二进制值来完成数字。上面的三个集合在空间上对齐,因此您可以将生成的图像与地面真实情况进行比较。

在实际应用中,除非z过大或过小,否则该模型对z的维数似乎相当不敏感。z太少意味着模型不能再捕捉所有的变化:小于4z的维度会产生明显更糟糕的结果。结果1000z是好的,但10000 z也被降解。从理论上讲,如果一个具有n z的模型是好的,那么一个具有m>>n的模型不应该更差,因为该模型可以简单地学会忽略额外的维度。然而,在实际应用中,当z值很大时,随机梯度下降似乎难以使D值保持在较低的水平。

5 MNIST条件变分自动编码器

我原本打算展示一个条件变分自动编码器,只给出每个数字的一半就可以完成MNIST数字。虽然CVAE在这方面工作得很好,但不幸的是,回归器实际上也工作得很好,产生了相对清晰的样本。明显的原因是MNIST的大小。 具有与第4.1节中的容量相似的容量的网络可以轻松地记住整个数据集,因此回归器严重过拟合。 因此,在测试时,它产生的预测的行为类似于最近邻居匹配,实际上非常准确。给定一个训练示例,当输出不明确时,CVAE模型最有可能胜过简单回归。 因此,让我们对该问题进行两个修改以使其更加模棱两可,但代价是使其变得更加人为。 首先,输入是从数字中间获取的单列像素。 在MNIST中,每个像素的值都在0到1之间,这意味着即使在这单个像素列中,仍然有足够的信息供网络识别特定的训练示例。回归器输出中的模糊使到可能产生输入的多个数字集的距离最小化。另一方面,CVAE通常会选择一个特定的数字进行输出,并且不会产生模糊,从而产生更可信的图像。

致谢:感谢UCB CS294视觉对象和活动识别组和CMU Misc Read组中的每个人,以及许多其他人鼓励我将在那里所做的演示转换为教程。我要特别感谢Philipp Krähenbühl、Jacob Walker和Deepak Pathak帮助我制定和完善方法描述,感谢Kenny Marino帮助编辑。我也感谢阿比纳夫·古普塔和阿列克谢·埃弗罗斯的有益讨论和支持,感谢谷歌为我的研究提供的奖学金。

一维证明VAE具有任意强大的学习者,其近似误差为零。

假设Pgt(X)是一个我们试图用VAE来近似的一维分布。我们假设Pgt(X)>0处处,它是无穷可微的,并且所有的导数都是有界的。回想一下,变分自动编码器优化

我们在这里把对σ的依赖性显式地表示出来,因为我们将把它发送到0来证明收敛性。理论上可能的最佳解是其中Pσ= Pgt并且D [Qσ(z | X)kPσ(z | X)] =0。通过任意强大的学习者,我们的意思是,如果存在f和Σ,则可以实现此最佳可能的解 ,然后学习算法将找到它们。因此,我们仅需证明存在这样的f,σ和Σσ。首先,当σ接近0时,Pgt实际上可以任意地描述为Pgt(X)= Rz N(X | f(z),σ2)P(z)dz。为说明这一点,令F为累积分布函数( Pgt的CDF),令G为N(0,1)的CDF,这两个都保证存在。然后G(z)分布为Unif(0,1)(均匀分布),因此f(z)= F-1(G(z))分布为Pgt(X)。 这意味着当σ0时,分布P(X)收敛到Pgt。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值