Answers:
尽管变式自动编码器(VAE)易于实现和训练,但对其进行解释却一点也不简单,因为它们融合了深度学习和变异贝叶斯的概念,并且深度学习和概率建模社区对同一概念使用不同的术语。因此,在解释VAE时,您可能会冒险专注于统计模型部分,而使读者对如何实际实施该模型一无所知,反之亦然,而专注于网络体系结构和损失功能,反之亦然,其中Kullback-Leibler术语似乎是从空中抽出来。我将在这里尝试从模型开始,但要提供足够的细节以在实践中实际实施,或了解某人的其他实现,以取得中间立场。
与经典(稀疏,去噪等)自动编码器不同,VAE是生成模型,例如GAN。对于生成模型,我的意思是一个学习输入空间的概率分布的模型。这意味着在训练了这样的模型之后,我们可以从(近似)进行采样。如果我们的训练集由手写数字(MNIST)组成,则经过训练的生成模型能够创建看起来像手写数字的图像,即使它们不是训练集中图像的“副本”也是如此。
学习训练集中图像的分布意味着,看起来像手写数字的图像应该具有很高的生成概率,而看起来像乔利·罗杰或随机噪声的图像应该具有较低的概率生成。换句话说,这意味着要了解像素之间的依赖性:如果我们的图像是来自MNIST的像素的灰度图像,则模型应该了解到,如果一个像素非常亮,则很可能存在一些相邻像素像素也很亮,如果我们有一条长长的倾斜的亮像素行,我们可能会在该像素上方有另一条较小的水平像素行(a 7),依此类推。
VAE是一个潜在变量模型:这意味着(784个像素强度的随机向量(观察到的变量))被建模为随机向量的(可能非常复杂)函数维度较低的,其成分是未观察到的(潜在)变量。这样的模型什么时候有意义?例如,在MNIST的情况下,我们认为手写数字属于流形,其维数远小于的维数ž ∈ ž X,因为绝大多数784个像素强度的随机排列,看上去根本不像手写数字。直观上,我们希望尺寸至少为10(数字的位数),但是它最大可能是更大的,因为每个数字可以用不同的方式书写。对于最终图像的质量,某些差异并不重要(例如,全局旋转和平移),但其他差异很重要。因此,在这种情况下,潜在模型很有意义。稍后再详细介绍。请注意,令人惊讶的是,即使我们的直觉告诉我们维数应该约为10,我们也绝对可以仅使用2个潜在变量对带有VAE的MNIST数据集进行编码(尽管结果不会很漂亮)。原因是,即使单个实数变量也可以编码无限多个类,因为它可以假设所有可能的整数值以及更多。当然,如果类之间有显着的重叠(例如MNIST中的9和8或7和I),那么即使只有两个潜在变量的最复杂功能,也很难为每个类生成清晰可辨的样本。稍后再详细介绍。
VAE假设变量参数分布为(其中是的参数),并且它们学习了多元分布。在使用参数化pdf 可以防止VAE的参数数量随训练集的增长而无限制地增长,这在VAE术语中称为摊销(是的,我知道...)。
我们从解码器网络开始,因为VAE是一种生成模型,而VAE唯一实际用于生成新图像的部分是解码器。编码器网络仅在推理(训练)时使用。
解码器网络的目标是从潜在向量实现开始,生成属于输入空间新随机向量,即新图像。显然,这意味着它必须学习条件分布。对于VAE,通常假定此分布为多元高斯1:
是编码器网络的权重(和偏置)向量。向量和是复杂的未知非线性函数,由解码器网络建模:神经网络是强大的非线性函数逼近器。
正如@amoeba在评论中指出的那样,解码器与经典的潜在变量模型:因子分析之间有着惊人的相似性。在因素分析中,您假设模型:
两种模型(FA和解码器)都假定在潜在变量上的可观察变量的条件分布是高斯分布,并且本身是标准的高斯分布。不同的是,解码器不假设平均值的是线性的也不假定的标准偏差是一个常数向量。相反,它将它们建模为复杂非线性函数。在这方面,它可以看作是非线性因素分析。看这里对FA和VAE之间的这种联系进行了深入的讨论。由于具有各向同性协方差矩阵的FA仅为PPCA,因此这也与线性自动编码器简化为PCA的众所周知的结果有关。
让我们回到解码器:我们如何学习?直观地讲,我们需要潜在变量,以使在训练集中生成的可能性最大化。换句话说,给定数据,我们要计算的后验概率分布:
我们假设在,并且在贝叶斯推理中还遇到了通常的问题,即计算(证据)很困难(多维积分)。而且,由于未知,因此我们无论如何也无法对其进行计算。输入Variational Inference,这是为Variational Autoencoders命名的工具。μ (z ; ϕ )
变分推理是对非常复杂的模型执行近似贝叶斯推理的工具。它不是一个过于复杂的工具,但是我的回答已经太长了,我将不对VI进行详细说明。如果您感到好奇,可以看看这个答案和其中的参考文献:
可以说,VI 在参数分布寻找的近似值,如上所述,其中是族的参数。我们寻找参数以最小化目标分布和:
同样,我们不能直接将其最小化,因为Kullback-Leibler散度的定义包括证据。引入ELBO(证据下限)并经过一些代数运算后,我们终于得出:
由于ELBO是证据的下限(请参见上面的链接),因此最大化ELBO并不完全等同于最大化给定的数据的可能性(毕竟,VI是近似贝叶斯推断的工具),但它朝着正确的方向发展。
为了进行推断,我们需要指定参数族。在大多数VAE中,我们选择多元,不相关的高斯分布
尽管我们可能选择了其他参数族,但这与我们对所做的选择相同。和以前一样,我们可以通过引入神经网络模型来估计这些复杂的非线性函数。由于此模型接受输入图像并返回潜在变量的分布参数,因此我们将其称为编码器网络。和以前一样,我们可以通过引入神经网络模型来估计这些复杂的非线性函数。由于此模型接受输入图像并返回潜在变量的分布参数,因此我们将其称为编码器网络。
也称为推理网络,仅在训练时使用。
如上所述,编码器必须近似和 ,因此,如果我们有24个潜在变量,则输出编码器是向量。编码器具有权重(和偏置)。要学习,我们最终可以根据编码器和解码器网络的参数和以及训练设置点来编写ELBO :
我们终于可以得出结论。ELBO的反义是和的函数,被用作VAE的损失函数。我们使用SGD来最小化这种损失,即最大化ELBO。由于ELBO是证据的下限,因此朝着最大化证据的方向发展,从而生成了与训练集中的图像最佳相似的新图像。ELBO中的第一项是训练设定点的预期负对数似然性,因此它鼓励解码器生成类似于训练图像的图像。第二项可以解释为正则化器:它鼓励编码器为潜变量生成分布,类似于。但是通过首先介绍概率模型,我们了解了整个表达式的来源:近似后验之间的Kullabck-Leibler散度的最小化和模型后验。2
通过最大化了解了和,我们就可以丢弃编码器了。从现在开始,要生成新图像,只需对采样然后将其传播到解码器即可。解码器的输出将是与训练集中的图像相似的图像。
1尽管简化了我们对VAE的描述,但此假设并非严格必要。但是,根据应用程序,您可能会假设。例如,如果是二进制变量的向量,则高斯毫无意义,可以假定为多元伯努利。
2 ELBO表达式具有数学上的优雅,为VAE从业人员掩盖了两个主要的痛苦根源。一个是平均项。这实际上需要计算期望,这需要从进行多个采样。考虑到所涉及的神经网络的大小以及SGD算法的收敛速度低,必须在每次迭代中绘制多个随机样本(实际上,对于每个小批量,甚至更糟)都是非常耗时的。VAE用户通过使用单个(!)随机样本计算期望值来非常实用地解决此问题。另一个问题是,要使用反向传播算法训练两个神经网络(编码器和解码器),我需要能够区分从编码器到解码器的正向传播所涉及的所有步骤。由于解码器不是确定性的(评估其输出需要使用多元高斯绘图),因此询问它是否是可区分的架构甚至没有意义。解决此问题的方法是重新参数化技巧。