Generative Adversarial Networks
GAN(generative adversarial networks)指生成对抗网络
GAN包含一个Generator(以下简称
GAN就是
用图像生成作为例子,就是
而
那么GAN作为整体的最优化问题该如何去表示?
判别器
再考虑企图去欺骗
所以我们得到了GAN的目标函数
这是一个极大极小博弈的过程,在具体实现中这是迭代的,轮流进行
在每次迭代中:
我们首先固定
在
迭代直到模型达到最优,也就是
这就像是一个什么都不懂的幼儿园小朋友在学画画,那么幼儿园老师只要一个很低的判定标准就能够给小红花的,看到大致一个圆脸,和两个眼睛就能好好表扬一通,那么小朋友们通过这个标准就知道画一个圈中间扣两个洞是好的,等到了一年级,二年级,老师也会根据学生的水平提高评判标准,标准的更新则带来了学生水平的提高,相互促进
接下来我们需要证明,最优化问题存在唯一解,并且满足
首先将期望展开为积分
=
以上积分等式原始GAN论文认为可通过
来证明,来源于测度论中的
我们求解取得极值时的参数
可以得到
GAN的目标是使得
至此我们得到了原文中的第一条推论
For G fixed, the optimal discriminator D is
$D^*G(x)=\frac{P{data}(x)}{P_{data}(x)+P_G(x)}$
也就是说在固定
证明
作者在文中提出定理
The global minimum of the virtual training criterion
is achieved if and only if . At that point, achieves the value
所以
=
=
=
=
=
因为
所以
=
=
=
当
证毕,当且仅当生成数据分布等于真实数据分布时得到最优的Generator
现在我们明白了GAN的工作原理和目标函数的正确性
那么我们来解决一些理论上的问题,为什么
若
图片1 -> auto-encoder -> code -> NN Decoder -> 图片2
即我们需要一个编码器将图片转化为vector,然后NN试图将这个图片还原,也就是图片1和图片2要尽可能相似
但是这样产生的
VAE在这个问题上有所改进,在code进入NN之前加入了noise,希望图片仍然能被还原,这样的约束提高了网络creat的能力,但是没有对抗的加入,VAE的图片会相对的比GAN产生的模糊
还有一个问题是,缺乏监督者,因为想要input和output尽量像未必会使得结果向需要的靠拢,pixel的比对仍然属于component level的,每个神经元在同一个layer难以相互影响,那么达成目标可能需要更深的网络,并且容易造成过拟合
那么如果想采用
那么考虑Discriminator的训练,我们发现我们只有正样本(真实的图片),则最大的问题就是如何寻找负样本(noise?画的差的图?),我们需要一个质量好的负样本才能训练Discriminator
这个训练可以采用迭代的方法
先用不太好的负样本(noise)和正样本得到第一代的Discriminator,然后一代的Discriminator就可以生成质量略微提升的负样本,然后用这个负样本和Data去训练下一代的Discriminator
问题在于得到负样本的过程相当于求解argmax problem,这是一个不同情况极其个例的求解问题,难度比较高(模型未知),甚至极大似然估计难以得到结果
因此有了GAN,Generator本质就是学习如何解argmax problem的解题机器,更容易一般化问题(不需要知道模型,直接通过NN解),Discriminator本质就是两个数据分布的距离计算器
GAN是一种structured learning,Generator是一种Bottom Up方法,只能从component层面学习生成,Discriminator是Top Down方法,能够对整体evaluate,两者结合产生了更好的效果(生成图片更清晰)
但是GAN也存在难训练,易崩溃的问题,在学习过程中,生成器可能会发生退化,反复生成相同样本,导致判别器指向相似的地方,使得训练难以继续,而前面提到的不需要预知模型带来优点的同时也带来了模型过于自由的问题,使得在图片质量较高,pixel较多情况下GAN变得非常不可控