参考文章:https://kexue.fm/archives/5716
https://zhuanlan.zhihu.com/p/40282714
本篇博客主要是参照上述两个博文,另外加入了一些自己的理解,也为了和自己学习或者常见的知识做一个对照,因为在学习过程中总有一个问题困扰,就是符号,前后的符号对照不好,还得想半天。所以有些符合可能跟原文章对不上,但跟我之前的博客可以对上。
特意将常用的符号归纳一下(当然我也是希望和我之前的博客的符号相一致,但是可惜还是没能做好):
→真实数据的分布,或者称为x的证据分布(在《模式分类(第二版)》中贝叶斯决策这一章里这样描述)
→隐变量(VAE)或噪声数据(GAN)
或或→生成模型的分布这些符号的记法不同,只是为了方便不同的推导和作者们不同的理解角度,最主要的我们在生成模型中要研究的就是找到一个合适的参数使得近似于。
对于GAN,我们现有的认识角度至少包括以下几个:
- minmax博弈。GAN提出时也是从这个角度阐述的。生成对抗网络中“对抗”一词也从这儿来的。
- 最优传输理论。参见这里,WGAN的生成器计算最优传输映射,判别器计算Wasserstein距离。
- 变分推断。这是新的视角,参见用变分推断统一理解生成模型、Variational Inference: A Unified Framework of Generative Models and Some Revelations。这也是这篇博客所要说明的一点,为什么题目称为理解,原因就是在推导文中公式的过程中出现了一些难点,所以列举在此。
1、变分推断新解
假设是显变量(或者我们称之为样本),为隐变量(或者我们称之为噪音数据)。为的证据分布,或者成为真实数据的分布,并且有
……(1)
生成模型要求的就是希望找到一个最优的参数使得能逼近,所以一般情况下,我们会最大化似然函数:
……(2)
原文中将省去,可以认为默认是带有参数的,为了简单起见,我们这里也就不带有参数。
最大化(2)式的似然函数等价于最小化KL散度,这个我在机器学习与信息论之熵那篇博客中就提到过,这里似然函数可以看做交叉熵,而KL散度(也就是相对熵)与交叉熵之间是有关系的:
等式的前一部分恰巧就是p的熵,等式的后一部分,就是交叉熵:由于KL散度中的前一部分不变,所以最大化交叉熵和最小化KL散度是等价的。
这里我们转化为最小化KL散度:
……(3)
但是由于积分难以计算,因此大多数情况下都难以直接优化。
变分推断中,首先引入联合分布使得,而变分推断的本质,就是将边缘分布的KL散度改为联合分布的KL散度,而
……(4)
(4)式表明联合分布的KL散度是边缘分布的KL散度的一个更强的条件上界。所以一旦优化成功,也就是KL散度最小(或者两个联合分布的距离很小),那么我们就得到,从而,即成为了真实数据分布的一个近似。
当然,引入变分推断也不是加强条件而加强,而是因为在很多情况下,比gen更容易计算。所以变分推断是提供了一个可计算的方案。
2、VAE和EM算法
结合上述关于变分推断的新理解,我们可以简单导出两个基本的算法就是:变分自动编码器和EM算法。
2.1 VAE
在VAE中,假设,,其中是带有未知参数的高斯分布(代表解码器或生成器),是带有未知参数的高斯分布(代表编