VAE的一些理解

仔细去看了ICML2014的文章Auto-Encoding Variational Bayes,想重新把VAE在理论上推导一遍。

先了解auto-encoder的组成。 q(z) 是标准正态分布, p(z|x), q(x|z) 是条件正态分布,分别对应编码器、解码器。

这里通过直接对联合分布进行近似的方式,简明快捷地给出了 VAE 的理论框架。 出发点依然没变,这里再重述一下。首先我们有一批数据样本 {x1,…,xn},其整体用 x 来描述,我们希望借助隐变量 z 描述 x 的分布 \(p(x)\)
\[ p(x)=\int p(x | z) p(z) d z, \quad p(x, z)=p(x | z) p(z) \]

\[ KL(p(x, z) \| q(x, z))=\iint p(x, z) \ln \frac{p(x, z)}{q(x, z)} d z d x \]

这样(理论上)我们既描述了 p(x),又得到了生成模型 p(x|z),一举两得。

KL 散度是我们的终极目标,因为我们希望两个分布越接近越好,所以 KL 散度越小越好。由于我们手头上只有 x 的样本,因此利用 p(x,z)=p(x)p(z|x) 对上式进行改写: \[ \begin{aligned} K L(p(x, z) \| q(x, z)) &=\int p(x)\left[\int p(z | x) \ln \frac{p(x, z)}{q(x, z)} d z\right] d x \\ &=\mathbb{E}_{x \sim p(x)}\left[\int p(z | x) \ln \frac{p(z | x) p(x)}{q(x, z)} d z\right] \end{aligned} \] 这样一来利用 (4) 式,把各个 xi 代入就可以进行计算了,这个式子还可以进一步简化,因为: \[ \ln \frac{p(z | x) p(x)}{q(x, z)}=\ln \frac{p(z | x)}{q(x, z)}+\ln p(x) \]\[ \begin{aligned} \mathbb{E}_{x \sim p(x)}\left[\int p(z | x) \ln p(x) d z\right] &=\mathbb{E}_{x \sim p(x)}\left[\ln p(x) \int p(z | x) d z\right] \\ &=\mathbb{E}_{x \sim p(x)}[\ln p(x)] \end{aligned} \] 注意这里的 p(x) 是根据样本 x1,x2,…,xn 确定的关于 x 的先验分布(更常见的写法是 (x)),尽管我们不一定能准确写出它的形式,但它是确定的、存在的,因此这一项只是一个常数,所以可以写出: \[ \mathcal{L}=K L(p(x, z) \| q(x, z))-constant=\mathbb{E}_{x \sim p(x)}\left[\int p(z | x) \ln \frac{p(z | x)}{q(x, z)} d z\right] \] 目前最小化 KL(p(x,z)‖q(x,z)) 也就等价于最小化 L。注意减去的常数一般是负数(概率小于 1,取对数就小于 0),而 KL 散度本来就非负,非负数减去一个负数,结果会是一个正数,所以 L 恒大于一个某个正数。

到这里,我们回顾初衷——为了得到生成模型,所以我们把 q(x,z) 写成 q(x|z)q(z),于是就有: \[ \begin{aligned} \mathcal{L} &=\mathbb{E}_{x \sim p(x)}\left[\int p(z | x) \ln \frac{p(z | x)}{q(x | z) q(z)} d z\right] \\ &=\mathbb{E}_{x \sim p(x)}\left[-\int p(z | x) \ln q(x | z) d z+\int p(z | x) \ln \frac{p(z | x)}{q(z)} d z\right] \end{aligned} \] 再简明一点,那就是: \[ \begin{aligned} \mathcal{L} &=\mathbb{E}_{x \sim p(x)}\left[\mathbb{E}_{z \sim p(z | x)}[-\ln q(x | z)]+\mathbb{E}_{z \sim p(z | x)}\left[\ln \frac{p(z | x)}{q(z)}\right]\right] \\ &=\mathbb{E}_{x \sim p(x)}\left[\mathbb{E}_{z \sim p(z | x)}[-\ln q(x | z)]+K L(p(z | x) \| q(z))\right] \end{aligned} \] 看,括号内的不就是 VAE 的损失函数吗?只不过我们换了个符号而已。我们就是要想办法找到适当的 q(x|z) 和 q(z) 使得 L 最小化。

简单来说,由于直接描述复杂分布是难以做到的,所以我们通过引入隐变量来将它变成条件分布的叠加。而这时候我们对隐变量的分布和条件分布都可以做适当的简化(比如都假设为正态分布),并且在条件分布的参数可以跟深度学习模型结合起来(用深度学习来算隐变量的参数),至此,“深度概率图模型”就可见一斑了。


   转载规则


《VAE的一些理解》 胡哲 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
VAE-GAN的一些理解 VAE-GAN的一些理解
本文对VAE和GAN两种进行了一些探讨, 以及两者之间可能的结合点
2020-02-02
下一篇 
ICLR2020论文解读__Learning robust representations via multi-view information ICLR2020论文解读__Learning robust representations via multi-view information
本文是对于信息瓶颈方法的原始公式应用于在学习时可以使用任务特定标签的监督设置中。提出了通过利用muilt-view的方式提供一种实体的两类视图,可以将方法扩展到无监督的情况下.
2020-01-22