查看原文
其他

我的肩上是风,风上是闪烁的星群 | 原创精选

2017-01-12 李嫣然 集智俱乐部

李嫣然

香港理工大学在读博士生,研究方向为自然语言处理中的语义表达和语言生成,致力于利用深度学习、认知科学等相关领域的方法和成果探究人类语言习得和语言表达的奥秘。





2016年10月7日中午,来自四面八方的一群人齐聚东直门银座。淅淅沥沥的秋雨并没有浇息这群科学爱好者的热情,每个人都满心期待着即将开启的头脑的激荡之旅。而后来的几天充实的行程和舒适的环境甚至更超越了我们的期待!

研读营的第一天上午,我们的主要发起人张江老师给我们介绍了这次的主题和背景知识。张江老师本身丰富的授课经验和对知识透彻的理解,使得他的讲授深入浅出。从每一个理论背后的起源思想,到科学逸闻,再到图像化的理解和真实世界的隐喻,无不如繁星一般,既散落一片,又自有联结。因为讲解的平易近人,大家都非常容易触类旁通,纷纷提出了与自己领域相关的问题和启发。热烈的上午讨论结束后,组织方带领我们到酒店大厅留下合影,而我们也戏称这张照片可能会在100年后,成为像如今看到的1927年索尔维会议上的大合影一样的历史珍贵影像。       

下午,我作为主讲人之一,为大家介绍了复杂网络在机器学习中的进展。在真实世界中,尽管大部分时候,有监督学习比无监督的能获得更好的训练效果。但有监督学习需要的数据标注(label)是相对少的。所以研究者们从未放弃去探索更好的无监督学习策略,希望能从海量的无标注数据中学到对于这个真实世界的表示(representation)甚至知识,从而去更好地理解我们的真实世界。评价无监督学习好坏的方式有很多,其中生成任务就是最直接的一个。只有当我们能生成/创造我们的真实世界,才能说明我们是完完全全理解了它。

“WhatI cannot create, I do not understand.” 

—— Richard Feynman


然而,生成任务所依赖的生成式模型(generative models)往往会遇到两大困难。首先是我们需要大量的先验知识去对真实世界进行建模,其中包括选择什么样的先验、什么样的分布等等。而建模的好坏直接影响着我们的生成模型的表现。另一个困难是,真实世界的数据往往很复杂,我们要用来拟合模型的计算量往往非常庞大,甚至难以承受。

而在过去一两年中,有一个让人兴奋的新模型,则很好地避开了这两大困难。这个模型叫做 Generative AdversarialNetworks(GAN),由[1]提出。在原始的 GAN paper [1]中,作者是用博弈论来阐释了 GAN 框架背后的思想。每一个 GAN 框架,都包含着一对模型——一个生成模型(G)和一个判别模型(D)。因为 D 的存在,才使得 GAN 中的 G 不再需要对于真实数据的先验知识和复杂建模,也能学习去逼近真实数据,最终让其生成的数据达到以假乱真的地步——D 也无法分别——从而 G 和 D 达到了某种纳什均衡。[1] 的作者曾在他们的 slides 中,给出过一个比喻:在 GAN 中,生成模型(G)和判别模型(D)是小偷与警察的关系。G 生成的数据,目标是要骗过身为警察的判别模型(D)。也就是说,G 作为小偷,要尽可能地提高自己的偷窃手段,而D作为警察也要尽可能地提高自己的业务水平防止被欺骗。所以,GAN框架下的学习过程就变成了一种生成模型(G)和判别模型(D)之间的竞争过程——随机从真实样本和由生成模型(G)生成出的“假样本”中取一个,让判别模型(D)去判断是否为真。所以,体现在公式上,就是下面这样一个minmax的形式。

然而,GAN 虽然不再需要预先建模,但这个优点同时也带来了一些麻烦。那就是尽管它用一个 noise z 作为先验,但生成模型如何利用这个 z,是无法控制的。也就是说,GAN 的学习模式太过于自由了,使得 GAN 的训练过程和训练结果很多时候都不太可控。为了稳定 GAN,后来的研究者们分别从 heuristic、模型改进和理论分析的角度上提出了许多训练技巧和改进方法。比如在原始 GAN论文[1] 中,每次学习参数的更新过程,被设为 D 更新 k 回,G 才更新 1 回,就是出于减少 G 的“自由度”的考虑。

另一篇重量级的关于 GAN 训练技巧的研究的工作便是DeepConvolutional Generative Adversarial Networks(DCGAN)[6]。[6] 中总结了许多对于 GAN 这的网络结构设计和针对 CNN 这种网络的训练经验。比如,他们用strided convolutional networks 替代传统 CNN 中的 pooling 层,从而将GAN 中的生成模型(G)变成了 fully differentiable 的,结果使得GAN 的训练更加稳定和可控。

为了提高训练的稳定性,另一个很自然的角度就是改变学习方法。把纯无监督的 GAN 变成半监督或者有监督的。这便可以为 GAN 的训练加上一点点束缚,或者说加上一点点目标。[2] 中提出的Conditional Generative Adversarial Nets(CGAN)便是十分直接的模型改变,在生成模型(G)和判别模型(D)的建模中均引入 conditionalvariable y,这个 y 就是数据的一种 label。也因此,CGAN 可以看做把无监督的 GAN 变成有监督的模型的一种改进。这个简单直接的改进被证明非常有效,并广泛用于后续的相关工作中。


第三种改进 GAN过于自由的思路,和第一种会比较相似。既然太难控制 GAN 的学习,不如我们就拆解一下,不要让 GAN 一次学完全部的数据,而是让 GAN 一步步完成这个学习过程。具体到图片生成来说就是,不要让 GAN 中的生成模型(G)每次都直接生成一整张图片,而是让它生成图片的一部分。这个思想可以认为是DeepMind也很有名的工作 DRAW 的一种变形。DRAW 的论文[3] 开篇就说,我们人类在绘制一张图片时,很少是一笔完成的。既然我们人类都不是这样,为什么我们要寄希望于机器可以做到呢?论文[4] 中提出的 LAPGAN 就是基于这个思想,将 GAN 的学习过程变成了 sequential “序列式”的。具体上,LAPGAN 采用了Laplacian Pyramid 实现了“序列化”,也因此起名做 LAPGAN。值得一提的是,这个 LAPGAN 中也有“残差”学习的思想(与后来大火的ResNet也算是有一点关联)。在学习序列中,LAPGAN 不断地进行downsample和upsample操作,然后在每一个 Pyramid level 中,只将残差传递给判别模型(D)进行判断。这样的 sequential + 残差结合的方式,能有效减少 GAN 需要学习的内容和难度,从而达到了“辅助” GAN 学习的目的。


另一个基于 sequential 思想去改进 GAN 的工作来自于[5] 中的 GRAN。与 LAPGAN[4] 每一个 sequential step(Pyramid level)都是独立训练的不同的是,GRAN 把 GAN 和 LSTM 结合,让 sequence 中的每一步学习和生成能充分利用上一步的结果。具体上来看,GRAN 的每一步都有一个像 LSTM 中的 cell,C_t,它决定了每一步生成的内容和结果;GRAN 中的 h_{c,t} 也如 LSTM 一样,代表着 hidden states。既然是结合 LSTM 和 GAN,那么说完了 LSTM 方面的引入,便是 GAN 方面的了。GRAN 将 GAN 中生成模型(G)的先验也进行了建模,变成了 hidden of prior h_z;然后将 h_z和 h_{c,t} 拼接(concatenate)之后传递给每一步的C_t。


较新的一种改进 GAN 的训练稳定性的方式则更加贴近本质,也是最新的研究成果。这便是号称openAI近期五大突破之一的infoGAN[7]。InfoGAN[7] 的出发点是,既然 GAN 的自由度是由于仅有一个 noise z,而无法控制 GAN 如何利用这个 z。那么我们就尽量去想办法在“如何利用 z”上做文章。于是,[7] 中将 z 做了拆解,认为 GAN 中生成模型(G)应该包含的“先验”分成两种:(1)不能再做压缩的 noise z;(2)和可解释地、有隐含意义的一组隐变量 c_1, c_2, …, c_L,简写为 c。这里面的思想主要是,当我们学习生成图像时,图像有许多可控的有含义的维度,比如笔划的粗细、图片的光照方向等等,这些便是 c;而剩下的不知道怎么描述的便是 z。这样一来,[7] 实际上是希望通过拆解先验的方式,让 GAN 能学出更加 disentangled 的数据表示(representation),从而既能控制 GAN 的学习过程,又能使得学出来的结果更加具备可解释性。为了引入这个 c,[7] 利用了互信息的建模方式,即c 应该和生成模型(G)基于 z 和 c 生成的图片,即G(z,c),高度相关——互信息大。利用这种更加细致的隐变量建模控制,infoGAN可以说将 GAN 的发展又推动了一步。首先,它们证明了infoGAN中的 c 对于 GAN 的训练是有确实的帮助的,即能使得生成模型(G)学出更符合真实数据的结果。其次,他们利用 c 的天然特性,控制 c 的维度,使得infoGAN能控制生成的图片在某一个特定语义维度的变化。


然而实际上,infoGAN并不是第一个将信息论的角度引入 GAN 框架的工作。这是因为,在infoGAN之前,还有一个叫做 f-GAN[8] 的工作。并且,GAN 本身也可以从信息论角度去解释。如本文开篇所说,在原始 GAN 论文[1] 中,作者是通过博弈论的角度解释了 GAN 的思想。然而,GAN 的生成模型(G)产生的数据和真实数据就可以看做一颗硬币的两面。当抛硬币抛到正面时,我们就将一个真实数据样本展示给判别模型(D);反之,则展示由生成模型(G)生成的“假”样本。而 GAN 的理想状态是,判别模型(D)对于硬币的判断几乎等同于随机,也就是生成模型(G)产生的数据完全符合真实数据。那么这时候,GAN 的训练过程实际在做的就是最小化这颗硬币和真实数据之间的互信息。互信息越小,判别模型(D)能从观察中获得的信息越少,也就越只能像“随机”一样猜结果。既然有了这样一个从互信息角度的对于 GAN 的理解,那么是否能对 GAN 进行更进一步的改造呢?其实是可以的。比如可以把针对互信息的建模更进一步地泛化为基于 divergence 的优化目标。这方面的讨论和改进可以见论文[8],f-GAN。

尽管接下来要介绍的两个工作,是在研读营之后才发表的,但也和这次我在研读营分享的内容息息相关。其中一份工作[9]就可以看做是 f-GAN 的延续。这篇工作可以被看做是把以前的 GAN training tricks 统一到一个框架下。从[9]的题目来看,这个 multi 是指在他们的框架里,一个 GAN 可以有多个D,但本质上还是一个G。而这多个 D 其实最终也还是会“汇集”成一个,来给D。也就是说,回归到双方博弈。看下图:

这里的V(D_i, G) 就是i个 discriminator,D_i和同一个 generator G 先分别训练;然后 F(·) 这个函数相当于那个“汇集”函数。当我们简单的用 F := max 时,就相当于是从这i个D_i里选择最好的那个,best,最discrminative,当然也是最 harsh 的一个,来给最终的 G 用来训练(还是最初的那个 G)。但是,一个特别 harsh 的 D,可能对于G的训练是不好的。这个也是过去一直强调的,在训练 GAN 时,需要 G,D 平衡。任何一方太强,都会导致训练 collapse。也就是博弈游戏玩不下去了。所以说,本质上他们这个 F(·) 还是没逃离这个思想,是为 G 找一个更“平衡”的更“合适”的对手 D。然后,又因为还是通过多个 discriminator 一起再做 regularize 来实现这个“平衡”。遗留问题是,他们没有对 V(D_i, G) 这个 V 做选择,其实这个 V 的选择才是 GAN 中更理论的改造,也就是直接把minmax alternating objective 改造掉,让这个目标的最优解更接近真实最优解。这方面的工作其实也是有的。

最新的关于 GAN 的改进,则来自于 Google 的DeepMind团队[10]。这篇文章虽然发表于研读营之后,但作为研读营的后续感想,我也希望能补充进来。思想非常直观,缺点肯定就是 computation expensive。GAN 的训练不稳定主要是因为,gradient vanishing 问题对于 G 很悲惨,G 得不到有效的合理的传回来的 gradient,就会乱学,乱跑,最后导致 collapse。大部分过去想解决这个问题的 GAN stablize的工作都是为了改变这个 value of gradient,gradient 的大小。但是这份工作[10],我个人感觉是,是另辟蹊径,为了改变优化方向。具体来说,就是 G 会考虑除了当前优化 step 以后的 k step 信息。假如我这么再走 k 步,discriminator 会给我什么样的 feedback。所以 G 会找到,在 k 步以后,最能 fool discriminator D 的“方向”。所以,G 的优化目标,就变成了交叉优化(交叉优化 G,D,这也是 GAN 的基本方法)k 步以后的目标。这样每次优化 generator G,都是考虑优化 k 步以后的情况。

上面这些对于 GAN 的改进工作都几乎是在短短一年半时间内完成的,尤其是近半年。这里面最大的原因就在于 GAN 相较于以前的 generative models,巧妙地将“真假”样本转换为一种隐性的 label,从而实现了一种“无监督”的生成式模型训练框架。这种思想也可以从某种程度上看做 word2vec 中 Skip-Gram 的一种变形。因此,在这次的介绍中,我也同样加入了对于 word2vec 模型和 word embeddings 相关应用的介绍。意想不到的是,word embeddings 这个概念,与来参加研读营的各个领域的老师前辈与同学都息息相关。大家纷纷从层次化模型、复杂网络、生物网络等角度,提出了自己对这个问题的理解和启发。我也从中获益匪浅。这也让我看到,未来,不仅仅是 GAN 的更多改进值得被期待,无监督学习和生成式模型的发展也同样值得关注。这种关注,不仅仅是来自我们学科的,也来自于整个科学领域。

除了知识的收获,这次活动给我最大的感受就是学科间思想的碰撞和与志同道合的朋友交流相处的愉悦。短短的几天时间,我们几乎日以继夜地讨论学术问题,白天在大会议室,晚上在小套房,甚至饭桌上、茶馆里,都是我们的身影和讨论的声音。每个人参会的人的脸上,尽管偶有倦容,但更多地都是那种对知识的渴望、对于答案的渴求。我们早已知道,即使我们不能得到准确的答案,但探索的过程本身就是一种幸福,更何况,我们在这个艰辛的求索过程中,竟有这样一群志同道合的朋友同行。而这样难得的体验,必须感谢凯风基金会给予的大力支持和周到的安排。

如今,写下这些文字时,我们这群人已经又回到各自的研究岗位上。我回到了香港,奋战论文,我的好朋友慧玲,奋战在北京。我们仍然保持着两三天一次的大密度学术交流。有些人则甚至回到了遥远的英国。这让我想起古人的那句话,君子之交淡如水。学术上的朋友有时候便是如此,君子之交,恐怕也是淡如高山流水。人生在世,真理与知己难觅。然而,愿对真理的追求和对知己的珍惜能长存。若能如此,这样不必有学术以外的人情牵连,不必刻意去花心思钻营繁杂人际。我们各自启程,带着大家曾在一起疯狂讨论学术的经历与感受,带着对于各自领域更广阔的理解,启程。

“我的肩上是风,风上是闪烁的星群。”——北岛

参考资料

1.《GenerativeAdversarial Nets》

2.《ConditionalGenerative Adversarial Nets》

3.《DRAW:A Recurrent Neural Network For Image Generation》

4.《DeepGenerative Image Models using a Laplacian Pyramid of Adversarial Networks》

5.《GeneratingImages with Recurrent Adversarial Networks》

6.《UnsupervisedRepresentation Learning with Deep ConvolutionalGenerative Adversarial Networks》

7.《InfoGAN:Interpretable Representation Learning by Information Maximizing GenerativeAdversarial Nets》

8.《f-GAN:Training Generative Neural Samplers using Variational Divergence Minimization》

9.《GenerativeMulti-Adversarial Networks》

10.《UnrolledGenerative Adversarial Networks》

推荐阅读

统一之路:量子纠缠、时空几何与机器学习

如何掌握宇宙?


集智俱乐部

英文名: Swarm Agents Club ,简称“ SA Club ”,成立于 2008 年 , 是一个从事学术研究、享受科学乐趣的探索者的团体 。倡导以平等开放的态度、科学实证的精神,进行跨学科的研究与交流,力图搭建一个中国的 “ 没有围墙的研究所 ”。

集智俱乐部的口号:

让苹果砸得更猛烈些吧!!!

集智俱乐部的使命(即目标):

营造自由交流学术思想的小生境,

 孕育开创性的科学发现。

让苹果砸得更猛烈些吧!


长按识别二维码,关注集智Club,

让我们离科学探索更近一步。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存