经典论文 之 亮劼导读 第三期
作者:洪亮劼
【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部分文章精选;深度学习文章;优化文章;图模型文章;强化学习文章等