【干货】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

原文发布于微信公众号 - 专知(Quan_Zhuanzhi)

原文发表时间:2017-12-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据小魔方

R语言可视化——数据地图离散百分比填充(环渤海)

今天跟大家分享如何以百分比形式填充离散分段数据地图。 案例用环渤海三省二市的地理数据。 library(ggplot2) library(maptools) l...

3234
来自专栏崔庆才的专栏

自然语言处理全家福:纵览当前NLP中的任务、数据、模型与论文

组合范畴语法(CCG; Steedman, 2000)是一种高度词汇化的形式主义。Clark 和 Curran 2007 年提出的标准解析模型使用了超过 400...

7620
来自专栏ATYUN订阅号

Python机器学习的练习二:多元线性回归

在第1部分中,我们用线性回归来预测新的食品交易的利润,它基于城市的人口数量。对于第2部分,我们有了一个新任务——预测房子的售价。这次的不同之处在于我们有多个因变...

5186
来自专栏Petrichor的专栏

论文阅读: YOLOv2

本文获得了CVPR 2017 Best Paper Honorable Mention:

2904
来自专栏AI研习社

利用摇滚乐队学习TensorFlow,Word2Vec模型和TSNE算法

学习“TensorFlow方式”来构建神经网络似乎是开始机器学习的一大障碍。在本教程中,我们将一步一步地介绍使用Kaggle的Pitchfork数据构建Band...

1692
来自专栏PPV课数据科学社区

【学习】SPSS聚类分析全过程

案例数据源: 有20种12盎司啤酒成分和价格的数据,变量包括啤酒名称、热量、钠含量、酒精含量、价格。数据来自《SPSS for Windows 统计分析》dat...

3716
来自专栏AI2ML人工智能to机器学习

非均衡数据处理--如何评价?

在分类问题中, 常见的数据预处理包括: 数据缺失(Missing), 奇值处理(Outlier), 数据变换(Transformation), 特征选择(Fea...

881
来自专栏专知

伯克利新论文 | 合成GAN(Compositional GAN)

【导读】伯克利大学今日发表一篇最新论文,改进生成对抗网络GAN,提出了一个名为“Compositional GAN”的模型,将GAN框架中的对象组合建模为一个s...

1420
来自专栏自学笔记

Aggregation Model : Blending , Bagging , Boosting

比如现在有一支股票,你不知道是跌还是涨。你有T个friends,每一个friend对应的建议分别是g1,g2,g3...gn,那么你应该怎么选择建议?

1303
来自专栏计算机视觉战队

人脸检测与识别的趋势和分析

现在打开谷*公司的搜索器,输入 “face detect”,估计大家都能够想到,都是五花八门的大牛文章,我是羡慕啊!(因为里面没有我的一篇,我们实验室的原因,至...

38412

扫码关注云+社区

领取腾讯云代金券