aoi学院

Aisaka's Blog, School of Aoi, Aisaka University

深度学习-GAN与VAE

Generative Adversarial Networks 及其变体

生成对抗网络是近几年最为经典的生成模型的代表工作,Goodfellow的经典工作。通过两个神经网络结构之间的最大最小的博弈游戏然后生成模型。下面是原始GAN与一些GAN的变体。

GAN(Generative Adversarial Nets)

模型判别模块与生成模块的损失的定义:

网络结构是:

该结构的最大的问题有两个:一个是难以训练,一个是模型输出图片单调(model collapse)。


CGAN(Conditional Generative Adversarial Nets)

模型判别模块与生成模块的损失的定义:

该模型结构如下图所示。与原始的网络结构的最大的变化便是增加了条件向量。


WGAN(Wasserstein GAN)

该论文是对GAN之前提到的问题的分析,结构上并没有具体的变化。通过调整损失函数来实现训练稳定与抑制model collapse。

其中对参数的截断操作是因为Wasserstein距离中的近似计算中的条件约束导致的。


EBGAN(Energy-based Generative Adversarial Network)

原始的GAN的辨别模块是简单的神经网络。这里使用基于能量的神经网络进行真实样本与虚假样本分布的距离衡量。EBGAN的判别器是一个自编码器。那么EBGAN就是将判别器的输入输出求一个重构误差(rescontruction error),也就是判别器的输出,也即所说的能量(energy)。

我们希望对于真实样本的重建误差小,同时希望由生成器生成的图片的能量小。那么D的损失函数中要最小化 -D(G(z)),就是最大化D(G(z)), 也就是要抬高下图中的蓝色点对应的曲线,但是如果没有margin的约束,可以无限制的抬高,所以我们需要一个m,即margin,就是当抬高到m这个距离后就没有惩罚了,所以此时loss就将不再忙着抬高,而是去将real对应的曲线也即D(x)拉小。generator做的事情就很好理解了,因为real对应的energy是小的,所以希望生成的图片的energy也是小的。

其中PT是编码后的结果的余弦相似度。网络结构如下图:


ACGAN(Auxiliary Classifier GANs)

ACGAN模型与CGAN类似。生成器都是输入类标签c和噪声e。在判别模块中不再输入类标签,另外在输入样本是否为真的同时,利用另一个分类器来判断输入样本的所属类别。

网络结构就是在条件GAN上加入了类别标签。


InfoGAN(Information Maximizing Generative Adversarial Nets)

模型将噪声拆分成两个部分,一部分是噪声信号,另一部分就是潜在信息。

网络结构如图:


Variational Auto-Encoders 及其变体

通过编码过程生成目标分布的均值与方差,然后通过采样的技巧来复原目标样本分布,并且使用复原的分布和真实分布的距离来进行参数的调节。

VAE(Variational Auto-Encoders)

变分自编码器的经典形式与网络结构:


Conditional Variational Auto-Encoders(CVAE)

条件自编码器的构建和CGAN的构建是类似的。


GAN与VAE的异同

  1. GAN与VAE两个生成模型的Loss推导都可以放在联合概率密度的KL散度的统一框架下进行讨论,而且都得到了与原始推导相同的结果。
  2. GAN与VAE所设计的隐变量不同,结构不同,导致了近似处理的方法不同,但它们的出发点是相同的(上述第一点)。
  3. GAN最后的Loss反映的是生成样本与真实样本的概率流型之间的距离,而VAE最后的Loss反映的是Auto-Encoder的输出x’与原来数据点x两点之间的距离。因而导致了生成效果的不同,以及训练难度的不同。

参考资料

https://zhuanlan.zhihu.com/p/51476125
VAE 原理
hwalsuklee/tensorflow-generative-model-collections
summer:《Conditional Image Synthesis with Auxiliary Classifier GANs》阅读笔记