精选NIPS十大机器学习论文

2017.03.30 请收藏本站地址:feifeifilm.net

人工智能和机器学习领域的学术论文汗牛充栋。每年的各大顶级会议、研讨班录用好几千篇论文,即便是亲临现场也很难追踪到所有的前沿信息。在时间精力有限的情况下,选择精读哪些论文,学习哪些热门技术就成为了AI学者和从业人员所头痛的问题。本栏目旨在要帮助大家筛选出有意思的论文,解读出论文的核心思想,为精读提供阅读指导。

NIPS(Neural Information Processing Systems,神经信息处理系统进展大会)是每年12月由NIPS基金会主办的人工智能和机器学习顶级会议,每年大会都吸引了机器学习、人工智能、统计等领域的众多国际专家前来参与。笔者从NIPS 2016会议文章中精选出10篇有意思的文章,为读者解惑。

Using Fast Weights to Attend to the Recent

亮点:在Short-Term Memory、Long-Term Memory以及LSTM之外,有什么更好的Attention机制呢?

本文作者阵容豪华,有来自多伦多大学的Jimmy Ba、Google DeepMind的Volodymyr Mnih、Joel Leibo以及Catalin Ionescu,外加Geoffrey Hinton坐镇。文章一开始讲明了现在的问题,在传统的Recurrent Neural Networks(RNN)领域,有两种形式的Memory。这两种Memory形式有不一样的结构、目的和容量(Capacity)。Short-Term Memory直接通过Hidden Vector来存放信息,容量是O(H),这里H是Hidden Units的数量。而另一方面,Long-Term Memory通过现在的输入信息和Hidden Vector,来得到下一步的输出信息以及新的Hidden Vector,总共的容量是O(H2)+O(IH)+O(HO),这里I和O是输入单元以及输出单元的数量。另外一种比较传统的Long Short-Term Memory Networks(LSTM)依然只拥有O(H)的处理Short-Term Memory的能力。文章的核心是想提出一种能够更加有效地提供记忆的机制。当然,文章用了一小节从生理学的角度来讲如何有这样的启发,不过这恐怕主要想把文章的立意拔高,其实和后面的主要模型部分并没有直接的联系。简单说来,这篇文章提出的模型基于传统的RNN进行了这样的改进:

下一步的Hidden Vector来自于两个因素:

  • 当前的Hidden Vector和当前的输入信息;
  • 一个类似Attention机制的但这篇文章叫做Fast Weights的Matrix作用于之前的Hidden Vector。

这个Fast Weights随着时间的推移,会有一个衰减信息。

如何理解Fast Weights呢?直观来说, Fast Weights是一个Attention机制,把现在的Hidden Vector和过去的任意Hidden Vector进行比较,通过Outer Product的结果来决定Attention的强度。有了这么一种Attention机制,整个模型就能够对过去类似的记忆进行回忆,产生一个可以对近期的信息进行综合反应的效果。在稳定Fast Weights的目的下,文章还使用了Layer Normalization技术。文章的一些实验结果惊人,比如在一个人造的数据集上,模型效果能够很容易达到0错误率。而在MNIST的数据上做Visual Attention,提出的模型也能有非常不错的效果。总之,这篇文章值得泛读。对于研究Attention机制的读者来说,是一个精读的材料。

Learning Structured Sparsity in Deep Neural Networks

亮点:如何把前几年盛行的Structured Sparisity和DNN结合?这篇文章给出了思路。

这篇文章来自匹兹堡大学的研究人员,核心内容非常清晰,那就是要引入Structured Sparsity到DNN来,使得最终的DNN有一个比较紧凑的表示,加快运算速度,同时能够得到硬件友善的表现形式,让硬件能够比较快地执行。虽然之前已经有了一些工作来对DNN进行压缩,但这篇文章的作者认为,这些压缩方法(比如直接使用L1 Regularization),可能会让网络得到一些随机(Random)的链接,使得内存访问变得不常规(Iregular)。在这样的情况下,新的模型,虽然表面上有很大的Sparsity,但是并没有加快运算速度,有时候甚至还有减少。另外一种最近的思路,就是最近采用的Low-Rank Approximation方法。简单说来这种方法为先训练DNN,然后每层得到的Tensor被分解,并且被更小的Factor所替代逼近。这种方法的好处是能够达到加速,坏处则是需要最终重新Fine-Tune模型的精度。显然,这篇文章就是要解决上述缺点。文章作者把前几年火热的Structured Sparisty Learning(SSL)和DNN相结合。具体说来,就是采用了Group Lasso的方法来让DNN的参数能够结构化置0。在这篇文章里,作者采用了三种方法:

  • 惩罚(Penalizing)不重要的Filter和Channel:把一些Filter和Channel置0;
  • 学习任意形状的Filter:在2D空间上学习通过置0,达到学习任意形状的要求;
  • 缩短DNN的层数:彻底移除整个层,通过增加Shortcut的方法来达到不产生断层的情况。

文章并没有提供在SSL和DNN相结合的情况下的Learning算法。实验部分非常详实,用LeNet在MNIST、ConvNet和ResNet在CIFAR-10以及AlexNet在ImageNet上都做了实验。总体的感觉是,在很多例子的情况下,更加Sparsity的DNN反而带来了精度的提高。

Operator Variational Inference

亮点:知道Variational Inference中的KL Divergence有什么问题吗?这篇文章可以给你一些启示。

这篇文章来自David Blei的实验室。主旨相对比较直观,但是细节非常Technical,核心思想是如何改进Variational Inference(VI)中的KL Divergence。众所周知,VI的内涵是如何把一个Bayesian Inference问题转换成为一个优化(Optimization)问题。在经典的设置下,找到或解出Posterior Distribution的过程,是一个在KL Divergence定义下,找到和真实Posterior Distribution相近的Variational Distribution的过程。这个过程存在两个问题:

  • 通常情况下,Posterior的Variance会被低估;
  • 会产生自动排除某一些Latent Variable配置的错误解。

同时,在KL Divergence的假设下,Objective可能变为Infinite,当Variational Distribution的Support比真实的Posterior Distribution要大的情况下。为了解决这些问题,这篇文章提出了一个新的框架,叫做Operator Variational Objectives,该框架有三个组件:

  • 一个Operator,基于Posterior和Variational Distribution;
  • 一个Family的Test Functions;
  • 一个距离函数(Distance Function)。

传统的基于KL Divergence的VI可以写成这个新框架的一个特殊形式。文章基于这个新框架的优化过程则显得很艰深。文章并没有实际的实验,如果你对VI有深入兴趣,可以阅读本文。相信大多数模型在今天选择KL Divergence的情况下,这篇文章无法提供更多的实际意义上的帮助。不过,文章讨论的KL Divergence的问题则可以作为参考。

Exponential Family Embeddings

亮点:是不是被各种Embedding模型弄得眼花缭乱?这篇文章统一了很多类似模型,提供了一个简单框架。

这篇文章也来自David Blei的实验室。文章的核心是如何把Word2Vec的思想给Generalize到其他应用场景,提供一个比较通用的模型框架。在这个新框架下,其他的很多类似模型都能够归纳成为这个新框架的特殊形式。新的框架模型为Exponential Family Embedding(EF-EMB),其中包含三个要素:

  • A Context Function;
  • A Conditional Exponential Family;
  • An Embedding Structure。

首先,Context Function是定义如何把当前的数据点(Data Point)和一个Context里面的其他数据点联系起来。这是一个建模的选择。比如,对于Language Data来说,这个Context可以就是周围的字;而对于Neural Data来说,这个Context则可以是周围的Neuron;对于Shopping Data来说,这个Context则可能就是购物车里的其他商品。其次,Conditional Exponential Family定义一个合适的Distribution,来解释数据的产生过程。比如,对于Language Modeling来说,这个分布就是Categorical Distribution;而对于Real-Valued数据来说,则就是Gaussian Distribution。另外,在这个Conditional Exponential Family的定义里,每一个Data Point有两种Embeddings:Embedding Vector和Context Vector。通俗地讲,也就是每个数据点分解成为了Embedding Vector和一组Context Vector(这个被上面的Context Function所定义)的乘积形式。第三个要素Embedding Structure定义在建模中,Embeddings是如何被共享(Shared)的。比如,对于Language Data来说,每一个词只有唯一的Embedding Vector和唯一的Context Vector。还有其他的一些Setting里,这两者也可以是相同的。在定义了之前的这些结构以后,Objective Function则是Log Conditional Probability的加和,外加Log定义的Regularizer。文章讨论了好几个模型的例子。总之,现有的一些Embedding模型都很容易在这个框架下被重现。模型的Inference则采用了SGD。文章里还讨论了在SGD的情况下,如何得到类似于Negative Sampling的结果。总之,这篇文章很值得细看。一方面也是因为这里面统一了很多关于Embedding模型的讨论;另一方面,从软件工程角度来说,也许也能够设计和实现一个类型的模型框架。

The Generalized Reparameterization Gradient

亮点:Reparameterization Gradients是近期Variational Inference的重要进展之一,怎么把其扩展呢?

Variational Inference(VI)是传统上比较流行的解决Probabilistic Models的Posterior Inference(PI)的办法。其核心思想是把逼近Posterior Distribution的问题转换成为了一个解决KL Divergence的优化问题,从而利用现有的很多优化办法来解决PI的问题。当Probabilistic Models符合Exponential Family的分布时,VI可以很容易利用Coordinate Ascent来解决。但在现实应用中,很多模型并不符合这样的条件,因此,已有不少方法来探讨如何解决VI在Non-conjugate情况下的实现。一般意义的思路是,用Monte Carlo的办法获得Variational Objective所对应的梯度(Gradient)的估计,然后利用这样的估计来进行Stochastic Optimization,从而拟合Variational Parameters。在这样的思路下,已经有了两个主要的研究方向:Black-box VI和Reparameterization Gradients(RG)。RG的想法是把Latent Variable转换成为一组辅助(Auxiliary)参数,使得新的参数不依赖于Variational Parameters。这样一个操作能够让新的Variational Objective更加方便进行Gradient操作,从而达到简化优化过程的目的。然而,RG的主要问题是,这样的办法并不有普遍性(General),只能对于简单的Gaussian variational distribution有作用,而对于类似Gamma、Beta这样的分布则需要进一步的近似处理(Approximation)。这篇文章想提供一个一般意义的RG。在这里,我们不复述具体的细节,不过文章提出的算法核心是把Variational Parameter的梯度,拆成了三个部分:第一部分是通常的(RG);第二部分是一个Correction的Term,如果转换后的Variational Distribution不依赖原来的Variational Parameter,那么这个部分就会成为0;第三个部分,则是标准的Entropy的梯度。在这样的算法下,文章展示了如何对Gamma、Log-normal以及Beta Distribution进行处理,使得这些分布能够进行RG变换。同时,文章给出了一个普通意义下的优化算法。总体说来,这篇文章是把RG的实用型往前推了一步。

Can Active Memory Replace Attention

概要:Active Memory能够替代Attention吗?本文想要探讨这样的话题。不过,从结果看,答案是,不能。

这篇文章来自Google Brain的Lukasz Kaiser和Samy Bengio。文章的主旨是想使用一种叫做Active Memory的机制来替代Attention机制。文章通过扩展第一作者在ICLR 2016提出的一个Neural-GPU模型,使其拥有Active Memory的能力并且叫做Extended-Neural GPU,通过机器翻译来展现该机制可与Attention匹敌。不过,读者们需要注意,文中提出的Active Memory机制主要基于Convolution Operator,是否能够扩展到其他模型,还需要进一步讨论。文章最有价值的部分在于Attention机制以及Active Memory机制的讨论。从模型的发展角度来说,文章指出,Attention机制的提出是要解决使用RNN来进行机器翻译时,因为一个固定维度的Hidden Vector,导致翻译效果下降,甚至在比较长的语句中翻译效果进一步恶化。本质来说,Attention机制就是把这些中间结果组合起来,也就不仅仅是一个固定长度的隐含状态,而是一个所谓的记忆(Memory)Tensor,在解码的每一步,一个基于过去Memory的Distribution会被计算,然后解码器(Decoder)的输入是过去这些Memory的一个加权平均。因此,在这样的机制下,解码器可以对过去不同的细节进行关注,从而产生需要的字符。这套Attention机制已经被认为在机器翻译之外,如图形模型中有较好效果。文章认为Attention的局限在于其定义本身,也就是Attention定义中的Softmax。这个Softmax还是想关注过去Memory中的某一个单元。文章认为,这个局限使得在一些任务中,Attention机制完全无法完成相应的学习功能。是否能够打破这个局限?文章认为Acitve Memory机制可以打破Attention的局限。简单说来,Active Memory就是在解码这个步骤依赖并且访问所有的Memory,每一步解码的Memory都不一样。当然,这个机制在之前的Neural-GPU中已经提出来,并且在那篇文章中展现出了算法任务(Algorithmic Tasks)上的良好性能。但在传统的机器翻译任务上,这样的模型效果并不理想。这篇文章就是想通过对模型进行小改进从而达到在机器翻译任务上的进步。在这里我们不复述模型的改进,因为感觉这个改进并不具备普遍适用性而是为了增强模型性能所做的Hack。不过,文章指出,作者的思路和Grid LSTM比较相似,有兴趣的读者可以去参考。在经历了一系列Hack之后,新提出来的Extended Neural-GPU在机器翻译这个任务上,与GRU+Attention有了相似的模型性能。对于Attention机制有兴趣的读者,可以精读这篇文章。

Stein Variational Gradient Descent: A General Purpose Bayesian Inference Algorithm

摘要:Variational Inference的难点是没有通用的算法模式,这篇文章也许是一个启发。

众所周知,Bayesian Inference的难点是如何对Posterior Distribution进行计算。在很长一段时间内Markov chain Monte Carlo (MCMC)是解决这类问题的有效工具。然而,MCMC的缺点是速度慢,并且很难判断是否已经Converge。所以,这也是很多时候Variational Inference(VI)显得要更加吸引人的原因,因为VI常常是一个Deterministic的算法,并且很多优化(Optimization)领域的工具都可以拿来使用。VI的问题是,对于不同的Model,一般需要进行单独推导,并没有统一的一般形式的算法来解模型。如何提出一个一般意义的算法对VI进行优化,是最近VI领域的热门研究课题。这篇文章也是对该领域推动的一次尝试。文章提出的算法本身比较简单,具有下面这几个特点:

  • 算法初始时从一个简单的Distribution抽出一堆Particles(也可以认为是Samples)。
  • 然后进行多次迭代,每次迭代时所有Particles都朝着减小KL Divergence的方向前进,这一步用作者的观点说就是类似Gradient Descent的一种做法。
  • 最后算法返回一堆Particles,它们已经可以代表Posterior Distribution了。

这个算法最关键的是第二步如何进行,简单说来,涉及两个部分:

  • 把Particles移动到Posterior Distribution的高Probability区域,这样能让Particles具有代表性。
  • 同时,也不让这些Particles都聚拢在一起(Collapsed),也就是说,依然希望这些Particles具有多样性代表整个Posterior Distribution的各个部分。

其实文章的难点和深涩的地方是解释为什么这个流程是正确的算法,里面涉及到所谓的Stein Identity以及Kernelized Stein Discrenpancy。这里就不复述了,有兴趣的读者可以去留意原文。文章的实验部分比较简单,先对一个一维的Gaussian Distribution的情况做了Validation,确保可以运行。紧接着在Bayesian Logistic Regression和Bayesian Neural Network上面做了实验,对比了一系列方法和数据集。总体看,提出的算法有两大优势:第一,准确度明显高于其他算法,第二,速度大幅增加。对于这类新算法文章,可能还是希望能够看到应用到更复杂的模型上以及更大的数据上。

Coresets for Scalable Bayesian Logistic Regression

摘要:在大规模机器学习的浪潮中,主要思路往往是改进算法本身来适应数据的增大。这篇文章则提出一个新颖的思路,来构建具有代表性的数据集,从而来扩展算法的规模。

这篇文章出自麻省理工(MIT)Tamara Broderick教授的实验室。Tamara之前是Michael Jordan的学生,主要研究Bayesian Nonparametric模型。文章思路比较新颖,在传统的把基于单机的Bayesian inference算法推广到大数据的过程中,一般的思路往往是改进算法本身。比如文章提到了Streaming Variational Inference或者是Distributed MCMC等算法,都是要在经典的算法基础上进行更改,适应大数据的应用场景。对于这样的一般思路,文章认为这些改进后的算法往往缺乏理论的严格证明,并且也对算法的质量并没有保证。这篇文章的观察是基于这么一个假设,那就是在大数据的情况下,数据本身往往是冗余的。比如,在一个新闻事件爆发的时候,很多对于这个事件的报道都是相似的。这篇文章的根本思路是,尝试改变数据集,而不是算法本身,来达到算法的大规模应用。文章采取了一个叫Coreset的概念,也就是一个加权的数据子集,用来逼近全集数据。Coreset这一概念已经在诸如K-means或者PCA等算法中得到研究,之前并没有被应用到Bayesian的情况下。这篇本文是用Bayesian Logistic Regression来做例子。那么,这个Coreset如何构建呢?文章提出了这样的算法:

  • 首先要基于一个K-Clustering(后来的实验中采用了K-means);
  • 然后计算一个叫做Sensitivity的值,用来衡量每一个数据点是否冗余,这个值越大,就越不冗余;
  • 把所有的Sensitivity重新Normalize,并且从Normalize之后的Weight里面,Sample出一组数据,最后留下非零Weight的数据集。

文章对这个Coreset进行了严格的证明,这里就不复述了。文章的实验在生成的数据集以及真实数据集中都进行了对比。在好几个数据集上,采用Coreset的算法能够在几千到几万这个数量级上很快达到普通算法在全集上的效果。不过,文章也留下了几个非常根本的疑问,比如这个Coreset看上去是为Logistic Regression特殊构造的,不知道对于其他的算法该如何构造。另外,算法本身需要对数据进行K-Clustering,这对于大数据来说可能已经很难达到,于是整体的算法效率还有待考验。不过这些不掩盖这篇文章的新颖思路。

Data Programming: Creating Large Training Sets, Quickly

摘要:在很多机器学习的任务中,构建一个有标注的数据集可能是最消耗人工的步骤。这篇文章提出了一个叫Data Programming的理论来尝试解决这个问题。

这篇文章来自斯坦福大学的一批学者。他们想要解决这么一个问题,那就是在很多机器学习的任务中,构建一个有标注的数据集可能是最消耗人工的步骤。如何能够有效降低这步的时间和投入的精力,成了这篇文章的主题。文章提出了一个叫Data Programming的概念。简单说来,在这个框架下,用户提供一组Heuristic标注函数(Labeling Functions)。这些标注函数可以互相抵触,可以重复,也可以依赖外部的Knowledge Base等。然后,文章提出的框架则学习各个标注函数之间的Correlation关系,从而可以利用多种标注函数,达到监督学习(Supervised Learning)的效果。文章采用Logistic Regression在Binary的分类问题上作为一个例子。每一个Heuristic标注函数拥有两个参数,一个是控制有多大可能性标注一个对象,而另一个则是控制标注对象的准确度。于是学习这两个参数就成为目标函数的主要部分。在所有的标注函数都是独立的情况下,文章采用了最大似然(Maximum Likelihood Estimation)的方法估计到这两个参数的取值。在已经得到了这两个估计的情况下,作者们进一步利用原本的Logistic Regression来学习一个分类器。也就是说,整个框架分为两个部分。当然,独立的标注函数作用还是有限。文章提出了一个类似Markov Random Field的方式来处理各个标注函数之间的相互关系。在数据实验中,基于Data Programming的方法不管是在人工Feature还是采取LSTM自动学习的Feature中都有很显著的效果提升。这篇文章非常适合需要对Crowdsourcing进行学习和研究的学者。

Residual Networks Behave Like Ensembles of Relatively Shallow Network

摘要:残差网为什么能够训练深层次的网络?这篇文章从集成学习(Ensemble Learning)的角度入手,给残差网新的解释。

这篇文章来自于康奈尔大学的学者,他们在这篇文章里,主要是想从全新的,也就是集成学习(Ensemble Learning)的角度来解释残差网的成功。这篇文章的贡献主要有以下三个方面:

  • 文章展示了残差网其实可以被看做是很多路径(Path)的集合,而不仅仅是一个很深的网络。
  • 文章通过研究发现,这些路径并不互相紧密拟合。同时,这些路径表现出了集成学习的效果。
  • 作者同时也研究了残差网的Gradient问题,发现仅仅是短路径对Gradient的传播起了作用,而更深的路径在训练模型时并不是必须的。

文章的核心其实是把残差网的所有层级之间的路径全部展开(Unravel),从而可以展示出残差网其实是很多变元(Variable)的路径,也就是由路径长短不一的网络群组成。在这样的启示下,我们很容易发现,即便删除残差网的一些节点,这仅仅会影响非常多路径中的一部分,但对整体路径群并没有特别大的影响。从这一点来说,残差网和传统的Feed-Forward网络有很大的不同。作者做了几组实验来展示这种变元路径对于残差网的影响。首先,删除残差网中的Residual Module,并且比较了相同的行为在VGG网络中的情况。效果是残差网的性能并没有得到根本的变化,而VGG的性能则大打折扣。进一步,作者删除了残差网中的多个Module,观察到误差进一步上升,从而发现模块的个数和性能的相关性,得出残差网有集成学习效应的结论。另外一个实验,则是作者任意更换模块的顺序,结果惊人,残差网居然对于部分的模块交换有鲁棒(Robust)效果。文章最后通过一些小的模拟实验,验证了关于Gradient的假设,并且展示了残差网中真正起作用的路径其实都相对较短。文章应该是打开了很多未来研究的话题,比如残差网如果并没有真正解决深度网络的“深”(Deep)的问题,而是多样性的路径带来了残差网性能上的提升,那么深度网络究竟需不需要很深的结构呢?能不能训练很多结构迥异的小网络,或者是动态生成这些小网络,然后依靠集成学习来达到残差网的效果呢?这些都是未来可以探讨的课题。

来源:http://geek.csdn.net/news/detail/189766

阅 3,909
0

一、熟悉网页代码
搜索引擎蜘蛛是直接爬行网页代码来获取信息的,所以你需要有一双和搜索引擎一样的眼睛,能清楚的识别网页html代码(特别是Title、Meta、Header、Body、Text、Alt、Tag)、CSS代码,熟悉JS、框架的运用,掌握W3C标准。

二、熟悉网站架构
这是看起来很复杂而且很需要时间,包括网站域名、服务器(或空间)、页面技术、网站设计、网站功能、程序开发和数据库,但我们并不需要很精通,但至少要对Apache/IIS服务器有充分的了解,知道如何静态化,如何对搜索引擎bot进行测试。