## NIPS 2016精选论文 人工智能和机器学习的顶级会议 Neural Information Processing Systems 2016 (NIPS 2016)12月已经在西班牙的巴塞罗那圆满举行。因为 NIPS 的论文涵盖主题非常广泛,所以一般读者很难从浩如烟海的文献中即刻抓取到有用信息。同时,读到有价值的信息需要专业知识和不少时间投入。在本文中,继续上一期,笔者精选出5篇有意思的文章,为读者解惑。 #### 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)的问题,而是多样性的路径带来了残差网性能上的提升,那么深度网络究竟需不需要很深的结构呢?能不能训练很多结构迥异的小网络,或者是动态生成这些小网络,然后依靠集成学习来达到残差网的效果呢?这些都是未来可以探讨的课题。