0.引言
最原始的GAN发表在NIPS2014上,GAN的思想是非常有趣的,以前我们在设计网络的时候,都是利用一个目标函数来指导一个网络的训练。然而GAN利用两种目标函数来指导两个结构(生成器与判别器)的博弈对抗,让两者互相促进。
举个简单的对抗博弈进步的例子-假币与银行,在初期的时候,由于银行并没有认识到假币的存在,因此一些很简单的假币就可能会被银行误收;随着科技进步,开始有了水印 、紫外光辨别真伪,在这样的条件下,旧的假币就无法通过银行的检验了,但是旧的假币可以知道自己不能通过检验的原因在于水印等不合格,于是假币就在这些方面进行改进,以此想要继续骗过银行,因此银行和假币就处在不断地博弈进步之中 。
那么现在我们来看一下GAN的工作原理,实际上GAN网络分为两部分-生成器与判别器,生成器的目的就是造假,而判别器的目的就是判别真假,当生成器和判别器可以正确对抗博弈进化时,随着判别器越来越强,生成器也会越来越强,而做生成任务时,我们需要的就是生成器部分。
1.生成器
生成器比较复杂,首先我们并不知道怎样做生成这件事,因为我们并不知道用什么去生成,对于传统的神经网络,我们知道输入和输出,而对于生成任务来说,我们希望生成器可以给我们和训练数据属于同种的数据,简单来说就是,如果我们给定的数据是海边风景照,那么我们希望生成器可以给我们生成海边风景照,但是海边风景照数量非常庞大,因为涉及的因素非常多,比如天气、沙滩状况、涨潮情况,稍微变动一点就是不同的数据了,所以我们不可能收集所有的海边风景照。
那么GAN是如何解决这个问题的呢,对于实际数据数量庞大而我们所拥有的数量有限问题,GAN的做法是从分布的角度去看待数据,
因为以往我们在设计网络的时候,习惯于对输入进行特征提取再到具体的任务(如分类任务就是先进行特征提取在进行特征组合最后做类别判定),整体上来说数据的维度在整个过程中是
2.判别器
判别器的结构相对简单,主要进行判别真假的任务,可以参考在初学神经网络时候所写的分类网络,把分物体类别的问题转化为分物体是真实还是虚假的问题。