Introduction of Generative Adversarial network
生成式对抗网络
1、Basic idea
Generation
- 图像生成
- 语句生成
输入vector,输入一个随机的向量,output image/sentences
We will control what to generate latter- Conditional generation
GAN is a neural network,or a function
将vector输入到一个nn或者function里,生成了一个高维的向量,即image
这个高维向量的每一个维度都代表着这个image的一些特征,比如头发的长度,如右上,比如头发的颜色,如左下,比如人物张嘴,如右下
同时会训练一个Discriminator
实质上也是个NN,或者是一个function
输入一个图片,经过discriminator输出一个scalar,数值越大代表产生的图片的质量越高,越realistic,1.0为最大值
generator和discriminator的关系
将generator看作枯叶蝶,它本身是正常的蝴蝶,discriminator是它的天敌,为了防止被天敌吃掉,枯叶蝶会不断进化,随着枯叶蝶远离天敌的进化,discriminator也在进化。最终枯叶蝶进化到了一个现在的样子
generator 和 discriminator 一起进化的过程:
每一代的generator都会骗过上一代的discriminator,所以他们之间做对抗,只能不断地进化。
这是GAN——adversarial的由来
算法部分
-
初始化一个生成器和判别器
对于每次训练的迭代: -
1、固定生成器,更新判别器的参数,如果是real images就给高分,如果是生成器的output就给低分。分别离0,1越接近越好
-
2、固定判别器,调节生成器的参数,把vector输入生成器,把生成器输出输入到判别器上。通过调节生成器的参数,希望同一个input对于判别器给的分数可以增大。
将生成器和判别器当成一个大的network,对生成器里的hidden layer做梯度上升
对于生成器输出的图片也可以当作large network里的一层hidden layer。
如果不固定判别器里的layer,则为了提升结果,可以直接对判别器最后一层调整他的权值
对于GAN算法的具体解释
训练D
- 从数据集采样m个样本向量
- 从一个分布采样m个噪声向量
- 输入生成器,产生m个生成的高维向量
- 固定生成器,调节判别器的参数 θ d \theta_d θd最大化输出结果。
- 最大化的公式:最大化真实的image的所有平均值,对于生成器生成图片的分数与1相减,取这一个相减项越大越好,即希望D(x)越小越好。对 θ d \theta_d