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


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

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


-END-

专 · 知

人工智能领域主题知识资料查看获取【专知荟萃】人工智能领域26个主题知识资料全集(入门/进阶/论文/综述/视频/专家等)

同时欢迎各位用户进行专知投稿,详情请点击

诚邀】专知诚挚邀请各位专业者加入AI创作者计划了解使用专知!

请PC登录www.zhuanzhi.ai或者点击阅读原文,注册登录专知,获取更多AI知识资料

请扫一扫如下二维码关注我们的公众号,获取人工智能的专业知识!

请加专知小助手微信(Rancho_Fang),加入专知主题人工智能群交流!

点击“阅读原文”,使用专知

展开全文
Top
微信扫码咨询专知VIP会员