目录
1.Introduction of Generative Models
2.Generative Adversarial Network(GAN)
Anime Face Generation(动漫人物头像生成)
Basic Idea of GAN 是 adversarial 对抗
3.Theory behind GAN (GAN 的理论部分)
5.Evaluation of Generative Models
Fréchet Inception Distance(FID)
1.Introduction of Generative Models
Network as Generator
生成式对抗网络(GAN, Generative Adversarial Networks )是一种深度学习模型,是近年来复杂分布上无监督学习最具前景的方法之一。模型通过框架中(至少)两个模块:生成模型(Generative Model)和判别模型(Discriminative Model)的互相博弈学习产生相当好的输出。
Why distribution?
什么时候我们会特别需要处理这种问题呢? 同样的输入,有多种不同可能的输出-创造性。
1.video prediction
2.Drawing
3.Chatbot
2.Generative Adversarial Network(GAN)
GAN是一种Generator model
Anime Face Generation(动漫人物头像生成)
直接通过一个例子来介绍什么是GAN,以及GAN要做什么,怎么实现的。假设我们现在的任务是让机器生成二次元人物的头像,假设现在是 unconditional generation,就是没有输入x,只有输入的一个随机变量z。
判别器(Discriminator)
在GAN里面一个特别的地方就是,除了generator以外,我们要多训练一个discriminator。discriminator的作用是,输入一张图片,输出是一个数值,这个数值越大就代表现在输入的这张图片越像是真实的二次元人物的图像。而discriminator的架构完全是你自己设计的,你可以用CNN,也可以用 transformer 等等,只要能够产生出你想要的输入输出,就可以了。
Basic Idea of GAN 是 adversarial 对抗
GAN的基本思想就是两个神经网络分别是generator和discriminator,其中生成器每次生成图像然后鉴别器会去判定判别生成器生成的图像 ,两者不断地生成判别相互对抗相互提升,到最后生成器生成的图像质量不断提升,判别器判别的能力也不断提升,这就是生成对抗式网络的基本思想,互相制约互相提高。
Algorithm GAN的具体实现过程
接下来介绍一下GAN的具体实现过程是怎样的,generator和discriminator,他们就是两个network,我们假设generator跟discriminator的参数都已经初始化过了。
步骤一: 固定 generator G 的参数,只更新discriminator D
初始化完以后,接下来训练的第一步是,固定住你的generator的参数,只训练你的discriminator。
步骤二: 固定 discriminator D 的参数,只更新generator G
我们训练完discriminator以后,接下来固定住discriminator,改为训练generator。
接下来就是重复这两个步骤反复的训练discriminator和generator,期待discriminator跟generator都可以做得越来越好,直到generator产生图片的效果能让我们比较满意。
3.Theory behind GAN (GAN 的理论部分)
Our objective
GAN中生成器的目标是将输入的正态分布数据经过生成网络变成类似真实标签分布的数据,而为了让分布尽可能相似就必须最小化两个数据分布之间的距离。
GAN中鉴别器的目标
既然生成器的目标是最小化生成数据和真实数据之间的距离那么鉴别器就是最大化两者的距离,针对如何计算生成数据和真实数据之间的距离,引入了JS散度的概念来计算,事实上也可以看成是交叉熵乘一个负号,如下图所示。之前在计算网络输出和真实数据时往往都是一一对应的标签并且直接计算两者的L1或L2距离即可方便判断两个的差距,而在GAN中生成数据和真实数据往往不是一一对应,这就是JS divergence的巧妙之处,不需要知道生成数据和真实数据的具体形式,只需要通过鉴别器输出值和JS即可。
4.Tips for GAN
使用JS作为距离的缺点
使用JS divergence的很大缺点就是在于如果生成数据和真实数据采样不够多,两者之间没有任何重叠部分没有交集,那么JS计算出来的距离将恒等于log2,这将会直接导致generator无法提高 ,两者如果没有重叠即假设让divergence处于最大时即判别器最理想的时候,那么这时候计算出来的就是log2。
Wasserstein distance (推土机距离)
推土机距离也称作Wasserstein distance,它最直观的好处就是当生成数据和真实数据无任何交集的时候它不会像JS一样处于恒等值的情况,如图所示,这就使得generator可以一直往好的方向去发展而不是直接停止。
WGAN
WGAN中使用的就是推土机距离代替了JS距离,如图所示即为WGAN中新的距离公式:
其中对于判别器,WGAN作出了限制即必须满足1-lipschitz的条件,该条件的目的是为了让生成数据和真实数据之间不会相差太大使得推算出来的推土机距离不会过大否则无任何意义,而WGAN中让判别器满足1-lipschitz的条件的方法其实相对较为简单如下图所示:
当然现在也有很多其他1-lipschitz的方法比谱归一化Spectral Normalization就是很好的例子,其有效的让梯度在各个地方都小于1防止梯度消失。比如Improved WGAN,Spectral Normalization。
5.Evaluation of Generative Models
Diversity-Mode Collapse
Diversity-Mode Dropping
Diversity
Inception Score(IS):Good quality, large diversityLarge IS
一张图片classify分布越集中,quality越高。
一堆图片classify分布越平均,diversity越大。
GAN生成的图像如何进行评价,这里使用到让其他网络来识别生成图像来得到正确分类的分布这样的一个间接判别方法,典型的方法就是Inception Score (IS),通过判断分类的正确性来评价。
Fréchet Inception Distance(FID)
IS方法有很大的问题就是,它可以判断生成图像的正确类型但无法保证生成图像的多样性或者质量,比如生成图像如果都是同一个人的图像这样的正确性自然高,或者虽然多样性有但是在生成图像细节上没有得到保证,因此这都是潜在的问题,这就有了(FID)Fréchet Inception Distance,其主要的思想是通过最后输出分类的倒二层的特征来进行判别。
6.Conditional Generation
条件GAN简单来说就是额外输入一段向量规定生成的图像需要包含什么特征,这就是条件GAN,其中额外输入的向量就是一段文字即将一段文字转换成vector输入generator和discriminator中 。
除此之外,条件GAN还可以应用到语音中,即输入是一段语音让GAN根据语音生成想象到的画面图像。
7.Learning form unpaired data
Cycle GAN
Cycle GAN是典型风格转化生成的GAN,其主题思想是训练四个网络并形成一个Cycle输入一幅图像生成另一个风格图像再让生成图像生成回原来的图像风格,这样的一个形式就是CycleGAN的主要思想,事实上它在训练四个网络包括两个生成器和两个判别器。