选自the Gradient,做者:Sebastian Ruder,机器之心编译。算法
计算机视觉领域常使用在 ImageNet 上预训练的模型,它们能够进一步用于目标检测、语义分割等不一样的 CV 任务。而在天然语言处理领域中,咱们一般只会使用预训练词嵌入向量编码词汇间的关系,所以也就没有一个能用于总体模型的预训练方法。Sebastian Ruder 表示语言模型有做为总体预训练模型的潜质,它能由浅到深抽取语言的各类特征,并用于机器翻译、问答系统和自动摘要等普遍的 NLP 任务。Ruder 一样展现了用语言模型作预训练模型的效果,并表示 NLP 领域中的「ImageNet」终要到来。
天然语言处理(NLP)领域正在发生巨变。网络
长期以来,词向量一直是天然语言处理的核心表征技术。然而,其统治地位正在被一系列使人振奋的新挑战所动摇,如:ELMo、ULMFiT 及 OpenAI transformer。这些方法因证实预训练的语言模型能够在一大批 NLP 任务中达到当前最优水平而吸引了不少目光。这些方法预示着一个分水岭:它们在 NLP 中拥有的影响,可能和预训练的 ImageNet 模型在计算机视觉中的做用同样普遍。机器学习
由浅入深的预训练工具
预训练的词向量给 NLP 带来了很大的提升。2013 年提出的语言建模近似——word2vec 凭借其效率和易用性在硬件速度慢得多且深度学习模型没有获得普遍支持的时代获得采用。此后,进行 NLP 项目的标准方式基本保持不变:经过 word2vec 和 GloVe 等算法对大量未标记数据进行预处理的词嵌入被用于初始化神经网络的第一层,其它层随后在特定任务的数据上进行训练。在大多数训练数据有限的任务中,这种方法帮助提升了两到三个百分点。尽管这些预训练的词嵌入颇具影响力,但它们也有局限:它们仅包含模型第一层的先验知识——网络的其他部分还须要从头开始训练。性能
word2vec 及其它相关方法是为了实现效率而牺牲表达性的浅层方法。使用词嵌入就像利用仅编码图像边缘信息的预训练表征初始化计算机视觉模型:它们在许多任务中都能发挥做用,可是却没法捕捉到可能发挥更大做用的高层次信息。利用词向量初始化的模型须要从头开始学习,不只是学习消除歧义,还要学习从词组成的句子中提取意义。这是语言理解的核心,须要建模语义组合、一词多义、首语重复、长期依赖、一致性、否认等许多复杂的语言现象。所以,用这些浅层表示初始化的 NLP 模型仍然须要大量的示例才能得到良好的性能也就不足为奇了。学习
ULMFiT、ELMo 和 OpenAI transformer 最新进展的核心是一个关键的范式转变:从仅仅初始化模型的第一层到用分层表示对整个模型进行预处理。若是学习词向量就像仅学习图像的边,那么这些方法就像学习特征的完整层次,从边到形状,再到高级语义概念。编码
有趣的是,预训练整个模型以得到初级和高级特征在计算机视觉社区中已经采用好几年了。大多数状况下,预训练模型都是在 ImageNet 大型数据集上学习分类图像而训练出来的。ULMFiT、ELMo 和 OpenAI transformer 已经为 NLP 社区带来了天然语言中的「ImageNet」,这种任务能容许模型学习语言的高级细微差异。这就相似于 ImageNet 容许预训练 CV 模型以学习广泛意义的图像特征。在本文后面的部分中,咱们将语言建模与 ImageNet 计算机视觉建模作类比,并展现为何这种方法看起来会如此有前景。翻译
ImageNet3d
ImageNet 对机器学习研究具备重要影响。该数据集最初发布于 2009 年,并迅速演变为 ImageNet 大规模视觉识别挑战赛(ILSVRC)。2012 年,Alex Krizhevsky、Ilya Sutskever 和 Geoffrey Hinton 提交的深度神经网络超过第二名 41 %,代表深度学习是一种可行的机器学习策略,该深度神经网络能够说是引起了机器学习研究中深度学习的爆发。代理
ImageNet 的成功凸显了在深度学习时代,数据至少和算法同样重要。ImageNet 数据集不只使 2012 年很是重要的深度学习能力展现成为可能,并且在迁移学习中也取得了一样重要的突破:研究人员很快意识到,在 ImageNet 现有模型中学习的权重可用于彻底初始化其它数据集的模型,并显著提升性能。这种「微调」方法容许在每一个类别只有一个正面示例的状况下实现良好性能(Donahue et al., 2014)。
在目标识别、语义分割、人体姿态估计和视频识别等任务上,预处理的 ImageNet 模型已用来实现最优水平。与此同时,它们还使得 CV 得以应用于训练示例数量少、注释成本高的领域。在 CV 中,在 ImageNet 上经过预处理进行迁移学习实际上很是有效,以致于如今不使用它会被认为是蛮干(Mahajan et al., 2018)。
ImageNet 中有什么?
为了肯定用于语言处理的 ImageNet 多是什么样子,咱们首先要肯定什么使 ImageNet 有利于迁移学习。以往的研究只揭示了这个问题的一部分:减小每一个类的示例数或类别数只会致使性能降低,而细粒度类和更多数据并不是总意味着更好的结果。
与其直接查看数据,更谨慎的作法是探究在数据上训练的模型学到了什么。众所周知,在 ImageNet 上训练的深层神经网络的特征迁移顺序为从第一层到最后一层、从通常任务到特定任务:较低层学习建模低级特征,如边缘,而较高层学习建模高级概念,如图案和整个部分或对象,以下图所示。重要的是,关于物体边缘、结构和视觉组成的知识与许多 CV 任务相关,这就揭示了为何这些层会被迁移。所以,相似 ImageNet 的数据集的一个关键属性是鼓励模型学习能够泛化到问题域中新任务的特征。
除此以外,很难对 ImageNet 上迁移作得如此出色的缘由做出进一步的归纳。例如,ImageNet 数据集的另外一个优势多是数据的质量。ImageNet 的建立者尽力确保注释的可靠性和一致性。然而,远程监管的工做是一个对比,这代表大量弱标记数据一般是足够的。事实上,Facebook 的研究人员最近显示,他们能够经过预测数十亿个社交媒体图像上的 hashtags 到 ImageNet 上最新的准确性来预先训练模型。
没有任何更具体的看法,但咱们有两个关键的需求:
用于语言任务的 ImageNet
相比于 CV,NLP 的模型一般浅得多。所以对特征的分析大部分聚焦于第一个嵌入层,不多有人研究迁移学习的高层性质。咱们考虑规模足够大的数据集。在当前的 NLP 形势下,有如下几个常见任务,它们都有可能用于 NLP 的预训练模型。
阅读理解是回答关于一个段落天然语言问题的任务。该任务最流行的数据集是 Stanford Question Answering Dataset (SQuAD),其中包含了超过 10 万个问答对,并经过突出显示段落中的几个单词来让模型回答一个问题,以下图所示:
天然语言推理是识别一段文本和一个假设之间关系(蕴涵、矛盾和中性等)的任务。该任务最流行的数据集是 Stanford Natural Language Inference (SNLI) Corpus,包含 57 万我的类写的英语句子对。该数据集的示例以下图所示。
SNLI:nlp.stanford.edu/projects/sn…
机器翻译,即将文本从一种语言转换到另外一种语言,是 NLP 中研究最充分的任务之一。而且多年来,人们为经常使用的语言对累积了大量的训练数据,例如 WMT2014 的 4 千万个英语法语句子对。下图是两个示例翻译对。
选区解析(Constituency parsing)以(线性化)解析树的形式提取句子的句法结构,以下图所示。在过去,人们在该任务中使用数百万个弱标记解析来训练序列到序列的模型(参见《Grammar as a Foreign Language》)。
语言建模(LM)在给定前一个单词的状况下尝试预测下一个单词。已有的基准数据集由大约 10 亿个单词构成,但因为该任务是无监督的,所以可使用任意数量的单词来训练。下图是由维基百科文章构成的经常使用 WikiText-2 数据集的示例。
WikiText-2:einstein.ai/research/th…
全部这些任务提供或容许收集足够数量的示例来训练。实际上,以上任务(以及不少其它任务例如情感分析、skip-thoughts 和自编码等)都曾在近几个月被用于预训练表征。
虽然任何的数据都包含某些误差,人类标注可能无心间引入额外信息,而模型也将会利用这些信息。近期研究代表在诸如阅读理解和天然语言推理这样的任务中的当前最优模型实际上并无造成深度的天然语言理解,而是注意某些线索以执行粗浅的模式匹配。例如,Gururangan 等人 (2018) 在《Annotation Artifacts in Natural Language Inference Data》中代表,标注者倾向于经过移除性别或数量信息生成蕴涵示例,以及经过引入否认词生成矛盾。只需使用这些线索,模型就能够在未查看前提的状况下在 SNLI 数据集上以 67% 的准确率分类假设。
所以,更困难的问题应该是:哪一个任务在 NLP 中最具表明性?换种说法,哪一个任务使咱们能学到最多关于天然语言理解的知识或关系?
语言建模
为了预测句子中最可能出现的下一个词,模型不只须要能表达语法,即模型预测下一个词的语法形式必须与其修饰语或动词匹配。同时模型还须要理解语义,此外那些最准确的模型必须包含世界知识或常识等内容。若思考一条不完整的语句「The service was poor, but the food was」,为了预测「yummy」或「delicious」等后续单词,模型不只须要记住用于描述食物的属性,还须要识别连词「but」以引入相反的语义,所以新的属性应该是与情感词「poor」相对的。
语言建模是最后提到的一种方法,它已经被证实能为下游任务捕获不少与语言相关的属性,例如长期依赖性关系、层级关系和情感语义等。相比于自编码器等无监督学习任务,语言建模即便只有少许训练数据也能在句法任务上有很是好的表现。
语言建模最大的优点在于,训练数据能够免费从任何文本语料库获取,所以几乎能得到无限的训练数据。这很是重要,由于 NLP 并不仅限于英语,有超过 1000 人使用的语言有 4500 种。做为预训练任务的语言建模为之前语言服务支持很差的语种打开了大门,咱们能够直接使用文本数据无监督地训练语言模型,并应用到翻译、信息抽取等任务中。而对于那些无标注数据都不足的稀有语言,多语语言建模能先在多个相关语种上训练,例如跨语言词嵌入等。
到目前为止,咱们将语言建模做为预训练任务的论点纯粹是概念性的。可是在最近几个月,咱们也得到了一些实验性证实:语言模型的词嵌入(ELMo)、广泛语言模型精调(ULMiT)和 OpenAI Transformer 已经实验性地证实了语言模型能用于预训练任务,正如上图所示的 ULMFiT。这三种方法都使用预训练语言模型来实现当前最优的天然语言处理任务,例如文本分类、问答系统、天然语言推断、指代消歧和序列标注等问题。
在以下所示的 ELMo 等不少状况中,使用预训练语言模型做为核心的算法在普遍研究的基准上,要比当前最优的结果高 10% 到 20%。ELMo 同时也得到了 NLP 顶会 NAACL-HLT 2018 的最佳论文。最后,这些模型表现出很是高的样本效率,达到最优性能只须要数百样本,甚至能够实现 zero-shot 学习。
鉴于这一步取得的变化,NLP 实践者极可能在一年后下载预处理的语言模型,而不是预处理的词嵌入,来用于他们本身的模型中,就像如今大多数 CV 项目的起点是如何预处理 ImageNet 模型同样。
然而,和 word2vec 类似,语言建模的任务有其自然的局限性:它只是做为真正的语言理解的一个代理,而且单体模型并不足觉得特定的下游任务捕捉须要的信息。例如,为了回答关于或跟随故事中人物轨迹的问题,模型须要学习执行指代或消解。此外,语言模型仅能捕捉它们所见过的东西。特定类型的信息,例如大部分常识,很难仅从文本中学习到,并须要整合外部信息。
一个突出的问题是如何从一个预训练语言模型将信息迁移到下游任务中。有两个主要的范式,一是是否将预训练语言模型做为固定的特征提取器,并将其表征做为特征整合到随机初始化的模型(正如 ELMo 所作的)中;二是是否微调完整的语言模型(如 ULMFiT 所作的)。后者在计算机视觉中很经常使用,其中训练时会调整模型的最高层或最高的几层。虽然 NLP 模型一般更浅,所以相比对应的视觉模型须要不一样的微调技术,但近期的的预训练模型变得更深了。我在下一月将展现 NLP 迁移学习的每一个核心组件的做用:包括表达性很强的语言模型编码器(如深度 BiLSTM 或 Transformer),用于预训练的数据的量和本质,以及微调预训练模型使用的方法。
但理论依据何在?
到目前为止,咱们的分析主要是概念和经验上的,咱们仍然难以理解为何模型先在 ImageNet 上进行训练就能在语言建模上迁移得如此之好。一种更为正式的、考虑预训练模型泛化能力的方式是基于「偏置学习」(bias learning)模型(Baxter, 2000)。假设咱们的问题域覆盖特定学科中任务的全部排列,例如计算机视觉——它构成了环境。咱们对此提供了许多数据集,容许咱们诱导一系列假设空间 H=H'。咱们在偏置学习中的目标是找到偏置,即假设空间 H'∈H,它能够在整个(多是无限的)环境中最大化性能。
多任务学习中的经验和理论结果(Caruana,1997; Baxter,2000)代表,在足够多的任务中学习到的偏置或许能够推广到在一样环境中未见过的任务上。经过多任务学习,在 ImageNet 上训练的模型能够学习大量的二进制分类任务(每一个类一个)。这些任务都来自天然、真实世界的图像空间,可能对许多其余 CV 任务也有表明性。一样,语言模型经过学习大量分类任务(每一个词一个)可能诱导出有助于天然语言领域许多其余任务的表征。然而,要想从理论上更好地理解为何语言建模彷佛在迁移学习中如此有效,还须要进行更多的研究。
NLP 的 ImageNet 时代
NLP 真正转向迁移学习的时机已经成熟。鉴于 ELMo、ULMFiT 和 OpenAI 使人印象深入的实验结果,这种发展彷佛只是一个时间问题,预训练的词嵌入将逐渐落伍,取而代之的是每一个 NLP 从业者工具箱里的预训练语言模型。这可能会在标注数据数量不足时为 NLP 创造更多可能性。苍天已死,黄天当立!