文献阅读·1-VAE

简介

  文献Auto-encoding variational bayes的理解。截至本文,\color{red}{\small \bf谷歌学术引用 7646}。相关开源:https://github.com/L1aoXingyu/pytorch-beginner/blob/master/08-AutoEncoder/README.md

关键字

  变分自编码,VAE,生成模型,深度学习,机器学习

正文

1. 理解VAE的思路

  1)VAE有两个损失项(KL,重构损失),为什么是这两个损失?
  2)这两个损失项怎么表达和近似?
  3)为什么使用AE的结构来实现?
  4)怎么训练,即怎么反向传播损失?

2. 学习目标和变分下界

  假设X为观测数据,Z为不可观测的隐变量,VAE要学习的目标是ZX下的后验概率:p(z\mid x)

  实际真实的p(z\mid x)难以直接学习,VAE使用q(z\mid x)来近似p(z\mid x),此时目标为:\arg \min_q KL(p(z\mid x) \mid\mid q(z\mid x))

  由于KL(p(z\mid x) \mid\mid q(z\mid x))=\log p(x)-\Delta
  这里的\log p(x)为常数,其中:
\Delta=E_{q(z\mid x)}[\log p(x\mid z) ]-KL(q(z\mid x)\mid\mid p(z))
  上面的\Delta一般称为变分下界ELOB,问题转换为:\arg \max_{q(z\mid x),p(x\mid z)}\Delta

  现在问题可以分为两部分来看待:

  a. 最大化E_{q(z\mid x)}[\log p(x\mid z) ]
  b. 最小化KL(q(z\mid x)\mid\mid p(z))

3. 借用AE结构求解

  首先解决最大化E_{q(z\mid x)}[\log p(x\mid z) ],其中q(z\mid x)可以视作由观测变量x得到隐变量z的过程:z=f_\phi(x),其中\phi是函数f的参数;p(x\mid z)可以视作由隐变量z得到生成样本x的过程:x=g_\theta(z),其中\theta是函数g的参数,整个过程恰好就是x\rightarrow z\rightarrow x的过程,可以看成是由观测变量x生成一个z的分布,然后这个z的分布生成大量的样本x再求均值的过程。

  这个过程可以通过AE的结构来实现,AE即自编码器,包含编码器(encoder)和解码器(decoder),encoder把x压缩成z,decoder把z解压成x,不同的是AE编码的是一个固定的z,而VAE是一个z的分布。回到上面问题,把z=f_\phi(x)当做encoder,把x=g_\theta(z)当作decoder,就可以使用AE结构计算出E_{q_\phi(z\mid x)}[\log_\theta p(x\mid z) ],其中\phi,\theta分别为encoder、decoder的网络参数。那怎么最大化,就是x\rightarrow z\rightarrow x这个过程中前后的x越接近越好,参考资料[1]中使用了AE常用的重构损失。

  其次是最小化KL(q(z\mid x)\mid\mid p(z)),这边给了个先验p(z)为标准正态分布,参考资料[2]解释为正态分布具备通过函数可以变换为其他分布,所以使用正态分布就够了。那么q_\phi(z\mid x)需要拟合这个先验,即标准正态分布。q_\phi(z\mid x)是由x生成z分布的过程,由于是正态分布,故只要使用参数(\mu,\Sigma)来表示就行了,为了简化运算,参考资料[1]假设\Sigma是各向同性的,各个维度的值为\sigma

  此时最小化的目标如下,其中j是维度:\begin{align}KL(q(z\mid x)\mid\mid p(z))&=KL(N(z\mid \mu,\sigma)\mid\mid N(z\mid 0,1))\\ &= \frac 12 \sum_{j=1}^J(1+\log \sigma_j^2-\mu^2_j-\sigma_j^2)\end{align}

4. 重参数技巧

  在p_\theta(x\mid z)的过程中,需要在z的分布中采样多个z_i,再由z_i生成的x求平均得到,由于采样这个操作不可导,所以,这里从标准正态分布中采样一个\epsilon,再由这个\epsilon来计算z=\mu+\epsilon\times \sigma,这样由这个可导的计算过程代替采样就可以求导了。具体过程可以看下图,图片来源于参考资料[2]。

重参技巧.png

5. 实验效果

  最后放点实验效果,图片来自参考资料[1]。


流形效果.png

不同维度的效果.png

参考资料

[1] Kingma, Diederik P., and Max Welling. "Auto-encoding variational bayes." arXiv preprint arXiv:1312.6114 (2013).
[2] Doersch, Carl. "Tutorial on variational autoencoders." arXiv preprint arXiv:1606.05908 (2016).
[3] https://spaces.ac.cn/archives/5253

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容