这是一个系列的读书笔记,主要围绕着关于RNN,RL和memory以及他们的各种线性组合和非线性叠加在2016年的一些有意思的进展,当然更多的围绕着Bengio, Hinton, LeCun, DeepMind, Facebook等方面的实验进展,和Hopfield以及诸多统计物理superstars对这方面工作的贡献。


集智

思想碰撞


针对读书笔记的内容,甄慧玲也提出了一个问题:

Hinton在去年的文章中提到memory有三种,long, short和spiking,那么,今天推送的这些模型中,有哪个增加了memory的容量?如果有,增加的哪种?为什么?

大家可以带着问题阅读文章,欢迎在留言区写下自己的思,所有给出答案并被采纳的朋友将获得集智的纪念T恤一件哦(T恤从不对外出售)~


1、

Curriculum Learning & RNN



 Curriculum Learning其实是Bengio在2009年的ICML的文章“Curriculum Learning”就提出的一个概念,最近几年一直被当成一个处理数据集的trick在深度学习的各个模型中发挥作用,包括2016年RNN的各种有趣结果。本次推荐和分享主要是针对下面几篇文章:

Knowledge Matters: Importance of Prior Information for Optimization (Bengio)

Synthesizing the preferred inputs for neurons in neural networks via deep generator networks (NIPS,2016)

Plug & Play Generative Networks: Conditional Iterative Generation of Images in Latent Space (Bengio)

以及下面这篇对上面文章的应用的文章:

Visualizing and Understanding Curriculum Learning for Long Short-Term Memory Networks (By Carnegie Mellon University)

在分享文章之前,先简单说什么是Curriculum Learning.


最开始提到这个训练方法的是为了解决非凸优化问题中的local minima,想法其实也很简单,基于他的一个认知:training set中的数据对于目标函数的贡献不一样,简单说,你可能只知道一部分的数据的标签,或者知道某一个cluster的特点(比如是noiseless的或者非常noisy都可以成为特点),而本来这些easy samples是很好训练的,但如果将所有的数据一起来分成batch训练,就会让这些容易训练的特点变的很平庸。于是,他们就把training set中的数据按照自己定义的难度等级分成q类,一类一类的训练,上一类训练的结果作为下一类训练的初值,就相当于用easy samples的training 结果来教下一个等级的samples一样,也因此定义的curriculum.


很简单的变化,但是训练结果,却真的跳过了local minima,例如,下图就是用wiki上的文本做的训练结果(蓝色的是表示用了curriculum)。

集智 

其实这样的方法是统计物理学家常常使用的(物理系的孩纸怎么会不每次都带上物理上的方法呢,那不是我的风格。O(∩_∩)O) 例如在文章“Solving the inverse Ising problem by mean-field methods in a clustered phase space with many states”“Inference and learning in sparse systems with multiple states”等解决组合优化问题的时候,都是先将data分成不同的cluster,然后,在每个cluster中逐一求解。同时,他们证实了,用这样的方法来做组合优化是可以得到整个dataset一起处理时得不到的物理现象。

 

那这样有意义的trick,在RNN上有什么体现呢?下面我们举的三篇文章有两篇是Bengio组在2016年的工作,另外一篇是2016年nips上的文章。


2、

Knowledge Matters: Importance of Prior Information for Optimization (Bengio)



这篇文章的初衷说很多state-of-art的算法都不能generalize,于是,他们借用了curriculum的想法,不过,这次不是要将数据集分成若干部分,而是干脆,通过引入intermediate concept将目标分成两部分,分别对应一个多层网络p1nn和p2nn。这样的方式可以分成with hints和without hints两种(如下图):左图是表示with hints,这是说第一个网络p1nn的目标函数不是最后我们要处理的目标函数,而是一个和最后的目标有关的更简单的函数(也就是所谓的intermediate concept),右图则是without hints的版本,就是说这两个网络p1nn和p2nn的目标函数都是我们最后要优化的那个。

 

但是,单单这样分成两部分还不够,他们还说要引入standardization layer,其实就是要对hidden layer做一个layer normalization(类似我们在本科学概率论的时候那个中心化成Gaussian分布的过程),具体的计算过程如下。

集智 

文中分别对比了with hints和without hints,with standardization layer和without standardization的区别,当然都是with比without的要好,而且数据集越大(就是说明里面的cluster可能越多,数据对目标函数的影响越复杂多变)效果越好。例如:

集智

下图也说明了standardization会在无论是test set还是train set上,都跳过local minima。而且,文章中还利用物理中的power spectra来解释了为什么standardization以后效果会好:因为会让数据边的更加的sparse,这样不仅可以利用矩阵计算,让整个的训练过程变的更加容易实现,同时,也让preferred samples更加work。

集智

其实这样的 standardization,在memory的研究中也会使用。等我们接下来总结到memory的部分的时候,再继续go deep。


3、

Synthesizing the preferred inputs for neurons in neural networks via deep generator networks (2016 NIPS)



这篇文章的主要技术可以从上一篇的standardization中获得灵感:不是需要通过这个去中心化来让那些有特点的samples更加work吗?那我何不利用一些easy samples来合成更好的preferred samples(相当于更新training set)呢?于是,他们就借助了下面的模型,首先当然依然是利用curriculum learning的想法讲training set分成D1,……,Dn这样n个部分,D1是easiest sampes,利用D1训练一个生成网络来给出prior,借助prior合成的samples作为新的D1’,这个D1’作为真正的用于训练我们想训练的网络的training set, 训练结果作为D2的初值,对D2做同样的操作,依次类推。

集智

 

在利用生成网络来生成prior的时候,主要是用到了acitivation maximization,这个方法的本质就是通过求activation function的最大值来对输入(例如一个image)进行合成,我们的目标函数是:

集智

而后用gradient ascent来优化这个函数,就可以了。 

其实这个过程,就很像一个GAN:前面的那个生成网络就是G,后面的那个最终要训练的网络是D,不过,和GAN不同的是,GAN是同时训练G和D两部分,用D来判断G生成的结果好不好,最终当D已经判断不了的时候就停止(也就是达到了纳什均衡的时候),而这个网络是一开始就给G部分samples,而后用G的结果作为prior生成更多的preferred samples,以此来更新整个training set。举文中的一个例子来说明这样的网络可以达到的效果:

集智


但这样的网络相比于GAN来说是有优势的,我们都知道GAN中discriminator也就是网络D很强,因此会引起各种不稳定,诸如missing mode等等,人们经常采用加入各种regularization的方式来让GAN稳定,其实有一个很简单的trick就是我们不要先训练D,而是先训练G,多训练几个iterations以后,再完成从D到G不断循环的过程,都会比之前效果好很多。那么这篇文章中的网络,就是先训练对应G的那个生成网络,这个网络稳定以后再训练D,而且,喂给G的input不是随便的samples,是我们先利用curriculum learning的想法对training set分块以后的,而喂给D的是更新的training set,这样一来,就明显会比原始的GAN更有效果。事实上,在2016年12月份NIPS关于GAN的那个tutorial中,就提到了这篇文章的模型,好东西大家都会注意到哒!!

 

4、

Plug & Play Generative Networks: Conditional Iterative Generation of Images in Latent Space (Bengio)


这篇文章则完全是为了改进“synthesizing preferred inputs”,改进的方式就是光明正大的称呼上一个网络中作为D的那个判别网络为conditional network,而后,在之前的生成网络上加入各种模型,而不再是简单的一个upconvolutional了。当然,他们说他们是通过引入additional prior in latent code来提高样本的quality和diversity。

 

如果syhthesizing preferred inputs中的那个模型用下图b来表示,这里他们说h表示high-level feature,其实就可以理解类似于成我们一开始说的easiest samples的feature,而后,生成了preferred samples x,x再作为C的输入。但是,我们注意到,虽然口口声声说这个利用G生成prior,但是给G的h却没有任何的prior。所以,这篇文章的改进模型一共有4个,如下图的a,c,d,e所示。

集智 

图a无疑是最简单的,简单到了根本就没有用那个G,直接用DAE来作为G,而图c则是对图a的改进,用DAE来处理h,结果喂给G,G的结果喂给C。注意,这里的eta表示的是noise。d则是对C的改进,是在x和h处分别都用了一个DAE(即E1和E2),e就是干脆让h和x都没有noise,变成了和d对应的noiseless版本。

 

先不提噪声的问题,先说这样的网络所达到的生成结果。首先,这样的网络达到的效果和synthesizing 那篇比,有什么区别呢,如下图所示。如果从左至右标号1到12的话,1-3和7-9都是真实的图片,4-6是用synthesizing来生成的结果,10-12是用d来生成的结果,所以,他们的结论是samples的quality和diversity都有所提高。注意,这里说的结果不是最后的结果,是通过G以后,喂给C的samples(毕竟只改进了前面一部分嘛)。

集智

这里面提到的各个网络(比如),作用是等价的吗?如下图所示(这里直接把G+C的结构称呼为GAN了。。o(╯□╰)o)我们发现d的效果(也就是joint PPGN-h)效果是最好的。

集智

而d和e的比较呢,文中直接说了,d中有了noise,因此提高了samples的diversity,但是和e这个noiseless版本相比,没有noise的quality更高。这个结论本身是很好理解的。想想gradient descent/ascent和stochastic gradient descent/ascent的区别,当我们优化的函数很flat的时候,优化过程进行不下去了,我们就引入noise变成stochastic,当出现local minima的时候,我们依然还是引入noise尝试跳出那个局域。其实和d与e的对比是一样的含义。

 

再介绍一篇2017年刚刚出炉的prl (这个绝对是物理界的top journal啊!!) 的文章:“Stochastic thermodynamics of learning”。这篇文章更加充分地从统计热力学的角度解释了noise对于学习过程的影响,而文章中的图2解释了learning的效果随着noise的变化, 直接成为了ppgn这篇文章图13的物理学佐证!


5、

Visualizing and Understanding Curriculum Learning for Long Short-Term Memory Networks (By Carnegie Mellon University)



这篇文章就非常简单了,其实算是curriculum learning对rnn或者lstm的一个应用。这篇文章最有意义的结果是对比了one-pass learn和baby learn的区别。 

集智

所谓的one-pass呢,就是标准的curriculum learning,将training set分成若干个子集,逐一训练。可是,这其实是不符合我们人在成长过程中学习的规则的,你不会在看到一篇文章的时候,从头开始查字典,你会带着之前的记忆,并逐渐的修正记忆。于是,他们提出了这个baby step,其实就是训练完D1去训练D2的时候,不训练D2,而是训练D1和D2的并,下一步不训练D3,是训练D1,D2和D3的并,依次类推。最后训练的是整个training set。

集智 

简单说明,这样做了之后的效果是什么,如下图所示,红色的线条是baby step learn。 

 集智

这只是很简单的curriculum learning啊,可以想象,如果用另外的网络作为prior,效果应该会更好!当然,过多的parameters是一个计算难点,应该就有类似于layer normalization,standardization layer等各种tricks!

 

推荐阅读



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

我的肩上是风,风上是闪烁的星群

如何掌握宇宙?
What can we know from the given data? | 原创精选

朝闻道,夕如何? | 小木球

网络、几何与物理:层级、长程关联与局域化 | 章彦博


◆ ◆ 

集智俱乐部




英文名: Swarm Agents Club ,

简称“ SA Club ”,成立于 2008 年 

是一个从事学术研究、

享受科学乐趣的探索者的团体 。

力图搭建一个中国的

 “ 没有围墙的研究所 ”。


集智QQ群|292641157

商务合作|zhangqian@swarma.org

投稿转载|wangting@swarma.org

集智

让苹果砸得更猛烈些吧!

集智

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

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

始发于微信公众号: 集智俱乐部