文章目录
0. 摘要
我们引入了一种新的语言表示模型,称为 BERT,即来自 Transformer 的双向编码器表示。与最近的语言表示模型(Peters 等人,2018a;Radford 等人,2018)不同,BERT 旨在通过在所有层中共同基于左右上下文进行条件训练,从未标记的文本中预训练深度双向表示。因此,经过预训练的 BERT 模型只需一个额外的输出层即可进行微调,以创建用于各种任务(如问答和语言推理)的最先进模型,而无需进行大量特定于任务的架构修改。
BERT 在概念上简单且在经验上强大。它在 11 项自然语言处理任务上取得了新的最先进结果,包括将 GLUE 分数提高到 80.5%(绝对提高 7.7 个百分点),MultiNLI 准确率提高到 86.7%(绝对提高 4.6 个百分点),SQuAD v1.1 问答测试 F1 值提高到 93.2(绝对提高 1.5 个百分点),以及 SQuAD v2.0 测试 F1 值提高到 83.1(绝对提高 5.1 个百分点)。
注:
a. GLUE 分数是一个用于评估自然语言处理(NLP)模型性能的基准,旨在衡量模型在多种语言理解任务上的表现
b. MultiNLI 准确率是一个用于自然语言推理的任务,模型需要判断两个句子之间的关系(如蕴含、矛盾或中立)
c. SQuAD v1.1 问答测试 F1 值: 是一个问答数据集,模型需要从给定的上下文中提取答案。
d. SQuAD v2.0 问答测试 F2 值:在 SQuAD v1.1 的基础上增加了不包含答案的问题,要求模型能够判断问题是否有答案。
1. 介绍
语言模型预训练已被证明对改进许多自然语言处理任务有效。这些任务包括句子级任务,如自然语言推理和释义,其目的是通过整体分析句子来预测句子之间的关系,以及标记级任务,如命名实体识别和问答,在这些任务中,模型需要在标记级别产生细粒度的输出。
目前将预训练语言表示应用于下游任务有两种现有策略:基于特征的方法和微调方法。基于特征的方法,如 ELMo,使用特定于任务的架构,将预训练表示作为额外特征。微调方法,如生成式预训练 Transformer(OpenAI GPT)(Radford 等人,2018),引入极少的特定于任务的参数,并通过简单地微调所有预训练参数在下游任务上进行训练。这两种方法在预训练期间具有相同的目标函数,它们使用单向语言模型来学习通用语言表示。
我们认为,当前的技术限制了预训练表示的能力,尤其是对于微调方法而言。主要的局限性在于标准语言模型是单向的,这限制了在预训练期间可以使用的架构选择。例如,在 OpenAI GPT 中,作者使用从左到右的架构,其中每个标记在 Transformer 的自注意力层中只能关注前面的标记(Vaswani 等人,2017)。这种限制对于句子级任务而言并非最优,并且在将基于微调的方法应用于标记级任务(如问答)时可能非常有害,因为在问答任务中,从两个方向整合上下文至关重要。
在本文中,我们通过提出 BERT(来自 Transformer 的双向编码器表示)来改进基于微调的方法。BERT 受完形填空任务(Taylor,1953)的启发,使用「掩码语言模型」(MLM)预训练目标来缓解前面提到的单向性约束。掩码语言模型随机掩盖输入中的一些标记,目标是预测被掩盖标记的原始词汇 ID。
仅根据上下文确定单词。与从左到右的语言模型预训练不同,掩码语言模型(MLM)目标使表示能够融合左右上下文,这使我们能够预训练深度双向 Transformer。除了掩码语言模型之外,我们还使用「下一句预测」任务,该任务共同预训练文本对表示。我们论文的贡献如下:
-
我们展示了语言表示双向预训练的重要性。与 Radford 等人(2018 年)使用单向语言模型进行预训练不同,BERT 使用掩码语言模型来实现预训练的深度双向表示。这也与 Peters 等人(2018a)形成对比,后者使用独立训练的从左到右和从右到左的语言模型的浅层连接。
-
我们表明,预训练表示减少了对许多经过大量工程设计的特定任务架构的需求。BERT 是第一个基于微调的表示模型,在一系列句子级和标记级任务上实现了最先进的性能,优于许多特定任务架构。
-
BERT 推动了 11 项自然语言处理任务的技术水平。代码和预训练模型可在 GitHub - google-research/bert: TensorFlow code and pre-trained models for BERT 上获取。
2. 相关工作
预训练通用语言表示有着悠久的历史,在本节中我们简要回顾一下最广泛使用的方法。
2.1 无监督的基于特征的方法
几十年来,学习广泛适用的单词表示一直是一个活跃的研究领域,包括非神经方法(Brown 等人,1992;Ando 和 Zhang,2005;Blitzer 等人,2006)和神经方法(Mikolov 等人,2013;Pennington 等人,2014)。预训练的词嵌入是现代自然语言处理系统的一个组成部分,与从头开始学习的嵌入相比有显著的改进(Turian 等人,2010)。为了预训练词嵌入向量,已经使用了从左到右的语言建模目标(Mnih 和 Hinton,2009),以及在左右上下文中区分正确和错误单词的目标(Mikolov 等人,2013)。
这些方法已被推广到更粗的粒度,如句子嵌入(Kiros 等人,2015 年;Logeswaran 和 Lee,2018 年)或段落嵌入(Le 和 Mikolov,2014 年)。为了训练句子表示,先前的工作使用了对候选下一个句子进行排序的目标(Jernite 等人,2017 年;Logeswaran 和 Lee,2018 年)、给定上一个句子的表示生成下一个句子单词的从左到右的方法(Kiros 等人,2015 年),或去噪自编码器派生的目标(Hill 等人,2016 年)。
ELMo 及其前身(Peters 等人,2017 年、2018a 年)沿着不同的维度推广了传统的词嵌入研究。它们从从左到右和从右到左的语言模型中提取上下文敏感特征。每个标记的上下文表示是从左到右和从右到左表示的连接。当将上下文词嵌入与现有的特定任务架构集成时,ELMo 在几个主要的自然语言处理基准测试中取得了最先进的成果(Peters 等人,2018a),包括问答(Rajpurkar 等人,2016)、情感分析(Socher 等人,2013)和命名实体识别(Tjong Kim Sang 和 De Meulder,2003)。Melamud 等人(2016)提出通过一项任务来学习上下文表示,即使用 LSTMs 从左右上下文预测单个单词。与 ELMo 类似,他们的模型是基于特征的,并且不是深度双向的。Fedus 等人(2018)表明,完形填空任务可用于提高文本生成模型的鲁棒性。
注:
a. ELMo 是一种重要的语言表示模型,通过其上下文感知的词嵌入和双向语言模型架构,推动了 NLP 领域的进步。虽然现在有许多其他更先进的模型(如 BERT 和 GPT),但 ELMo 仍然是理解现代 NLP 技术发展的一个重要里程碑。
b. LSTM 是一种强大的序列建模工具,能够有效处理长序列数据中的依赖关系。尽管近年来 Transformer 架构(如 BERT 和 GPT)逐渐流行,但 LSTM 仍在许多应用中发挥着重要作用,尤其是在需要处理时间序列和序列数据的任务中。
2.3 无监督微调方法
和基于特征的方法一样,这个方向上的早期工作只是从无标注文本中预训练词嵌入参数(Collobert 和 Weston,2008)。
最近,产生上下文词元表示的句子或文档编码器已经从无标签文本中进行了预训练,并针对有监督的下游任务进行了微调(Dai 和 Le,2015;Howard 和 Ruder,2018;Radford 等人,2018)。这些方法的优点是只需从头学习很少的参数。至少部分由于这个优点,OpenAI GPT(Radford 等人,2018)在来自 GLUE 基准测试的许多句子级任务上取得了先前的最先进结果(Wang 等人,2018a)。从左到右的语言模型。

图 1:BERT 的整体预训练和微调过程。除了输出层之外,预训练和微调都使用相同的架构。相同的预训练模型参数用于初始化不同下游任务的模型。在微调期间,所有参数都被微调。[CLS]是添加在每个输入示例前面的特殊符号,[SEP]是特殊分隔符(例如分隔问题/答案)。
ing 和自编码器目标已被用于此类模型的预训练(Howard 和 Ruder,2018;Radford 等人,2018;Dai 和 Le,2015)。
2.3 从受监督数据中迁移学习
也有研究表明,从具有大型数据集的有监督任务中进行有效迁移是可行的,例如自然语言推理(Conneau 等人,2017)和机器翻译(McCann 等人,2017)。计算机视觉研究也证明了从大型预训练模型进行迁移学习的重要性,其中一个有效的方法是对使用 ImageNet 预训练的模型进行微调(Deng 等人,2009;Yosinski 等人,2014)。
3. BERT
我们在本节中介绍 BERT 及其详细实现。我们的框架有两个步骤:预训练和微调。在预训练期间,模型在不同的预训练任务上针对无标签数据进行训练。对于微调,BERT 模型首先使用预训练参数进行初始化,然后使用来自下游任务的有标签数据对所有参数进行微调。每个下游任务都有单独的微调模型,尽管它们都是使用相同的预训练参数进行初始化的。图 1 中的问答示例将作为本节的一个示例。
BERT 的一个显著特点是其在不同任务之间的统一架构。预训练架构与最终下游架构之间的差异很小。
BERT 的模型架构是一个多层双向 Transformer 编码器,基于 Vaswani 等人(2017 年)中描述的原始实现,并在 tensor2tensor 库中发布。由于 Transformer 的使用已经很常见,并且我们的实现与原始实现几乎相同,因此我们将省略对模型架构的详尽背景描述,并建议读者参考 Vaswani 等人(2017 年)以及诸如「带注释的 Transformer」等优秀指南。
在这项工作中,我们将层数(即 Transformer 块的数量)表示为 L,隐藏大小表示为 H,自注意力头的数量表示为 A。我们主要报告两种模型大小的结果: B E R T B A S E {BERT_{BASE}} BERTBASE(L = 12,H = 768,A = 12,总参数 = 1.1 亿)和 B E R T L A R G E {BERT_{LARGE}} BERTLARGE(L = 24,H = 1024,A = 16,总参数 = 3.4 亿)。
B E R T B A S E {BERT_{BASE}} BERTBASE 被选来与 OpenAI GPT 具有相同的模型大小以进行比较。然而,关键的是,BERT Transformer 使用双向自注意力,而 GPT Transformer使用受约束的自注意力,其中每个标记只能关注其左侧的上下文。
输入/输出表示 为了使 BERT 能够处理各种下游任务,我们的输入表示能够明确地在一个标记序列中表示单个句子和一对句子(例如,⟨问题,答案⟩)。在整个这项工作中,「句子」可以是任意连续的文本片段,而不是实际的语言句子。「序列」是指输入到 BERT 的标记序列,它可以是单个句子或打包在一起的两个句子。
我们使用具有 30,000 个词表的 WordPiece 嵌入(Wu 等人,2016)。每个序列的第一个标记始终是特殊分类标记([CLS])。与该标记对应的最终隐藏状态用作分类任务的聚合序列表示。句子对被打包成一个单一序列。我们以两种方式区分句子。首先,我们用一个特殊标记([SEP])将它们分开。其次,我们向每个标记添加一个学习到的嵌入,以指示它属于句子 A 还是句子 B。如图 1 所示,我们将输入嵌入表示为 E,特殊 [CLS] 标记的最终隐藏向量表示为 C ∈ R H C\in\mathbb{R}^{H} C∈RH,第 i i i个输入标记的最终隐藏向量表示为 T i ∈ R H T_{i}\in\mathbb{R}^{H} Ti∈RH。
对于给定的标记,其输入表示是通过对相应的标记、片段和位置嵌入求和来构建的。这种构建的可视化可以在图 2 中看到。
3.1 预训练 BERT
与 Peters 等人 (2018a) 和 Radford 等人 (2018) 不同,我们不使用传统的从左到右或从右到左的语言模型来预训练 BERT。相反,我们使用本节中描述的两个无监督任务来预训练 BERT。此步骤如图 1 的左侧所示。
任务 #1:掩码语言模型。 直观地说,有理由相信深度双向模型严格来说比从左到右的模型或从左到右和从右到左的浅层连接模型更强大。不幸的是,标准的条件语言模型只能从左到右或从右到左进行训练,因为双向条件作用会让每个单词间接「看到自己」,并且在多层上下文中模型可以轻而易举地预测目标单词。
为了训练深度双向表示,我们只是随机屏蔽一定比例的输入标记,然后预测那些被屏蔽的标记。我们将这个过程称为「掩码语言模型」(MLM),尽管在文献中它通常被称为完形填空任务(Taylor,1953)。在这种情况下,与掩码标记相对应的最终隐藏向量被输入到词汇表上的输出 softmax 中,就像在标准语言模型中一样。在我们所有的实验中,我们随机屏蔽每个序列中所有 WordPiece 标记的 15%。与去噪自编码器(Vincent 等人,2008)不同,我们只预

最低0.47元/天 解锁文章
6355

被折叠的 条评论
为什么被折叠?



