Variational AutoEncoders(VAE)

针对GAN的改进

GAN有两个缺陷:

  • 只能判断生成的图像是不是一个真的图像,但不知道生成的是什么的图像,很有可能生成一个看起来像是真实图像却没有意义的图片
  • 每次用来训练的noise向量都是随机的,无法产生一些特定的图片

针对AutoEncoder的改进

AutoEncoder并不是一个生成式的模型,它更多的只是一种能够记住输入特征的模型,再用特征向量来reconstruct输入。
Variational AutoEncoders(VAE)_第1张图片
但是AutoEncoder更多的是对于已经出现过的模式记忆和重构,对于没有没有出现过的模式则无法预测。
因为没有提取出一个高度抽象的整体的特征,每一个输入提炼出的feature的分布是散乱的无意义的,无法使用feature来得到一个未知的输入。即无法认为的生成一些相似的样本。

VAE

对提取出的feature分布加上限制,规定其是一个满足unit normal的分布,在loss中加入其与unit normal的KL-divergence,迫使提取的feature接近unit normal

loss = KL(feature, unit_normal) + diff(generate, real)

那么在生成图片时,从unit normal中随机采样的样本回合之前的训练数据share一部分信息,使得生成的sample接近训练时的实际数据

Reparameterization Trick

不像标准自编码器那样产生实数值向量,VAE的编码器会产生两个维度为n的向量:一个是均值向量,一个是标准差向量。使用均值加上偏差来表示满足正态分布的量。n即是latent的维度。
Variational AutoEncoders(VAE)_第2张图片

下图是对一个训练完毕,latent dimension为2的VAE模型进行测试的结果,横纵坐标分别是latent两个维度上的取值:
loss中的一部分使得generate接近输入,而相近的generate是由接近的latent产生的,从图上也可以得到印证
Variational AutoEncoders(VAE)_第3张图片

优缺点

VAE可以通过编码解码的步骤,直接比较重建图片和原始图片的差异,但是GAN做不到。
VAE的一个劣势就是没有使用对抗网络,所以会更趋向于产生模糊的图片。

你可能感兴趣的:(深度学习,神经网络,自编码)