看了Ian大神的论文,学习一下GAN。

一、基本介绍

生成对抗网络由两部分组成:Generatative model 和 Discriminative model,以下分别简称为G 和 D。

在GAN中,训练集是无标签数据集data,G接受数据z,产生G(z),而D判定G产生的数据是来自于真实数据data还是由G产生的。在训练过程中,双方不断优化自己,直到D无法再区分真实数据和G产生的数据,这时,双方达到了那什均衡。可以说,G相当于造假方,而D相当于警察,GAN的训练过程就是双方进行博弈的过程。

下面给出GAN的minimax公式,其中D(x)代表x来自正式数据集的概率。

GAN学习笔记:生成对抗网络

我们先来看优化D的部分。我们可以看到,当x来自真实数据集data时,D(x)应该越接近1越好,而当处理G产生的数据时,D(G(z))应该越接近0越好,所以式子中,log(D(x)),log(1-D(G(z)))应该越大越好。

再来看优化G的部分,这里只要看式子的第二项就可以了。G作为生成方,它所要做的就是迷惑D,让D将自己生成的数据误认为成来自真实数据集的数据,所以D(G(z))应该越接近1越好,即log(1-D(G(z)))应该越小越好。

此外,在优化G时,由于在学习初期,G的表现较差,D很容易区分出G产生的数据,即D(G(z))=0, 导致log(1-D(G(z)))可能会出现饱和的问题。在出现这种问题时,可以转而用最大化log(D(G(z)))来优化G。

论文中的这张图片比较直观地展示了整个过程。

GAN学习笔记:生成对抗网络

图中黑线表示真实数据集data,绿线表示G生成的数据,蓝线表示D的判定。这里可以看到G生成的数据逐渐向真实数据data靠拢,直至D真假难分的过程。

二、算法

GAN学习笔记:生成对抗网络

在训练过程中,先训练D,训练k次,再训练G,训练1次,如此循环。

三、数学推导

下面证明当D达到最优时

GAN学习笔记:生成对抗网络

我们回到之前的公式,写出它的期望形式。

GAN学习笔记:生成对抗网络

对于这个式子,可以通过对D(x)求导,令其导数等于0,从而命题得证。