Vanilla VAE(Variational Autoencoder)
一、AutoEncoder 回顾
![](https://img.haomeiwen.com/i8596800/8666af110c3d6d37.png)
生成模型
最理想的生成就是知道输入样本的分布, 然后我们并不知道该分布。那么可以近似求解。
。但
我们同样不知道。但是我们可以用神经网络去学习这两个分布。上图中的latent vector可以看成是
的一个采样,decoder可以看成条件概率
。但是我们真的可以采样一个z,然后用加一个decoder来作为我们的生成模型吗?
- z是Encoder对应着样本X的输出,如果我们直接用Decoder对z还原,那么最终得到的
是和X是差不多的,我们需要生成模型是生成一个和X类似的,而不是一模一样的
- 如果对z做一些扰动,必然加一些噪声,那是不是就可以生成类似但是不一样的东西呢?理论上是可以,但是到目前为止,我们的模型并没有保证这一点(模型还没有学习)
加噪声是一个好的思路,如何加噪声?
让z从一个分布采样(注意不是直接使用encoder的输出),就是噪声。
那不放让z从一个中采样。那需要知道
, 既然不知道那就用神经网络生成吧。
![](https://img.haomeiwen.com/i8596800/6c07e2d296d44414.png)
如果我们按照上述去训练我们的模型,生成方差
![](https://img.haomeiwen.com/i8596800/c505c2a1e88756f5.png)
如何监督模型达到该目的,KL loss作为监督信号,KL loss如下
![](https://img.haomeiwen.com/i8596800/6b4357a33bd6974e.png)
reparameterization trick
![](https://img.haomeiwen.com/i8596800/2a126d0c68120783.png)
思考?
- 为什么要正态分布、其它分布可否?
网友评论