深度学习《再探AE和VAE的区别》

最近学习了VAEGAN,突然对VAE和AE的概念和理解上变得模糊了,于是赶紧搜索资料,重新理解一番。

一:AE
深度学习《再探AE和VAE的区别》_第1张图片

输入的图片数据X经过encoder后会得到一个比较确切的latent code Z,这个Z通过decoder重建出图像X’,我们的损失函数就是X和X’的重建损失值。
AE特点就是:
自动编码器是数据相关的(data-specific 或 data-dependent),这意味着自动编码器只能压缩那些与训练数据类似的数据,反过也是一类数据对应一种编码器,无法拓展一种编码器去应用于另一类数据。
自动编码器是有损的,意思是解压缩的输出与原来的输入相比是退化的,MP3,JPEG等压缩算法也是如此。这与无损压缩算法不同。

正是由于这些特点,目前自编码器的应用主要有两个方面,第一是数据去噪,第二是为进行可视化而降维。配合适当的维度和稀疏约束,自编码器可以学习到比PCA等技术更有意思的数据投影。

二:VAE
相比于自编码器,VAE更倾向于数据生成。只要训练好了decoder,我们就可以从某一个标准正态分布(一个区间)生成数据作为解码器decoder的输入,来生成类似的、但是但不完全相同于训练数据的新数据,也许是我们从来没见过的数据,作用类似GAN。

深度学习《再探AE和VAE的区别》_第2张图片

图中的向量e服从于正态分布N(μ_noise,σ_noise),它的作用就是在正态分布N(m,σ)中进行随机采样。

m,σ都是从数据X中产生的,也就是数据X会产生一个正太分布,这个正太分布的所有采样值,在理论上都是可以重建出X’,根据采样值的不同,重建出的X’是类似但不完全相同的。因此可以产生出一些新的数据,所以VAE更具有创造性,更偏向于数据生成。

假如我们有M个数据X,Latent code是N维度的,经过AE后训练的好的话,也就是在N为空间上产生了M个点,所以我们只能把这些数据作为压缩降维和取噪,数据集可以通过AE网络参数保存下来,以前我们需要保存M个数据,现在只需要保存对应的latent code和decoder即可。

但是如果是VAE的话,每个数据都会产生N个维度的正态分布,最后就会有M个N维度的正态分布,这样一来就类似于GMM(高斯混合模型),这样的铺的范围就大多了啊,我们可以在GMM上随意采样一个点,都可以生成一些高质量的数据出来,所以VAE更适合于数据生成。

三:总结
AE试图找到数据X 到latent code的单值映射,用于压缩降维和去噪。
VAE试图找到数据X到某个正太分布的映射,偏向于用于数据的生成。

你可能感兴趣的:(深度学习,AE,VAE)