GAN - 生成对抗网络

简介

GAN的基本原理其实非常简单,这里以生成图片为例进行说明。假设我们有两个网络,G(Generator)和D(Discriminator)。正如名字那样,生成网络负责生成,辨别网络负责分辨生成的质量,然后不断的生成与辨别,最后达到效果。GAN第一篇要看的paper当然是Ian Goodfellow大牛的Generative Adversarial Networks(arxiv:https://arxiv.org/abs/1406.2661),这篇paper算是这个领域的开山之作。当然GAN是谁最新发明的我们不做争论。

生成与对抗

GAN在训练过程中,生成网络G的目标就是尽量生成真实的图片去欺骗判别网络D。而D的目标就是尽量把G生成的图片和真实的图片分别开来。这样,G和D构成了一个动态的“博弈过程”。
最后博弈的结果是什么?以图片为例,在最理想的状态下,G可以生成足以“以假乱真”的图片G(z)。对于D来说,它难以判定G生成的图片究竟是不是真实的,因此D(G(z)) = 0.5。但是实际训练的时候这个状态一般是不可达的。上面的过程使用数学公式来表达:


分析这个公式:

  1. 整个式子由两项构成。x表示真实输入,z表示输入G网络的噪声,而G(z)表示G网络生成
  2. D(x)表示D网络判断真实图片是否真实的概率(因为x就是真实的,所以对于D来说,这个值越接近1越好)。而D(G(z))是D网络判断G生成的图片的是否真实的概率
  3. G的目的:上面提到过,D(G(z))是D网络判断G生成的图片是否真实的概率,G应该希望自己生成的图片“越接近真实越好”。也就是说,G希望D(G(z))尽可能得大,这时V(D, G)会变小。因此我们看到式子的最前面的记号是min_G(G在min的下面)
  4. D的目的:D的能力越强,D(x)应该越大,D(G(x))应该越小。这时V(D,G)会变大。因此式子对于D来说是求最大max_D(D在max的下面)

上面的过程使用图来描述:


如何训练GAN

首先看论文给出的方法:


尤其注意红方框的标注,我们分为两步:

  1. 首先训练D,D是希望V(G, D)越大越好,所以是加上梯度(ascending)
  2. 然后训练G时,V(G, D)越小越好,所以是减去梯度(descending),整个训练过程交替进行

损失函数

这点有些许不同,以往的深度神经网络都是一个损失函数。但是GAN是类似于encoder-decoder模型,生成网络一个损失函数,对抗网络一个损失函数。这两个损失函数可以是一样的,也可以分别定义成不同的函数。但是这两个函数在训练的时候会有一些问题:

在训练的初期,G 想要骗过 D,变化十分的缓慢,而上面的函数,趋势和下面的是一样的,都是递减的。但是它的优势是在 D(x) 接近 0 的时候,梯度很大,有利于训练,在 D(x) 越来越大之后,梯度减小,这也很符合实际,在初期应该训练速度更快,到后期速度减慢。于是优化修改的损失函数:

可以提高训练速度。在实际中还可以开始的学习率较高,训练进行中,逐步减少学习率。

CNN与GAN的结合

在图像领域我们知道CNN是最好的深度模型,所以早早的就有人做了尝试,如:DCGAN是这方面最好的尝试之一(论文地址:[1511.06434] Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks

DCGAN的基本原理和GAN是一样的,它只是把上述的G和D换成了两个卷积神经网络(CNN)。但不是直接换就可以了,DCGAN对卷积神经网络的结构做了一些改变,以提高样本的质量和收敛的速度,这些改变有:

  1. 取消所有pooling层。G网络中使用转置卷积(transposed convolutional layer)进行上采样,D网络中用加入stride的卷积代替pooling
  2. 在D和G中均使用batch normalization
  3. 去掉FC层,使网络变为全卷积网络
  4. G网络中使用ReLU作为激活函数,最后一层使用tanh
  5. D网络中使用LeakyReLU作为激活函数

至于为什么是这些改变,可以自己动手做一下实验,看看效果,或许自己做的实验改变的地方比论文还要好。而且现在的GAN网络在随机噪声输入方面,使用先验的图片,当然这也是跟GAN的任务有关。如果任务是一种风格的图片到另外一种图片的生成,那么预先的输入就不是随机噪声,而是预先的风格图片。

优秀的GAN网络

目前在图像领域有几个我关注比较优秀的GAN项目如下:

  • CycleGAN
    CycleGAN可谓是大名鼎鼎,风靡一时。项目:https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix
    CycleGAN是非结对的训练,训练集分为两个集合,A和B训练过程可以是A->B,也可以是B->A。不论哪一种,结果都是可以互转的。例如A集合可以是线条的猫图画,B集合是实物猫的图片,那么训练完成之后,就可以将手绘的猫图片转成真实的猫图片。

  • StyleGAN
    项目:https://github.com/NVlabs/stylegan
    StyleGAN是一种图像生成器,取决于你的输入。然后可以在生成的lacent space上修改向量方向,最后达到编辑图片的效果。可以编辑图片的嘴部笑、年龄、性别等等。

  • pix2pixHD
    项目:https://github.com/NVIDIA/pix2pixHD
    pix2pixHD是pix2pix改进超级加强版,有些效果与CycleGAN相似。但是pix2pixHD是结对训练的,必须要一一对应的数据。pix2pixHD的代码结构与CycleGAN的代码都是相似的。其实在CycleGAN中就有pix2pix模型的训练代码,可以说他们是出自一波人之手。CycleGAN的作者Jun-Yan Zhu也是pix2pixpix2pixHD的核心参与者。

GAN论文与代码实现

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容