本篇为生成对抗网络(Generative Adversarial Network)的基础知识,内容简单,但是较为重要,划线部分重点看。建议大家先认真看本篇文章,其中公式推导等复杂过程没有展现,对初学者来说看懂会用就行。在下一篇文章中我会在实际应用中继续讲解,但看明白代码的前提是要弄明白生成对抗网络的过程,以及每一步的意义后面才看得懂。后作写好之后附上链接。


意义:

生成对抗网络(Generative Adversarial Network):提出的意义是虽然我们前面学习了很多种神经网络,但是对于图片的生成虽然效果不错,但是人眼仍然可以一下分辨出来,因此提出生成对抗网络(Generative Adversarial Network)希望可以达到更好的效果。

下面我们简单讲一下生成对抗网络,让大家有个初步印象与概念:有一个画画初学者G,以及一个鉴赏初学者D。一开始需要D不断学习能将G的画作和原作区分开,当D学成之后,不断训练G,使得G的水平不断提升,最终趋于原作,即使是学成的D也难以将其区分开


原理:

根据我们上面讲的例子,其中G代表的是生成网络(Generator),它的职责就是不断学习后生成图片,最终目的就是让鉴赏者区分不出来是不是G产生的。D代表的是判别网络(Discriminator),它的职责就是在前期不断训练,能区分出G和原作,训练好之后需要让G不断依据D来更新自己的参数,最终让D识别不出来。

实际上G是类似于自编码器中解码器部分的,给定一个向量可以生成图片。但是我们需要明白G来自于正态分布中的随机抽样,这个是规定,大家记住就好。

再来看D,鉴赏家看上去很高大上,但是我们最终只需要判断是不是原作而已,因此我们可以将D看作一个二分类网络,把复杂的问题简单化。

我在上面提到了G和D的训练顺序,我们实际上是希望第一步:生成器G参数在不改变的情况下,不断训练判别器D,使其能最大程度区分开。第二步:判别器固定不动,调整生成器,尽量让判别器区分不出来,因此要求G输入判别器输出的结果尽可能与真相近,并以此为损失更新参数。


网络的选择:

上面讲到G是类似于自编码器中解码器部分的,我们要将一个像素很小的图片逐步生成为一个正常的能看的图片,一般使用多个全连接层或者多个转置卷积

转置卷积又称反卷积,它的推导比较复杂,在此处作用不大,大家仅需要掌握转置卷积可以放大图像,并且效果还不错,在生成对抗网络中使用较多就足够了。

D的网络模型选择卷积层提取特征,最后由全连接层输出二分类。