对抗生成网络(Generative Adversarial Network)

本课程是针对李宏毅教授在Youtube上上传的机器学习课程视频《Introduction of Generative Adversarial Network (GAN)》的学习笔记。

课程视频地址

Introduction

某人在Quara上的问题:非监督学习领域最近有没有什么突破性的进展呢?

Lecun大神亲自回答:对抗训练可能是有史以来(since sliced bread,有一个好东西出现的意思)最酷的东西。

又有人问:最近在深度学习领域最近有没有什么突破性的进展呢?

Lecun大神答:Generative Adversarial Network (also called GAN), it’s the most interesting idea in the last 10 years in ML in my opinion。

  • How to pronounce “GAN” (2333)

Outline

Basic Idea of GAN

我们通常用GAN来生成某些东西,即需要一个生成器(Generator),他可以是一个神经网络(NN),或者任意一个函数。

那生成器怎么生成东西呢?我们会喂给生成器一个向量,这样它就会给定一个我们想要的输出。至于输出什么就取决于我们需要什么。比如我们需要输出图片,那么实际上生成器就应该输出一个能表示图片的矩阵。也可以让生成器输出一句话/sequence。

如下图:我们用二次元人脸生成作为例子。

输入给生成器的向量的不同维度代表了输出结果的某些特征。比如假设第一个维度代表了人物头发的长度,那么其值越大,生成的人物的头发就越长。或者假设倒数第二维决定头发是不是蓝色;或者假设最后一个维度代表嘴巴是张开的还是闭着的。

GAN的突出部分在于:它还引入了另一个角色–判别器(Discriminator)。

判别器本身也是一个NN。当将一个图片输入判别器,它会输出一个标量(scalar),表示该图片有多大可能性是人画出来的,值越大表示它认为这张图片越可能是人画的,反之则认为是机器生成的。

能不能比较准确地判别取决于判别器学得好不好。

那为什么我们会需要判别器呢?

Ian Goodfellow(GAN的作者)给了一个很符合直觉的比喻:

印假钞的犯罪者会尽量制作和真钞尽可能想象的钞票(生成器),而警察会尽力去判别哪些钞票是真的,哪些是假的(判别器),而针对警察鉴别能力的提升,犯罪者也会不断针对性地提高印假钞的技术,使得警察无法鉴别真钞和假钞,即骗过警察。

这里,李老师也举了一个例子:

枯叶蝶可以很好地伪装成一个枯萎的树叶的样子,但它的祖先其实并不是这样,而是和普通的蝴蝶一样颜色五彩缤纷,还很鲜艳。但是枯叶蝶一直有一个天敌鸟,天敌鸟会认为彩色的明显是蝴蝶,不会是枯叶的那种棕色的。于是由于物竞天择,枯叶蝶进化了一代,变成了棕色,但是不久后,天敌鸟也学到了,它进一步了解到,蝴蝶是不会有叶脉的的。于是又由于物竞天择,枯叶蝶生成了叶脉纹路,进化成了今天的样子。而,天敌鸟也跟着进化…两者的进化不断交替,不断升级…

在这个例子中,枯叶蝶扮演了生成器的角色,而天敌鸟扮演了判别器的角色。

那生成器和判别器的互动是怎么进行的呢?

如下图,一开始,生成器NN的参数是随机的,给它输入,它一般会产生很混乱、不符合期望的图片。而我们会给它喂人造的图片(real images),让它学习人画的图片是什么样子的,有哪些特征?然后判别器就来判断:某张图片是生成器生成的,还是人画的。

比如,可能第一代的生成器(v1)很弱,只能生成黑白的图片,而人造图片都是彩色的,所以判别器只需要看图片是黑白还是彩色就能准确判断。

那么接着,生成器就会有针对性地进化到第二代(v2),进化的方向是能够骗过当前的判别器,比如第一代的判别器靠颜色来判断,那生成器就会开始也生成彩色图片。

而判别器发现它会被生成器伪造的的彩色图片骗过后,它也会开始有针对性地进化,即开始尝试发现真实彩色照片和生成器伪造彩色照片之间的差别,比如说可能伪造的照片都没有嘴巴,而真实的照片都有。于是,判别器开始根据有无嘴巴来判断。

那么,接着,生成器也继续进化(v3),开始画嘴巴…两者如此互相交替循环地针对对方的新能力进行进化,互相角力,促使彼此都做得更好。(这也就是对抗生成网络中的“对抗”(adversarial)一词的由来)

  • 那为什么不能说生成器和判别器是合作互相促进呢?

答:其实也可以,只是说法问题。我们再看下面的例子:

把生成器看做学生,判别器看做老师。老师知道什么样的人物画是好的,什么样的不好,而学生就要和老师学习判别的能力。

那么一年级的学生(v1)什么都不会,画的东西给一年级老师看,一年级老师指出来不行,没有眼睛。

然后学生学了一年画眼睛后,把画给现在的二年级的老师看,以为二年级的老师会表扬他画得好,结果二年级的老师说,不行,没有嘴巴。

然后学生又学了一年画嘴巴….

这样,学生画的越来越好,老师也变得越来越严格。

这样,我们又有了两个新的问题:

  • 为什么生成器不能自己照着真实图片学,非要判别器和它对抗呢?
  • 为什么判别器不自己做呢?(自己画好的东西)

接下来,我们将逐渐尝试回答上述两个问题。

老师自己用GAN做的成果:

  • update 100次:

  • update 1000次:生成器学到了要产生眼睛

  • update 2000次:生成器学到了要产生嘴巴

  • update 5000次:生成器学到了动漫人物要有水汪汪的大眼睛

  • update 10000次:

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值