Auto-Encoding Variational Bayes
自编码变分贝叶斯,一听就是个非常统计、非常机器学习的名字。这篇文章也非常像传统机器学习论文,而不太像神经网络方面的实验论文。本文关注的问题是:
当后验分布不可追踪/确定的情况下(比如说流式处理,或者无法一次将所有数据加载到内存的大数据场景),如何利用概率模型进行有效的参数推断呢?
作者论文的主要贡献:
A.通过公式推导,给出了下确界的一种表达形式,并且设计了巧妙的方法,将难以求解的原问题转化成可以用SGD****求解的问题。
B.讲了如何利用神经网络的方法来实现变分推断的思想,这就是作者说的VAE。
应用作者提出的模型,可以解决以下三个问题(类似隐马尔科夫模型的三个问题嘛):
1.学习问题:已知观测变量x,极大似然或者最大后验概率求参数θ。
2.学习问题:已知观测变量x,给定一个θ,求隐变量z****的后验分布。
3.预测问题:有效的估计x,只要给定x****的先验分布,我们可以做各种有关x的事情,比如:去噪,图像修复,提升图像分辨率。
一起看一下什么是变分推断,怎么推导可计算的下确界,又跟神经网络有什么关系吧。
1. 变分推断(viariational inference)
1.1 变分推断是什么?
假设我们有一个数据分布p如下阴影部分所示:
image.png这看起来像一个高斯分布,如何才能选择合适的高斯分布函数来拟合?是绿色的q还是红色的q呢?应用如下步骤:
-
我们拥有两部分输入:数据x,模型p(z, x)。
-
我们需要推断的是后验概率p(z | x),但不能直接求。
-
构造后验概率p(z | x)的近似分布q(z; v)。
-
不断缩小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.pngq是对角线协方差结构。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.png5. 总结
1. 作者给出了VI新的求解方法,Stochastic Gradient VB(SGVB),可以高效的完成连续隐变量的推断问题。并且这个求解非常直接,适用SGD这种算法。
2. 作者给出一个新的模型Auto-Encoding VB (AEVB),这个模型也是非常高效且准确的,其理论优越性已经由实验证明。