BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

【文章来源】

BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding:https://arxiv.org/pdf/1810.04805.pdf

摘要

我们介绍了一种新的语言表示模型BERT,它表示转换器的双向编码器表示。与最近的语言表示模型不同(Peters et al., 2018; Radford et al., 2018),BERT通过在所有层的上下文联合调节来预训练深层双向表示。因此,只需一个额外的输出层就可以对预先训练好的BERT表示进行微调,以便为各种任务创建最先进的模型,例如问答和语言推断,而无需基本的任务特定架构修改。

BERT概念简单,经验丰富。它在11项自然语言处理任务中获得了最新的技术成果,包括将GLUE的基准值提高到80.4%(7.6%的绝对改进)、多项准确率提高到86.7%(5.6%的绝对改进)、将SQuAD v1.1的问答测试F1提高到93.2(1.5的绝对改进),比human的表现高出2.0。

1 简介

语言模型预训练已经证明对改进许多自然语言处理任务是有效的(Dai和Le,2015; Peters等,2017,2018; Radford等,2018; Howard和Ruder,2018)。这些任务包括句子级任务,如自然语言推理(Bowman et al,2015; Williams et al,2018)和释义(Dolan和Brockett,2005),旨在通过整体分析来预测句子之间的关系,以及令牌级任务,如命名实体识别(Tjong Kim Sang和De Meulder,2003)和SQuAD问题回答(Rajpurkar等,2016),其中模型需要在令牌级别生成细粒度输出。

将预训练语言表示应用于下游任务有两种现有策略:基于特征和微调。基于特征的方法,例如ELMo(Peters等,2018),使用特定于任务的体系结构,其包括预先训练的表示作为附加特征。微调方法,例如Generative Pre-trained Transformer(OpenAI GPT)(Radford等,2018),引入了最小的任务特定参数,并通过简单地微调预训练参数来训练下游任务。在以前的工作中,两种方法在预训练期间共享相同的目标函数,在这些方法中,他们使用单向语言模型来学习一般语言表示。

我们认为当前的技术严重限制了预训练表示的能力,特别是对于微调方法。主要限制是标准语言模型是单向的,这限制了在预训练期间可以使用的体系结构的选择。例如,在OpenAI GPT中,作者使用了从左到右的体系结构,其中每个令牌只能处理Transformer自我关注层中的前一个令牌(Vaswani et al, 2017)。这些限制对于句子级别任务来说是次优的,并且在将基于微调的方法应用于令牌级别任务(例如SQuAD问答)时可能是毁灭性的(Rajpurkar等,2016),在这些任务中,从两个方向合并上下文至关重要。

在本文中,我们通过提出BERT:变换器的双向编码器表示来改进基于微调的方法。 BERT通过提出一个新的预训练目标来解决前面提到的单向约束:“掩盖语言模型”(MLM),受到完形任务的启发(Taylor,1953)。被掩盖的语言模型从输入中随机地掩盖一些标记,并且目标是仅基于其上下文来预测被掩盖的单词的原始词汇id。与从左到右的语言模型预训练不同,MLM目标允许表示融合左右上下文,这允许我们预训练一个深度双向变换器。除了蒙面语言模型,我们还引入了一个“下一句预测”任务,联合预训练文本对表示。

本文的贡献如下:

  • 我们证明了双向预训练对语言表达的重要性。与Radford等人不同。 (2018),其使用单向语言模型进行预训练,BERT使用掩蔽语言模型来实现预训练的深度双向表示。这也与Peters等人(2018年)形成了鲜明对比,Peters等人使用的是一种由独立训练的从左到右和从右到左的LMs的浅层连接。
  • 我们展示了预先训练的表示消除了许多经过大量工程设计的特定于任务的体系结构的需求。BERT是第一个基于微调的表示模型,它在大量的句子级和令牌级任务上实现了最先进的性能,优于许多具有任务特定体系结构的系统。
  • BERT推进了11项NLP任务的最新技术。我们还报告了对BERT的广泛消融,证明了我们模型的双向性质是最重要的新贡献。代码和预先训练的模型将在goo.gl/language/bert上提供。

2 相关工作

预训练通用语言表示有很长的历史,我们将简要回顾本节中最常用的方法。

2.1 基于特征的方法

几十年来,学习广泛适用的词语表达一直是研究的一个活跃领域,包括非神经(Brown et al。,1992; Ando and Zhang,2005; Blitzer et al。,2006)和神经(Collobert and Weston,2008; Mikolov等,2013; Pennington等,2014)方法。预训练的单词嵌入被认为是现代NLP系统不可或缺的一部分,与从头学习的嵌入相比有显着改进(Turian et al。,2010)。这些方法已被推广到较粗糙的粒度,例如句子嵌入(Kiros等,2015; Logeswaran和Lee,2018)或段嵌入(Le和Mikolov,2014)。与传统的单词嵌入一样,这些学习的表示通常也用作下游模型中的特征。 ELMo(Peters等,2017)将传统的词嵌入研究概括为不同的维度。他们建议从语言模型中提取上下文敏感特征。当将上下文字嵌入与现有的任务特定体系结构集成时,ELMo推进了几个主要NLP基准测试的最新技术(Peters等,2018),包括SQUAD上的问答(Rajpurkar等,2016),情绪分析(Socher et al,2013),以及命名实体识别(Tjong Kim Sang和De Meulder,2003)。

2.2 微调方法

从语言模型(LMs)转移学习的最新趋势是在LM目标上预先培训一些模型架构,然后对监督下游任务的相同模型进行微调(Dai and Le, 2015; Howard and Ruder, 2018; Radford et al., 2018)。这些方法的优点是需要从头开始学习很少的参数。至少部分任务可以借助这一优势,比如OpenAI GPT(Radford等,2018)在GLUE基准测试中获得了许多句子级任务的最好结果(Wang et al,2018)。

2.3 从监督数据转移学习

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

3 BERT

我们在本节介绍BERT及其详细实现。我们首先介绍模型体系结构和BERT的输入表示。然后,我们将在3.3节中介绍预训练任务,即本文的核心创新。预培训程序和微调程序分别在第3.4节和第3.5节中详述。最后,第3.6节讨论了BERT和OpenAI GPT之间的差异。

3.1 模型体系结构

BERT的模型架构是一个多层双向Transformer编码器,基于Vaswani等人(2017)中描述的原始实现,并在tensor2tensor库中发布。因为Transformers的使用最近变得无处不在,,而且我们的实现与最初的实现实际上是相同的,我们将省略对模型架构的详尽的背景描述,并将读者推荐给Vaswani et al.(2017),以及优秀的指南,如“带注释的变压器”。在这项工作中,我们将层数(即变形金刚块)表示为L,将隐藏层大小表示为H,将自注意力头的数量表示为A。在所有情况下,我们将前馈/滤波器大小设置为4H,即H = 768时为3072,H = 1024时为4096。我们主要报告两种模型大小的结果:

  • BERTBASE: L=12, H=768, A=12, Total Parameters=110M
  • BERTLARGE: L=24, H=1024, A=16, Total Parameters=340M

 

图1:训练前模型架构的差异。 BERT使用双向变压器。 OpenAI GPT使用从左到右的Transformer。 ELMo使用经过独立训练的从左到右和从右到左LSTM的串联来生成下游任务的功能。 在三个中,只有BERT表示在所有层中共同依赖于左右上下文。

为了进行比较,选择BERTBASE与OpenAI GPT具有相同的模型大小。 然而,重要的是,BERT Transformer使用的是双向的自我关注,而GPT Transformer使用的是受限的自我关注,每个令牌只能关注左边的上下文。我们注意到,在文献中,双向变换器通常被称为“Transformer encoder”,而左上下文仅被称为“Transformer decoder”,因为它可以用于文本生成。 BERT,OpenAI GPT和ELMo之间的比较如图1所示。

3.2 输入表示

我们的输入表示能够在一个令牌序列中明确地表示单个文本句子或一对文本句子(例如,[问题,答案])。对于给定的标记,其输入表示通过对相应的标记,段和位置嵌入求和来构造。我们的输入表示的可视化表示在图2中给出。具体是:

图2:BERT输入表示。 输入嵌入是令牌嵌入,分段嵌入和位置嵌入的总和。
  • 我们使用WordPiece嵌入(Wu et al。,2016)和30,000个令牌词汇表。我们用##表示分词。
  • 我们使用学习过的位置嵌入,支持的序列长度可达512个令牌。
  • 每个序列的第一个标记始终是特殊分类嵌入([CLS])。对应于该令牌的最终隐藏状态(即,Transformer的输出)被用作分类任务的聚合序列表示。对于非分类任务,将忽略此向量。
  • 句子对被打包成一个序列。我们以两种方式区分句子。首先,我们用特殊标记([SEP])将它们分开。其次,我们添加一个学习句子A嵌入到第一个句子的每个标记中,一个句子B嵌入到第二个句子的每个标记中。
  • 对于单句输入,我们只使用句子A嵌入。

3.3 预训练任务

与Peters等人(2018)和Radford等人(2018)不同的是,我们不使用传统的从左到右或从右到左的语言模型来预训练BERT。相反,我们使用两节新的无监督预测任务对BERT进行预训练,如本节所述。

3.3.1 任务#1:Masked LM

直观地说,我们有理由相信,深度双向模型比从左到右模型或从左到右和从右到左模型的浅层连接更强大。遗憾的是,标准条件语言模型只能从左到右或从右到左进行训练,因为双向调节将允许每个单词在多层上下文中间接地“看到自己”。

为了训练深度双向表示,我们采用直接的方法随机屏蔽一定比例的输入令牌,然后仅预测那些被屏蔽的令牌。我们将这个程序称为“Masked LM”(MLM),尽管它在文献中通常被称为完形任务(Taylor,1953)。在这种情况下,对应于掩码令牌的最终隐藏向量被馈送到词汇表上的输出softmax,如在标准LM中。在我们的所有实验中,我们随机地屏蔽每个序列中所有WordPiece标记的15%。与去噪自动编码器(Vincent et al,2008)相反,我们只预测掩蔽的单词而不是重建整个输入。

虽然这确实允许我们获得双向预训练模型,但这种方法有两个缺点。首先,我们预训练和微调之间建立了一个不匹配,因为[MASK]令牌在微调期间从未出现。为了减轻这种影响,我们并不总是用实际的[MASK]令牌替换“掩蔽”词。相反,训练数据生成器随机选择15%的令牌,例如,在句子中,我的狗是多毛的,它选择毛茸茸的。然后执行以下过程:

  • 数据生成器将执行以下操作,而不是始终用[MASK]替换所选单词:
  • 80%的时间:用[MASK]标记替换单词,例如,我的狗是多毛的!我的狗是[MASK]
  • •10%的时间:用随机单词替换单词,例如,我的是狗多毛的!我的狗是苹果
  • 10%的时间:保持单词不变,例如,我的是狗多毛的!我的是狗多毛的。这样做的目的是将表示偏向于实际观察到的单词。

Transformer编码器不知道它将被要求预测哪些单词或哪些单词已被随机单词替换,因此它被迫保持每个输入标记的分布式上下文表示。此外,因为随机替换只发生在所有令牌的1.5%(即15%的10%),这似乎不会损害模型的语言理解能力。使用MLM的第二个缺点是每批中只预测了15%的令牌,这表明模型可能需要更多的预训练步骤才能收敛。在5.3节中,我们证明MLM的收敛速度略慢于从左到右的模型(预测每个标记),但MLM模型的实证改进远远超过增加的培训成本。

3.3.2 任务#2:下一句话预测

许多重要的下游任务,例如问答(QA)和自然语言推理(NLI),都是基于理解两个文本句子之间的关系,而这两个文本句子并不是由语言建模直接捕获的。 为了训练理解句子关系的模型,我们预先训练了一个可以从任何单语语料库轻松生成的二值化的下一个句子预测任务。具体地,当为每个预训练示例选择句子A和B时,50%的时间B是跟随A的实际下一句子,并且50%的时间是来自语料库的随机句子。例如:

 

我们完全随机选择NotNext句子,最终的预训练模型在此任务中达到97%-98%的准确率。尽管它很简单,但是我们在5.1节中展示了针对这个任务的预培训对QA和NLI都非常有益。

3.4 预训练程序

我们完全随机选择NotNext语句,最终预训练模型在此任务中达到97%-98%的准确率。尽管它很简单,但我们在5.1节中证明,预测这项任务对QA和NLI都非常有益。对于训练前的语料库,我们使用BooksCorpus(800M单词)(Zhu等,2015)和英语维基百科(2,500M单词)的串联。对于维基百科,我们只提取文本段落并忽略列表,表格和标题。为了提取长时间的连续序列,使用文档级的语料库而不是像十亿字基准(Chelba et al., 2013)这样的混乱的句子级语料库非常重要。

为了生成每个训练输入序列,我们从语料库中采样两段文本,我们将其称为“句子”,即使它们通常比单个句子长得多(但也可以更短一些)。第一个句子接收A嵌入,第二个句子接收B嵌入。50%的时间B是跟随A的实际下一个句子,50%的时间是随机句子,这是为“下一句话预测”任务完成的。对它们进行采样,使得组合长度≤512个令牌。在WordPiece标记化之后应用LM掩蔽,具有15%的统一掩蔽率,对部分word片段不作特别考虑。

我们的批处理大小为256个序列(256个序列* 512个令牌= 128,000个令牌/批),共训练了1,000,000个步骤,约为33亿个语料库中的40个epoch。我们使用学习率为1e-4,β1= 0.9,β2= 0.999,L2权重衰减为0.01,在第一个10000步学习速率热身,学习速率的线性衰减。我们在所有层上使用0.1的退化概率。在OpenAI GPT之后,我们使用gelu激活(Hendrycks和Gimpel,2016)而不是标准relu。训练过程中的损失函数是平均掩蔽LM概率和平均下一个句子预测概率的总和。

在Pod配置的4个云TPU上进行了BERTBASE的训练(总共16个TPU芯片)。 BERTLARGE的训练在16个云TPU(总共64个TPU芯片)上进行。每次预训练需要4天才能完成。

3.5 微调程序

对于序列级分类任务,BERT微调很简单。为了获得输入序列的固定维集合表示,我们取最后的隐藏状态(即,Transformer的输出),用于输入中的第一个令牌,通过构造对应于特殊的[CLS]字嵌入。我们将该向量表示为C\in \mathbb{R}^{H}。在微调期间添加的唯一新参数是分类层W\in \mathbb{R}^{K\times H},其中K是分类器标签的数量。标签概率P\in \mathbb{R}^{K}用标准softmax计算,P=softmax\left ( CW^{T} \right )。 BERT和W的所有参数都经过微调,以最大化正确标签的对数概率。对于跨度级和令牌级预测任务,必须以任务特定方式稍微修改上述过程。详情见第4节的相应小节。

在微调方面,除批量大小、学习率和训练周期数外,大多数模型超参数与训练前相同。退化率始终保持在0.1。最佳超参数值是特定于任务的,但是我们发现了以下可能的值范围,可以在所有任务中很好地工作:

我们还观察到,大数据集(例如,100k +标记的训练示例)对超参数选择的敏感性远小于小数据集。 微调通常非常快,因此简单地对上述参数进行详尽搜索并选择在开发集上表现最佳的模型,这是合理的。

3.6 BERT和OpenAI GPT的比较

与BERT最具可比性的现有预训练方法是OpenAI GPT,它在一个大型文本语料库中训练一个左对右的Transformer LM。实际上,BERT中的许多设计决策都被有意地选择为尽可能接近GPT的,以便可以最小化地比较这两种方法。这项工作的核心论点是,第3.3节中提出的两项新的培训前任务占了大部分的实证改进,但我们注意到BERT和GPT如何训练之间还存在其他一些差异:

  • GPT训练于BooksCorpus(800万字);BERT接受的训练是BooksCorpus (800万字)和维基百科(2500万字)。
  • GPT使用句子分隔符([SEP])和分类符令牌([CLS]),它们仅在微调时引入;BERT在预训练期间学习[SEP],[CLS]和句子A / B的嵌入。
  • GPT接受了1M步的训练,批量为32,000字; BERT经过1M步的训练,批量为128,000字。
  • GPT对所有微调实验使用相同的5e-5学习率; BERT选择特定于任务的微调学习速率,该速率在开发集上表现最佳。

为了分离这些差异的影响,我们在5.1节进行了消融实验,证明大多数改进实际上来自新的预训练任务。

4 实验

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

4.1 GLUE数据集

通用语言理解评估(GLUE)基准(Wang et al。,2018)是各种自然语言理解任务的集合。大多数GLUE数据集已存在多年,但GLUE的目的是(1)使用规范的Train,Dev和Test拆分分发这些数据集,以及(2)设置评估服务器以减轻问题评估不一致和测试集过度拟合。GLUE没有分发测试集的标签,用户必须将他们的预测上传到GLUE服务器进行评估,提交的数量是有限的。

GLUE基准包括以下数据集,其描述最初在Wang等人(2018)的文章中进行了总结:

  • MNLI多类型自然语言推理是一项大规模的众包蕴涵分类任务(Williams et al,2018)。给定一对句子,目标是预测第二句与第一句相比是蕴涵,矛盾还是中立。
  • QQPQuora问题对是一个二元分类任务,其目的是确定Quora上提出的两个问题是否在语义上是等价的(Chen et al。,2018)。
  • QNLI问题自然语言推断是斯坦福问题答疑数据集(Rajpurkar等,2016)的一个版本,已被转换为二元分类任务(Wang等,2018)。积极的例子是(问题,句子)对包含正确答案,而负面例子是(问题,句子)来自同一段落,不包含答案。
  • SST-2斯坦福情感树库是一个二元单句分类任务,由从电影评论中提取的句子和人类注释的情绪组成(Socher等,2013)。
  • CoLA语言可接受语料库是一个二元单句分类任务,其目标是预测英语句子在语言上是否“可接受”(Warstadt等,2018)。
  • STS-B语义文本相似性基准是从新闻标题和其他来源中提取的句子对的集合(Cer等,2017)。它们用1到5的分数进行注释,表示两个句子在语义上的相似程度。
  • MRPC微软研究意译语料库由自动从在线新闻源中提取的句子对组成,并使用人工注释来判断这两种句子是否语义对等(Dolan and Brockett, 2005)。
  • RTE识别文本蕴涵是类似于MNLI的二元蕴涵任务,但训练数据少得多(Bentivogli等,2009)。
  • WNLIWinograd NLI是一个源自(Levesque等,2011)的小型自然语言推断数据集。 GLUE网页注意到这个数据集的构造存在问题,提交给GLUE的每一个经过训练的系统的表现都比预估多数类的65.1基线精度差。因此,出于对OpenAI GPT的公平考虑,我们排除了这个集合。对于我们的GLUE提交,我们总是预测大多数类。

4.1.1 GLUE结果

为了微调GLUE,我们如第3节所述表示输入序列或序列对,并使用对应于第一个输入标记([CLS])的最终隐藏向量C\in \mathbb{R}^{H}作为聚合表示。这在图3(a)和(b)中可视地证明。在微调期间引入的唯一新参数是分类层W\in \mathbb{R}^{K\times H},其中K是标签的数量。我们用C和W计算标准分类损失,即log\left ( softmax\left ( CW^{T} \right ) \right )

对于所有GLUE任务,我们对数据使用32和3个时期的批量大小。对于每项任务,我们进行了微调,学习率为5e-5,4e-5,3e-5和2e-5,并选择了在Dev set上表现最佳的那个。此外,对于BERTLARGE,我们发现微调有时在小数据集上不稳定(即,某些运行会产生退化结果),因此我们运行了几次随机重启并选择了在Dev集上表现最佳的模型。通过随机重启,我们使用相同的预训练检查点,但执行不同的微调数据混洗和分类器层初始化。我们注意到GLUE数据集分布不包括测试标签,我们只为每个BERTBASE和BERTLARGE提交了一个GLUE评估服务器提交。

图3:我们的任务特定模型是通过将BERT与一个额外的输出层结合而形成的,因此需要从头开始学习最少数量的参数。 在这些任务中,(a)和(b)是序列级任务,而(c)和(d)是令牌级任务。 在图中,E表示输入嵌入,Ti表示令牌i的上下文表示,[CLS]是用于分类输出的特殊符号,[SEP]是用于分离非连续令牌序列的特殊符号。

结果如表1所示。BERTBASE和BERTLARGE在所有任务上的表现均优于所有现有系统,相对于最先进的技术,平均准确度提高了4.4%和6.7%。请注意,BERTBASE和OpenAI GPT在注意力掩蔽之外的模型架构方面几乎相同。对于最大和最广泛报道的GLUE任务MNLI,BERT相对于最先进的技术获得了4.7%的绝对精度提升。在官方GLUE排行榜上,BERTLARGE得分为80.4,而排名靠前的排行榜系统OpenAI GPT在撰写之日获得72.8分。

表1:GLUE测试结果,由GLUE评估服务器评分。 每个任务下面的数字表示训练样例的数量。 “平均”列与官方GLUE分数略有不同,因为我们排除了有问题的WNLI集。 OpenAI GPT =(L = 12,H = 768,A = 12); BERTBASE =(L = 12,H = 768,A =12); BERTLARGE =(L = 24,H = 1024,A = 16)。 BERT和OpenAI GPT是单一模型,单一任务。 所有结果均来自https://gluebenchmark.com/leaderboard和https://blog.openai.com/language-unsupervised/。

有趣的是,BERTLARGE在所有任务中都明显优于BERTBASE,即使那些训练数据非常少的人也是如此。第5.2节更全面地探讨了BERT模型尺寸的影响。

4.2 SQuAD v1.1

Standford问题回答数据集(SQuAD)是100k众包问答对的集合(Rajpurkar等,2016)。 给定一个问题和维基百科中包含答案的段落,任务是预测段落中的答案文本跨度。例如:

这种类型的跨度预测任务与GLUE的序列分类任务完全不同,但我们能够以简单的方式调整BERT以在SQuAD上运行。 与GLUE一样,我们将输入问题和段落表示为单个打包序列,问题使用A嵌入,段落使用B嵌入。在微调期间学习的唯一新参数是起始矢量S\in \mathbb{R}^{H}和结束矢量E\in \mathbb{R}^{H}。让来自BERT的第i个输入令牌的最终隐藏向量表示为T_{i}\in \mathbb{R}^{H}。 有关可视化,请参见图3(c)。 然后,单词i作为答案跨度开始的概率被计算为Ti和S之间的点积,接着是段落中所有单词的softmax:

P_i=\frac{e^{S_gT_i}}{\sum _je^{S_gT_i}}

相同的公式用于答案跨度的结束,并使用最大得分跨度作为预测。训练目标是正确的开始和结束位置的对数似然。

我们训练了3个epoch,学习率为5e-5,批量大小为32。在推理的时候,由于最终预测不以开始为条件,所以没有使用其他的启发式方法。标记化的标记跨度对齐到原始的未标记化输入,以便进行评估。

表2 SQuAD结果。BERT集成是7x系统,它使用不同的训练前检查点和微调种子。

结果显示在表2中。SQUAD使用严格的测试程序,其中提交者必须手动联系SQuAD组织者以在隐藏的测试集上运行他们的系统,因此我们只提交了我们最好的系统进行测试。表中显示的结果是我们向SQuAD提交的第一个也是唯一的测试。我们注意到SQUAD排行榜的最高结果没有可用的最新公共系统描述,并且在训练他们的系统时可以使用任何公共数据。因此,我们通过联合培训SQUAD和TriviaQA,在我们提交的系统中使用非常适度的数据增加(Joshi等,2017)。

我们表现​​最佳的系统在整体排名中优于顶级排行榜系统1.5 F1,在单一系统中优于1.3 F1。事实上,我们的单一BERT模型在F1得分方面优于顶级合奏系统。如果我们只调整SQUAD(没有TriviaQA),我们将失去0.1-0.4 F1,并且仍然大幅超越所有现有系统。

4.3 命名实体识别

为了评估令牌标记任务的性能,我们在CoNLL 2003命名实体识别(NER)数据集上微调BERT。 该数据集由200k个训练单词组成,这些单词已注释为人员,组织,位置,杂项或其他(非命名实体)。 为了进行微调,我们将最终隐藏表示提供给每个令牌i到NER标签集上的分类层。 预测不以周围的预测为条件(即,非自回归和无CRF)。 为了使其与WordPiece标记化兼容,我们将每个CoNLL标记化输入字提供给我们的WordPiece标记化器,并使用与第一个子标记相对应的隐藏状态作为分类器的输入。 例如:

在没有对X进行预测的情况下。由于WordPiece标记化边界是输入的已知部分,因此对训练和测试都进行了预测。 在图3 (d)中也给出了一个可视化的表示。一个大小写的WordPiece模型被用于NER,而一个无盖的模型被用于所有其他任务。

表3:CoNLL-2003命名实体识别结果。 使用Dev set选择超参数,并使用这些超参数在5次随机重启中平均报告的Dev和Test分数。

结果显示在表3中。BERTLARGE在CoNLL-2003 NER测试中优于现有的SOTA,具有多任务学习的跨视图训练(Clark等,2018),+ 0.2。

4.4 SWAG

具有对抗性生成的情境(SWAG)数据集包含113k个句子对完成示例,用于评估基础常识推理(Zellers等,2018)。 给定视频字幕数据集中的句子,任务是在四个选项中决定最合理的延续。 例如:

使BERT适应SWAG数据集类似于对GLUE的适应。对于每个例子,我们构造四个输入序列,每个输入序列包含给定句子(句子A)和可能的继续(句子B)的串联。 我们引入的唯一任务特定参数是向量,其具有最终聚合表示的点积表示每个选择i的得分。概率分布是四种选择的softmax:

P_i=\frac{e^{V_gC_i}}{\sum _j^4e^{V_gC_i}}

表4:SWAG开发和测试精度。 测试结果由SWAG作者对隐藏的标签进行评分。 如SWAG论文所述,yHuman性能是用100个样本测量的。

我们对模型进行了3个epoch的微调,学习率为2e-5,批次大小为16。结果如表4所示。BERTLARGE比作者的基线ESIM+ELMo系统高出27.1%。

5 消融研究

虽然我们已经展示了非常强大的实证结果,但到目前为止所呈现的结果并未孤立BERT框架各个方面的具体贡献。在本节中,我们将对BERT的多个方面进行消融实验,以便更好地了解它们的相对重要性。

5.1 训练前任务的影响

我们的核心主张之一是BERT的深度双向性,这是通过掩盖LM预训练实现的,是BERT与以前的工作相比最重要的改进。为了证明这一说法,我们评估了两个使用完全相同的训练前数据,微调方案和Transformer超参数作为BERTBASE的新模型:

  • 无NSP:使用“蒙面LM”(MLM)训练但没有“下一句预测”(NSP)任务的模型。
  • LTR&No NSP:使用从左到右(LTR)LM而不是MLM训练的模型。 在这种情况下,我们预测每个输入字,不应用任何掩蔽。 左边的约束也适用于微调,因为我们发现使用双向上下文进行预训练并且使用双向上下文进行微调总是更糟。此外,该模型在没有NSP任务的情况下进行了预训练。 这与OpenAI GPT直接相当,但使用我们更大的训练数据集,输入表示和我们的微调方案。

结果显示在表5中。我们首先检查NSP任务带来的影响。我们可以看到,删除NSP会严重损害QNLI,MNLI和SQuAD的性能。这些结果表明,我们的预训练方法对于获得先前提出的强有力的实证结果至关重要。

表5:使用BERTBASE架构消除预训练任务。 没有下一句话预测任务就训练“没有NSP”。 “LTR&No NSP”被训练为从左到右的LM,没有下一个句子预测,如OpenAI GPT。 “+ BiLSTM”在微调期间在“LTR + No NSP”模型上添加随机初始化的BiLSTM。

接下来,我们通过比较“No NSP”与“LTR&No NSP”来评估训练双向表示的影响。 LTR模型在所有任务上的性能都比MLM模型差,在MRPC和SQuAD上有极大的下降。对于SQuAD,直观清楚的是LTR模型在跨度和令牌预测方面表现非常差,因为令牌级隐藏状态没有右侧上下文。对于MRPC,目前尚不清楚性能不佳是由于数据量小还是任务的性质,但我们发现这种不良性能在完整的超参数扫描中是一致的,并且有很多随机重启。

为了真诚地尝试加强LTR系统,我们尝试在其上面添加一个随机初始化的BiLSTM进行微调。这确实显着改善了SQuAD的结果,但结果仍然比预先训练的双向模型差得多。它还会影响所有四个GLUE任务的性能。

我们认识到,也可以训练单独的LTR和RTL模型,并将每个令牌表示为两个模型的连接,就像ELMo所做的那样。然而:(a)这是单方向模型的两倍;(b)对于像QA这样的任务来说,这是不直观的,因为RTL模型不能确定问题的答案;(c)由于深度双向模型可以选择使用左上下文或右上下文,因此严格来说,它不如深度双向模型强大。

5.2 模型尺寸的影响

在本节中,我们将探讨模型大小对微调任务准确性的影响。我们训练了许多具有不同层数,隐藏单元和注意头的BERT模型,同时使用与前面描述的相同的超参数和训练过程。选定的GLUE任务的结果如表6所示。在此表中,我们报告了5次随机重启微调的平均开发集精度。

我们可以看到,较大的模型导致所有四个数据集的严格精度提高即使是MRPC,它只有3600个标记的训练示例,与训练前的任务有很大的不同。同样令人惊讶的是,我们能够在相对于现有文献已经相当大的模型之上实现这种显着的改进。

例如Vaswani et al.(2017)中探索的最大Transformer是(L = 6,H = 1024,A = 16),编码器有100M参数,我们在文献中找到的最大Transformer是(L = 64,H = 512,A = 2),235M参数(Al-Rfou等,2018)。相比之下,BERTBASE包含110M参数,BERTLARGE包含340M参数。

表6:BERT模型尺寸的烧蚀。 #L =层数; #H =隐藏的大小; #A =关注头数。 “LM(ppl)”是保持训练数据的蒙面LM困惑。

众所周知,增加模型尺寸将导致机器翻译和语言建模等大型任务的持续改进,这可通过表6中所示的LM延迟训练数据的复杂性来证明。但是,我们相信这是第一个证明扩展到极端模型尺寸的工作也可以在非常小规模的任务上实现大幅改进,前提是该模型已经过充分预先培训。

5.3 训练步骤数量的影响

图4显示了从已经预训练了k步的检查点进行微调后的MNLI Dev精度。 这使我们可以回答以下问题:

图4:多次训练步骤的消融。 这显示了微调后的MNLI精度,从已经预训练了k步的模型参数开始。 x轴是k的值。

1.问题:BERT是否真的需要如此大量的预训练(128,000字/批* 1,000,000步)才能实现高微调精度?

答:是的,BERTBASE在MNLI上训练1M步的准确率几乎是1.0%,而在500k步上训练的准确率要高得多。

2.问题:MLM预训练是否比LTR预训练收敛慢,因为每批中只有15%的单词被预测而不是每个单词?

答:MLM模型的收敛速度略慢于LTR模型。 然而,就绝对精度而言,MLM模型几乎立即开始优于LTR模型。

5.4 基于特征的BERT方法

到目前为止所呈现的所有BERT结果都使用了微调方法,其中将简单的分类层添加到预训练模型,并且所有参数在下游任务上联合微调。然而,基于特征的方法具有某些优点,其中固定特征从预训练模型中提取。首先,并非所有NLP任务都可以通过Transformer编码器体系结构轻松表示,因此需要添加特定于任务的模型体系结构。其次,能够一次预先计算训练数据的昂贵表示,然后在这种表示的基础上使用更便宜的模型进行许多实验,这有很大的计算优势。

在本节中,我们通过在CoNLL-2003 NER任务上生成类似ELMo的预训练上下文表示来评估BERT在基于特征的方法中的表现。为此,我们使用与第4.3节相同的输入表示,但是使用来自一个或多个层的激活,而不微调BERT的任何参数。在分类层之前,这些上下文嵌入作为一个随机初始化的两层768维BiLSTM的输入。

表7:使用BERT和CoNLL-2003 NER基于特征的方法的消融。 将来自指定层的激活组合并馈送到双层BiLSTM中,而不向BERT反向传播。

结果显示在表7中。表现最佳的方法是连接来自预训练变压器的前四个隐藏层的令牌表示,其仅在微调整个模型后仅为0.3 F1。这表明BERT对于微调和基于特征的方法都是有效的。

6 结论

最近由于语言模式转换学习的经验改进表明,丰富的、无监督的预训练是许多语言理解系统的一个组成部分。特别是,这些结果使得即使是低资源任务也能从非常深的单向体系结构中受益。我们的主要贡献是将这些发现进一步推广到深度双向架构,允许相同的预训练模型成功解决一系列广泛的NLP任务。虽然实证结果很强,在某些情况下超过人类表现,但未来重要的工作是调查BERT可能会或可能不会捕获的语言现象。

猜你喜欢

转载自blog.csdn.net/muumian123/article/details/84031163