只知道GAN你就OUT了——VAE背后的哲学思想及数学原理

引言

短短三年时间,变分编码器VAE(Variational Auto-encoder)同GAN一样,成为无监督复杂概率分布学习的最流行的方法。VAE之所以流行,是因为它建立在标准函数逼近单元,即神经网络,此外它可以利用随机梯度下降进行优化。本文将解释重点介绍VAE背后的哲学思想和直观认识及其数学原理。

VAE的最大特点是模仿自动编码机的学习预测机制,在可测函数之间进行编码、解码。同GAN类似,其最重要的idea是基于一个令人惊叹的数学事实:对于一个目标概率分布,给定任何一种概率分布,总存在一个可微的可测函数,将其映射到另一种概率分布,使得这种概率分布与目标的概率分布任意的接近。

看到这里读者可能会一头雾水。下面我们来一一阐明其中的含义。

可测函数之间的编解码?什么样的可测函数?可测函数是测度论中的概念,它是真实世界的随机事件到数学世界的随机事件的映射。当然,在形式化问题过程中我们需要对这里面的所有事件进行量化,于是我们自然地会将这个数学世界选取为欧式空间,相应的σ-代数也就是Borel σ-代数了。回到选取可测函数的问题。VAE的一个重要的哲学思想是,遵从图模型,我们希望生成的样本是由某些隐含变量所构造出来的。举个例子,比如我们想要生成0-9的手写体,影响生成这些数字的样式可能有很多因素,比如笔画粗细、笔尖的角度、写者的书写习惯、天气好坏(天气会影响写者的心情,进而影响书写方式。根据蝴蝶效应,初始条件的微小变化会影响最终的结果)。这些因素不胜枚举,一些看似不相关的因素,都有可能影响最终的结果。一个直接的方法是显示地构造出这些隐含因素的概率分布,但是这些因素实在是太多了,无穷多个,我们显然不能手工构造。VAE巧妙地避开了这个问题,利用一个联合高斯分布作为隐含可测函数的分布(这个隐含可测函数将上面所说的所有现实世界影响写字样式的隐含因素映射到欧式空间中去了),随即将问题转化为学习一个从隐含可测函数(隐含变量)到一个所希望生成样本的映射。后面我们会看到,这个过程就是解码过程。可以想象,这个映射会极为复杂。我们自然会想到利用深度学习强大的函数拟合能力来学习这个映射。

模型推导

因此,我们希望得到这样一个生成模型,如下图所示。

其中z是隐含变量(隐含可测函数),将其输入到某种解码器,输出f(z),使得f(z)尽可能在保证样本多样性的同时与真实样本相似。

但是如何通过学习得到这样的解码器呢?

这就需要我们回归到目标函数中去考虑问题了。我们仅仅已知一些现成的样本S={x(i),i=1,...,m},比如,回到我们的例子,我们仅仅已知0-9这些手写体图片的样本,希望生成一些具有多样性类似的样本。那么自然会想到利用极大似然法来估计可学习的参数Θ,即

不失一般性,我们下面只针对单样本x进行讨论(略去其指标和可学习参数)。上面的似然函数仅仅是关于x的函数,我们需要想办法凑出隐变量z来。

其中q(z|x)是给定样本下z的某一个条件概率分布。

这一步变换值得深思,为什么选用一个条件概率分布呢,而不选用q(z)或者p(z|x)呢?

因为q(z)的选取范围太大,我们更感兴趣的是那些更有可能生成x的隐变量z;关于p(z|x),p(⋅)可以认为是真实的概率分布,我们很难得到,我们希望做的是通过q(⋅)去逼近p(⋅),因此前者可以理解为某一种近似的概率分布。

我们继续进行推导,

我们考查其中的第一项,利用贝叶斯公式

这样我们就推导出VAE的一个核心等式,

下面可以开始建模了。由前面的讨论(利用一个联合高斯分布作为隐含可测函数的分布),

同样,q(z|x)和p(x|z)用联合高斯去建模,

自然地,问题就转化成了用神经网络学习四种映射关系。但是,即使做了这样的建模,对于DKL(q(z|x)||p(z|x)),我们仍然难以给出其闭式解(归一化因子是一个复杂的多重积分)。因此只能退而求其次,我们对其做缩放

对对数似然的下界进行最大化。

进一步推导,我们将前面建模的概率模型带入这个下界中去。注意到在实际实现过程中,为了简化起见,Λ(z)取与z无关的单位阵I,于是有

最大化这个下界等价于最小化

其中Θ为四个待学习映射的可学习参数集合。

至此,整个的学习框架就清晰了,如下图所示。

总结起来,整个训练框架就是在对样本x进行编解码。q是将样本x编码为隐变量z,而p又将隐含变量z解码成f(z),进而最小化重构误差。训练的目的是学习出编码器的映射函数和解码器的映射函数,所以训练过程实际上是在进行变分推断,即寻找出某一个函数来优化目标。因此取名为变分编码器VAE(Variational Auto-encoder).

关注具体实现的读者可能会发现在“解码器Decoder到μ(x)和Σ(x)”这个阶段从技术上没办法进行梯度反传。的确如此,上图只是作为帮助大家理解的示意图,而真正实现过程中,我们需要利用重参数化这个trick,如下图所示。

重参数化这个名字听起来很神秘,其实就是基于下面的一个简单的数学事实: 如果z∼N(μ,Σ),那么随机变量z可以写成

其中ϵ∼N(0,I).

利用重参数化这个trick,我们成功地规避了这个问题。

讨论

A. 既然任意概率分布都可以作为隐变量的分布,为什么都用高斯分布去建模呢?

这个问题的答案可能在于两个方面。一方面是,建模高斯分布给我们带来了良好的可计算性,能得到一些解析的结果。另一方面,可能是基于下面的数学事实,

这个问题的解是

即给定概率分布的均值和方差,使得信息熵最大的概率分布是高斯分布。

B. 我们虽然退而求其次地仅仅最大化对数似然的下界,但如果网络实际的合理,我们实际上是在最大化logp(x)−DKL(q(z|x)||p(z|x)),这意味着训练过程中一方面最大化对数似然(我们的终极目标),另一方面最小化q和p的KL散度,即两者的概率分布距离。这样我们就一举两得:一方面完成了终极目标,另一方面使得原来不可计算的p(z|x)可计算,将q(z|x)最为其良好的近似。

C. 联合高斯分布之间的KL散度

根据上一篇关于GAN的“模拟上帝之手,对抗博弈——GAN背后的数学原理”一文,我们很容易得到两个联合高斯p1=N(μ1,Σ1)和p2=N(μ2,Σ2)之间的KL散度

参考文献

Tutorial on Variational Autoencoders. Carl Doersch. arXiv:1606.05908, 2016.

原文发布于微信公众号 - 人工智能头条(AI_Thinker)

原文发表时间:2017-06-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Petrichor的专栏

深度学习: ILSVRC竞赛

Large Scale Visual Recognition Challenge (ILSVRC):

69630
来自专栏新智元

谷歌开源神经网络模型,压缩图片比传统方法提升25%(附论文)

【新智元导读】 谷歌官方博客今天发布了一篇文章,介绍如何使用神经网络压缩图片。在论文中,谷歌证明了神经网络可以获得比现在普遍使用的压缩方法质量更好、大小更小的图...

45240
来自专栏大数据文摘

算法可视化:把难懂的代码画进梵高的星空

31940
来自专栏一名叫大蕉的程序员

机器学习虾扯淡之线性回归No.39

今天晚上,整理了一下线性回归的完整的数学推导过程以及应用。 0x00甩定义 首先什么是线性回归? 就是面包屑嘛,我们跟着一个一个面包屑走,然后duang~~在...

19770
来自专栏腾讯音视频实验室

带宽节省利器——帧率上采样

目前大多数人都关注点都在超分辨率技术上,为何不Pick一下帧率上采样呢?

7.8K40
来自专栏杨熹的专栏

深度学习与自然语言处理 主要概念一览CS224d-Day 1:

---- CS224d-Day 1: 要开始系统地学习 NLP 课程 cs224d,今天先来一个课程概览。 课程一共有16节,先对每一节中提到的模型,算法,工...

389110
来自专栏人工智能

基于神经网络的图像压缩技术

(本文由软件工程师 Nick Johnston 和 David Minnen 发布)

1K120
来自专栏新智元

赋予人工智能记忆的人,带你梳理深度学习核心算法

作者介绍:Jürgen Schmidhuber 被称为是赋予人工智能记忆的人,递归神经网络之父,2004 年到 2009 年,担任慕尼黑大学认知与机器人领域的教...

37770
来自专栏AI科技评论

学界 | Yann LeCun新作,中日韩文本分类到底要用哪种编码?

AI科技评论按:前几天,Yann LeCun与其学生 张翔在arXiv上发表了一篇新作「Which Encoding is the Best for Text ...

37140
来自专栏机器之心

专栏 | 递归卷积神经网络在解析和实体识别中的应用

397130

扫码关注云+社区

领取腾讯云代金券