参考文献:
主要参考这篇文章 Generative Adversarial Networks, link
为了方便说明和研究,我这里只是设计了一个非常简单的模型,对高斯分布样本进行生成。不过从下面的实验中,我还是发现了一些非常有用的特点,可以加深我们对GAN网络的了解。
GAN原理
具体原理可以参考上面的文献,不过在这里还是大概讲一下。
其实GAN的原理非常简单,它有2个子网络组成,一个是Generator,即生成网络,它以噪音样本为输入,通过学习到的权重,把噪音转变(即生成)为有意义的信号;一个是Discriminator,即判别网络,他以信号为输入(可以来自generator生成的信号,也可以是真正的信号),通过学习来判别信号的真假,并输出一个0-1之间的概率。可以把Generator比喻为一个假的印钞机,而Discriminator则是验钞机,他们两个互相竞争,使得印钞机越来越真,同时验钞机也越来越准。但是最终我们是希望Generator越来越真,而Discriminator的输出都是0.5,即难以分辨~~
而在训练的时候,则分两个阶段进行,第一个阶段是Discriminator的学习,此时固定Generator的权重不变,只更新Discriminator的权重。loss函数是: