写点什么

自然语言处理的 ImageNet 时刻已经到来

  • 2019-01-12
  • 本文字数:7979 字

    阅读完需:约 26 分钟

自然语言处理的ImageNet时刻已经到来

词向量(word vectors)是自然语言处理的核心表征(representation)技术,它长期统治着自然语言处理领域。然而,现在出现了一系列令人振奋的挑战者:ELMo、ULMFiT 和 OpenAI Transformer。它们都证明了预训练语言模型可以在各种自然语言处理任务中取得最佳的结果。这些方法的出现预示着一个分水岭时刻的到来:这些预训练语言模型可能会在自然语言处理领域造成广泛的影响,正如 ImageNet 预训练模型在计算机视觉中所造成的影响一样。


更多干货内容请关注微信公众号“AI 前线”(ID:ai-front)



自然语言处理(NLP)领域正在发生一些巨变。


词向量(word vectors)是自然语言处理的核心表征(representation)技术,它长期统治着自然语言处理领域。然而,现在出现了一系列令人振奋的挑战者:ELMo[1]、ULMFiT[2] 和 OpenAI Transformer[3]。这些工作都成为了新闻头条,因为它们都证明了预训练语言模型可以在各种自然语言处理任务中取得最佳的结果。这些方法的出现预示着一个分水岭时刻的到来:这些预训练语言模型可能会在自然语言处理领域造成广泛的影响,正如 ImageNet 预训练模型在计算机视觉中所造成的影响一样。

从浅层到深度预训练

预训练的词向量已经引领自然语言处理很长时间。Word2vec[4]在 2013 年被作为一个近似的语言建模模型而提出。当时,硬件速度比现在要慢很多,并且深度学习模型也还没有得到广泛的支持,Word2vec 凭借着自身的效率和易用性被采用。从那时起,实施 NLP 项目的标准方法基本上就没变过:通过 Word2vec 和 GloVe[5] 等算法在大量未标注的数据上进行预训练获得词嵌入向量(word embedding),然后把词嵌入向量用于初始化神经网络的第一层,而网络的其它部分则是根据特定的任务,利用其余的数据进行训练。在大多数训练数据有限的任务中,这种做法能够使准确率提升 2 到 3 个百分点[6]。不过,尽管这些预训练的词嵌入向量具有极大的影响力,但是它们存在一个主要的局限:它们只将先前的知识纳入模型的第一层,而网络的其余部分仍然需要从头开始训练。



由 word2vec 捕捉到的关系(来源:TensorFlow 教程)


Word2vec 以及相关的其它方法属于浅层方法,这是一种以效率换表达力的做法。使用词嵌入向量就像使用仅对图像边缘进行编码的预训练表征来初始化计算机视觉模型,尽管这种做法对许多任务都是有帮助的,但是却无法捕捉到那些也许更有用的高层次信息。采用词嵌入向量初始化的模型需要从头开始学习,模型不仅要学会消除单词歧义,还要理解单词序列的意义。这是语言理解的核心内容,它需要对复杂的语言现象建模,例如语义合成性(compositionality)、多义性(polysemy)、指代(anaphora)、长期依赖(long-term dependencies)、一致性(agreement)和否定(negation)等。因此,使用这些浅层表征初始化的自然语言处理模型仍然需要大量的训练样本,才能获得良好的性能。


ULMFiT、ELMo 和 OpenAI Transformer 最新进展的核心在于关键范式的转变:从只初始化模型的第一层转向了使用分层表征(hierarchical representations)预训练整个模型。如果把学习单词向量比作计算机视觉中学习图像边缘,那么这些新方法就像学习图像特征的完整层次结构一样,从边缘到形状,再到高级语义概念。


有趣的是,计算机视觉(computer vision,CV)社区已经采用预训练模型许多年,这些预训练首先是针对整个模型的,其次它们同时学到了低层级和高层级特征。大多数情况下,预训练是通过在大型 ImageNet 数据库上学习图像分类来实现的。现如今, ULMFiT、ELMo 和 OpenAI Transformer 相当于给自然语言处理社区带来了“语言任务的 ImageNet”,也就使得模型能够学习到文本中更高层次的细微差别,这类似于 ImageNet 上的预训练使得计算机视觉模型学习到了图像的通用特征。在本文的剩余部分,我们将通过扩展和构建与 ImageNet 的类比,来解释为何这些新方法看起来如此有前途。

ImageNet


ImageNet 大规模图像识别挑战赛(来源 Xavier Giro-o-Nieto)


ImageNet 对机器学习研究过程的影响怎么强调也不过分。该数据集最初发布于 2009 年,并迅速演变为 ImageNet 大规模视觉识别挑战赛(ImageNet Large Scale Visual Recognition Challenge,ILSVRC)。2012 年,Alex Krizhevsky


、Ilya Sutskever 和 Geoffrey Hinton 提交的深度神经网络[7]模型预测结果比第二名高出了 41%,这表明了深度学习是一种可行的机器学习策略,并且可能会引发机器学习研究中深度学习的爆炸式增长。


ImageNet 的成功表明,在深度学习时代,数据与算法是同等重要的。不仅仅是因为 ImageNet 在 2012 年给了深度学习证明自己的机会,而且还在迁移学习中实现了同等重要的突破:研究人员很快意识到,可以使用 ImageNet 最佳模型学习到的权重来初始化其它任务的模型,尽管数据集不同,但是这对模型性能的提高依然有很大的帮助。这种微调(fine-tunning)的方法可以实现很好的效果,甚至每个类别有一个正样本就足够了(Donahue 等,2014[8])。



在 ILSVRC-2012 上训练的特征泛化到 SUN-397 数据集(来源 Donahue et al., 2014)


预训练的 ImageNet 模型已经被用于诸如物体检测(object detection)[9]、语义分割(semantic segmentation)[10]、人体姿态估计(human pose estimation)[11]和视频识别(video recognition)[12]等任务中,并且都取得了最佳的结果。同时,这些预训练模型也使得深度学习得以应用到训练样本数量较少且标注成本很高的领域。通过在 ImageNet 上预训练的迁移学习是如此地有效,以至于现如今在计算机视觉领域如果不这么做反而被认为是在蛮干(Mahajan等,2018[13])。

揭秘 ImageNet

为了确定一个语言任务中的 ImageNet 是什么样的,我们首先要识别出是什么特性使得 ImageNet 适合迁移学习。早期的研究[14]仅仅揭开了这个问题的冰山一角:减少每个类别的样例数量或者类别数量仅会导致性能的微小下降,而细粒度类别(fine-grained classes)和更多的数据并不总是对模型有益。


和直接查看数据相比,探究训练出的模型到底学到了什么更加明智。众所周知,在 ImageNet 上训练出来的深度神经网络特征有一个特点,即从网络的第一层到最后一层,特征逐渐由通用转向了特殊(特定于任务)[15]。网络的较低层学习对诸如边缘这样的低级特征进行建模,而较高层则对图像较高级的概念进行建模,例如如下图所示的模式和所有的部分或物体[16]。重要的是,关于边缘、结构和物体的视觉组成等知识对于很多计算机视觉任务都很重要,这揭示了为何这些网络层可以迁移。因此,一个类 ImageNet 数据集的关键属性是,要能促使模型学习那些可以推广到该问题领域中其它任务的特征。



GoogLeNet 不同层特征所捕捉到的信息的可视化显示(来源: Distill)


除此之外,很难再进一步概括为什么 ImageNet 的迁移能力会如此强大。例如,ImageNet 数据集的另一个优点是高质量的数据。ImageNet 的创建者竭尽全力地保证了标注的可靠性和一致性。然而,作为一种对比,远程监控领域的工作表明,大量弱标签数据通常情况下也足够了。事实上,Facebook 的研究人员最近表示,他们可以通过预测数十亿社交媒体图像的话题标签来预训练模型,并且该模型还可以在 ImageNet 上取得最佳的准确率。


这些就是所有我们能得到的具体洞察。由此我们总结出了两个关键需求:


  • 一个类 ImageNet 数据集应该足够大,比如拥有数百万个训练样例。

  • 它应该代表着该学科的问题空间。

语言任务的 ImageNet

在自然语言处理中,模型深度通常都要比对应的计算机视觉模型更浅一些。因此,对特征的分析大多集中在第一个嵌入层上,而针对迁移学习中更高嵌入层性质的研究工作少之又少。我们来看一下那些足够大的数据集,这些数据集满足了刚才提到的需求点 #1。就目前自然语言处理的现状来看,有以下几个竞争数据集[17]。


阅读理解(Reading comprehension)是一项根据指定文本回答自然语言问题的任务。这项任务最受欢迎的数据集是斯坦福问答数据集(Stanford Question Answering Dataset,SQuAD)[18],它包含了 10 万多个问答对(question-answering pairs),并且要求模型以在文本中高亮显示答案的方式回答问题,如下图所示:



SQuAD 数据集中一个样例文本中的问答对(来源:Rajpurkar et al., 2016)


自然语言推理(Natural language inference )的目标是识别出一段文本和一个假设之间的关系(蕴含、矛盾和中立)。斯坦福自然语言推理(SNLI,全名是 Stanford Natural Language Inference)语料库[19]是这项任务最受欢迎的数据集之一。它包含 57 万个由人类书写的英语句子对。数据集的样例展示如下:



来自 SNLI 数据集的样例(Bowman et al., 2015)


机器翻译(Machine translation)就是将一种语言的文本翻译成另一种语言的文本,它是自然语言处理领域研究最多的任务之一。并且多年以来,已经为主流语言积累了大量的训练样本对,比如,WMT 2014 中的 4 千万个英语-法语句子对。下图给出了两个翻译样例:



来自 newstest2014 的法语转英语翻译(Artetxe et al., 2018)


成分分析(constituency parsing)试图以(线性化的)成分分析树(constituency parse tree)的形式提取句子的句法结构,如下图所示。过去,数百万弱标签的分析【20】已经被用于训练该任务的sequence-to-sequence模型。



一棵分析树及其线性化表示(Vinyals et al., 2015)


语言建模(Language modeling, LM)旨在根据上一个单词预测出下一个单词。现有的基准数据集包含多达 10 亿个单词,但是由于该任务是无监督的,所以可以使用任意数量的单词进行训练。下面的样例来自一个流行的数据集WikiText-2,该数据集由维基百科文章组成。



WikiText-2 语言建模数据集的样例(来源:Salesforce)


所有这些任务都提供了或者允许收集足够多的训练样本。事实上,最近几个月内上述任务[21][22][23](以及许多其它任务,诸如情绪分析[24]、成分分析[25]、skip-thoughts[26]和自动编码[27])已经被应用于预训练表征。


虽然任何数据集都会存在一定的偏差(bias)[28],但是人类标注员可能会无意中引入一些模型可以利用的其它信号。最近的研究[29][30]表明,阅读理解和自然语言推理等任务的最佳模型,并没有表现出对自然语言的深刻理解,而仅仅是利用这些线索词(cue)实现了浅层的模式匹配。例如,Gururangan et al. (2018) [31]表明,标注员倾向于简单地通过删除性别或数字信息来产生蕴含样本,并通过引入否定来产生矛盾样本。对于大约 67% 的 SNLI 数据集,简单地利用这些线索词的模型不用查看上述各项(premise)就可以正确地对假设进行分类。


因此,更难回答的问题是:哪种任务最能代表自然语言处理的问题空间?换句话说,哪种任务可以使得我们学习到理解自然语言所需的大部分知识或关系?

语言建模案例

为了预测句子中最可能的下一个单词,模型不仅需要能够表达语法(被预测单词的语法形式必须与其修饰语或动词匹配),还需要能够表达模型语义。更进一步,最准确的模型必须包含世界知识或者说常识。考虑一个不完整的句子,“服务很差,但是食物很”,为了预测后续的单词,如“美味”或“可口”,模型不仅要记住哪些属性用于描述食物,还要能够识别出连接词“但是”引入了转折,以便预测的新属性具有和“差”相反的情感(sentiment)。


最后一种方法提到的语言建模已经被证明可以捕获与下游任务相关的许多知识,例如长期依赖[32]、层次关系[33]和情感[34]。与诸如 skip-thoughts 和自动编码这些相关的无监督任务相比,语言建模在语法任务上的表现更出色,即使是使用了更少的训练数据。


语言建模的最大优势之一是训练数据可以从任意的文本语料库免费得到,并且其数量可能是无限的。这一点尤其重要,因为自然语言理解不仅涉及英语,世界上的语言有 4500 种之多。作为预训练任务的语言建模,为那些之前资源不足的语言模型开发打开了一扇大门。对于资源非常匮乏的语言,有可能未标注数据也非常少,而多语言模型(multilingual language models)可以同时在多个相关的语言上进行训练,这类似于跨语言嵌入(cross-lingual embeddings)向量[35]。



ULMFiT 的不同阶段(来源:Howard and Ruder, 2018)


到目前为止,我们将语言建模作为预训练任务的论据纯粹是概念性的。预训练语言模型最初是在 2015[36]年提出的,但是人们一直不清楚单个预训练语言模型是否对多个任务有用。 最近几个月,我们终于获得了一些强有力的实证证据:语言模型嵌入(Embeddings from Language Models, ELMo)、通用语言模型微调(Universal Language Model Fine-tuning, ULMFiT)和 OpenAI Transformer 已经通过实证证明了语言建模可以用于预训练,就像上图显示的那样。这三种方法都采用了预训练语言模型来取得自然语言处理中各种任务的最佳效果,这些任务包括文本分类、问答、自然语言推理、共指消除(coreference resolution)、序列标记(sequence labeling)等等。


在许多情况下(例如下图中的 ELMo),它在各个主流的研究基准中比最佳成绩提升了 10%~20%,所有这些都采用了一个核心方法——使用预训练语言模型。此外,ELMo 还获得了 NAACL-HLT 2018 最佳论文奖,这是该领域的顶级会议之一。最后,这些模型已经被证明具有极高的采样效率,只需数百个样本就可以实现很好的性能,甚至可以实现零样本(zero-shot)学习。



改进的 ELMo 模型在多个自然语言处理任务上取得的提升(来源: Matthew Peters)


鉴于这个重大变化,未来一年的时间内,自然语言处理从业者很可能在自己的模型中使用预训练的语言模型,而不是预训练的词嵌入向量。这就类似于预训练的 ImageNet 模型是当今大多数计算机视觉任务的起点。


然而,类似于 word2vec,语言建模任务也具有自身的局限性:它只是真正语言理解的替代品,并且一个单体模型不足以捕获某些下游任务所需的信息。例如,为了回答或者跟踪故事中角色的发展轨迹,模型需要学会处理指代或共指消除。此外,语言模型只能捕捉到它们所看到的内容。某些类型的信息,例如大多数常识信息,很难通过文本本身学到[37],而需要结合额外的信息。


一个关键的问题是,如何将信息从预训练的语言模型迁移到下游任务中。对于这个问题,有两个主要范式:一种是像 ELMo 那样将预训练的语言模型用作固定的特征提取器,并将其表征作为特征结合到一个随机初始化的模型中;另一种是像 ULMFiT 一样选择微调整个语言模型。后一种微调的策略在计算机视觉中比较典型,这种策略会将模型的最顶层或者顶部的若干层进行微调。不过自然语言处理模型深度通常更浅,因此需要与计算机视觉不同的微调策略,而最近,预训练模型正在变得越来越深。在接下来的几个月里,我们将看到迁移学习的各个核心组件对自然语言处理的影响:一个富有表现力的语言模型编码器,比如深度 BiLSTM 或者 Transformer 模型;用于预训练的数据数量和质量;用于微调预训练模型的方法。

理论支持

到目前为止,我们的分析主要是概念性和经验性的,因为人们仍然没有很好地理解为什么在 ImageNet 以及接下来的语言建模上训练出的模型具有如此好的迁移能力。基于偏差学习(Bias learning, Baxter, 2000)[38]模型探索预训练模型泛化能力更加规范。假定我们的问题领域涵盖了构成我们的环境的特定学科(例如计算机视觉)中任务的所有排列。我们获得了大量的数据集,使得我们能够导出一系列假设。



。我们在偏差学习中的目标就是找到一个偏差,即一个假设空间图片:



,使性能在整个(可能是无限的)环境中最大化。


多任务学习中的经验和理论结果(Caruana, 1997; Baxter, 2000)[39][40]表明,在足够多的任务中学到的偏差可能可以推广到从同一环境中得出的其它未知任务。从多任务学习的角度来看,在 ImageNet 上训练的模型学习了大量的二分类任务(一个任务对应一个类别)。这些任务都是来自自然、真实的图像,可能代表了许多其它的计算机视觉任务。同样,一个语言模型(通过学习大量分类任务得到,一个任务对应一个单词)导出的表征,可能会有助于自然语言处理领域中许多其它的任务。尽管如此,要完全从理论上理解为什么语言建模对迁移学习如此有效,还需要更多的研究。

ImageNet 时刻

实用性的迁移学习进入自然语言处理领域的时机已经成熟。鉴于 ELMo、ULMFiT 和 OpenAI 的工作取得的令人印象深刻的实验结果,要使自然语言处理的从业人员放弃使用预训练的词嵌入向量,而改用预训练的语言模型,似乎只是个时间问题。这一变化也许会为那些受限于数据数量的自然语言处理任务开启许多新的应用。旧时代已远去,ImageNet 时刻已经到来!

关于作者

Sebastian Ruder 在 Insight Research Centre for Data Analytics 攻读自然语言处理与深度学习方向的博士学位,还有一年毕业。同时他也是都柏林自然语言处理创业公司 AYLIEN 的科学家。他的主要兴趣在自然语言处理中的迁移学习以及如何使机器学习更易用。他在顶级的自然语言处理会议上以第一作者发表过多篇论文,同时也是 ULMFiT 的共同作者;你可以通过他的网站或 Twitter 了解有关他的更多信息。


英文原文:


https://thegradient.pub/nlp-imagenet/


2019-01-12 14:008855

评论 1 条评论

发布
用户头像
希望能早点到来

现在还是CV的天下
2019-07-16 09:02
回复
没有更多了
发现更多内容

42 K8S之调度器

穿过生命散发芬芳

k8s 28天写作 12月日更

架构实战营-模块六

随风King

「架构实战营」

CSS之选择器(四)

Augus

CSS 12月日更

架构实战营模块六拆分电商平台为微服务

Geek_99eefd

架构实战营 「架构实战营」

架构训练营毕业设计

看,有只猪

数字人民币跨境支付测试不断推进,内地居民未来在港购物也可用

CECBC

尝鲜Go 1.18中范型版本的map和slice

Robert Lu

Go 语言 范型

架构实战毕业总结

人工智能~~~

LeSS- 大规模敏捷开发框架实践心路

RingCentral铃盛

最可怕的黑客攻击:APT攻击

喀拉峻

网络安全 安全

秒杀系统架构

人工智能~~~

人少一半,活照样干?(12/28)

赵新龙

28天写作

数据大体系(三)——指标

圣迪

大数据 数据 指标体系 指标 数据分层

Redis分布式锁的最佳实践 - Redisson

xcbeyond

redis 分布式锁 28天写作 12月日更

Rust 元宇宙 17 —— 聊天和表情

Miracle

rust 元宇宙

Eureka分区集群部署

李子捌

微服务 28天写作 12月日更

Musical.ly 创始人:打造用户社区的三板斧

石云升

28天写作 12月日更 社区打造

三步搞定现场意外

将军-技术演讲力教练

MySQL外键约束

JavaEdge

12月日更

电商系统微服务拆分

张靖

#架构实战营

Scrum框架下玩转敏捷实践

RingCentral铃盛

敏捷概念123之----敏捷洋葱圈

Ian哥

敏捷软件开发 敏捷宣言

模块六

侠客行

「架构实战营」

商场里的4S店

张老蔫

28天写作

知犀思维导图

IT蜗壳-Tango

28天写作 12月日更

架构训练营毕业总结

看,有只猪

第六模块总结

张靖

「架构实战营」

OKR的一种实践

wood

OKR 28天写作 组织建设

11. 《重学JAVA》--字符串

杨鹏Geek

Java 25 周年 28天写作 12月日更

【Three.js】WEB3D项目开发中实用工具推荐

devpoint

WebGL three.js 元宇宙 12月日更

与2宝的“有效”沟通经验 1

搬砖的周狮傅

沟通

自然语言处理的ImageNet时刻已经到来_AI&大模型_Sebastian Ruder_InfoQ精选文章