本文授权转载于知乎专栏作者:陈乐天
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扩展到两个判别器或生成器的工作。今年一共涌现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的想法是:
(左侧)数据通过decoder网络 生成隐藏变量,一般是正态分布的噪音数据
(右侧)隐藏变量通过encoder网络 生成数据。
(中间)encoder和decoder网络分别都可以产生数据对,用一个判别器来区分是来自encoder还是来自decoder。
理想情况下,如果糊弄住判别器,那么无论从那边生成都能得到一样的数据对,也就说明encoder和decoder同时训练完善了。但是这里的encoder和decoder没有直接显式的互相制约。
链接:http://link.zhihu.com/?target=https%3A//arxiv.org/pdf/1605.09782.pdf
BiGAN和ALI的想法比较一样,这也是为什么后面的论文会一起提到这俩个方法的原因。
感觉是ALI的图,用了另外一个画法。其中灰色区块表示观察得到的数据。
这里的G就是encoder网络, E 是decoder网络,其他的都一样。
ALI和BiGAN都存在encoder和decoder不能显式地互相制约的情况。
链接: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,计作
上述俩部分的loss合体称为重构误差,而最终CycleGAN的loss由如下几部分组成:
,而最终CycleGAN的loss由如下几部分组成:
首先,这里的每一个单独的步骤(b或c)都可以看作一个auto-encoder或者encoder/decoder模型。试想,这和分别做俩个单独的auto-encoder模型有什么区别呢?
显然,这里俩个单独的步骤之间有了互相的约束,因为俩个生成器都在过程中对称式地使用了,以至于G和F函数是不能随便生成的,它们必须得保证生成的样本能够反映俩个域的转换关系,而不是随便生成一种映射。
链接:http://link.zhihu.com/?target=https%3A//arxiv.org/pdf/1704.02510.pdf
再说DualGAN,DualGAN的图示更生动,但是看起来比较不简练,不如CycleGAN。这里以一张男人头像和一张女人头像作为不同域的代表:
男人头像经过橙色箭头线的转换流程:首先从左侧中间的男人头像开始,转换到女人头像所在域(右中,变黑了!),然后再转换回自己的域(左下),原本的男人头像(左中)和经过两次转换的男人头像(左下),理想情况下应该是一样的,那么他们之间的差别就是error或者loss
女人头像经过蓝色箭头线的转换流程:首先从右下开始,转换到男人头像所在域(左上),然后再转换回自己的域(右上,变白了点!),原本的女人头像和经过两次转换的女人头像,理想情况下应该是一样的,那么他们之间的差别就是error或者loss
类似的,DualGAN也用上述俩个差异值作为重构loss,再加上GAN本身的loss,组成了最终的loss。
链接:http://link.zhihu.com/?target=https%3A//arxiv.org/pdf/1703.05192.pdf
DiscoGAN的图例画法可能是这三者里最差的了。为了类比,我依然会保持2步走的队形来说,这里是用来头发的颜色来描述不同的域:
同样的,DiscoGAN也首先采用上述两种重构误差作为第一个loss,再和2组GAN本身的loss合体,组成最终的loss。
但是这篇文章,还有一个亮点在于它的合成数据分析,非常值得相关研究借鉴:
在合成数据实验中,作者以B域为例分析了DiscoGAN的效果。”x“表示B域数据,彩色的圈圈表示A域的数据转换到B域的数据。最好的情况,圈圈应该紧密的团结在对应的“x”周围。四张子图:
(a)初始情况:圈都初始化为一团了,x的类散的比较开。
(b)标准GAN效果:圈的情况比较糟糕,有的类都重叠了。
(c)标准GAN,加上重构误差:已经分的比较开了,但是仍然有一些重叠。
(d)DiscoGAN:效果相对最好。(主角光环:谁让我是主角!)
感觉讲了三篇一样的论文,就是例子不一样嘛。哎~
说不定,继续这些工作,我们可以发一篇论文,就叫Yin Yang GAN (阴阳干),或者Tai-Chi GAN(太极干),甚至,我们还可以参考更详细的八卦图,成功将科学引入玄学😅
接下来的几篇高引用的文章,也是下一大节几个多极扩展模型的基础。
链接:http://link.zhihu.com/?target=https%3A//arxiv.org/pdf/1411.1784.pdf
全称Conditional GAN,听名字就知道了,CGAN主要关注加入条件后的模型。整个模型也非常干(jian)净(dan)。上面的图基本是从GAN稍作改动的来。关键点在于条件。
作为输入的条件由 y 表示,可以是任何信息,比如是数据的类别标签(class label)
链接:http://link.zhihu.com/?target=https%3A//arxiv.org/pdf/1606.07536.pdf
全称Couple GAN,听名字就知道,就是一对儿GAN。这又是一个非常干(jian)净(dan)的模型。如图,上排和下排分别代表俩个相互独立的GAN。在训练过程中,共享参数(有竖线的地方)。共享参数的地方有:
Generator网络:离输入噪音比家里近的几层。G网络输出是 即生成数据
Discriminator网络:离输出比较近的几层。D网络的输入是 即判别结果
为什么这么做呢?因为作者觉得,这些地方能代表网络里的高层次语意(high level semantics),类似的如同VGG Net我们总用最后一层来代表图片。
通过这种训练,大家能互相学习对方的抽象表达,以至于影响最终的输出。例子:
链接: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也用这一套。也就是另起一个数据分布函数,使得它能够尽可能的接近。
▌多极扩展:更多变量/复杂条件
本节关注如何把GAN扩展到多个条件,或者是判别器/生成器。
既然扩展到两极,都可以产生很强的功能,那么更多呢?毕竟三个臭皮匠要厉害点。
链接:http://link.zhihu.com/?target=https%3A//openreview.net/pdf%3Fid%3DByk-VI9eg
一个比较简单的想法是,扩展discriminator,即一个生成器,多个判别器。
那问题是什么?就是如何让这些后宫里的判别器,别打起来了。作者主要讨论了对所有的判别器取max或者mean的方案。max一般认为比较激进,因为如果一个比较强的判别器老是返回负反馈,生成器都不知道表现了,所以有时候还是要温良点,用mean吧。作者采用一些光滑函数(如softmax,exp)来手动调控到max还是到mean。
链接:http://link.zhihu.com/?target=https%3A//arxiv.org/abs/1712.01456
上一大节中,讲到了擅长打太极的CycleGAN,DualGAN,DiscoGAN。
这三者都是在域之间转换,Fusion GAN在此上,提出了一个新问题:我们是否可以把俩个域做混合?就像一对父母,生下的孩子,一半像父亲一半像母亲。作者的应用场景是混合音乐曲风,来生成新的音乐。【官方demo】
如图,A和B分别是输入数据,而F是生产混合的域。
在训练好的三组GAN的基础上,有一些限制来促进一半对一半的混合:
如果F生成的抽样数据的分布,距离A和B都是一样的,就是一个完美的混合。否则,就会加上一个惩罚。
如果F离那个中点(如图的黑圈)比较远,会加一个惩罚。
训练A的判别器时候, 。B也有类似限制。
链接:http://link.zhihu.com/?target=https%3A//arxiv.org/pdf/1709.06548.pdf
Triple GAN的出现是为了解决了,半监督学习下的条件生成。
Triple GAN可以看作是俩个Conditional GAN的合体。
上述俩种生成,控制比例,再和真实数据,一起丢给判别器。
链接:http://link.zhihu.com/?target=https%3A//arxiv.org/pdf/1709.06548.pdf
看到这个图是不是感觉有点熟悉,因为上文的ALI用的就这个风格的。
Triangle GAN的出现是为了能做半监督学习下的生成。
在ALI的基础上,Triangle GAN多加了一个判别器,用来判断数据对是从真数据(图中间顶部)从而来,还是生成的,无论是部分生成了 x或者y。其他的部分基本照搬ALI。
链接:http://link.zhihu.com/?target=https%3A//arxiv.org/pdf/1711.00889.pdf
总体和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
-END-
专 · 知
人工智能领域主题知识资料查看获取:【专知荟萃】人工智能领域26个主题知识资料全集(入门/进阶/论文/综述/视频/专家等)
同时欢迎各位用户进行专知投稿,详情请点击:
【诚邀】专知诚挚邀请各位专业者加入AI创作者计划!了解使用专知!
请PC登录www.zhuanzhi.ai或者点击阅读原文,注册登录专知,获取更多AI知识资料!
请扫一扫如下二维码关注我们的公众号,获取人工智能的专业知识!
请加专知小助手微信(Rancho_Fang),加入专知主题人工智能群交流!
点击“阅读原文”,使用专知!