经典论文 之 亮劼导读 第三期

作者:洪亮劼

【2017-03-17】TopicRNN: Combine RNN and Topic Model

ICLR 2017论文;结合RNN以及Topic Models;建议对深度学习以及文档分析有兴趣的读者精度 论文讨论页面 ICLR 2017论文页面 这篇文章来自微软研究院和哥伦比亚大学的学者共同完成。作者中的Chong Wang以及John Paisley都有长期从事Graphical Models以及Topic Models的研究工作。

这篇文章想要做的事情非常直观,那就是想把在深度学习中非常有效的序列模型——RNN和在文档分析领域非常有效的Topic Models结合起来。这里面的原因就是,RNN比较能够抓住文档的“局部信息”(Local Structure),而Topic Models对于文档的“全局信息”(Global Structure)则更能有效把握。之前也有一些这样的尝试了,不过这篇文章提出了一种简单直观的模型。

首先,每一个文档有一个基于高斯分布的Topic Vector。这一步就和传统的latent Dirichlet allocation (LDA)有了区别,因为传统上这个Vector常常是基于Dirichlet分布。然后对于文档里面的每一个字,都采用了类似RNN的产生构造方法。首先,要产生每个字的一个隐含状态。这个隐含状态的产生,都基于之前的一个字本身,以及前面一个字的隐含状态。产生了隐含状态以后,这篇文章这里做了这么一个假设,那就是有两个类型的语言模型来控制文档里具体字的产生。一种是一个类似Stop Word的语言模型(Language Model),一种是普通的Topical语言模型。那么,在一个字的隐含状态产生以后,作者们有设计了一个基于当前字的隐含状态的伯努利分布,来决定当前这个字,是不是Stop Word。如果这个字是Stop Word,那这个字就从Stop Word的语言模型产生,如果这个词不是Stop Word,那就从Stop Word以及Topical语言模型产生。也就是说,作者们认为,Stop Word的影响是肯定有的,但Topical的影响则不一定有。这就是这个TopicRNN模型的一个简单描述。

文章采用了Variational Auto-encoder的方式来做Inference。这里就不复述了。

值得注意的是,文章本身提出的模型可以适用不同的RNN,比如文章在试验里就展示了普通的RNN、LSTM以及GRU的实现以及他们的结果。总的来说,使用了TopicRNN的模型比单独的RNN或者简单使用LDA的结果作为Feature要好,而且GRU的实现要比其他RNN的类型要好。
这篇文章相对比较直观,建议对深度学习以及文本分析有兴趣的读者精度。

【2017-03-15】Understanding DL Requires Re-Thinking G.L.

ICLR 2017最佳论文之一;重新思考深度学习模型的泛化能力;对深度学习有兴趣的人泛读 论文讨论页 ICLR 2017 文章下载 这篇文章来自Google Brain、Google DeepMind的一批学者。也是ICLR 2017的最佳论文之一。

文章的核心内容备受争议,那就是如果在深度学习这个语境下看待机器学习算法的泛化能力(Generalization)。文章指出,传统上,比较好的泛化能力,也就是通常说的比较小的泛化错误(Small Generalization Error)来自于某种类型模型(比如神经网络)或者是正则化(Regularization)的能力。但是在深度学习的语境下,作者们通过大量实验,发现这样的观点可能不适用了。

文章的核心思想建立在一系列的随机测试(Randomization Tests)上。作者们精心的设计了这么一组实验,那就是找来一组真实的数据,然后把真实的数据标签(Label)给替换成为彻底的随机标签(Random Label),然后用来训练神经网络。结果是,神经网络能够达到没有任何训练错误,就是Training Error是零。也就是说,神经网络可以完全记忆住整个数据集。而且作者们还发现,尽管是随机的数据标签,整个神经网络的训练过程并没有大幅度增加难度。随后作者们还发现,如果在CIFAR10和ImageNet上随机替代真实图像成为高斯随机噪声(Gaussian Noise)的话,神经网络依然能够达到没有任何训练错误。当然,噪声如果不断加大,训练错误也随之增大。整个这部分的实验其实就是验证了神经网络能够非常有效的同时处理数据的有效部分和噪声部分。

那么上述这些情况是否是因为传统的正则化(Regularization)所带的呢。作者们发现,传统的对于神经网络的正则化理解,诸如Dropout、Weight Decay、Data Augmentation等方法,都没有能够很好得解释神经网络对于随机数据的优化能力。文章甚至指出,即便没有正则化这一在传统的优化领域几乎是必不可少的方法,神经网络依然能够表现出比较好的泛化能力。

文章最后则是通过一套理论分析,来证明了深度为2的神经网络已经能够表达任何数据标签信息了。虽然这个理论见过比较简单,但这也给这篇文章从实验结果到理论这么一个比较完整的论证体系画上了句号。

这篇文章值得所有对深度学习有兴趣的人泛读,对于深度学习泛化能力有研究的读者精读。一般读者主要是可以记住神经网络对于随机标签和随机数据的惊人处理能力。这在不同的应用中,可能是好事情也可能是坏事情。

对这篇文章感兴趣的朋友,可以访问知乎讨论页面

【2017-03-12】Neural Architecture Search with RL

ICLR 2017论文;如何通过强化学习和RNN来学习深度学习模型的网络框架;作者们来自Google 论文讨论页面 文章地址 ICLR 2017 这篇文章来自Google Brain。作者之一的Quoc V. Le曾经是Alex Smola的早期弟子,后来其长期在Google做深度学习的研究,代表作品有Paragraph2Vec等。

这篇文章要解决的问题很直观,那就是现在深度学习的各种网络结构(Network Architecture),大多通过手调和纯经验设置。这篇文章就是希望尝试用RNN和强化学习(Reinforcement Learning)来学习(Learn)到这样的架构。

这篇文章的思路是这样的。首先,有一个RNN所代表的Controller。这个Controller的作用是去预测(Predict)整个网络结构的各种参数(比如,有多少Filters,Filter的Height,Filter的Width)等等。这些各个参数都是通过RNN来进行预测的。当然,整个Controller还是要控制层数的,这就是一个外部参数。

那么如何来训练这个RNN所代表的Controller呢?这篇文章采取的思路是使用强化学习的方法。简单说来,就是这个RNN所生成的准确度(Accuracy)就是强化学习的Reward,然后文章采用了经典的REINFORCE算法来对RNN进行强化学习。文章后面还介绍了并行运算的提速技巧,以及怎么能让生成的网络具有Skip-Connection的表达形式(这也是目前不少成功网络都具有的功能)以及如何产生RNN这种递归结构的方式。这里就不复述了。

从实验结果来看,这篇文章提出的方法,能够找到不少网络结构,在CIFAR-10数据集上得到相当不错的效果。甚至能够和不少手工设置的最佳网络结构所得到的结果不相上下。而在TreeBank上得到的RNN的效果,也可以和不少成熟的网络框架相比较。

这篇文章很适合深度学习的学者泛读。

【2017-03-10】Efficient Vector Repr. For Documents

ICLR 2017文章,学习文档的表示;深度学习对于文字应用有兴趣的读者精读 文章讨论页 文章地址 这篇文章来自Criteo Research的Minmin Chen。Criteo是一个来自法国的互联网广告公司。这个Criteo Research是设立于硅谷的研究院。

这篇文章其实说的是一个非常传统的问题,那就是在深度学习的语境中,如何学习一个文档的表现形式。在这方面的研究,可能大家都比较熟悉比较经典的Word2Vec,Paragraph Vectors等文档的表现形式。Word2Vec其实是学习的单独Word的表现形式,然后有各种方法来取得Weighted Word Embedding从而间接获得文档的表达形式。Paragraph Vectors把文档给Encode到了模型里,但是模型的复杂度是随着Word和文档的数目增加而增加的。

这篇文章提出的思想很直观。首先,提出的模型还是直接Model每一个词。然后,和Paragraph Vectors不同的是,这个模型并不直接学习一个文档的表达,而是认为一个文档的表达是一些Random的词的表达的一个平均(Average)。这一个思想看起来比较震惊,那就是文档的表达并不是所有的词的平均,而是从文档中随机采样的词的平均。类比来说,这有一点Dropout的意思。文章花了不小的篇幅来说明,这一个思路其实是从某种意义上来Regularize一个文档的表现形式,并且去决定什么样的词会对文章的表达形式产生什么样的作用。

文章的实验部分还是很详实的。这里就不复述了。基本上说,用这样方法产生的结果能够轻而易举击败Paragraph Vector或者Average的Word2Vec,甚至不少数据集上比LSTM的方法都还要好。
本篇文章很值得对如何学习文档表示有兴趣的读者精读。

【2017-03-08】Making Neural Programming Recursive

深度学习来学习程序编程,适合深度学习爱好者泛读、深度学习编程研究人员精读

文章地址:ICLR 2017 文章讨论地址:ICLR 2017 这篇文章是获得了ICLR 2017最佳论文的三篇文章之一。文章的作者们来自伯克利大学。这篇文章是基于ICLR 2016年的一篇Google DeepMind的文章Neural Programmer-Interpreters(NPI)的扩展。NPI在去年也是获得了ICLR 2016的最佳论文。可以看出,用深度学习来学习编程行为,是深度学习最近一段时期以来的热点和新前言。

那么,NPI算是提出了一个比较新的框架,来描述如何使用深度学习来进行编程。而这篇文章则是建立在NPI的基础上,基本上对于框架本身没有进行任何更改,仅仅是在训练数据上有所创新,从而引入了递归(Recursion)的概念到NPI中,并且“证明”了训练所得的程序的正确性,从而在根本上解决了(至少是部分)NPI的“泛化”(Generalization)问题。从实验结果上来看,这篇文章通过递归方式学习的程序,能够完全解决QuickSort、BubbleSort、Topological Sort问题,准确率在不同长度的输入的情况下高达100%。

要想了解整个NPI的机制,还是推荐大家去了解原文,这篇文章也只是简单介绍了NPI的框架。抛开NPI和深度学习有关的细节,有一个设置值得注意的就是,NPI也好,这篇文章也好,其实都需要利用程序的具体运行流程(Trace),作为训练数据。也就是说,基本上是用深度学习来学习机器指令级别的操作,或者说是汇编语言级别的操作。这也就其实带来了两个疑问:第一,基本上这是非常细节深层次的训练或者说是干预,说白了就是很难说这样可以真正学习到未知的程序。也就是说,只能依葫芦画瓢。第二,整个模型的设置都是高度依赖于具体程序的语义(Semantics),而非是程序的输入输出的数据,给是否这是真正的智能打上了问号。

值得关注的另外一点是,这篇文章也并没有完全说明,为什么通过训练数据的创新,就能从本质上彻底解决NPI的泛化问题。文章提出了一些假说或者说是解释,但是还是缺乏理论的分析和更多的讨论。可能这方面还是一个未来的研究方向。

【2017-03-06】ICLR 2017 部分文章精选 ICLR 2017部分文章精选;深度学习文章;优化文章;图模型文章;强化学习文章等

  • On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima [文章讨论页面] [PDF]
这篇文章来自一群Intel公司的学者和Jorge Nocedal的学生Nitish Keskar。Jorge Nocedal是有名的优化领域的大牛。这篇文章想要说明的事情很简单,那就是作者们要想探究一下,为什么在Deep Learning中较大的Batch Size优化出来的效果不好。也就是说,在通常情况下,Deep Learning的优化步骤中,大家都使用比较小的Batch Size并且使用SGD。那么,这么做究竟为什么好呢?这篇文章借助了一个所谓叫Sharp Minimizer的概念。简单来说,就是如果Batch Size大了,就容易陷入Sharp Minimizer,而比较小的Batch Size则可能进入Flat Minimizer,这往往是好的。文章的实验结果非常详实。
这篇文章来自Facebook AI Research。这篇文章是要探讨如何来训练End-End的Goal-Oriented的对话系统。文章指出了这么一个现实:那就是Deep Learning(DL)已经在一般性的Chit-Chat,也就是闲聊的领域有了不小的成绩;但在所谓的Goal-Oriented的对话系统中,目前还不敢说有太多的优势。这篇文章就是想来探讨一下DL在Goal-Oriented的场景下的表现,以及对目前的数据集进行一个比较完整的评测。因为缺乏真实的数据,这篇文章还是采用了模拟数据集的方式。不过,作者们在数据集的仿真程度上下足了功夫。最后在好几个任务上,DL的模型已经和传统的基于Rule-based的模型达到了非常接近100%的准确度。研究对话系统的读者可以精读这篇文章。
这篇文章其实就是之前我们介绍过的Edward的软件框架(包)的完整介绍。这个框架来自David Blei实验室的Dustin Tran,以及一些Google Research和Adobe Research的合作者。Edward的主要目的就是让Probabilistic Programming(PP)变得像普通的Deep Learning(DL)一样简单快捷。长期以来,PP最让人诟病的就是每一种模型都需要特殊的研发计算算法,而以前的一些通用算法如MCMC有很多毛病(比如收敛慢)。那么,Edward就是要解决这些问题。这个框架基于Tensorflow,所以很自然得把DL和PP在某种程度上结合起来了,并且把模型定义以及Inference算法都结构化和API化,方便大家扩展。而底层的Inference则基于这几年来Variational Inference的进展,更加快速和通用。这篇文章建议对Graphical Model感兴趣的读者精读。
  • The Concrete Distribution: A Continuous Relaxation of Discrete Random Variable[文章讨论页面] [PDF]
这篇文章来自一群英国的学者,都基本在Google DeepMind做研究工作。这篇文章是要解决一个非常具体的问题。那就是在很多Automatic Differentiation(AD)的工具里面,一个常见的需求就是对一个Stochastic Node求Gradient信息。文章提到了两个之前的主要方法,一个就是使用Score Function,说白了就是利用了一个Log的Trick(可以对Continuous和Discrete的Distribution都有效),另外一个方法就是Reparameterization,就是去用一个辅助参数来对目前的Distribution进行转换(只针对Continuous Distribution有效)。那么,这篇文章其实就是用了Reparameterization的方法,提出了一个所谓叫Concrete——Continuous Relaxation of Discrete的新分布从而解决这么一个问题。简单说来,这个Concrete Distribution就是用到了一个叫Gumbel-Max Trick的方法,从一个Uniform Distribution里面Sample一个Random Variable,然后把这些Sample转换成为Discrete的这么一个过程。直接用Gumbel-Max Trick没法在AD里面用,所以这篇文章其实就是把Gumbel-Max Trick做进一步的改进,使得结果能够在AD里面方便使用。这篇文章建议做Variational Inference和Generative Model的读者细看。
这篇文章的目的是要嫁接Variational Auto-Encoder(VAE)以及Generative Adversarial Networks(GANs),这两种目前流行的Generative Modeling的方法。这篇文章对于GANs来说的核心改动来自于现在的Generator有两个元素需要产生,一个是数据本身x,一个是隐藏参数z(这部分是GANs没有的)。由于Generator产生了两种元素,那么自然Discriminator也就需要去辨别这两种元素。其他的设置部分都与GANs类似。比较遗憾的是,这篇文章并没有很详细阐述为什么这样的设置能够带来效果的提升。这篇文章值得研究GANs的读者精读。
这篇文章来自于Google DeepMind。文章的思想很有意思。那就是作者们发现,在传统的强化学习的状态下,有一些Reward的观测比较稀疏(也就是说很难观测到);并且同时,有一些辅助的其他任务可有帮助当前的强化学习任务。比如作者们在一开始提到的例子,那就是,如果让一个婴儿去认识红色的东西,那么婴儿不仅仅是需要建立“红色” 这个颜色的认知,还需要建立类似方位、沟通等其他的认知能力,而这些认知能力又可以对其他的一系列任务进行帮助。这篇文章中定义这么两类辅助任务:1)辅助控制任务和,2)辅助奖励(Reward)任务。所谓辅助控制任务(Auxiliary Control Tasks)简单说来就是除了当前的Reward以外,还有哪些Reward可以加入总的Performance里,比如在这篇文章里的Pixel Changes和Network Features都是使整个任务更加稳定。另外的辅助奖励任务,在这篇文章里,则是预测直接(Immediate)的Reward。这很显然是为了帮助Agent的学习能力。总体说来,新的目标函数就是这么一些辅助任务的叠加。感觉有一点像传统优化中的Regularization。这篇文章很值得对深度强化学习有兴趣的读者精读。
这篇文章来自CMU。文章想要解决的问题非常直观,那就是如何通过学习,自动得到Neural Networks的结构,并且保证得到的结构能够产生不错的结果。这篇文章提出的算法就是能够动态增加或者减少网络的层级和单元,从而达到自动适应整个网络的结构特征。这篇文章提出的算法有一个核心的思想,那就是为了防止网络多大生长,提出了一个叫Fan-in Regularizer和Fan-out Regularizer的想法。说白了,就是用p-norm去Regularize整个的所有的Weights。整个想法还算是比较简单。不过实验结果有好有坏。应该说这个方向的思想还是比较缺乏理论支撑。对于深度学习优化有兴趣的读者可以精读。
  • Towards Principled Methods for Training Generative Adversarial Networks [文章讨论页] [PDF]
这篇文章来自Courant Institute of Mathematical Sciences和Facebook AI Research。文章研究的是目前火热的Generative Adversarial Networks(GANs)的难以训练的问题。这篇文章主要是从理论分析上来看为什么GANs的难以训练的问题核心在哪里。作者们开始提出了这么一个假设,那就是GANs的不稳定性来自于在训练过程中的分布有可能有不连续(Continuous)的情况,更准确的是,两个分布存在不重合的Support的情况。那么这个问题会导致的实际效果就是,Generator的Gradients逐渐消失(Vanish)。同时,文章指出了,平时有些人所用的Generator Update可能会导致无限的期望值和方差(Infinite Expectation和Variance)。文章根据提出的这些理论,指出可以通过加扰动(Noise)来Smooth化Distribution,从而部分避免发生的情况。这篇文章很值得GANs的研究者精读。不过需要指出的是,这篇文章并没有完全解决GANs难以优化的问题,只是提出了一个也许能够解决问题的基本思路和方向。

转载请注明:《 经典论文 之 亮劼导读 第三期 | 我爱计算机