变分自编码器
CS231n推导


推导方式聚焦于后验分布的描述。最近在研读苏剑林的文章Variational Inference: A Unified Framework of Generative Models and Some Revelations,文章对VAE的描述很简单,直接用一个联合分布做了一个近似,没有上图那么多转换,因此好好的研究了一番。
说在前头
数值计算
已知概率密度函数,那
的期望可以定义成:
如果要对它进行数值积分,做法就是选取若干个有代表性的点:
采样计算
从中采样若干个点
,则:
为什么采样计算没有乘以概率?因为在中
是从
中依概率采样出来的,概率大的
出现的次数也多,所以可以说采样的结果已经包含了
在里边,就不用再乘以
了。这就是蒙特卡洛模拟的基础。
VAE采样流程

VAE采样是为每个样本构造专属的正态分布,然后采样来重构,为使模型具有生成能力,VAE要求每个都向正态分布看齐。
参考变分自编码器(一):原来是这么一回事
直面联合分布
有一批数据样本,一般我们会借助隐变量 z描述x的分布p(x):
这样,式子就既描述了也描述了生成模型
。由此可以得出,其实不需要近似
,直接对
近似是最干脆的。即直接用一个新的联合分布
来逼近
:

由此得到最终Loss为:


重参数技巧
关于
此处涉及到重参数化技巧

基于变分推断的GAN
GAN的主要思想也是
通过训练一个生成模型,将
映射为数据集分布
,VAE中将
选择为狄拉克函数
(rua!这是什么东西???我只理解成一种描述单点分布的函数,即认为
与
关系一一对应,在GAN中
不再是隐变量,无需再考虑后验分布
)
根据直面联合分布,在GAN中仅仅引入了一个二元隐变量来构成联合分布

mode collapse新解
可以看到基于变分推断得到的GAN 生成器loss与标准的GAN相差一个,这个式子可以给我们一些启发。假设
模型参数改变量为
,展开到二阶得:

因此GAN在训练时会有各种trick使不会过大,如:梯度裁剪、用adam优化器、BN为了稳定梯度,按照上述的理解实际上就都可以解释得通了(实际上都保证了不至于过大)。还有GAN在实际训练时的迭代次数也不能过多,过多也同样会使得过大。
加入正则项
实际上直接为GAN的生成器loss加入正则项就行:

实验结果表明正则项生效。
小结
用变分推断去理解GAN使得GAN训练中的很多trick都得到了理论的解释,作者将VAE和GAN统一到了一个框架,那是不是许多用于提升VAE训练的trick可以运用到GAN上?
原文还将EM,AAE,ALI也纳入了变分的框架下形成了一个大一统,待我以后再细看。数学真是神奇啊。。。
参考
Variational Inference: A Unified Framework of Generative Models and Some Revelations
用变分推断统一理解生成模型(VAE、GAN、AAE、ALI)
网友评论