BERT:预训练的深度双向 Transformer 语言模型
Jacob Devlin;Ming-Wei Chang;Kenton Lee;Kristina Toutanova Google AI Language {jacobdevlin,mingweichang,kentonl,kristout}@google.com
摘要
我们提出了一种新的称为 BERT 的语言表示模型,BERT 代表来自 Transformer 的双向编码器表示(Bidirectional Encoder Representations from Transformers)。不同于最近的语言表示模型(Peters et al., 2018,Radford et al., 2018), BERT 旨在通过联合调节所有层中的左右上下文来预训练深度双向表示。因此,只需要一个额外的输出层,就可以对预训练的 BERT 表示进行微调,从而为广泛的任务(比如回答问题和语言推断任务)创建最先进的模型,而无需对特定于任务进行大量模型结构的修改。
BERT 的概念很简单,但实验效果很强大。它刷新了 11 个 NLP 任务的当前最优结果,包括将 GLUE 基准提升至 80.4%(7.6% 的绝对改进)、将 MultiNLI 的准确率提高到 86.7%(5.6% 的绝对改进),以及将 SQuAD v1.1 的问答测试 F1 得分提高至 93.2 分(提高 1.5 分)——比人类表现还高出 2 分。
1. 介绍
语言模型预训练可以显著提高许多自然语言处理任务的效果(Dai and Le, 2015;Peters et al., 2018;Radford et al., 2018;Howard and Ruder, 2018)。这些任务包括句子级任务,如自然语言推理(Bow-man et al., 2015;Williams et al., 2018)和释义(Dolan and Brockett, 2005),目的是通过对句子的整体分析来预测句子之间的关系,以及标记级任务,如命名实体识别(Tjong Kim Sang and De Meulder, 2003)和 SQuAD 问答(Rajpurkar et al., 2016),模型需要在标记级生成细粒度的输出。
现有的两种方法可以将预训练好的语言模型表示应用到下游任务中:基于特征的和微调。基于特征的方法,如 ELMo (Peters et al., 2018),使用特定于任务的模型结构,其中包含预训练的表示作为附加特特征。微调方法,如生成预训练 Transformer (OpenAI GPT) (Radford et al., 2018)模型,然后引入最小的特定于任务的参数,并通过简单地微调预训练模型的参数对下游任务进行训练。在之前的工作中,两种方法在预训练任务中都具有相同的目标函数,即使用单向的语言模型来学习通用的语言表达。
我们认为,当前的技术严重地限制了预训练表示的效果,特别是对于微调方法。主要的局限性是标准语言模型是单向的,这就限制了可以在预训练期间可以使用的模型结构的选择。例如,在 OpenAI GPT 中,作者使用了从左到右的模型结构,其中每个标记只能关注 Transformer 的自注意层中该标记前面的标记(Williams et al., 2018)。这些限制对于句子级别的任务来说是次优的(还可以接受),但当把基于微调的方法用来处理标记级别的任务(如 SQuAD 问答)时可能会造成不良的影响(Rajpurkar et al., 2016),因为在标记级别的任务下,从两个方向分析上下文是至关重要的。
在本文中,我们通过提出 BERT 改进了基于微调的方法:来自 Transformer 的双向编码器表示。受完形填空任务的启发,BERT 通过提出一个新的预训练任务来解决前面提到的单向约束:“遮蔽语言模型”(MLM masked language model)(Tay-lor, 1953)。遮蔽语言模型从输入中随机遮蔽一些标记,目的是仅根据被遮蔽标记的上下文来预测它对应的原始词汇的 id。与从左到右的语言模型预训练不同,MLM 目标允许表示融合左右上下文,这允许我们预训练一个深层双向 Transformer。除了遮蔽语言模型之外,我们还提出了一个联合预训练文本对来进行“下一个句子预测”的任务。
本文的贡献如下:
- 我们论证了双向预训练对语言表征的重要性。与 Radford et al., 2018 使用单向语言模型进行预训练不同,BERT 使用遮蔽语言模型来实现预训练深层双向表示。这也与 Peters et al., 2018 的研究形成了对比,他们使用了一个由左到右和由右到左的独立训练语言模型的浅层连接。
- 我们表明,预训练的表示消除了许多特定于任务的高度工程化的的模型结构的需求。BERT 是第一个基于微调的表示模型,它在大量的句子级和标记级任务上实现了最先进的性能,优于许多特定于任务的结构的模型。
- BERT 为 11 个 NLP 任务提供了最先进的技术。我们还进行大量的消融研究,证明了我们模型的双向本质是最重要的新贡献。代码和预训练模型将可在 goo.gl/language/bert 获取。
2 相关工作
预训练通用语言表示有很长的历史,我们将在本节简要回顾最流行的方法。
2.1 基于特征的方法
几十年来,学习广泛适用的词语表示一直是一个活跃的研究领域,包括非神经网络学领域(Brown et al., 1992;;Blitzer et al., 2006)和神经网络领域(Collobert and Weston, 2008;Mikolov et al., 2013;Pennington et al., 2014)方法。经过预训练的词嵌入被认为是现代 NLP 系统的一个不可分割的部分,词嵌入提供了比从头开始学习的显著改进(Turian et al., 2010)。
这些方法已被推广到更粗的粒度,如句子嵌入(Kiros et al., 2015;Logeswaran and Lee, 2018)或段落嵌入(Le and Mikolov, 2014)。与传统的单词嵌入一样,这些学习到的表示通常也用作下游模型的输入特征。
ELMo(Peters et al., 2017)从不同的维度对传统的词嵌入研究进行了概括。他们建议从语言模型中提取上下文敏感的特征。在将上下文嵌入与特定于任务的架构集成时,ELMo 为几个主要的 NLP 标准提供了最先进的技术(Peters et al., 2018),包括在 SQuAD 上的问答(Rajpurkar et al., 2016),情感分析(Socher et al., 2013),和命名实体识别(jong Kim Sang and De Meul-der, 2003)。
2.2 基于微调的方法
语言模型迁移学习(LMs)的一个最新趋势是,在对受监督的下游任务的模型进行微调之前