Auto-Encoding Variational Bayes(VAE)粗浅的理解

Auto-Encoding Variational Bayes(VAE)粗浅的理解

VAE作为生成模型的一种,能够通过改变latent space 来生成和训练时不一样的样本。

而这种能力,Auto-Encoder  (AE)是做不到的,因为如果不对latent space 的生成进行约束,仅仅是对输出的结果进行约束。那么最终,对于不同的样本输入,得到的latent space 是完全不同的,这会产生什么问题呢?就是这个latent space的映射可能是独立的,不同的输入得到的latent space 之间可能不能很清晰的捕捉他们之间的关系,所以当你改变某个latent space的值时,输出的结果可能是不正常的。

Auto-Encoding Variational Bayes(VAE)粗浅的理解_第1张图片

而VAE仅仅多做了一个动作,即在编码器输入得到latent space 时, 通过对他进行加入噪声,使得解码器能够“接受”稍有不用的latent space, 从而能够生成更加合理的生成样本。就如上图所示,如果我们再两个月球的输入样本得到的latent space1 和 latent space2 进行一个距离的折中,VAE能够获得较为合理的,且带有操纵性质的输出结果,而AE不行。

上图中作为近似的lower bound , 即需要极大似然估计,使得最后编码器的输出z的分布能够和标准正态分布越接近越好,在给定编码器的z的情况下,带入训练样本x,所得到的概率越大越好,说白了就是输出的结果要和训练样本约近似越好。

 

Auto-Encoding Variational Bayes(VAE)粗浅的理解_第2张图片

细节上,就是样编码器输出多维的均值m和方差thta,然后再从标准正态分布中采样,通过这种方式,得到新的noise vector,再给 解码器进行解码。

Auto-Encoding Variational Bayes(VAE)粗浅的理解_第3张图片

这么做的目的是,它把输入的数据分布拉入一个标准正态分布中去,即让不同的数据都在这个分布中有所表示,如上图左半部分所示。原本在空间中,不同样本之间虽然有相似性,但是他们之间不能用统一的正态分布采样,而通过上述的约束方式训练之后,能够将其编码在另一个隐空间中,即统一表示成另一个分布。或者说,用多个不同的分布区组合成一个分布,用高斯混合模型,去拟合一个分布,这样就相当于将多个不用的分布,进行了组合,能够在一个分布中进行表示。而这种方式用EM算法可以轻松搞定。

我们可以看到,直观的理解就像上图右半部分,通过对输入三的隐空间进行采样,我们得到了和原来不一样的3,单这个3样本之前是没有训练过的。

至于详细推导:

https://www.cnblogs.com/fxjwind/p/9099931.html

https://blog.csdn.net/lrt366/article/details/84331953

你可能感兴趣的:(机器学习,深度学习,机器学习)