【VAE-1】——VAE教程阅读

本文为VAE原作者Diederik P. Kingma在Arxiv上的一篇解读An Introduction to Variational Autoencoders的阅读记录。原文实际上是对于自己的得意之作VAE进行更进一步的讨论,以及对follow-up的工作进行讨论的文章。
In chapter 2 we explain the basics of VAEs.
In chapter 3 we explain advanced inference techniques,
in chapter 4 give an explanation of advanced generative models .

本节博客这是对原文的第一章节(Introduction)的阅读笔记,原文对VAE的提出动机以及相关的背景、关联工作进行简要的回顾,例如概率图模型、神经网络、deep latent variable model(DLVMs)

1. VAE构造动机

1.1 ML中的基本派别

在ML模型之中,主要可以分为判别式建模和生成式建模。判别式建模要求模型学习一个映射函数,而生成式模型,要求学习建模“变量的联合分布”这一更为普遍的问题。

生成式模型就像是透过现象看本质一般,例如对于复杂的气象系统,可以通过微分方程表述;生成式模型,通过构建隐变量的概率分布,以及对应的生成模型概率分布,得到真实的概率分布。

其相比较于判别式建模有几个好处:

  1. 将一些物理规律或者说先验知识融入生成过程之中,并且舍弃一些我们无需知到的细节,例如琐碎的变量。we can express physical laws and constraints into the generative process while details that we don’t know or care about, i.e. nuisance variables, are treated as noise。这使得模型变得具有较好的启发性,且具有可解释性。(highly intuitive and interpretable)。
  2. 同时,一个良好的生成式网络建模,自然而然的反映了其中的因果关系。it naturally expresses causal relations of the world. Causal relations。这就好比,如果我们知道斐波那契数列的递推公式,以及前几项内容,我们可以自然而然的继续生成。

1.2 生成 VS 判别

回过头对比一下判别式建模和生成式建模。举例子,我们知到了地震类型存在A和B,当然它们具体的有不同的地震形式,对应为取值 a 1 , a 2 . . . , b 1 , b 2 . . . a_1,a_2...,b_1,b_2... a1,a2...b1,b2...以及其中的影响因素随机变量 X X X。现在我们需要根据类型A地震发生的情况,来讨论类型B地震发生的概率。

  • 在生成式建模中:分别建模了 p ( A ∣ X ) p(A|X) p(AX) p ( B ∣ X ) p(B|X) p(BX),并且对于随机变量 X X X的各个取值 x 1 , x 2 , . . . , x n x_1,x_2,...,x_n x1,x2,...,xn,我们可以得知其概率分布,实际上我们知到了 ( A , X ) (A,X) (A,X) ( B , X ) (B,X) (B,X)的联合分布。通过以上信息,我们可以利用 p ( B ∣ A ) = P ( B ∣ X ) P ( X ∣ A ) = p ( A ∣ X ) ∗ P ( X ) ∗ P ( B ∣ X ) P ( A ) p(B|A) =P(B|X)P(X|A) ={p(A|X)*P(X)*P(B|X) \over P(A)} p(BA)=P(BX)P(XA)=P(A)p(AX)P(X)P(BX)
    达成目标,但是这实在是太繁琐了。

  • 在判别式建模中,我们需要建模 f ( A ) − > B f(A)->B f(A)>B,或者说 p ( B ∣ A ) p(B|A) p(BA)。即根据A的具体取值 a 1 , a 2 , . . . , a n a_1,a_2,...,a_n a1,a2,...,an,我们可以知到对应的 b 1 , b 2 , . . . , b n b_1,b_2,...,b_n b1,b2,...,bn的概率。从目标上来看,实际上更加的直接了当。

从某种程度上,判别式模型和生成式模型是从两个不同的方向,前者是从隐变量到显变量的预测,后者是从显变量推测隐变量的生成过程。

生成模型往往需要我们建立一些强烈的假设,而相对应的判别式模型,往往不需要很强的假设。因此生成式模型如果建模不恰当(it almost always is to some
degree),会出现比较高的asymptotic bias【1】。因此,如果我们只需要学习一个判别的任务,并且我们拥有大量的数据,那么我们还不如直接使用判别式网络建模。

但是如果数据不够充足,例如我们有大量的无标签数据以及少量的有标签数据,而我们需要学习一个分类器,也即半监督学习的背景下,我们可以利用生成式模型来提升模型的分类质量。【2】

1.3 结构概述

变分自编码器可以被分为两部分,其一是encoder,也被称作recognition model;其二是decoder,也可以被称作是generative model。两个模型,既有合作也有对抗的部分。 合作体现在:recognition model向生成式模型提供后验概率的估计,其优化过程蕴含在EM的优化之中;相反的,生成部分是对编码的指导(scaffolding) 包括可能的class-labels. 模型的编码部分,在贝叶斯法则的角度下,是生成模型的逆过程。

1.4 关联模型

此外,讨论变分自编码器和相关模型的关联。

1.4.1 变分推断(VI)

首先是和传统变分推断的关联,优势在于recognition model (或者说inference
model) 是一个关于输入可微分的函数,这和VI中,每个样本都是由独立的变分分布是不同的;即判别模型使用了一系列参数,对隐变量和输入关系进行建模,因此这种模型也被称作amortized inference。因此,传统VI实际上在大数据的背景下,并不适用。由于神经网络的加持,模型可以具有任意的复杂度,并且也可以在训练和推理过程表现的非常快,这可以通过重建,再基于梯度反向传播学习。相应的代价在于,再采样推断中,我们同时采样到许多无关的噪声,这是需要通过学习来优化的;作者自谦的人为,VAE的一个重大贡献,在于VAE框架中采用了重参数技巧,来降低梯度的方差估计。因此,我们可以看到神经网络(深度学习)起到了重要的作用。

1.4.2 概率图模型

作者说,VAE模型受到Helmholtz Machine模型的启发,原方法的wake-sleep方法并不高效,而VAE允许我们通过优化单一的目标函数MLE进行高效的学习。这就不得不提到第二个内容,概率图模型。我们知道,其实生成过程本身是 p ( z ) p ( x ∣ z ) p(z)p(x|z) p(z)p(xz),假如我们设置多个隐层变量,那么相应的生成过程变为 p ( x ∣ z L ) p ( z L ∣ z L − 1 ) . . . p ( z 1 ∣ z 0 ) p(x|z_L)p(z_L|z_{L-1})...p(z_1|z_0) p(xzL)p(zLzL1)...p(z1z0)
而每一个隐层条件,都是复杂的神经网络,即 z ∣ x ∼ f ( x , ϵ ) z|x \sim f(x,\epsilon) zxf(x,ϵ),其中 ϵ \epsilon ϵ是一个噪声随机变量,而 f f f是一个神经网络。作者评价,学习算法本质上是a mix of classical (amortized, variational) expectation maximization,但是具体的通过“重参数技巧”+神经网络的梯度下降实现的。

1.5 应用

变分自编码器还被用于无监督学习中的特征解耦学习(disentangle)。即我们要求模型的特征,semantically meaningful, statistically independent and causal factors of variation。相应的,从另一个角度看,这个过程可以看作是隐式的正则化表示: 要求模型的表示在数据的生成过程中,是具有意义的。也就是说,我们从输入到表示的编码过程中,我们对编码的分布有特别的要求。抛去编码任务不看,额外的生成任务要求模型在隐藏编码方面,有更好的抽象的理解,因此这样的编码也可以被用在下游任务之中。

自VAE框架被发明后,其被应用在很多领域,例如其被应用于dynamical models (Johnson et al., 2016), models with attention (Gregor et al., 2015), models with multiple levels of stochastic latent variables 【4】。
此外,GAN模型也和VAE分庭抗礼,似乎有着互补的特性。GAN模型可以生成主观上质量较高的图片,但是它们和基于基于似然的生成式模型相比,tend to lack full support over the data。?相反的,VAE模型生成更为多样的(dispersed)的样本,但是就似然的角度,更好。 因此,不少互补的模型被提出以补充各自的优点。【5-7】

2. 目标

变分自编码器框架实际上提供了一种对于隐变量、推理模型(inference models)、生成模型进行(VAEs)共同学习的框架,因此实际上从不同角度来说,即无监督的表示学习、半监督学习或者是生成模型的角度,都有各自的应用。

3. Probabilistic 模型以及变分推断

核心概念:

  • 三个分布:真实分布 p ∗ ( x ) p^*(x) p(x)、用模型拟合的分布 p θ ( x ) p_{\theta}(x) pθ(x),以及对模型经过优化得到的最优分布。
  • 学习,即优化模型的过程

3.1 无条件模型

在机器学习领域,我们对于CV或者NLP以及其它数据,都往往通过概率模型进行建模,也就是说用概率的语言去表达。这对于我们理解这些现象非常重要,例如预测某个现象的发生的概率,做出某种自动化的决策。因此,在概率模型中,一切的知识(knowledge)或者技能(skill)的表达,都是通过概率表达的,并且在当前发展水平下,是ML和AI的核心要点。

显然,概率模型中包含着很多的未知,而有限的数据显然不能完整的建模未知,我们往往给需要假设一系列具有一定程度的未知的模型。模型中可能包括连续的变量,或者是离散的变量。在某种意义上,很多模型以联合分布的方式,specify all correlations and higher-order dependencies between the variables in the model, in the form of a joint probability
distribution over those variables.

我们用 x x x表示我们观察到的所有变量,因此其分布即各个变量的联合分布。注意,本文中为了简要表示,就用小写的 x x x表示随机向量 X X X。实际上,我们假设 x x x来自于关于 X X X的不知道的生成过程,因此其真实的概率分布 p ∗ ( x ) p^*(x) p(x)并不是可知道的。在实际中,我们使用 p θ ( x ) p_{\theta}(x) pθ(x)对这一过程进行估计: x ∼ p θ ( x ) x \sim p_{\theta}(x) xpθ(x)

所谓的学习(learning),是寻找最优的参数 θ \theta θ,使得模型 p ∗ ( x ) p^*(x) p(x)能够尽可能的模拟真实的概率分布。而在这过程中,显然模型的表现能力是最为重要的。我们希望:

  1. 模型 p θ ( x ) p_{\theta}(x) pθ(x)能够足够灵活的去逼近于原数据的分布。
  2. 同时,我们希望将关于数据的知识融入到模型中,这也就是所谓的先验。

3.2 条件模型(condition models)

实际上,在分类或者是回归的问题上,我们对于无条件模型 p θ ( x ) p_{\theta}(x) pθ(x)并不关注,而是关注有条件模型 p θ ( y ∣ x ) p_{\theta}(y|x) pθ(yx)。有条件模型,被优化去逼近真实的分布 p ∗ ( y ∣ x ) p^*(y|x) p(yx)

常见的条件模型,包括图像分类,其中x为图片,而y为图片的类别,由人来标注。在这过程中, p θ ( y ∣ x ) p_{\theta}(y|x) pθ(yx)通常被选作类别分布categorical distribution。
当输出的维度较高时,例如图片、视频或者语音,条件模型的建模变得非常困难。例如根据图像的类别去生成图像。而在输入和输出的维度都很高时,情况也是如此,就是时间序列(time series prediction),例如文本或者视频的预测。

作者提到,为了避免notational clutter(符号混乱),我们往往假设无条件的建模,但是实际上,在本书(this work)中所说的方法,在大多数情况,也是对于条件模型使用的。
——The data on which the model is conditioned, can be treated as inputs to the model, similar to the parameters of the model, with the obvious difference that one doesn’t optimize over their value.

4. 使用神经网络对条件概率建模

本节简要介绍了用前馈神经网络(Feed-forward neural network)的建模范式。它们常常被用来建模PDF(probability density functions)或者PMF(probability
mass functions)。神经网络的强大之处就在于首先其计算便利,且表达能力强,可以利用基于梯度的方法对网络进行优化。
例如,使用网络进行图片分类的时候,实际表达如下:
p = N e u r a l N e t ( x ) p θ ( y ∣ x ) = C a t e ( y ; p ) p=NeuralNet(x) \\ p_{\theta}(y|x)=Cate(y;p) p=NeuralNet(x)pθ(yx)=Cate(y;p)
其中,网络的最后一层往往是一个softmax函数,使得概率能够归一化,而y往往是个独热向量。

5. 有向图模型以及神经网络

directed probabilistic graphical models (PGMs),或者Bayesian networks,也即这里的有向概率模型。实际上,相应的联合分布,就可以如下表示:
在这里插入图片描述
只需要由有向图的边链接的,相应的条件概率相乘即可。无父亲的节点就是自己的概率,就是非条件的概率。

传统的,条件概率往往通过查找表(look-up table)或者线性模型建模(2009年的老模型)。但是由于神经网络的出现,可以使用网络对其中的条件概率建模。例如:
在这里插入图片描述

6. Learning in Fully Observed Models with Neural Nets

如果所有的变量都在数据集中有所体现,那么我们可以计算数据的对数似然,并且建模,使用梯度下降优化。

6.1 数据集

例如,我们将数据集进行如下的表示:
在这里插入图片描述
一般的,我们认为数据集的数据是服从独立同分布的(independently and identically distributed)。因此,多个数据的联合分布可以看作是各个独立数据的概率乘积。
在这里插入图片描述

6.2 Maximum likelihood

在优化模型中,最为重要的步骤在于maximum对数似然;我们已经知道,最大化对数似然,等价于最小化数据分布和模型分布的KL散度。
在ML的常见优化方法下,我们常常去最大化对数似然概率。理论上,我们需要对数据进行batch gradient descent,但实际上我们往往进行的是Batch的随机梯度下降:
在这里插入图片描述
其中,第一个奇怪的符号表示,这个符号两边中的一边,是另一边的无偏估计(unbiased estimator),而另一边是存在随机变量的,也就是存在噪声。M表示数据集D中的一个batch。在这里,右边是左边的无偏估计量。
在进行梯度下降的优化时,实际上我们进行如下操作:
在这里插入图片描述
These gradients can be plugged into stochastic gradient-based optimizers; see section A.3 for further discussion.

6.3 贝叶斯推理(Bayesian inference)

从贝叶斯的角度,可以利用MAP(maximum a posteriori estimation)提升ML,或者进一步的,inference of a full approximate posterior distribution。(见A1.4)

7. 基于DLVMs进行学习和推理

DLVM即:Deep latent varaible Models

7.1 隐变量(latent Variables)

我们将在之前全部可以观察到的有向图模型,推广到含有隐变量的模型。隐变量也是模型的一部分,但是实际上我们并不能观察到它们,也就是说它们的含义并不明确。一般,使用 z z z来表示这些隐变量,如果在无条件(无监督)的模型下,我们一般会认为整个模型的概率分布是: p θ ( x , z ) p_{\theta}(x,z) pθ(x,z),那么相应的对于 x x x的边缘分布,即为 p θ ( x ) = ∫ p θ ( x , z ) d z p_{\theta}(x)=\int p_{\theta}(x,z)dz pθ(x)=pθ(x,z)dz
上面的表达式,当我们看作是 θ \theta θ的函数的时候,也被称作为(single datapoint) marginal likelihood,或者是model evidence。

如此的隐式的关于x的分布,是比较灵活的,如果 z z z是离散的,并且 p θ ( x ∣ z ) p_{\theta}(x|z) pθ(xz)是一个正态分布,那么 p θ ( x ) p_{\theta}(x) pθ(x)就是一个高斯混合模型。对于连续的 z z z来说, p θ ( x ) p_{\theta}(x) pθ(x)可以被看作为无限多个高斯混合模型的混合,其模型的潜力比离散的混合强(但实际上是不是呢?)

7.2 DLVM

当一个联合分布 p θ ( x , z ) p_{\theta}(x,z) pθ(x,z)是由神经网络表达的时候,该模型就被称作DLVM(deep latent variable model)。这个模型允许有一些内容作为条件,例如 p θ ( x , z ∣ y ) p_{\theta}(x,z|y) pθ(x,zy)。DLVMs的模型好处在于,即便每一个条件概率都非常的简单,例如是conditional Gaussian,那么其最后的边缘分布也可以变得非常复杂。

最为简单的,以及常见的DLVM,就是使用如下的结构表达的:
在这里插入图片描述

7.3 对于多元伯努利分布的DLVM

我们知到,如果对于输出的结果,我们假设其是一个多元的伯努利分布,其中变量x取值为二值的话,其损失函数就是典型的二分类损失:
B e r n o u l l i ( x ) = x p ( 1 − x ) 1 − p Bernoulli(x)=x^{p}(1-x)^{1-p} Bernoulli(x)=xp(1x)1p
其中, p p p表示 x x x取值为1的概率,而 1 − p 1-p 1p对应于x取值为0的概率。

作者说,最简单的DLVM在VAE被提出时,应用于binary 数据x,并且拥有一个spherical Gaussian latent space,以及一个factorized的伯努利模型,那么其表达如下:
在这里插入图片描述

8. 难以计算性(Intractabilities)

实际上,上面说了很多,但是最难的还是在于优化的步骤。
假如我们可以让 p θ ( x ) p_{\theta}(x) pθ(x)逼近 p ∗ ( x ) p^*(x) p(x),那么我们需要计算这个概率。但是实际上,首先我们不可能这样去计算模型的边缘分布(也叫做model evidence):
p θ ( x ) = ∫ p θ ( x , z ) d z p_{\theta}(x)=\int p_{\theta}(x,z)dz pθ(x)=pθ(x,z)dz

  1. 其一是积分的问题,我们没有可解析的解或者高效的估计方法;
  2. 其二是,事实上对于很多的z,x是不可能和他共线的,也就是说绝大部分的联合概率,都是0.

作者说,由于边缘概率的 intractability,导致其不可以用可微分的方法优化,但是如果是 fully observed models就可以被优化(?稍微有点点疑惑,意思是隐变量是有含义的,不能当作随便的变量那样优化是吗。。因为如果没有z,似乎自编码器没问题)

此外,边缘分布的难以计算,也和后验分布 p θ ( z ∣ x ) p_{\theta}(z|x) pθ(zx)的难以计算有关。作者说, p θ ( x , z ) p_{\theta}(x,z) pθ(x,z)是可以被高效计算的(注意,是高效,而并不是可以被算),只需要使用:
p θ ( z ∣ x ) = p θ ( z , x ) p θ ( x ) p_{\theta}(z|x)={p_{\theta}(z,x) \over p_{\theta}(x)} pθ(zx)=pθ(x)pθ(z,x)
因此,如果三者中的两者都是可知的,那么第三者就可知。但是遗憾的是,它们谁都不可知,或者难以计算。
Approximate inference techniques (see also section A.2) allow us to approximate the posterior pθ(z|x) and the marginal likelihood pθ(x) in DLVMs. 传统的推断方法是非常费劲的,often require a per-datapoint optimization loop,or yield bad posterior approximations. 作者说,我们极力避免这样的计算。
同样的,关于神经网络参数的估计,也是不可知的。(?这个有点迷啊,D是数据,那我本来就是要根据数据去估计参数啊,为什么出来这个概率呢?)
在这里插入图片描述

附录

1. 标记

这里给出了一些书中关于随机变量的表达的含义。 x x x表示标量, ∗ ∗ x ∗ ∗ **x** x表示向量, X X X表示矩阵。PDF表示概率密度函数(针对连续变量),PMF也是概率密度,但是针对的是离散变量;CDF为累计分布函数。其它,我们就关注一下几个关于概率分布的表示:
在这里插入图片描述
此外,还有作者对于概率分布的表示,分别是类别分布,伯努利分布和正态分布。
在这里插入图片描述

2.贝叶斯推断(Bayesian Inference)

从这里,我就想到,计算机这里经常分不清随机变量的取值和随机变量本身这一个事实。如下这个 x x x的意思其实是我们平时的随机变量符号 X X X x ′ x' x是对应取值。但实际上,我们一般用 x x x表示 X = x X=x X=x这一件事。。这就导致 P ( x ) P(x) P(x)到底是表示关于 X X X的概率分布,还是 P ( X = x ) P(X=x) P(X=x)的一个数值。
在这里插入图片描述
不过贝叶斯推断中,把模型的参数也看做是随机变量,而不是定值,因此会出现 p ( D ∣ θ ) p(D|\theta) p(Dθ)这样奇怪的事请。这点一般不用神经网络体现,在简单模型中常常出现:
在这里插入图片描述

3.梯度下降

对于directed models,其目标函数是标量的时候,我们常常使用梯度反向传播+梯度下降和的方法对参数进行优化。
例如,在SGD优化方法中,参数优化步骤可以写作:
在这里插入图片描述
其中, ξ \xi ξ表示的是“一部分数据”,可以理解为从{1,2,…,N}中抽样一个数据的下标,或者是从VAEs的后验概率分布中抽样得到的噪声(noise)。
作者非常有趣的推荐了自己的Adam和Adamax优化器,使用该优化器寻找超参数 α t \alpha_t αt,这些方法对于目标函数的常数倍的方所不敏感,并且对于单个梯度变量的常数倍放缩,不敏感。
因此,作者说,我们只要求 L ~ ( θ , ξ ) \tilde L(\theta,\xi) L~(θ,ξ)是损失函数的无偏估计量就行,我们只需要不断执行梯度下降,直到一定阈值就行,这里往往采用在验证集(holdout set)上评判指标的早停法(early stopping)。

参考文献

【1】Banerjee, A. (2007). “An analysis of logistic models: Exponential family connections and online performance”. In: Proceedings of the 2007 SIAM International Conference on Data Mining. SIAM. 204–215.
【2】Kingma, D. P., S. Mohamed, D. J. Rezende, and M. Welling (2014). “Semi-supervised learning with deep generative models”. In: Advances in Neural Information Processing Systems. 3581–3589.
【3】Sønderby, C. K., T. Raiko, L. Maaløe, S. K. Sønderby, and O. Winther (2016a). “How to train deep variational autoencoders and probabilistic ladder networks”. In: International Conference on Machine Learning.
【4】Kingma, D. P., T. Salimans, R. Jozefowicz, X. Chen, I. Sutskever, and M. Welling (2016). “Improved variational inference with inverse autoregressive flow”. In: Advances in Neural Information Processing Systems. 4743–4751.
【5】Dumoulin, V., I. Belghazi, B. Poole, A. Lamb, M. Arjovsky, O. Mastropietro, and A. Courville (2017). “Adversarially learned inference”. International Conference on Learning Representations
【6】Grover, A., M. Dhar, and S. Ermon (2018). “Flow-GAN: Combining maximum likelihood and adversarial learning in generative models”. In: AAAI Conference on Artificial Intelligence
【7】Rosca, M., B. Lakshminarayanan, and S. Mohamed (2018). “Distribution matching in variational inference”. arXiv preprint arXiv:1802.06847.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值