近期也是吃到了许嵩恋情的瓜 QAQ 碰巧想起他有个名字叫 vae ,和一种生成模型同名,就趁此良机(牵强附会)
浅浅记录一点对VAE模型的理解:
大约是今年夏天七八月份开始接触生成模型,第一个学习的论文是Skecth RNN:
[1704.03477] A Neural Representation of Sketch Drawings (arxiv.org),而它实际上就是一个纯粹
的 VAE 模型,一头雾水的同时查阅了 VAE 模型相关的一些资料与教程,发现对于优化目标 ELBO
的推导与理解可谓五花八门,然而并未形成一个从头到脚推导的思路:即出于什么目的,我们是如
何想到,以及为什么要优化这样一个目标函数。直到不久前看了一些Stanford CS236课程的slides
加上一点对之前东西的复习与理解才形成了一个相对简单连贯的思路,在这里浅浅记录一下。
(以下截图来自:Stanford University CS236: Deep Generative Models)
首先,我们考虑一个带有一个隐变量的概率图模型,则我们的模型(参数 )建模数据 x 的概率密度则可表示为
那么如何让这个建模更符合原数据的分布呢?我们可以考虑用 KL 散度度量它与原真实数据分布p(x) 的距离,并最小化这个距离,则目标函数应该为:
而这一项可以分解为:
其中前一项由于数据分布是确定的,是一个与 无关的常数,则目标函数只考虑后一项变为:
注意到,积分项通常是难以计算的,但是这种带有概率密度 p * xxx 的积分形式,实际上是后一项 xxx 在概率分布 p 下的期望,可以在训练中以采样的方式近似(这句话很重要,接下来还要重点用到)即:
将边缘概率公式代入,这一项化为:
那么这个对于 z 的积分项该怎么求呢?想起我们刚刚加粗的那句话,事实上,这里我们就同样可以把这个积分项看做 在 下的期望,并通过采样的方法近似,这在道理上是可行的,但是在实际应用中发现这样做会有着过大的方差,个人理解是由于上述的采样近似外还有 log 函数,因此导致了过大的方差。那么有没有一种技巧,能够把这个log项,转移到积分里面呢?
答案是:Jesen不等式!
我们接着对上述目标函数进行变换:
从这种观点出发,其中是为了使用Jensen不等式,引入了一个新的分布 ,这一项通常在实际应用中建模成 。于是我们退而求其次,优化这个目标函数的下界,优化目标的形式是不是又顺眼了呢?积分中是一个概率分布q 乘上 xxx 的形式,即 xxx 在 q 分布下的期望,那么实际应用中的目标函数转化为:
而这个期望,就是所谓的证据下界 ELBO (Evidence Lower Bound)!同样又可以通过对 z 采样的形式计算近似。以上便从一个较为直观的思路,解释了为什么要提出这个证据下界,为什么要引入一个新的分布q的迷惑。字打的有些累,剩下一点关于这个 ELBO 的性质,以及通常如何用神经网络建模计算 ELBO 的内容,看心情再更新吧!浅浅吐槽,为什么编辑看着比较正常,但是排版乱七八糟。。