NLP领域的ImageNet时代到来:词嵌入「已死」,语言模型当立

计算机视觉领域常使用在 ImageNet 上预训练的模型,它们可以进一步用于目标检测、语义分割等不同的 CV 任务。而在自然语言处理领域中,我们通常只会使用预训练词嵌入向量编码词汇间的关系,因此也就没有一个能用于整体模型的预训练方法。Sebastian Ruder 表示语言模型有作为整体预训练模型的潜质,它能由浅到深抽取语言的各种特征,并用于机器翻译问答系统和自动摘要等广泛的 NLP 任务。Ruder 同样展示了用语言模型做预训练模型的效果,并表示 NLP 领域中的「ImageNet」终要到来。

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

长期以来,词向量一直是自然语言处理的核心表征技术。然而,其统治地位正在被一系列令人振奋的新挑战所动摇,如:ELMo、ULMFiT 及 OpenAI transformer。这些方法因证明预训练的语言模型可以在一大批 NLP 任务中达到当前最优水平而吸引了很多目光。这些方法预示着一个分水岭:它们在 NLP 中拥有的影响,可能和预训练的 ImageNet 模型在计算机视觉中的作用一样广泛。

由浅入深的预训练

预训练的词向量给 NLP 带来了很大的提高。2013 年提出的语言建模近似——word2vec 凭借其效率和易用性在硬件速度慢得多且深度学习模型没有得到广泛支持的时代得到采用。此后,进行 NLP 项目的标准方式基本保持不变:通过 word2vecGloVe 等算法对大量未标记数据进行预处理的词嵌入被用于初始化神经网络的第一层,其它层随后在特定任务的数据上进行训练。在大多数训练数据有限的任务中,这种方法帮助提高了两到三个百分点。尽管这些预训练的词嵌入颇具影响力,但它们也有局限:它们仅包含模型第一层的先验知识——网络的其余部分还需要从头开始训练。

word2vec 捕捉到的关系。(来源:TensorFlow tutorial)

word2vec 及其它相关方法是为了实现效率而牺牲表达性的浅层方法。使用词嵌入就像利用仅编码图像边缘信息的预训练表征初始化计算机视觉模型:它们在许多任务中都能发挥作用,但是却无法捕捉到可能发挥更大作用的高层次信息。利用词向量初始化的模型需要从头开始学习,不仅是学习消除歧义,还要学习从词组成的句子中提取意义。这是语言理解的核心,需要建模语义组合、一词多义、首语重复、长期依赖、一致性、否定等许多复杂的语言现象。因此,用这些浅层表示初始化的 NLP 模型仍然需要大量的示例才能获得良好的性能也就不足为奇了。

ULMFiT、ELMo 和 OpenAI transformer 最新进展的核心是一个关键的范式转变:从仅仅初始化模型的第一层到用分层表示对整个模型进行预处理。如果学习词向量就像仅学习图像的边,那么这些方法就像学习特征的完整层次,从边到形状,再到高级语义概念。

有趣的是,预训练整个模型以获得初级和高级特征在计算机视觉社区中已经采用好几年了。大多数情况下,预训练模型都是在 ImageNet 大型数据集上学习分类图像而训练出来的。ULMFiT、ELMo 和 OpenAI transformer 已经为 NLP 社区带来了自然语言中的「ImageNet」,这种任务能允许模型学习语言的高级细微差别。这就类似于 ImageNet 允许预训练 CV 模型以学习普遍意义的图像特征。在本文后面的部分中,我们将语言建模与 ImageNet 计算机视觉建模做类比,并展示为什么这种方法看起来会如此有前景。

ImageNet

ImageNet 大规模视觉识别挑战赛。(来源:Xavier Giro-o-Nieto)

ImageNet 对机器学习研究具有重要影响。该数据集最初发布于 2009 年,并迅速演变为 ImageNet 大规模视觉识别挑战赛(ILSVRC)。2012 年,Alex Krizhevsky、Ilya Sutskever 和 Geoffrey Hinton 提交的深度神经网络超过第二名 41 %,表明深度学习是一种可行的机器学习策略,该深度神经网络可以说是引发了机器学习研究中深度学习的爆发。

ImageNet 的成功凸显了在深度学习时代,数据至少和算法一样重要。ImageNet 数据集不仅使 2012 年非常重要的深度学习能力展示成为可能,而且在迁移学习中也取得了同样重要的突破:研究人员很快意识到,在 ImageNet 现有模型中学习的权重可用于完全初始化其它数据集的模型,并显著提高性能。这种「微调」方法允许在每个类别只有一个正面示例的情况下实现良好性能(Donahue et al., 2014)。

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

在目标识别、语义分割、人体姿态估计和视频识别等任务上,预处理的 ImageNet 模型已用来实现最优水平。与此同时,它们还使得 CV 得以应用于训练示例数量少、注释成本高的领域。在 CV 中,在 ImageNet 上通过预处理进行迁移学习实际上非常有效,以至于现在不使用它会被认为是蛮干(Mahajan et al., 2018)。

ImageNet 中有什么?

为了确定用于语言处理的 ImageNet 可能是什么样子,我们首先要确定什么使 ImageNet 有利于迁移学习。以往的研究只揭示了这个问题的一部分:减少每个类的示例数或类别数只会导致性能下降,而细粒度类和更多数据并非总意味着更好的结果。

与其直接查看数据,更谨慎的做法是探究在数据上训练的模型学到了什么。众所周知,在 ImageNet 上训练的深层神经网络的特征迁移顺序为从第一层到最后一层、从一般任务到特定任务:较低层学习建模低级特征,如边缘,而较高层学习建模高级概念,如图案和整个部分或对象,如下图所示。重要的是,关于物体边缘、结构和视觉组成的知识与许多 CV 任务相关,这就揭示了为什么这些层会被迁移。因此,类似 ImageNet 的数据集的一个关键属性是鼓励模型学习可以泛化到问题域中新任务的特征。

在 ImageNet 上训练的 GoogLeNet 中不同层特征捕获的信息可视化。(来源:Distill)

除此之外,很难对 ImageNet 上迁移做得如此出色的原因作出进一步的概括。例如,ImageNet 数据集的另一个优点可能是数据的质量。ImageNet 的创建者尽力确保注释的可靠性和一致性。然而,远程监管的工作是一个对比,这表明大量弱标记数据通常是足够的。事实上,Facebook 的研究人员最近显示,他们可以通过预测数十亿个社交媒体图像上的 hashtags 到 ImageNet 上最新的准确性来预先训练模型。

没有任何更具体的见解,但我们有两个关键的需求:

  1. 像 ImageNet 一样的数据集要足够大,即大约有数百万个训练示例。

  2. 它应该代表学科的问题空间。

用于语言任务的 ImageNet 

相比于 CV,NLP 的模型通常浅得多。因此对特征的分析大部分聚焦于第一个嵌入层,很少有人研究迁移学习的高层性质。我们考虑规模足够大的数据集。在当前的 NLP 形势下,有以下几个常见任务,它们都有可能用于 NLP 的预训练模型。

阅读理解是回答关于一个段落自然语言问题的任务。该任务最流行的数据集是 Stanford Question Answering Dataset (SQuAD),其中包含了超过 10 万个问答对,并通过突出显示段落中的几个单词来让模型回答一个问题,如下图所示:

在 ImageNet 上训练的 GoogLeNet 的不同层特征捕捉到的信息的可视化(Rajpurkar et al., 2016,《SQuAD: 100,000+ Questions for Machine Comprehension of Text》)。

自然语言推理是识别一段文本和一个假设之间关系(蕴涵、矛盾和中性等)的任务。该任务最流行的数据集是 Stanford Natural Language Inference (SNLI) Corpus,包含 57 万个人类写的英语句子对。该数据集的示例如下图所示。

SNLI:https://nlp.stanford.edu/projects/snli/

SNLI 数据集的示例。(Bowman et al., 2015,A large annotated corpus for learning natural language inference)

机器翻译,即将文本从一种语言转换到另一种语言,是 NLP 中研究最充分的任务之一。并且多年来,人们为常用的语言对累积了大量的训练数据,例如 WMT2014 的 4 千万个英语法语句子对。下图是两个示例翻译对。

来自 newstest2014 的法语到英语翻译(Artetxe et al., 2018,Unsupervised Neural Machine Translation

选区解析(Constituency parsing)以(线性化)解析树的形式提取句子的句法结构,如下图所示。在过去,人们在该任务中使用数百万个弱标记解析来训练序列到序列的模型(参见《Grammar as a Foreign Language》)。

解析树和其线性化处理(Vinyals et al., 2015,Grammar as a Foreign Language)

语言建模(LM)在给定前一个单词的情况下尝试预测下一个单词。已有的基准数据集由大约 10 亿个单词构成,但由于该任务是无监督的,因此可以使用任意数量的单词来训练。下图是由维基百科文章构成的常用 WikiText-2 数据集的示例。

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

WikiText-2:https://einstein.ai/research/the-wikitext-long-term-dependency-language-modeling-dataset

所有这些任务提供或允许收集足够数量的示例来训练。实际上,以上任务(以及很多其它任务例如情感分析、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 种。作为预训练任务的语言建模为以前语言服务支持不好的语种打开了大门,我们可以直接使用文本数据无监督地训练语言模型,并应用到翻译、信息抽取等任务中。而对于那些无标注数据都不足的稀有语言,多语语言建模能先在多个相关语种上训练,例如跨语言词嵌入等。

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

到目前为止,我们将语言建模作为预训练任务的论点纯粹是概念性的。但是在最近几个月,我们也获得了一些实验性证明:语言模型词嵌入(ELMo)、普遍语言模型精调(ULMiT)和 OpenAI Transformer 已经实验性地证明了语言模型能用于预训练任务,正如上图所示的 ULMFiT。这三种方法都使用预训练语言模型来实现当前最优的自然语言处理任务,例如文本分类问答系统、自然语言推断、指代消歧和序列标注等问题。

在如下所示的 ELMo 等很多情况中,使用预训练语言模型作为核心的算法在广泛研究的基准上,要比当前最优的结果高 10% 到 20%。ELMo 同时也获得了 NLP 顶会 NAACL-HLT 2018 的最佳论文。最后,这些模型表现出非常高的样本效率,达到最优性能只需要数百样本,甚至可以实现 zero-shot 学习。

ELMo 在一系列 NLP 任务中取得的进步。(来源:Matthew Peters)

鉴于这一步取得的变化,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 创造更多可能性。苍天已死,黄天当立!

原文链接:https://thegradient.pub/nlp-imagenet/

理论观点词嵌入NLPImageNet语言模型
10
相关数据
神经网络技术
Neural Network

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

深度神经网络技术
Deep neural network

深度神经网络(DNN)是深度学习的一种框架,它是一种具备至少一个隐层的神经网络。与浅层神经网络类似,深度神经网络也能够为复杂非线性系统提供建模,但多出的层次为模型提供了更高的抽象层次,因而提高了模型的能力。

计算机视觉技术
Computer Vision

计算机视觉(CV)是指机器感知环境的能力。这一技术类别中的经典任务有图像形成、图像处理、图像提取和图像的三维推理。目标识别和面部识别也是很重要的研究领域。

信息抽取技术
Information extraction

信息/数据抽取是指从非结构化或半结构化文档中提取结构化信息的技术。信息抽取有两部分:命名实体识别(目标是识别和分类真实世界里的知名实体)和关系提取(目标是提取实体之间的语义关系)。概率模型/分类器可以帮助实现这些任务。

GloVe技术
GloVe

Stanford开发的用于词向量表示的一个库/工具

机器学习技术
Machine Learning

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

语言模型技术
Language models

语言模型经常使用在许多自然语言处理方面的应用,如语音识别,机器翻译,词性标注,句法分析和资讯检索。由于字词与句子都是任意组合的长度,因此在训练过的语言模型中会出现未曾出现的字串(资料稀疏的问题),也使得在语料库中估算字串的机率变得很困难,这也是要使用近似的平滑n元语法(N-gram)模型之原因。

自然语言处理技术
Natural language processing

自然语言处理(英语:natural language processing,缩写作 NLP)是人工智能和语言学领域的分支学科。此领域探讨如何处理及运用自然语言;自然语言认知则是指让电脑“懂”人类的语言。自然语言生成系统把计算机数据转化为自然语言。自然语言理解系统把自然语言转化为计算机程序更易于处理的形式。

机器翻译技术
Machine translation

机器翻译(MT)是利用机器的力量「自动将一种自然语言(源语言)的文本翻译成另一种语言(目标语言)」。机器翻译方法通常可分成三大类:基于规则的机器翻译(RBMT)、统计机器翻译(SMT)和神经机器翻译(NMT)。

解析树技术
parse tree

解析树是一个内部结构,由编译器或解释器在解析一些语言结构时创建,解析也被称为“语法分析”。

先验知识技术
prior knowledge

先验(apriori ;也译作 先天)在拉丁文中指“来自先前的东西”,或稍稍引申指“在经验之前”。近代西方传统中,认为先验指无需经验或先于经验获得的知识。先验知识不依赖于经验,比如,数学式子2+2=4;恒真命题“所有的单身汉一定没有结婚”;以及来自纯粹理性的推断“本体论证明”

问答系统技术
Question Answering

问答系统是未来自然语言处理的明日之星。问答系统外部的行为上来看,其与目前主流资讯检索技术有两点不同:首先是查询方式为完整而口语化的问句,再来则是其回传的为高精准度网页结果或明确的答案字串。以Ask Jeeves为例,使用者不需要思考该使用什么样的问法才能够得到理想的答案,只需要用口语化的方式直接提问如“请问谁是美国总统?”即可。而系统在了解使用者问句后,会非常清楚地回答“奥巴马是美国总统”。面对这种系统,使用者不需要费心去一一检视搜索引擎回传的网页,对于资讯检索的效率与资讯的普及都有很大帮助。从系统内部来看,问答系统使用了大量有别于传统资讯检索系统自然语言处理技术,如自然语言剖析(Natural Language Parsing)、问题分类(Question Classification)、专名辨识(Named Entity Recognition)等等。少数系统甚至会使用复杂的逻辑推理机制,来区隔出需要推理机制才能够区隔出来的答案。在系统所使用的资料上,除了传统资讯检索会使用到的资料外(如字典),问答系统还会使用本体论等语义资料,或者利用网页来增加资料的丰富性。

模式匹配技术
pattern matching

在计算机科学中,模式匹配就是检查特定序列的标记是否存在某种模式的组成部分。 与模式识别相比,匹配通常必须是精确的。 模式通常具有序列或树结构的形式。 模式匹配的使用包括输出令牌序列内的模式的位置(如果有的话),输出匹配模式的某个分量,以及用另一个令牌序列(即搜索和替换)替换匹配模式。

监督学习技术
Supervised learning

监督式学习(Supervised learning),是机器学习中的一个方法,可以由标记好的训练集中学到或建立一个模式(函数 / learning model),并依此模式推测新的实例。训练集是由一系列的训练范例组成,每个训练范例则由输入对象(通常是向量)和预期输出所组成。函数的输出可以是一个连续的值(称为回归分析),或是预测一个分类标签(称作分类)。

文本分类技术
text classification

该技术可被用于理解、组织和分类结构化或非结构化文本文档。文本挖掘所使用的模型有词袋(BOW)模型、语言模型(ngram)和主题模型。隐马尔可夫模型通常用于词性标注(POS)。其涵盖的主要任务有句法分析、情绪分析和垃圾信息检测。

迁移学习技术
Transfer learning

迁移学习是一种机器学习方法,就是把为任务 A 开发的模型作为初始点,重新使用在为任务 B 开发模型的过程中。迁移学习是通过从已学习的相关任务中转移知识来改进学习的新任务,虽然大多数机器学习算法都是为了解决单个任务而设计的,但是促进迁移学习的算法的开发是机器学习社区持续关注的话题。 迁移学习对人类来说很常见,例如,我们可能会发现学习识别苹果可能有助于识别梨,或者学习弹奏电子琴可能有助于学习钢琴。

word2vec技术
word2vec

Word2vec,为一群用来产生词向量的相关模型。这些模型为浅而双层的神经网络,用来训练以重新建构语言学之词文本。网络以词表现,并且需猜测相邻位置的输入词,在word2vec中词袋模型假设下,词的顺序是不重要的。 训练完成之后,word2vec模型可用来映射每个词到一个向量,可用来表示词对词之间的关系。该向量为神经网络之隐藏层。 Word2vec依赖skip-grams或连续词袋(CBOW)来建立神经词嵌入。Word2vec为托马斯·米科洛夫(Tomas Mikolov)在Google带领的研究团队创造。该算法渐渐被其他人所分析和解释。

词嵌入技术
Word embedding

词嵌入是自然语言处理(NLP)中语言模型与表征学习技术的统称。概念上而言,它是指把一个维数为所有词的数量的高维空间嵌入到一个维数低得多的连续向量空间中,每个单词或词组被映射为实数域上的向量。

权重技术
Weight

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

深度学习技术
Deep learning

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

TensorFlow技术
TensorFlow

TensorFlow是一个开源软件库,用于各种感知和语言理解任务的机器学习。目前被50个团队用于研究和生产许多Google商业产品,如语音识别、Gmail、Google 相册和搜索,其中许多产品曾使用过其前任软件DistBelief。

准确率技术
Accuracy

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数

多任务学习技术
Multi-task learning

伊利亚·苏特斯威夫人物
Ilya Sutskever

Ilya Sutskever是一名研究机器学习的计算机科学家,目前担任OpenAI的研究总监。Sutskever在多伦多大学获得了计算机科学学士、硕士和博士学位,导师是Geoffrey Hinton。博士毕业后进入斯坦福大学,成为吴恩达的博士后。后担任DNNresearch的联合创始人。2013年,Ilya Sutskever 与Hinton一起加入谷歌大脑团队。他后来离开谷歌,成为新成立的OpenAI研究院的研究总监。