注:作者:哈工大scir 蔡碧波。
原文中将变分下界写为“EOLB”,属笔误,这里已经修正为ELBO。
0. 背景
机器学习模型可以主要分为判别模型与生成模型,近年来随着图像生成、对话回复生成等任务的火热,深度生成模型越来越受到重视。变分自编码器(VAE)作为一种深度隐空间生成模型,在数据生成任务上与生成对抗网络(GAN)一并受到研究者的青睐。VAE(Kingma and Welling.2013)先将原始数据编码到符合特定分布的隐变量中,再根据生成的隐变量概率分布,还原原始数据的近似概率分布。由于VAE是一种无监督模型,只能生成与输入类似的输出数据,故研究者提出条件变分自编码器CVAE(Sohn et al.,2015),将原始数据以及其对应的类别共同作为编码器的输入,可以用于指定类别的数据的生成。利用CVAE就可以生成符合特定视觉特征的图片(Yan et al.2016)。VAEs方法最初应用于CV中,在自然语言处理领域,(Bowman et al.,2015)首次利用VAE进行文本生成。(Zhao et al.,2017)将CVAE用于对话生成中,增强了生成回复的多样性。
1. 基本思想
目前有很多任务都有着one-to-many的性质。比如在图像任务中,希望能够根据给定的肤色生成不同的人脸图片;在自然语言处理任务中,给定上文,希望能够生成不同的回复等。由于这些任务中有多种变化的因素,故对相同的输入,可以有不同却均合理的结果。
上图(Zhao et al.,2017)展示了一个在对话生成任务中有多种回复的例子,A同学提问“你的爱好是什么?”,由于回复的人可能有着不同的爱好,有不同的聊天习惯导致其有多种回复形式。CVAE模型作为一种深度条件生成模型,引入了隐变量来捕捉这种一对多问题中的变化的因素。从概率图模型的角度可以将生成过程描述如下(Kingma and Welling.2013):
其将给定的上下文/肤色看作生成的条件,在生成过程中,其首先从一个条件先验分布中采样得到隐变量,然后将隐变量和条件作为生成网络的输入来生成回复/图片。由于重采样可以得到不同的隐变量,故可以获得不同的生成的结果。
2. 模型架构与概率图架构
在具体介绍CVAE的数学原理前,我们先从整体的角度了解一下CVAE模型的整体架构,对其有大体的认识。而模型的建模过程跟概率图结构是保持一致的。在对话生成任务中,cvae模型在训练阶段和测试阶段的前馈网络框架如图所示(Zhao et al.,2017)。
cvae的核心在于用神经网络对分布进行拟合。图中黄色的部分表示将回复句编码为y,紫色部分表示将输入的上下文编码为x,将隐变量和的拼接起来作为decoder的输入向量,生成回复的句子。隐变量由prior/recognition net采样而来。
- prior/recognition net实际上是MLP,其输出的值为分布的具体参数。如此例中假设隐变量服从的是一个高维高斯分布且其方差为对角矩阵, 则MLP的输出为和。
- 所谓的采样指的是从服从的分布中采样一个向量,由于直接采样是断微分的,故如下文所述,这里往往采取所谓的reparameterion trick,即采样由标准正态分布的变量变换而来,即且。
实际的模型与概率图模型是一致的,前向先验概率对应图中的prior network,后验概率p(z|y,x)对应图中的recognition network(Kingma and Welling.2013)。
以KL散度为优化目标可以使先验概率和后验概率尽量逼近,那么先验即可以与后验生成较为相似的隐变量。
decoder端对应于概率p(y|x,z),将隐变量与对话上文拼接起来作为其输入,对解码的结果进行极大似然优化即可。
由于测试阶段输出不可见,所以需从先验分布中对隐变量进行采样。其余部分与训练阶段的网络结构完全相同。
3. 数学原理
变分自编码的方法核心其实是利用深度神经网络对概率分布进行拟合,优化目标为最大化变分下界。由于CVAE由VAE变化而来,而ELBO是他们共同的优化目标,所以这里从ELBO出发,先介绍VAE,再过渡到CVAE。
3.1 变分下界ELBO(evidence of lower bound)
在我们接触机器学习时,最先接触隐变量这个词是在EM算法中。变分自编码器与EM算法一脉相承。我们考虑一个概率模型,其中所有观测变量(可以理解为高维向量)联合起来记为, 我们的目标是对高维向量的分布进行拟合,以最大化似然函数作为优化目标。这里我们假设数据服从独立同分布假设,那么该似然函数就是每个数据点的边际似然函数的和,即。如果我们定义了隐变量以及联合分布,且该分布的参数由控制,那么每个数据点的边际似然就可以写为 。
所以什么是变分下界?如果我们为每个数据点引入函数(可以为定义在上的任意分布)。即可以将分解为如下两项之和(Bishop,2006)
其中
由于KL散度满足,且当且仅当时成立,所以是的一个变分下界,也叫做ELBO(evidence of lower bound)(Bishop,2006)。
另外也可以利用jensen不等式来构造变分下界,使用来构造jensen的基本形式即可。
根据jenson不等式的取等条件有当且仅当时取等。
值得强调的是,变分下界是和的函数,而的值仅由决定。
所以EM算法就是根据变分下界来进行两阶段的优化,如果后验分布可以被计算出来(如为混合高斯分布),那么即可以使用EM算法进行优化求解。
- 在E步,取,此时KL散度为0。在下变分下界与的值相等。
- 在M步以为变量最大化变分下界,由于其是一个下界,此时必然也增大。
通过E步和M步的不断迭代,即可使得的值不断增大,直到收敛。
3.2 不可计算问题与变分自编码器
上述提到,只有当后验概率是可计算的时候方可使用EM算法进行求解。但是对于实际应用中的很多模型来说,计算后验概率分布或者计算关于这个后验概率的期望是不可行的。 例如在连续变量的情形中,需要求解的积分可能没有解析解,而空间维度和被积函数的复杂度较高导致数值积分不可行。如(Kingma and Welling.2013)的appendix C中所给的例子,分布的参数由mlp导出;对于离散变量,求边缘概率涉及到对隐变量的所有取值进行求和,但是实际应用中往往隐变量的数量为指数级,计算代价过高。
所以此时往往考虑对进行近似推断。我们可以将的范围限制为某一个函数族,如限定服从高斯分布。那么可以将与数据点对应的记为。这里表征了对应的高斯分布的参数与之间的映射关系。
那么上述的变分下界可以写为:
对上式稍作变换,可以写为也:
以为参数对变分下界最大化即可达到对原进行近似优化的目的。那么变分下界关于的导数该如何进行求导?如(Kingma and Welling.2013)appendix B所示,KL部分往往是可以解析的进行求导的,重点是重构误差该如何求导。
(Bishop,2006)中提出可以reparameterization trick来解决。可以将该trick理解为一种变量代换的方法,也就是将原先的一个固定分布经过一个可导变换,变换为服从的分布。比如我们可以将标准正态分布转换为任意正态分布,即对于,,这里。注意,如果我们直接从中采样,该结果对是不可导的,但是通过这种变量代换的方式,分布的参数直出现在了计算式种,是可导的。
此时就可以用蒙特卡洛方法对重构误差进行估计,令为采样的次数,那么重构误差近似于:
在实际实验中,数据以minibatch的方式送入模型进行训练,(Kingma and Welling.2013)中提到,只要batch size足够大(如100),那么可以将采样的次数设置为1,如果是分类任务,那么此时所估计的重构误差就与crossEntropyLoss无异了。
下图(Doersch,2016)展示了在使用reparameterization trick前后的整个变分下界的优化过程。
在上图中,先验分布实际上是没有参数的。
这里所谓的reparameterization trick即是从标准正态分布到任意正态分布的转换公式,即对于,,这里。
上图即是VAE(变分自编码器)的结构图。的输出是的分布参数,如回复生成中,对应于词表中每个词的概率。
3.3 从变分自编码器到条件变分自编码器
条件变分自编码器正是变分自编码器的进阶版,但是其优化思路一脉相承。cvae的概率图模型中,有三种变量,输入变量,输出变量,隐变量。其生成过程为:对于给定的输入x,先从先验分布中采样得到,输出从分布中生成。
在cvae中,我们转而对条件分布进行建模,优化的目标转为最大化条件似然。
与vae相同,对于此目标函数依然存在着后验概率不可计算问题,所以退而求其次,在一个受限的隐变量分布中使用变分方法对ELBO进行优化。下文中默认该受限的分布为一个高维高斯分布。cvae的ELBO如下:
具体的推导请参考(Sohn et al.,2015)
使用蒙特卡洛的方法来计算期望,那么转为:
这里,代表采样的个数。
3.3.1 ELBO比较
VAE中的ELBO
CVAE中的ELBO
其差别主要是引入了条件x。统一来看,在ELBO中,KL散度的两项仍然分别是隐变量的先验和后验;期望部分对应的是生成网络的输出的对数似然在隐变量的后验分布上的期望。
3.3.2 模型结构图
将ELBO中的每一项在结构图中找到对应。对应关系如下:
- 图例中对的先验分布进行了松弛,将其设定为与x独立,变为了故KL散度中的第二项为。请注意,并不强制
假设x与z是相互独立,如第2章中的图示,我们可以使用一个神经网络对条件先验建模。 - 的后验分布是一个多元高斯,其参数由经过recognition net导出。之后的reparameterization过程与VAE相同。
- 生成过程即docoder部分,以作为输入,输出是的分布参数。比如回复生成任务中,decoder在每个step生成一个单词,即符合multinomial分布,输出即词表中每个单词的概率。此时蒙特卡洛一次采样的结果与计算交叉熵损失的过程时一致的。
4 总结
cvae是一个将贝叶斯推断方法与神经网络结合的很好的方法,有着优美的数学推导。由于隐变量有着良好的灵活性,便于对one-to-many的关系进行建模,在一些生成任务中得到了广泛的应用。本文对CVAE的相关数学原理及网络结构进行了总结归纳,如有不妥当之处,还望各位老师同学多多批评指正。
参考文献
[1] Tiancheng Zhao, Ran Zhao and Maxine Eskenazi. 2017. Learning Discourse-level Diversity for Neural Dialog Models using Conditional Variational Autoencoders. ACL.
[2] Diederik P Kingma, Max Welling. 2013. Auto-Encoding Variational Bayes. ICLR.
[3] Bishop, C. M. (2006). Pattern recognition and machine learning. Springer Science+ Business Media.
[4] Bowman, S. R., Vilnis, L., Vinyals, O., Dai, A. M., Jozefowicz, R., & Bengio, S. (2015). Generating sentences from a continuous space. arXiv preprint arXiv:1511.06349.
[5] Kihyuk Sohn, Honglak Lee, and Xinchen Yan. 2015. Learning structured output representation using deep conditional generative models. NeurIPS.
[6] Xinchen Yan, Jimei Yang, Kihyuk Sohn, Honglak Lee. 2016. Attribute2Image: Conditional Image Generation from Visual Attributes. ECCV.
[7] Sohn, K., Yan, X., & Lee, H. Supplementary Material: Learning Structured Output Representation using Deep Conditional Generative Models.
[8] Doersch, C. (2016). Tutorial on variational autoencoders. arXiv preprint arXiv:1606.05908.