论文原文:Auto-Encoding Variational Bayes [OpenReview (ICLR 2014) | arXiv]
本文记录了我在学习 VAE 过程中的一些公式推导和思考。如果你希望从头开始学习 VAE,建议先看一下苏剑林的博客(本文末尾有链接)。
VAE 的整体框架
VAE 认为,随机变量
- 根据先验分布
生成隐变量 。 - 根据条件分布
由 得到 。
于是
一种朴素的想法是:先用随机数生成器生成隐变量
VAE 的做法是引入后验分布
- 采样一批原始样本
。 - 用
获得每个样本 对应的隐变量 。 - 用
从隐变量 中重构出 ,通过最小化重构损失来训练模型。
从这个角度来看,
除了重构损失以外,VAE 还有一项 KL 散度损失,希望近似的后验分布
变分下界的推导
现有
后验分布
需要使用变分推断解决后验分布无法计算的问题。我们使用一个形式已知的分布
利用 KL 散度大于等于 0 这一特性,我们得到了对数似然
这个下界可以进一步写成
其中的第一项是 KL 散度损失,第二项是重构损失。
KL 散度损失
使用标准正态分布作为先验分布,即
使用一个由 MLP 的输出来参数化的正态分布作为近似后验分布,即
选择正态分布的好处在于 KL 散度的这个积分可以写出解析解,训练时直接按照公式计算即可,无需通过采样的方式来算积分。
由于我们选择的是各分量独立的多元正态分布,因此只需要推导一元正态分布的情形即可:
解释一下倒数第三行的三个积分:
是概率密度函数的积分,也就是 1。 是方差的定义,也就是 。 是正态分布的二阶矩,结果为 。
重构损失
伯努利分布模型
当
其中
正态分布模型
当
很多时候我们会假设
可见此时最大化
重参数化技巧
需要使用重参数化技巧解决采样
从
相关知识
技巧,通过取对数把乘除变成加减:
随机变量的函数的期望:
利用此公式可以将积分改写成期望的形式,这样就可以用采样的方式计算积分了(蒙特卡罗积分法)。
条件概率密度的定义:
此处的
参考资料
苏剑林的 VAE 系列博客:
15 分钟了解变分推理: