生成对抗网络浅析

一、概述

GAN(Generative Adversarial Nets,对抗生成网络),近两年在深度学习领域十分的火爆,cvpr2018有近三分之一的论文与GAN相关。最近新闻上非常火爆的AI换脸技术等就是基于GAN,可以说GAN赋予了机器以创造力。GAN的开山之作是Ian J. Goodfellow在2014年于NIPS上发表的一篇文章:Generative Adversarial Nets以及官方源码(点击超链接可下载)。

如果让你设计一个模型,让神经网络能够生成一个手写数字的图片,你会怎么设计呢?Ian J. Goodfellow就给出了一种十分巧妙的模型。在这个模型中包含一个生成模型G和一个判别模型(就是一个分类器)D。同时训练这两个模型,G的任务就是生成一张图片但是至于生成的图片是不是符合要求的就不知道了,而D的任务就是判断G生成的图片与要求的图片的差距,然后将误差传回让G学习。在网上看到一个比较通俗的解释:G就是一个造假币的团伙,D就是专门查假币的警察。首先团伙造出一些假币来骗警察,但是警察一下就查出来了,那么犯罪团伙就提升造假币的水平,警察也在提升甄别假币的水平。最终犯罪团伙就拥有了高超的造假币的能力,足以以假乱真。

《生成对抗网络浅析》
你能不能上面的图中哪些是机器生成的,哪些是真实的图片?最右边一列是真实的吗?答案是上面的图片都是机器生成的!由左至右是训练的时间越久,可以看到当训练足够的时间,人眼似乎已经开始难以分辨真假了。

二、再深一步

我们来看一下GAN的损失函数吧:
min ⁡ G max ⁡ D V ( D , G ) = E x   p d a t a ( x ) [ l o g D ( x ) ] + E z   p z ( z ) [ l o g ( 1 − D ( G ( z ) ) ) ] \min_{G}\max_{D}V(D,G)=\mathbb{E}_{x~p_{data}(x)}[logD(x)]+\mathbb{E}_{z~p_z(z)} [log(1-D(G(z)))] GminDmaxV(D,G)=Ex pdata(x)[logD(x)]+Ez pz(z)[log(1D(G(z)))]

(markdown中符号~显示不出来,很难受)式中:x是真实样本,z为用来让G生成的虚假样本的一个序列。

上述公式乍一看很复杂,但是仔细研究一下会发现其实非常简洁而且含义明确。首先这是一个最大最小化问题,不是一步就能完成的,首先固定生成器G不变来更新D。我们先看 max ⁡ D \max_{D} maxD首先判别器D的输出只有1或0,即如果真实样本x与假样本z相同则输出1否则则输出0。毫无疑问我们希望判别器的判断越准确越好,即在公式的第一项中希望D(x)为1,也就是使得第一项变大,同时希望D(G(z))为0,同样使得第二项也达到最大。同样的,我们固定判别器D不变来优化G,首先因为D已经固定所以公式第一项不变,那么对于生成器G来说希望生成的数据被D判定为真实样本,即D(G(z))=1,即为上述公式的最小值。
所以,这样看来上述公式把一个复杂的过程用一个非常简洁的公式表达出来了,不得不佩服作者的数学功底。

需注意的是我们说的固定G或者D并不是先对D训练,等D训练好后就不再训练D而只要训练G了。实际上是同时对两个网络进行训练的,论文中是将对D的训练放在内层循环中,当训练一轮D后即开始训练一轮G,然后再训练一轮D如此往复。放一张论文里的伪代码。
《生成对抗网络浅析》
在训练初期,由于G的生成能力还很差,所以根据上面的优化公式很难给G足够梯度使之收敛,所以可以在训练初期使用最大化 l o g D ( G ( z ) ) logD(G(z)) logD(G(z))使G快速收敛。

我们在深入的理解一下GAN是如何学习的,再放一张原文中的图:
《生成对抗网络浅析》
图中黑色虚线是真实样本x的分布,绿色实线是G根据z生成的分布,而蓝色的虚线表示样本被判别为真实样本的概率,下方还给出了x与z的映射关系,即 x = G ( z ) x=G(z) x=G(z)。经过不断的学习,生成的数据已经可以学习到真实样本的分布了,判别器判断为真实样本的概率恒定为0.5,也就是说判别器已经无法分辨出是真实的样本还是生成的样本了。

三、GAN背后的数学原理

在我们赞叹此算法精妙之余,我们考虑一下算法中的优化公式是如何导出的呢?网上有一篇博客写的很好,我这里就直接借用了。原文地址
《生成对抗网络浅析》
《生成对抗网络浅析》
《生成对抗网络浅析》

    原文作者:犯罪团伙问题
    原文地址: https://blog.csdn.net/qq_31929377/article/details/88533449
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞