AI 科技评论按:对于计算机视觉领域的研究人员、产品开发人员来说,在 ImageNet 上预训练模型然后再用自己的任务专用数据训练模型已经成了惯例。但是自然语言处理领域的研究人员和开发人员们似乎并不是这样做的 —— 等等,也许 NLP 领域的「ImageNet 时代」马上就要带来了。
本文的作者是 Sebastian Ruder,主攻方向是自然语言处理与深度学习,他是 Insight 数据分析研究中心的博士生,同时也是都柏林自然语言处理创业公司 AYLIEN 的科学家,他在自然语言处理相关的顶会上发表过多篇一作文章,同时也是 ULMFiT 的共同作者;他的个人博客是http://ruder.io/。AI 科技评论根据原文进行了编译。
在自然语言处理(NLP)的领域里,一些巨变正在悄然发生。
作为自然语言处理的核心特征表示技术,词向量(Word vectors)长期统治着自然语言处理领域,但是它最近却面临着一系列强有力的挑战:ELMo(https://arxiv.org/abs/1802.05365)、ULMFiT(https://arxiv.org/abs/1801.06146)和OpenAI Transformer(https://s3-us-west-2.amazonaws.com/openai-assets/research-covers/language-unsupervised/language_understanding_paper.pdf)。这些工作无一例外都成为了新闻头条,因为它们都证明了自己的预训练语言模型可以在各种自然语言处理任务中取得最佳的结果。这些方法的出现预示着一个分水岭时刻的到来了:这些预训练语言模型有可能会在自然语言处理领域造成巨大而广泛的影响,正如 ImageNet 预训练模型在计算机视觉中所造成的影响一样。
从浅层到深度预训练
预训练的词向量已经统治了自然语言处理领域相当长一段时间。Word2vec在 2013 年被作为语言建模的近似而提出,当时硬件速度比现在要慢,而且深度学习模型也还没有得到广泛的应用,此时 Word2vec 凭借着自身的效率和易用性得以脱颖而出。从那时起,自然语言处理研究的标准方法就基本保持不变:通过 Word2vec 和 GloVe 等算法在大量未标注的数据上预训练获得词嵌入向量,然后词嵌入向量将被用于初始化神经网络的第一层,而网络的其它部分则是根据特定的任务,利用其余的数据进行训练。在大多数训练数据有限的任务中,这种做法能够使准确率提升2 到 3 个百分点(http://www.aclweb.org/anthology/D14-1181)。不过尽管这些预训练的词嵌入向量具有极大的影响力,但是它们存在一个主要的局限:它们只将先前的知识纳入模型的第一层,而网络的其余部分仍然需要从头开始训练。
由 word2vec 捕捉到的关系(来源:TensorFlow 教程)
Word2vec 以及相关的其它方法属于浅层方法,这是一种以效率换表达力的做法。使用词嵌入向量就像使用那些仅仅编码了图像边缘信息的预训练特征表示向量,来初始化计算机视觉模型,尽管这种做法对许多任务都是有帮助的,但是却无法捕捉到那些也许更有用的高层次信息。采用词嵌入向量初始化的模型需要从头开始学习,模型不仅要学会消除单词歧义,还要理解单词序列的意义。这是语言理解的核心内容,它需要建模复杂的语言现象,例如语义合成性、多义性、指代、长期依赖、一致性和否定等等。因此,使用这些浅层表示初始化的自然语言处理模型仍然需要大量的训练样本,才能获得良好的性能。
而新晋挑战者 ULMFiT、ELMo 和 OpenAI Transformer 的核心在于关键范式的转变:从只初始化模型的第一层转向了使用分层表征(Hierarchical representations)预训练整个模型。如果把学习单词向量比作计算机视觉中学习图像边缘,那么这些新方法就像学习图像特征的完整层次结构一样,从边缘到形状,再到高级语义概念。
有趣的是,计算机视觉社区已经采用预训练模型许多年,这些预训练首先是针对整个模型的,其次它们同时学到了低层级和高层级特征。大多数情况下,预训练是通过在大型 ImageNet 数据库上学习图像分类来实现的。现今 ULMFiT、ELMo 和 OpenAI Transformer 相当于给自然语言处理社区带来了「语言任务的 ImageNet」,也就使得模型能够学习到文本中更高层次的细微差别;这类似于 ImageNet 上的预训练使得计算机视觉模型学习到了图像的通用特征。在本文的剩余部分,我们将通过扩展和构建 ImageNet 的类比,来解释为何这些新方法看起来如此有前途。
ImageNet
ImageNet 是一个大规模图像识别挑战赛
毫不夸张地说,ImageNet 对机器学习研究过程的影响是巨大的。该数据集最初发布于 2009 年,并迅速演变为 ImageNet 大规模视觉识别挑战赛(ILSVRC)。2012 年,Alex Krizhevsky、Ilya Sutskever 和 Geoffrey Hinton 提交的深度神经网络模型预测结果比第二名高出了 41%,这表明了深度学习是一种可行的机器学习策略,并暗示了机器学习研究中深度学习即将迎来爆炸性增长。
ImageNet 的成功表明,在深度学习时代,数据与算法是同等重要的。不仅仅是因为 ImageNet 在 2012 年给予了深度学习证明自己的机会,而且还在迁移学习中实现了类似的重要性突破:研究人员很快意识到可以使用 ImageNet 最佳模型学习到的权重来初始化其它任务的模型,并且尽管数据集不同,但是这对模型性能提高依然有很大的帮助。这种「微调(fine-tunning)」的方法可以实现很好的效果,甚至每个类别给出一个正样本就足够了(https://arxiv.org/abs/1310.1531)。
在 ILSVRC-2012 上训练的特征可以泛化到 SUN-397 数据集上
预训练的 ImageNet 模型已经被用于诸如物体检测、语义分割、人体姿态估计和视频识别等任务中,并且都取得了最佳的结果。同时,这些预训练模型也使得深度学习得以应用到训练样本数量较少且标注昂贵的领域。通过在 ImageNet 上预训练的迁移学习是如此地有效,以至于现今在计算机视觉领域如果不这么做反而被认为是在蛮干(https://arxiv.org/abs/1805.00932)。
探秘 ImageNet
为了确定语言任务中的 ImageNet 会是什么样的,我们首先需要确认是什么特性使得图像 ImageNet 如此适合迁移学习。早期的研究(https://arxiv.org/abs/1608.08614)仅仅是揭开了这个问题的冰山一角:减少类别数量或者是每个类别的样例数量仅仅只会导致性能的微小下降,而细粒度类别(Fine-grained classes)和更多的数据并不总是对模型有益的。
为了探秘 ImageNet,我们并非是要直接浏览数据集,而是要探究在 ImageNet 上训练的模型到底学到了什么。众所周知,在 ImageNet 上训练的深度神经网络特征有一个特点,即从网络的第一层到最后一层,特征逐渐由通用转向了特殊(由任务决定,https://arxiv.org/abs/1411.1792)。网络的较低层学习对诸如边缘这样的低级特征进行建模,而较高层则对图像较高级的概念进行建模,例如模式或物体(参见 AI 科技评论往期CNN 特征可视化文章),如下图所示。重要的是,关于边缘、结构和物体的视觉组成等知识在很多计算机视觉任务中是通用的,这揭示了为何这些网络层可以被用于迁移学习。因此,一个类 ImageNet 数据集的关键属性是,要能促使模型学习那些可以推广到该问题领域中其它任务的特征。
上图可视化了 GoogLeNet 不同层的特征所捕捉到的信息,来自 ImageNet 上训练的 GooLeNet
除此之外,很难再进一步概括为什么 ImageNet 的迁移能力会如此强大。ImageNet 数据集的另一个优点是高质量的数据标注。ImageNet 的创建者竭尽全力地保证了标注的准确可靠性和一致性。然而,作为对立面存在,远程监督(Distant supervision)领域的工作表明,大量弱标签数据通常情况下也是足够的。事实上,最近 Facebook 的研究员表示,他们可以通过
预测数十亿社交媒体图像的话题标签
来预训练模型,然后该模型还可以在 ImageNet 上取得最佳的准确率。
所以我们总结出了两个关键需求:
一个类 ImageNet 数据集应该足够大,比如拥有数百万个训练样例。
它应该代表着该学科的问题空间。
语言任务的 ImageNet
在自然语言处理任务中,其模型建模深度通常都要比对应的计算机视觉模型来得浅。因此,对特征的分析主要集中在第一层嵌入上,并且针对更高层次迁移学习性质的研究工作也是少之又少。假设我们拥有了充足的数据集,满足了刚才提到的需求点#1。那么鉴于自然语言处理的现状,将存在以下几个竞争数据集。
阅读理解是一项要求算法针对一段指定文本回答自然语言问题的任务。这项任务最受欢迎的数据集是斯坦福问答数据集(SQuAD),它包含有 10 万多对问答对(question-answering pairs),并且要求模型将答案在文本中进行高亮显示,如下图所示。
来自 SQuAD 数据集的问答对样例
自然语言推理任务要求算法识别一段文本和一个假设之间的关系(蕴含、矛盾和中立)。斯坦福自然语言推理(SNLI)语料库是这项任务最受欢迎的数据集之一,它包含有 57 万对由人类书写的英语句子对。数据集的样例展示如下。
来自 SNLI 数据集的样例
机器翻译就是将一种语言的文本翻译成另一种语言的文本,它是自然语言处理领域研究最多的任务之一。并且多年以来,已经为主流语言积累了大量的训练样本对,比如,WMT 2014 中的 4 千万对英语-法语句子对。下图给出了两个翻译样例。
来自 newstest2014 的法语转英语翻译
成分句法分析(Constituency parsing)任务试图以线性化成分分析树的形式提取句子的句法结构,如下图所示。过去,数百万弱标签的解析已经被用于训练该任务的序列到序列模型。
一棵解析树以及它的线性化表示
语言建模(Language modeling, LM)旨在给出当前单词的情况下,让算法预测出下一个单词。现有的基准数据集最多含有 10 亿个单词,但是由于该任务是无监督的,所以可以使用任意数量的单词进行训练。下图给出了 WikiText-2 数据集样例,它由维基百科文章组成。
来自于 WikiText-2 语言建模数据集的样例
上述所有任务都提供了充足的训练样本。事实上最近几个月内,上述任务(以及许多其它任务,诸如情绪分析、成分句法分析、skip-thoughts和自动编码)已经被应用于预训练特征表示。
虽然任何数据集都会存在一定的偏差,但是人类标注员(human annotators)可能会无意中引入一些模型可以利用的其它信号。最近的研究(https://arxiv.org/abs/1803.02324)表明,阅读理解和自然语言推理等任务的最佳模型,并没有表现出对自然语言的深刻理解,而仅仅是利用这些信号实现了浅层的模式匹配。例如,https://arxiv.org/abs/1803.02324论文中表明,标注员倾向于简单地通过删除性别或数字信息来产生蕴含样本,并通过引入否定来产生矛盾样本。简单地利用这些信号的模型可以正确地对假设进行分类,而不用在大约 67% 的 SNLI 数据集中查看前提。
因此,更难的问题是:哪个任务最能代表自然语言处理的问题空间?换句话说,哪个任务可以使得我们学习到理解自然语言所需的大部分知识或关系?
语言建模样例
为了预测句子中最可能的下一个单词,模型不仅需要能够表达语法(预测单词的语法形式必须与其修饰语或动词匹配),还需要能够表达模型语义。更重要的是,最准确的模型必须包含有世界知识或者说常识。考虑一个不完整的句子,「服务很差,但是食物……」,为了预测后续的单词,如「美味」或「好吃」,模型不仅要记住用于描述食物属性的单词,还要能够识别出连接词「但是」给原句中引入了转折,以便于预测的新属性具备有相反的情绪。
语言建模已经被证明可以捕获与下游任务相关的许多知识,例如长期依赖、层次关系和情绪。与相关的无监督任务(例如 skip-thoughts 和自动编码)相比,语言建模在语法任务上的表现更出色,即使是使用了更少的训练数据(https://openreview.net/forum?id=BJeYYeaVJ7)。
语言建模的最大优势之一是,训练数据可以来自于任意的文本语料库,这意味着可以获得无限量的训练数据。这一点尤其重要,因为自然语言理解不仅涉及英语,这个世界上还有许多其它语言。作为预训练任务的语言建模,为那些小语种的语言应用开发打开了一扇大门。对于资源非常匮乏的语言,有可能未标注数据也非常少,而多语言模型(Multilingual language models)可以同时在多个相关的语言上进行训练,这类似于跨语言嵌入(Cross-lingual embeddings)向量的研究工作(https://arxiv.org/abs/1706.04902)。
ULMFiT 的不同阶段(来源:Howard and Ruder, 2018)
到目前为止,我们将语言建模作为预训练任务的论点纯粹是概念性的。但是最近几个月,我们也获得了一些经验性证据:语言模型嵌入(Embeddings from Language Models, ELMo)、通用语言模型微调(Universal Language Model Fine-tuning, ULMFiT)和OpenAI Transformer已经经验性地证明了语言建模可以用于预训练。这三种方法都采用了预训练语言模型来实现自然语言处理中各种任务的最佳效果,这些任务包括文本分类、问答、自然语言推理、共指消除、序列标记等等。
在许多情况下,例如下图中的 ELMo,它在各个主流的研究基准中均比最佳成绩高出了 10%~20%,所有这些都采用了一个核心方法——使用预训练语言模型。此外,ELMo 还获得了 NAACL-HLT 2018 最佳论文奖,这是该领域的顶级会议之一。最后,这些模型已经被证明具有极高的采样效率,只需数百个样本就可以实现很好的性能,甚至可以实现零样本(Zero-shot)学习。
改进的 ELMo 模型在多个自然语言处理任务上取得成功
鉴于这一策略发生了变化,未来一年的时间内,自然语言处理从业者很有可能将采用预训练的语言模型,而不是继续使用预训练的词嵌入向量。这就类似于预训练的 ImageNet 模型是当今大多数计算机视觉任务的起点。
然而,类似于 word2vec,语言建模任务也具有自身的局限性:它只是真正语言理解的代理,并且单个整体模型(Monolithic model)没有能力去捕获某些下游任务所需的信息。例如,为了回答或者跟踪故事中角色的成长轨迹,模型需要学会处理指代或共指消除。此外,语言模型只能捕捉到它们所看到的内容。某些类型的信息,例如大多数常识信息,都难以仅从文本中学习,它们的习得需要结合额外的信息。
一个关键的问题是,如何将信息从预训练的语言模型迁移到下游任务中。这涉及两个主要范例,是否将预训练的语言模型用作固定的特征提取器,并将其表示作为特征结合到一个随机初始化的模型中(这正是ELMo的做法);又或者是否像ULMFiT一样选择微调整个语言模型。后一种微调的策略在计算机视觉中比较经典,这种策略会将模型的最顶层或者靠近顶部的若干层进行微调。不过自然语言处理模型深度通常更浅,因此需要与视觉不同的微调策略,而最近自然语言处理的预训练模型正在变得越来越深。接下来的几个月将展示迁移学习的各个核心组件对自然语言处理的影响:一个富有表现力的语言模型编码器,比如深度 BiLSTM 或者Transformer 模型;用于预训练的数据数量和质量;用于微调预训练模型的方法。
理论支持
到目前为止,我们的分析主要是概念性和经验性的,因为人们仍然很难理解为什么在 ImageNet 以及语言建模上训练的模型具有如此好的迁移能力。偏差学习(Bias learning,https://arxiv.org/abs/1106.0245)的建模方式为我们提供了另一种探索预训练模型泛化能力的途径,而且这种方法更加规范。假定我们的问题领域涵盖了特定学科中任务的所有排列,例如,由计算机视觉构建起我们的生活环境。我们获得了大量的数据集,这使得我们能够诱导一系列假设空间 H=H。我们在偏差学习中的目标就是找到一个偏差,即在整个(可能是无限的)环境中能够最大化性能的假设空间
。
多任务学习中的经验和理论结果(Caruana, 1997; Baxter, 2000)表明,在足够多的任务中学到的偏差可能可以推广到从同一环境中得出的其它未知任务。从多任务学习的角度来看,在 ImageNet 上训练的模型学习了大量的二分类任务(一种类别就属于一项二分类任务)。这些任务都是来自自然界的真实图像,可能代表了许多其它的计算机视觉任务。同样,一种通过学习大量分类任务(一个单词属于一项分类任务)的语言模型,可能学会了有助于自然语言处理领域中许多其它任务的特征表示。尽管如此,要完全理解为什么语言建模对迁移学习如此有效,还需要更多的研究来获得更好的理论解释。
开启「ImageNet」时代
时机已经成熟,实用性的迁移学习已经成功地侵入了自然语言处理。鉴于 ELMo、ULMFiT 和 OpenAI 的最新工作取得了如此令人印象深刻的成果,要人们放弃使用预训练的词嵌入向量,而改用预训练的语言模型,这似乎只是时间问题。这一变化也许会为那些受限于数据数量的自然语言处理任务打开通往新世界的大门。
领取专属 10元无门槛券
私享最新 技术干货