Auto-Encoding Variational Bayes

2020-05-30  本文已影响0人  0_oHuanyu

自编码变分贝叶斯,一听就是个非常统计、非常机器学习的名字。这篇文章也非常像传统机器学习论文,而不太像神经网络方面的实验论文。本文关注的问题是:

当后验分布不可追踪/确定的情况下(比如说流式处理,或者无法一次将所有数据加载到内存的大数据场景),如何利用概率模型进行有效的参数推断呢?

作者论文的主要贡献:

A.通过公式推导,给出了下确界的一种表达形式,并且设计了巧妙的方法,将难以求解的原问题转化成可以用SGD****求解的问题。

B.讲了如何利用神经网络的方法来实现变分推断的思想,这就是作者说的VAE。

应用作者提出的模型,可以解决以下三个问题(类似隐马尔科夫模型的三个问题嘛):

1.学习问题:已知观测变量x,极大似然或者最大后验概率求参数θ。

2.学习问题:已知观测变量x,给定一个θ,求隐变量z****的后验分布。

3.预测问题:有效的估计x,只要给定x****的先验分布,我们可以做各种有关x的事情,比如:去噪,图像修复,提升图像分辨率。

一起看一下什么是变分推断,怎么推导可计算的下确界,又跟神经网络有什么关系吧。

1. 变分推断(viariational inference)

1.1 变分推断是什么?

假设我们有一个数据分布p如下阴影部分所示:

image.png

这看起来像一个高斯分布,如何才能选择合适的高斯分布函数来拟合?是绿色的q还是红色的q呢?应用如下步骤:

  1. 我们拥有两部分输入:数据x,模型p(z, x)。

  2. 我们需要推断的是后验概率p(z | x),但不能直接求。

  3. 构造后验概率p(z | x)的近似分布q(z; v)。

  4. 不断缩小q和p之间的距离直至收敛。

1.2 变分推断的公式怎么推导

以上过程就是变分推断啦。那么如何衡量p和q之间的距离呢?用散度的概念:

image.png

那么,根据定义可以做如下推导:


image.png

也就是说,两个函数完全一致的时候,右边等于0。相差越小,散度越小。我们的目标函数就是让散度最小,也就是:

image.png

对于x的概率分布P(x) 有:


image.png

同时对Q求期望可以得到:


image.png

这就是VI问题的终极形态了,等式的右边第一项就是目标函数,因为散度是>=0的,

第二项我们也称之为证据下确界(evidenced lower bound,ELBO)。因为我们的目标是变化λ使散度最小,那么此时等式左边可以视作常数,目标函数也可以写成:


image.png

回到我们的终极形态:


image.png

如何求解这个问题呢?有很多解法:平均场变分族、蒙特卡洛、黑盒变分推断等,此处仅拿一个介绍:平均场变分族

1.3 平均场变分族(mean-field variational family)

平均场变分族是这样的函数:

image.png

我们就用这个函数来逼近真实分布好了。根据贝叶斯公式,“x和z的联合分布概率p(z,x)”可以用“已知x分布的情况下,z的分布概率”* “x分布的概率”:

image.png

对于我们选定用来逼近真实分布的“变分函数”,其期望可以写为:

image.png

将其带入ELBO得:


image.png

求ELBO的极值,就要求导令导数等于0:

image.png

根据这个梯度,可以对q进行梯度下降的迭代:


image.png

2. 论文中的变分推断与下确界

有了VI的基本概念,我们回到论文,看一下论文中的观点和贡献。

2.1 Encoder-Decoder的假设

作者把一个判别模型: image.png
看做是逼近的分布,而把: image.png
看做真实分布。跟平均场变分族不一样的是,这里的q不是一个确定形式的函数,而是一个跟生成模型一起训练的函数。对于一个机器学习模型来说,把输入x视作X,隐变量或者代码视作Z,判别模型q(Z|X)视作给定X的情况下产生的Z的概率分布,可以认为是encoder。给定隐变量或者代码Z的情况下,生成出来X的概率分布,所以可以把生成模型p(X|Z)视作decoder。

2.2 变分下界

对于每一个样本xi,都有:


image.png

其中的L函数是下确界,之前用ELBO表示。因为散度值非负,所以:

image.png

也就是说:


image.png

这个式子的好处是,每一项都是可以计算出来的。不过想要最大化下确界,对L求导还有点问题:常用的逼近方法Monte Carlo随机取样来逼近后验概率,在求导时的方差很高,不太实用。

2.3 SGVB函数和AEVB算法

作者定义了一个取样函数:

image.png

把所有的不确定性都让ε来承担,z就是x的可微函数。蒙特卡洛采样(估计函数)的期望为:

image.png

带入式2可得:


image.png

这个就称之为Stochastic Gradient Variational Bayes (SGVB),其中:


image.png 一般来说,式3中的散度项可以整体估计,因此只有重建误差的期望 image.png

需要采样估计。散度项可以被看做是调整参数φ使后验估计接近先验分布,式3可以转成如下形式:

image.png

这种形式比6的参数数量少。

mini-batch版本如下:


image.png

可以直接对L求φ和θ的偏导,并且应用SGD这样的算法。AEVB算法逻辑如下:

image.png

到式7这里,encoder-decoder的形式对应如下:

散度项:正则项

求和项:重建损失的期望值

ε:噪音项

函数g:x、噪音项到z的映射

z: image.png

函数的输入

image.png

:给定zi和xi的情况下的重建损失

2.4 重参数化的技巧

给定分布:


image.png

有:

image.png

所以:


image.png

并且:

image.png

举例来说,对于高斯分布:


image.png

重参数化的公式为:

image.png 其中ε满足正态分布: image.png

这就保证了z和原式等价,并且可导。高斯分布的情况如下:


image.png

这种增加参数转移不确定的示意图如下:


image.png

3. Encoder-Decoder结构的Variational Inference(Variational Auto-Encoder,VAE)

选取真实分布z为多变量的高斯分布函数:

image.png

已知z的情况下,通过一个MLP模型(单层全连接神经元)算出来的x的分布为:


image.png

它可以是多变量高斯分布或者伯努利分布。这种情况下p(x|z)是无法确定的。对于逼近函数来说q (z|x),我们的选择很多。因为我们预测真是分布P是高斯分布,所以我们也用多变量高斯分布来拟合:

image.png

q是对角线协方差结构。u是均值,σ是标准差。φ是变分函数q的参数。我们从后验分布中取值:

image.png

圆圈代表element wise的乘积。因为先验和逼近函数都是高斯分布,所以套用式7:

image.png decoder的形式 image.png

,就是一个伯努利或者高斯MLP。

4. 数据实验

作者在MNIST 和Frey Face数据集上做了模型对比试验,作者所用的模型就是章节3中所讲的结构。encoder和decoder使用了相同层数的隐层。

4.1 likehood下界

image.png

作者的AEVB算法跟wake-sleep算法相比更快,而且更准确。更有意思的是,虽然参数变多了,但是并没有导致过拟合,这可能归功于下确界的正则化的效果。

4.2边缘似然度

image.png

5. 总结

1. 作者给出了VI新的求解方法,Stochastic Gradient VB(SGVB),可以高效的完成连续隐变量的推断问题。并且这个求解非常直接,适用SGD这种算法。

2. 作者给出一个新的模型Auto-Encoding VB (AEVB),这个模型也是非常高效且准确的,其理论优越性已经由实验证明。

上一篇下一篇

猜你喜欢

热点阅读