外文资料翻译BERT:预训练的深度双向 Transformer 语言模型

摘要

我们提出了一种新的称为BERT的语言表示模型,BERT代表来自Transformer的双向编码器表示Bidirectional Encoder Representations from Transformers)。不同于最近的语言表示模型(Peters et al., 2018Radford 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, 2015Peters et al., 2018Radford et al., 2018Howard and Ruder, 2018)。这些任务包括句子级任务,如自然语言推理(Bow-man et al., 2015Williams 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, 2008Mikolov et al., 2013Pennington et al., 2014)。经过预训练的词嵌入被认为是现代NLP系统的一个不可分割的部分,词嵌入提供了比从头开始学习的显著改进(Turian et al., 2010)。

为了预训练词嵌入向量,已经使用了从左到右的语言建模目标(姆尼和欣顿,2009),以及在左右上下文中区分正确单词和错误单词的目标(Mikolov等。,2013)。

这些方法已被推广到更粗的粒度,如句子嵌入Kiros et al., 2015Logeswaran and Lee, 2018)或段落嵌入Le and Mikolov, 2014)。为了训练句子的表示形式,以前的工作使用目标对候选下一个句子进行排名(Jernite 等,2017;Logeswaran等,2018),从左到右生成下一句单词,并给出前一句的表示形式(Kiros,2015),或去除自动编码器得出的目标(希尔等。,2016).与传统的单词嵌入一样,这些学习到的表示通常也用作下游模型的输入特征

ELMoPeters 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)。Melamudetal. (2016)建议通过一项任务来学习上下文表示,以使用LSTM从左右上下文预测单个单词。与ELMo相似,它们的模型是基于特征的,并且不是双向的。Fedusetal.(2018)表明,完形填空任务可用于提高文本生成模型的鲁棒性。

2.2 无监督基于微调的方法

与基于特征的方法一样,第一种方法仅在此方向上有效,它仅来自未标记文本的预训练词嵌入参数(Col-洛伯特和韦斯顿,2008)。

最近,产生上下文标记表示的句子或文档编码器已经从未标记的文本中进行了预训练,并针对有监督的下游任务进行了微调(戴和乐,2015;霍华德与鲁德,2018;雷德福等,2018)。这些方法的优点是几乎不需要从头学习参数。至少部分得益于这一优势,OpenAI GPT(Radford et al., 2018)在GLUE基准测试的许多句子级任务上取得了此前最先进的结果(Wang et al.(2018))。从左到右的语言模型和自动编码器物镜已用于预训练此类模型。(Howard and Ruder, 2018; Radford et al., 2018; Dai and Le, 2015).

语言模型迁移学习(LMs)的一个最新趋势是,在对受监督的下游任务的模型进行微调之前,先对LM目标上的一些模型构造进行预训练Dai and Le, 2015Howard and Ruder, 2018Radford et al., 2018)。这些方法的优点是只有很少的参数需要从头开始学习。

2.3 从有监督的数据中迁移学习

虽然无监督预训练的优点是可用的数据量几乎是无限的,但也有研究表明,从具有大数据集的监督任务中可以进行有效的迁移,如自然语言推理Con-neau et al., 2017)和机器翻译McCann et al., 2017)。在NLP之外,计算机视觉研究也证明了从大型预训练模型中进行迁移学习的重要性,其中一个有效的方法是可以在ImageNet上微调预训练的模型。(Deng et al., 2009Yosinski et al., 2014

3 BERT

本节将介绍BERT及其具体实现。我们的框架有两个步骤:预训练和微调。在预训练期间,通过不同的预训练任务对未标记的数据进行模型训练。为了进行微调,首先使用预训练的参数初始化BERT模型,然后使用下游任务中的标记数据对所有的参数进行微调。每个下游任务都有单独的微调模型,即使他们是被相同预训练参数初始化的。图一中的问答案例将作为本节的运行示范。

外文资料翻译BERT:预训练的深度双向 Transformer 语言模型

图1:BERT的总体预训练和微调程序。除输出层外,预训练和微调都使用相同的体系结构。相同的预训练模型参数用于初始化不同下游任务的模型。在微调期间,对所有参数进行微调。[CLS]是在每个输入示例前添加的特殊符号,[SEP]是特殊的分隔符标记(例如,分隔问题/答案)。

BERT的一个显着特征是其跨不同任务的统一体系结构。预训练的体系结构与最终的下游体系结构之间的差异很小。

首先介绍了BERT模型结构和输入表示。然后我们在3.3节介绍本文的核心创新——预训练任务。在3.4和3.5节中分别详细介绍了预训练过程和微调模型过程。最后,在3.6节中讨论了BERT和OpenAI GPT之间的区别。

模型体系结构

BERT的模型架构是多层双向Transformer编码器,基于Vaswani等人描述的原始实现,并在tensor2tensor库中发布。由于已经普遍使用了Transformers,并且我们的实现几乎与原始实现相同,因此,我们将省略对模型体系结构的详尽背景说明,并向读者介绍Vaswani等人以及出色的阐明,例如"The Annotated Transformer"。

在这项工作中,我们将层(即,Transformer块)的数量表示为L,将隐藏的大小表示为H,并将自注意力头的数量表示为A。我们主要报告两种模型尺寸的结果:(L=12,H=768,A=12,总参数=110M)和(L=24,H=1024,A=16,总参数=340M)。

为了进行比较,选择具有与OpenAI GPT相同的模型大小。但是,至关重要的是,BERT Tranformer使用双向自我关注,而GPT Transformer使用受限的自我关注,其中每个标记只能关注其左侧的上下文。

输入/输出表示

为了使BERT处理各种下游任务,我们的输入表示形式可以在一个标记序列中明确表示单个句子和一对句子(例如,Question,Answer)。在整个工作中,"句子"可以是连续文本的任意范围,而不是实际的语言句子。"序列"是指BERT的输入标记序列,它可以是一个句子或两个句子包装在一起。

我们使用具有30000个标记词汇表的词嵌入。每个序列的第一个标记始终是一个特殊的分类标记([CLS])。与该标记相对应的最终隐藏状态用作分类任务的聚合序列表示。句子对打包在一起形成单个序列。我们通过两种方式区分句子。首先,我们使用特殊标记([SEP])将它们分开。其次,我们向每个标记添加可学习的嵌入,以指示它是属于句子A还是句子B。如图1所示,我们将输入嵌入表示为E,将特殊[CLS]标记的最终隐藏向量表示为C∈RH,并且输入标记机的最终隐藏向量为Ti∈RH

对于给定的token,其输入表示形式是通过将相应的词嵌入、分段和位置嵌入相加而构造的。这种结构的可视化效果如图2所示。

外文资料翻译BERT:预训练的深度双向 Transformer 语言模型

图2:BERT输入表示,输入的嵌入是标记嵌入,分段嵌入和位置嵌入的总和。

3.1 预训练BERT

与Peters等人和Radford等人不同,我们不使用传统的从左到右或从右到左的语言模型对BERT进行预训练。相反,我们使用本节中描述的两个无监督任务对BERT进行预训练。此步骤显示在图1的左侧。

任务一:Masked LM

直观地说,我们有理由相信,深度双向模型比从左到右模型或者是从左到右模型和从右到左模型的浅层连接更强大。不幸的是,标准条件语言模型只能从左到右或从右到左进行训练,因为双向条件将允许每个单词间接地"see itself",并且该模型可以在多层结构中简单地预测目标单词上下文。

为了训练深度双向表示,我们简单地随机遮蔽一定百分比的输入标记,然后预测这些遮蔽的标记。我们将此程序称为"Masked LM"(MLM),尽管在文献中通常将其称为完形填空任务。在这种情况下,如标准LM中一样,与遮蔽标记相对应的最终隐藏向量被馈送到词汇表上的输出softmax中。在我们所有的实验中,我们随机屏蔽了每个序列中15%的WordPiece标记。与denoisingauto-encoders(Vincentetal,2008)相反,我们仅预测被屏蔽的单词,而不重构整个输入。

虽然这允许我们获得双向预训练模型,但缺点是我们的预训练和微调之间不匹配,因为在微调期间不会出现[mask]标记。为了缓解这种情况,我们并不总是用实际的[mask]标记替换"被遮盖的"词。训练数据生成器随机选择15%的标记位置进行预测。如果选择第i个标记,我们将第i个标记替换为(1)80%可能替换为[MASK] token (2)10%可能替换为别的词 of the time (3)10%可能不改变当前词。然后,具有交叉熵损失的Ti会被用来预测原始标记。我们在附录C.2中比较了该程序的不同之处。

任务2:Next Sentence Prediction(NSP)

许多重要的下游任务,如问答(QA)和自然语言推理(NLI)都是建立在理解两个句子之间关系的基础上的,而语言建模并不能直接捕捉到这两个句子之间的关系。为了训练一个能够理解句子关系的模型,我们预先训练一个二分类的下一个句子预测任务,这个任务可以从任何一个单语语料库生成。具体来说,在为每个预训练示例选择句子A和B时,50%的可能B是A后面的实际下一个句子(标记为is next),50%的可能B是来自语料库的随机句子(标记为not next)。如图1所示,C用于下一句预测(NSP)。尽管它很简单,但我们在第5.1节中演示了针对此任务的预培训对QA和NLI都非常有益。

NSP任务与Jernite等人以及Logeswaran和Lee所使用的表示学习目标密切相关。但是,在先验工作中,只有句子嵌入被传输到下游任务,BERT传输所有参数以初始化最终任务模型参数。

预训练过程很大程度上遵循了有关语言模型预训练的现有文献。对于预训练语料库,我们使用BooksCorpus(800M个单词)和English Wikipedia(25亿个单词)。对于Wikipedia,我们仅提取文本段落,而忽略列表,表格和标题。为了提取长的连续序列,使用文档级语料库而不是像BillionWord Benchmark这样的经过改组的句子级语料库是至关重要的。

3.2 微调BERT

微调很简单,因为Transformer中的自注意力机制允许BERT通过调整适当的输入和输出来建模许多下游任务(无论它们涉及单个文本还是文本对)。对于涉及文本对的应用程序,常见的模式是在应用双向交叉注意力机制之前对文本对进行独立编码,例如Parikh等。然而BERT是使用自注意机制来统一这两个阶段,因为使用自注意机制对连接的文本对进行编码实际上包括两个句子之间的双向交叉注意。

对于每个任务,我们只需将特定于任务的输入和输出插入BERT,并端到端微调所有参数。在输入时,来自预训练的句子A和句子B类似于(1)释义中的句子对,(2)隐含的假设-前提对,(3)问题回答中的疑问句对,以及(4)文本分类或序列标注中出现退化文本-∅对。在输出中,token表示被馈送到输出层,以进行token-level级别的任务,例如序列标记或问题回答,而[CLS]表示被馈送到输出层以进行分类,例如需求或情感分析。

与预训练相比,微调相对容易。从完全相同的预训练模型开始,可以在单个Cloud TPU上最多在1小时内复制文件中的所有结果,而在GPU上最多可以复制几个小时。我们将在第4节的相应小节中描述特定于任务的详细信息,更多详细信息可以在附录A.5中找到。

4. 实验(略)

在本节中,我们将介绍11个NLP任务的BERT fine-tuning结果。

5. 模型简化测试

在本节中,我们将对BERT的多个方面进行消融实验,以更好地了解它们的相对重要性。其他消融研究可在附录C中找到。

5.1 Effect of Pre-training Tasks

通过使用与外文资料翻译BERT:预训练的深度双向 Transformer 语言模型完全相同的预训练数据、微调方案和超参数来评估两个预训练目标,我们证明了BERT双向深度的重要性:

No NSP:双向模型,使用"masked LM"(MLM)进行训练,但没有"next sentence prediction"(NSP)任务。

LTR&No NSP:仅使用左上下文模型,使用标准的从左到右(LTR)LM而非MLM进行训练。 左约束也应用于微调,因为删除它会引入预训练/微调不匹配,从而降低下游性能。 此外,该模型无需NSP任务即可进行预训练。这可以与OpenAI GPT直接比较,但使用了更大的训练数据集,输入表示形式和微调方案。

我们首先研究NSP任务带来的影响。在表5中,我们显示删除NSP会严重损害QNLI,MNLI和SQuAD 1.1的性能。接下来,我们通过比较"No NSP"与" LTR& No NSP"来评估训练双向表示的影响。在所有任务上,LTR模型的性能都比MLM模型差,而MRPC和SQuAD的性能下降很大。

对于SQuAD,直观上很清楚,因为token级别的隐藏状态没有右侧上下文,所以LTR模型在token预测时的性能会很差。为了真诚地尝试加强LTR系统,我们在顶部添加了一个随机初始化的BiLSTM。这确实可以显着改善SQuAD上的结果,但结果仍然比预训练的双向模型的结果差很多。 BiLSTM损害了GLUE任务的性能。

我们认识到,也有可能像ELMo一样训练单独的LTR和RTL模型并将每个令牌表示为两个模型的串联。但是:(a)这是单个双向模型的两倍昂贵; (b)对于QA这样的任务,这是不直观的,因为RTL模型将无法确定问题的答案; (c)这绝对不如深度双向模型强大,因为它可以在每一层使用左右上下文。

5.2 Effect of Model Size

在本节中,我们探索模型大小对微调任务准确性的影响。我们训练了许多具有不同层数,隐藏单元和注意头的BERT模型,而其他方面则使用了与之前所述相同的超参数和训练过程。

外文资料翻译BERT:预训练的深度双向 Transformer 语言模型

表6显示了选定的GLUE任务的结果。在此表中,我们报告了5次随机微调重新启动后的平均Dev Set准确性。我们可以看到,即使对于只有3600个带标签的训练示例的MRPC,它与所有预训练任务也大不相同,较大的模型也会导致所有四个数据集的严格准确性提高。我们能够在相对于现有文献而言已经相当大的模型的基础上实现如此显着的改进,这也许也令人惊讶。例如,在Vaswani等人中探索的最大的Transformer是(L = 6,H = 1024,A = 16),编码的参数为100M,而我们在文献中发现的最大的Transformer是(L = 64,H = 512 ,A = 2)235M参数(Al-Rfou et al,2018)。相比之下,包含110M参数,包含340M参数。

众所周知,增加模型的大小将导致对大型任务(如机器翻译和语言建模)的持续改进,这由表6中所示的持久性训练数据的LM困惑证明了这一点。但是,我们相信这是第一个有说服力的证明,只要模型已经过充分的预训练,缩放到极限模型大小也将导致非常小的规模任务的重大改进。

Peters等人将预训练的Bi-LM尺寸从两层增加到四层对下游任务的影响提出了不同的结果,Melamud等人提到将隐藏尺寸从200增大到600有帮助,但进一步增加到1000却没有效果带来进一步的改进。这两个先前的工作都使用了基于特征的方法-我们假设当直接在下游任务上微调模型并且仅使用很少数量的随机初始化的附加参数时,特定于任务的模型可以从较大的模型中受益,即使下游任务数据非常小,也可以使用更具表现力的预训练表示形式。

5.3 Feature-based Approach with BERT

到目前为止,所有提出的BERT结果都使用了微调方法,其中在预训练模型中添加了一个简单的分类层,并且在下游任务上共同对所有参数进行了微调。 然而,从预训练模型中提取固定特征的基于特征的方法具有一定的优势。 首先,并非所有任务都可以由Transformer编码器体系结构轻松表示,因此需要添加特定于任务的模型体系结构。其次,预先计算出训练数据的昂贵表示形式,然后在此表示形式之上使用较便宜的模型运行许多实验具有重大的计算优势。

在本节中,我们通过将BERT应用于CoNLL-2003命名实体识别(NER)任务来比较这两种方法。在BERT的输入中,我们使用了一个区分大小写的WordPiece模型,并且包含了数据提供的最大文档上下文。按照标准惯例,我们将其公式化为标记任务,但在输出中不使用CRF层。我们使用第一个子令牌的表示作为NER标签集上令牌级别分类器的输入。

为了对比这种微调方法,我们采用基于特征的方法,从一个或多个层中提取激活特征,而不需要微调bert的任何参数。这些上下文嵌入用作在分类层之前随机初始化的两层768维bilstm的输入中。

结果列在表7中。BERTLARGE与最新技术具有竞争优势。最佳性能的方法将来自预训练的Transformer的顶部四个隐藏层的token表示连接起来,这仅比微调整个模型的F1 Score低0.3。这表明BERT对于微调和基于特征的方法均有效。

外文资料翻译BERT:预训练的深度双向 Transformer 语言模型

6. 总结

由于使用语言模型进行了迁移学习,最近的经验改进表明,丰富的、无监督的预训练是许多语言理解系统不可或缺的一部分。尤其是,这些结果使即使是资源匮乏的任务也可以从深度单向体系结构中受益。我们的主要贡献是将这些发现进一步推广到深层次的双向体系结构,从而使相同的经过预训练的模型能够成功解决各种NLP任务。

上一篇:WMS函数组:19.WMS创建PO


下一篇:Tex家族关系