首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【干货】GAN调研:多极扩展(跨域和条件的GAN扩展模型调研)

【干货】GAN调研:多极扩展(跨域和条件的GAN扩展模型调研)

作者头像
WZEARW
发布2018-04-12 10:23:45
8980
发布2018-04-12 10:23:45
举报
文章被收录于专栏:专知专知

本文授权转载于知乎专栏作者:陈乐天

https://zhuanlan.zhihu.com/p/32103958

【摘要】
本文关注跨域(cross-domain)和条件(conditional)的GAN扩展模型调研。这个方向解决的问题是,当加入更多变量/域时,如何让这些变量互相影响,改变GAN的输出。
我在这里称为二级(bi-polar)或多极扩展(multi-polar extension),本文默认读者了解最基本的GAN模型。

▌目录


1/【GAN朋友圈】

2/【二极扩展:太极宗师☯️】

  • ALI [1]
  • BiGAN [2]
  • CycleGAN [3]
  • DualGAN [4]
  • DiscoGAN [5]
  • CGAN [6]
  • CoGAN [7]
  • InfoGAN [8]

  • 3/【多极扩展:更多变量/复杂条件】
    • GMAN [9]
    • FusionGAN [10]
    • Triple GAN [11]
    • Triangle GAN [12]
    • SGAN [13]
  • 4/【讨论:未来工作】
  • 5/【参考文献/

▌GAN朋友圈


首先总览一下本文涉及方向的一些论文和他们之间的关系,箭头代表参考关系或者演化关系

俩个色块表示不同程度的扩展(bi-polar/两极,multi-polar/多极)

GAN朋友圈

▌二极扩展:太极宗师


本节关注把GAN扩展到两个判别器或生成器的工作。今年一共涌现5篇思路类似的论文。

首先是发于ICLR‘17的:

  • ALI [1]
  • BiGAN [2]

然后是ICCV‘17和ICML‘17的:

  • CycleGAN [3]
  • DualGAN [4]
  • DiscoGAN [5]

核心思想上,前俩篇一样,后三篇一样,感觉看了几篇一样的文章。想问:“你们到底是谁抄谁的?!”。场面一度很

大写的尴尬?

当然同时发现一个模型在科研界并不是第一次。这也从侧面反映GAN这个坑里的人多。

  • 太极思想

为什么我叫他们太极宗师,因为他们的核心思想,就是我们祖传的太极!

太极阴阳图(又称「太极两仪图」、「两仪图」)

周敦颐《太极图说》:"无极而太极,太极动而生阳,动极而静,静而生阴,静极复动,一动一静,互为其根,分阴分阳。两仪立焉。"

接下来的模型,基本都是俩组GAN,互相转换,互相制约,达到平衡。模型的图和公式都有一种对称美。

  • ALI

链接:http://link.zhihu.com/?target=https%3A//arxiv.org/pdf/1606.00704.pdf

ALI

ALI的想法是:

  • (左侧)数据通过decoder网络

生成隐藏变量,一般是正态分布的噪音数据

  • (右侧)隐藏变量通过encoder网络

生成数据。

  • (中间)encoder和decoder网络分别都可以产生数据对

,用一个判别器来区分是来自encoder还是来自decoder。

理想情况下,如果糊弄住判别器,那么无论从那边生成都能得到一样的数据对,也就说明encoder和decoder同时训练完善了。但是这里的encoder和decoder没有直接显式的互相制约。

  • BiGAN

链接:http://link.zhihu.com/?target=https%3A//arxiv.org/pdf/1605.09782.pdf

BiGAN和ALI的想法比较一样,这也是为什么后面的论文会一起提到这俩个方法的原因。

BiGAN

感觉是ALI的图,用了另外一个画法。其中灰色区块表示观察得到的数据。

这里的G就是encoder网络, E 是decoder网络,其他的都一样。

ALI和BiGAN都存在encoder和decoder不能显式地互相制约的情况。

  • CycleGAN

链接:http://link.zhihu.com/?target=https%3A//arxiv.org/pdf/1703.10593.pdf

下图(a)描述了总览模型图,X可以通过G网络函数来Y,Y可以通过 F网络函数生成X。已经开始像太极了。(b)(c)分别描述了CycleGAN的俩个循环的迭代步骤:

  • (b): 样本 x 通过G函数生成Y域里的一个样本

然后

通过F 函数生成一个样本

。理想情况下,x和

应该是一个东西,那么x和

的差别就是一个error或者loss,计作

  • (c): 类似的,样本 y通过F函数生成X域里的一个样本

,然后

通过G函数生成一个样本

。理想情况下,y与

应该是一个东西,那么y与

的差别就是一个error或者loss,计作

CycleGAN

上述俩部分的loss合体称为重构误差

,而最终CycleGAN的loss由如下几部分组成:

,而最终CycleGAN的loss由如下几部分组成:

首先,这里的每一个单独的步骤(b或c)都可以看作一个auto-encoder或者encoder/decoder模型。试想,这和分别做俩个单独的auto-encoder模型有什么区别呢?

显然,这里俩个单独的步骤之间有了互相的约束,因为俩个生成器都在过程中对称式地使用了,以至于G和F函数是不能随便生成的,它们必须得保证生成的样本能够反映俩个域的转换关系,而不是随便生成一种映射。

  • DualGAN

链接:http://link.zhihu.com/?target=https%3A//arxiv.org/pdf/1704.02510.pdf

再说DualGAN,DualGAN的图示更生动,但是看起来比较不简练,不如CycleGAN。这里以一张男人头像和一张女人头像作为不同域的代表:

DualGAN

  • 男人头像经过橙色箭头线的转换流程:首先从左侧中间的男人头像开始,转换到女人头像所在域(右中,变黑了!),然后再转换回自己的域(左下),原本的男人头像(左中)和经过两次转换的男人头像(左下),理想情况下应该是一样的,那么他们之间的差别就是error或者loss
  • 女人头像经过蓝色箭头线的转换流程:首先从右下开始,转换到男人头像所在域(左上),然后再转换回自己的域(右上,变白了点!),原本的女人头像和经过两次转换的女人头像,理想情况下应该是一样的,那么他们之间的差别就是error或者loss

类似的,DualGAN也用上述俩个差异值作为重构loss,再加上GAN本身的loss,组成了最终的loss。

  • DiscoGAN

链接:http://link.zhihu.com/?target=https%3A//arxiv.org/pdf/1703.05192.pdf

DiscoGAN的图例画法可能是这三者里最差的了。为了类比,我依然会保持2步走的队形来说,这里是用来头发的颜色来描述不同的域:

DiscoGAN

同样的,DiscoGAN也首先采用上述两种重构误差作为第一个loss,再和2组GAN本身的loss合体,组成最终的loss。

但是这篇文章,还有一个亮点在于它的合成数据分析,非常值得相关研究借鉴:

DiscoGAN合成数据结果

在合成数据实验中,作者以B域为例分析了DiscoGAN的效果。”x“表示B域数据

,彩色的圈圈表示A域的数据转换到B域的数据

。最好的情况,圈圈应该紧密的团结在对应的“x”周围。四张子图:

  • (a)初始情况:圈都初始化为一团了,x的类散的比较开。
  • (b)标准GAN效果:圈的情况比较糟糕,有的类都重叠了。
  • (c)标准GAN,加上重构误差:已经分的比较开了,但是仍然有一些重叠。
  • (d)DiscoGAN:效果相对最好。(主角光环:谁让我是主角!)
  • 小小结

感觉讲了三篇一样的论文,就是例子不一样嘛。哎~

说不定,继续这些工作,我们可以发一篇论文,就叫Yin Yang GAN (阴阳干),或者Tai-Chi GAN(太极干),甚至,我们还可以参考更详细的八卦图,成功将科学引入玄学?

接下来的几篇高引用的文章,也是下一大节几个多极扩展模型的基础。

  • CGAN

链接:http://link.zhihu.com/?target=https%3A//arxiv.org/pdf/1411.1784.pdf

CGAN

全称Conditional GAN,听名字就知道了,CGAN主要关注加入条件后的模型。整个模型也非常干(jian)净(dan)。上面的图基本是从GAN稍作改动的来。关键点在于条件。

作为输入的条件由 y 表示,可以是任何信息,比如是数据的类别标签(class label)

  • CoGAN

链接:http://link.zhihu.com/?target=https%3A//arxiv.org/pdf/1606.07536.pdf

CoGAN

全称Couple GAN,听名字就知道,就是一对儿GAN。这又是一个非常干(jian)净(dan)的模型。如图,上排和下排分别代表俩个相互独立的GAN。在训练过程中,共享参数(有竖线的地方)。共享参数的地方有:

  • Generator网络:离输入噪音

比家里近的几层。G网络输出是

即生成数据

  • Discriminator网络:离输出比较近的几层。D网络的输入是

即判别结果

为什么这么做呢?因为作者觉得,这些地方能代表网络里的高层次语意(high level semantics),类似的如同VGG Net我们总用最后一层来代表图片。

通过这种训练,大家能互相学习对方的抽象表达,以至于影响最终的输出。例子:

两个GAN的输出开始混淆,或者说开始学习彼此

  • InfoGAN

链接:http://link.zhihu.com/?target=https%3A//arxiv.org/pdf/1606.03657.pdf

这篇论文没有模型图,只能干讲。首先infoGAN的立意很好,是为了能学习到可解释的数据特征。比如MNIST分类任务,我要学习到的特征和分的类有关,这样我学出来的特征,我能掌握,继而能控制输出。

作者在GAN的loss之上加了一个限制,即控制的变量

和生成的数据

的互信息(Mutual Information)达到最大。但是我们必须

,因为互信息表示为:

那怎么办?作者采用了variational approximation技术,具体叫Variational Information Maximization,其实VAE也用这一套。也就是另起一个数据分布函数

,使得它能够尽可能的接近

InfoGAN的MNIST生成结果,控制各种变量实现精准输出。分别对(c)旋转角度(d)笔粗 进行控制

▌多极扩展:更多变量/复杂条件



本节关注如何把GAN扩展到多个条件,或者是判别器/生成器。

既然扩展到两极,都可以产生很强的功能,那么更多呢?毕竟三个臭皮匠要厉害点。

  • Generative Multi-adversarial Networks

链接:http://link.zhihu.com/?target=https%3A//openreview.net/pdf%3Fid%3DByk-VI9eg

一个比较简单的想法是,扩展discriminator,即一个生成器,多个判别器。

GMAN

那问题是什么?就是如何让这些后宫里的判别器,别打起来了。作者主要讨论了对所有的判别器取max或者mean的方案。max一般认为比较激进,因为如果一个比较强的判别器老是返回负反馈,生成器都不知道表现了,所以有时候还是要温良点,用mean吧。作者采用一些光滑函数(如softmax,exp)来手动调控到max还是到mean。

  • Fusion GAN

链接:http://link.zhihu.com/?target=https%3A//arxiv.org/abs/1712.01456

上一大节中,讲到了擅长打太极的CycleGAN,DualGAN,DiscoGAN。

这三者都是在域之间转换,Fusion GAN在此上,提出了一个新问题:我们是否可以把俩个域做混合?就像一对父母,生下的孩子,一半像父亲一半像母亲。作者的应用场景是混合音乐曲风,来生成新的音乐。【官方demo】

FusionGAN

如图,A和B分别是输入数据,而F是生产混合的域。

FusionGAN限制条件示意

在训练好的三组GAN的基础上,有一些限制来促进一半对一半的混合:

  • 如果F生成的抽样数据的分布,距离A和B都是一样的,就是一个完美的混合。否则,就会加上一个惩罚。
  • 如果F离那个中点(如图的黑圈)比较远,会加一个惩罚。
  • 训练A的判别器时候,

。B也有类似限制。

  • Triple GAN

链接:http://link.zhihu.com/?target=https%3A//arxiv.org/pdf/1709.06548.pdf

Triple GAN

Triple GAN的出现是为了解决了,半监督学习下的条件生成。

Triple GAN可以看作是俩个Conditional GAN的合体。

上述俩种生成,控制比例,再和真实数据,一起丢给判别器。

  • Triangle GAN

链接:http://link.zhihu.com/?target=https%3A//arxiv.org/pdf/1709.06548.pdf

看到这个图是不是感觉有点熟悉,因为上文的ALI用的就这个风格的。

Triangle GAN的出现是为了能做半监督学习下的生成。

在ALI的基础上,Triangle GAN多加了一个判别器

,用来判断数据对

是从真数据(图中间顶部)从而来,还是生成的,无论是部分生成了 x或者y。其他的部分基本照搬ALI。

Triangle GAN

  • Structured GAN

链接:http://link.zhihu.com/?target=https%3A//arxiv.org/pdf/1711.00889.pdf

Structured GAN

总体和Triangle GAN解题思路相似。

▌讨论:未来工作



按照本文的多极扩展,是否可以把极数扩展到N,然后泛化为统一理论?

GAN也进入了画圈时代,好似Topic Modeling。

GAN的工作太多了,以至于排名第一的搜集GAN论文的Github主页Really-Awesome-GAN,都说:“你们论文太多了,我不整了。”

▌参考文献


[1] ALI - Adversarially Learned Inference,[PDF],ICLR‘17

http://link.zhihu.com/?target=https%3A//arxiv.org/pdf/1606.00704.pdf

[2] BiGAN - Adversarial Feature Learning,[PDF],ICLR‘17

http://link.zhihu.com/?target=https%3A//arxiv.org/pdf/1605.09782.pdf

[3]CycleGAN - Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks,[PDF],ICCV’17

http://link.zhihu.com/?target=https%3A//arxiv.org/pdf/1703.10593.pdf

[4] DualGAN - Unsupervised Dual Learning for Image-to-Image Translation,[PDF],ICCV‘17

http://link.zhihu.com/?target=https%3A//arxiv.org/pdf/1704.02510.pdf

[5] DiscoGAN - Learning to Discover Cross-Domain Relations with Generative Adversarial Networks,[PDF],ICML‘17

http://link.zhihu.com/?target=https%3A//arxiv.org/pdf/1703.05192.pdf

[6] CGAN - Conditional Generative Adversarial Nets,[PDF]

http://link.zhihu.com/?target=https%3A//arxiv.org/pdf/1411.1784.pdf

[7] CoGAN - Coupled Generative Adversarial Networks,[PDF],NIPS‘16

http://link.zhihu.com/?target=https%3A//arxiv.org/pdf/1606.07536.pdf

[8] infoGAN - InfoGAN: Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets,[PDF],NIPS‘16

http://link.zhihu.com/?target=https%3A//arxiv.org/pdf/1606.03657.pdf

[9] GMAN - GENERATIVE MULTI-ADVERSARIAL NETWORKS,[PDF],ICLR‘17

http://link.zhihu.com/?target=https%3A//openreview.net/pdf%3Fid%3DByk-VI9eg

[10] FusionGAN - Learning to Fuse Music Genres with Generative Adversarial Dual Learning,[PDF],ICDM’17

http://link.zhihu.com/?target=https%3A//arxiv.org/abs/1712.01456

[11] Triple GAN - Triple Generative Adversarial Nets,[PDF],NIPS‘17

http://link.zhihu.com/?target=https%3A//arxiv.org/pdf/1709.06548.pdf

[12] Triangle GAN - Triangle Generative Adversarial Networks,[PDF],NIPS‘17

http://link.zhihu.com/?target=https%3A//arxiv.org/pdf/1709.06548.pdf

[13] SGAN - Structured Generative Adversarial Networks,[PDF],NIPS‘17

http://link.zhihu.com/?target=https%3A//arxiv.org/pdf/1711.00889.pdf

[14] Yin and yang - Wikipedia

http://link.zhihu.com/?target=https%3A//en.wikipedia.org/wiki/Yin_and_yang

[15] nightrome/really-awesome-gan

http://link.zhihu.com/?target=https%3A//github.com/nightrome/really-awesome-gan

原文链接:https://zhuanlan.zhihu.com/p/32103958

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-12-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 专知 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档