https://github.com/hindupuravinash/the-gan-zoo GAN的“动物园”
Generative Adversarial Network,由 Ian Goodfellow 首先提出,是深度学习中这两年中最热门的东西。
在GAN出现之前,我们已经有了GAN的部分模型:
生成式模型和对抗模型。很明显,将两者结合起来的做法是非常明智且跨时代意义的。
1.Generation
什么是生成(generation)?就是模型通过学习一些数据,然后生成类似的数据。让机器看一些动物图片,然后自己来产生动物的图片,这就是生成。
以前就有很多可以用来
生成的技术了,比如 auto-encoder(自编码器),结构如下图:
变分自编码器的结构如下 :
生成器的问题:由于自编码器的目标是让重建误差越来越小,但我们可以看出,其中1个pixel的error,自编码器是觉得ok的,我们是觉得不行,另外6个pixel的误差我们觉得能接受的,自编码器不能接受。所以误差所在的位置很重要,而生成器并不知道这一点,自编码器缺少理解像素点之间的空间相关性的能力。还有一点,就是自编码器所产生的图像是模糊的,不能够产生十分清晰的图像,如下图所示:
所以说目前单凭生成器是很难生成非常高质量的图像的。
2、Discriminator
鉴别器的问题:鉴别器的训练是对真样本进行奖励,对负样本进行压低,也就是图中的绿色抬高,蓝色压低,这就造成了问题,我们要训练出好的鉴别器,训练过程需要随机采样出除绿色图像外所有的假样本,这样鉴别器就只会对真实样本的分布取高分,对其他分布取低分,这样才能训练的好,在高维空间中,这样的负样本采样过程其实是很难进行的,而且还有一个问题,生成样本的过程要枚举大量样本,才有可能出现一个与真样本分布相符的样本,通过求那个最大化概率问题求出最好的样本,这实在是过于繁琐。
生成器/鉴别器的优点缺点 以及GAN的优势所在:
但是GAN也是又缺点的,它是一种隐变量模型,可解释没有生成器和鉴别器强,另外GAN是不好进行训练
GAN
VECTOR 每一个维度代表一个特征 判断真假
(NSGAN)
和上面的表达式的效果是同样的(MMGAN)
在trainD的时候就是在train一个Binary Classifier
learning D Repeat k times
learning G Repeat 1 times
在李宏毅GAN系列视频里,第四课69:00有一段可视化train的过程,可以看一看。
其他比较出名的GAN
DCGAN
CycleGAN