Vanilla VAE

Vanilla VAE(Variational Autoencoder)

一、AutoEncoder 回顾

autoencoder

生成模型

最理想的生成就是知道输入样本的分布P(X), 然后我们并不知道该分布。那么可以近似求解。
P(X) = \Sigma P(X|Z)*P(Z)。但P(X|Z), P(Z)我们同样不知道。但是我们可以用神经网络去学习这两个分布。上图中的latent vector可以看成是P(Z)的一个采样,decoder可以看成条件概率P(X|Z)。但是我们真的可以采样一个z,然后用加一个decoder来作为我们的生成模型吗?

  1. z是Encoder对应着样本X的输出,如果我们直接用Decoder对z还原,那么最终得到的\hat{X}是和X是差不多的,我们需要生成模型是生成一个和X类似的,而不是一模一样的
  2. 如果对z做一些扰动,必然加一些噪声,那是不是就可以生成类似但是不一样的东西呢?理论上是可以,但是到目前为止,我们的模型并没有保证这一点(模型还没有学习)

加噪声是一个好的思路,如何加噪声?

让z从一个分布采样(注意不是直接使用encoder的输出),就是噪声。
那不放让z从一个N(u, \sigma^2)中采样。那需要知道u, \sigma^2, 既然不知道那就用神经网络生成吧。

image.png

如果我们按照上述去训练我们的模型,生成方差\sigma^2的回倾向于变成0(因为容易学)。那如何加以限制?使z倾向于一个标准正态分布,即\sigma^2倾向于1。 如下图
image.png

如何监督模型达到该目的,KL loss作为监督信号,KL loss如下


image.png

reparameterization trick

image.png

思考?

  1. 为什么要正态分布、其它分布可否?

..... 待补充完善

参考文献

  1. Auto-Encoding Variational Bayes
  2. Tutorial on Variational Autoencoders
  3. 变分自编码器
  4. 李宏毅深度生成模型
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容