BERT: 用于语言理解的深度双向 Transformer 的预训练
https://arxiv.org/pdf/1810.04805
https://github.com/google-research/bert
BERT: Pre-training of Deep Bidirectional Transformers for
Language Understanding
摘要
我们引入了一个新的语言表示模型,称为BERT,即Bidirectional Encoder Representations from Transformers(来自Transformers的双向编码器表示)。与最近的语言表示模型(Peters等人,2018a;Radford等人,2018)不同,BERT旨在通过在所有层中同时基于左右上下文来从未标记文本中预训练深度双向表示。因此,预训练的BERT模型只需添加一个额外的输出层就可以微调,从而为广泛的任务创建最先进的模型,如问答和语言推理,而无需进行大量特定于任务的架构修改。
BERT在概念上简单且在实证上强大。它在十一项自然语言处理任务上获得了新的最先进结果,包括将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点)。
1 引言
语言模型预训练已被证明对改进许多自然语言处理任务是有效的(Dai和Le,2015;Peters等人,2018a;Radford等人,2018;Howard和Ruder,2018)。这些包括句子级任务,如自然语言推理(Bowman等人,2015;Williams等人,2018)和释义(Dolan和Brockett,2005),这些任务旨在通过整体分析句子来预测句子之间的关系,以及如命名实体识别和问答等词元级任务,这些任务要求模型在词元级别产生精细的输出(Tjong Kim Sang和De Meulder,2003;Rajpurkar等人,2016)。
有两种将预训练语言表示应用于下游任务的现有策略:基于特征的和微调的。基于特征的方法,如ELMo(Peters等人,2018a),使用包含预训练表示作为附加特征的特定任务架构。微调方法,如生成式预训练Transformer(OpenAI GPT)(Radford等人,2018),引入最少的特定任务参数,并通过简单地微调所有预训练参数在下游任务上进行训练。这两种方法在预训练期间共享相同的目标函数,它们使用单向语言模型来学习通用语言表示。
我们认为,当前技术限制了预训练表示的能力,尤其是对于微调方法而言。主要的局限性在于标准语言模型是单向的,这限制了预训练期间可以使用的架构选择。例如,在OpenAI GPT中,作者使用了从左到右的架构,其中每个词元在Transformer的自注意力层中只能关注前面的词元(Vaswani等人,2017)。这种限制对于句子级任务来说是次优的,并且在将基于微调的方法应用于如问答等词元级任务时可能非常有害,因为在这些任务中,整合两个方向的上下文至关重要。
在本文中,我们通过提出BERT:来自Transformers的双向编码器表示,改进了基于微调的方法。BERT通过使用"掩码语言模型"(MLM)预训练目标,缓解了前面提到的单向性约束,这一目标受到了完形填空任务(Taylor,1953)的启发。掩码语言模型随机掩盖输入中的一些标记,目标是仅基于其上下文预测被掩盖词的原始词汇ID。
arXiv:1810.04805v2 [cs.CL] 2019年5月24日
与从左到右的语言模型预训练不同,MLM目标使表示能够融合左右上下文,这使我们能够预训练深度双向Transformer。除了掩码语言模型外,我们还使用"下一句预测"任务,该任务共同预训练文本对表示。我们论文的贡献如下:
- 我们证明了双向预训练对语言表示的重要性。与Radford等人(2018)使用单向语言模型进行预训练不同,BERT使用掩码语言模型来实现预训练的深度双向表示。这也与Peters等人(2018a)形成对比,后者使用独立训练的从左到右和从右到左语言模型的浅层连接。
- 我们表明,预训练表示减少了对许多精心设计的特定任务架构的需求。BERT是第一个基于微调的表示模型,在大量句子级和词元级任务上达到了最先进的性能,超过了许多特定任务的架构。
- BERT在十一项自然语言处理任务上推进了最先进水平。代码和预训练模型可在 https://github.com/google-research/bert 获取。
2 相关工作
预训练通用语言表示有着悠久的历史,本节我们将简要回顾最广泛使用的方法。
2.1 无监督特征化方法
学习广泛适用的词表示几十年来一直是一个活跃的研究领域,包括非神经(Brown等人,1992;Ando和Zhang,2005;Blitzer等人,2006)和神经(Mikolov等人,2013;Pennington等人,2014)方法。预训练的词嵌入是现代NLP系统不可或缺的一部分,相比从头开始学习的嵌入提供了显著的改进(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在包括问答(Rajpurkar等人,2016)、情感分析(Socher等人,2013)和命名实体识别(Tjong Kim Sang和De Meulder,2003)在内的几个主要NLP基准测试中推进了最先进水平(Peters等人,2018a)。Melamud等人(2016)提出通过使用LSTM从左右上下文预测单个词的任务来学习上下文表示。与ELMo类似,他们的模型是基于特征的,而非深度双向的。Fedus等人(2018)表明,完形填空任务可用于提高文本生成模型的鲁棒性。
2.2 无监督微调方法
与基于特征的方法一样,这个方向的最初工作仅仅从未标记的文本中预训练词嵌入参数(Collobert和Weston,2008)。
最近,从未标记的文本中预训练产生上下文敏感词元表示的句子或文档编码器,并针对监督下游任务进行了微调(Dai和Le,2015;Howard和Ruder,2018;Radford等人,2018)。这些方法的优势在于需要从头开始学习的参数很少。至少部分归功于这一优势,OpenAI GPT(Radford等人,2018)在GLUE基准测试(Wang等人,2018a)的许多句子级任务上取得了当时最先进的结果。从左到右的语言建模和自编码器目标已被用于预训练此类模型(Howard和Ruder,2018;Radford等人,2018;Dai和Le,2015)。

**图1:BERT的整体预训练和微调过程。**除了输出层外,在预训练和微调中使用相同的架构。相同的预训练模型参数用于初始化不同下游任务的模型。在微调期间,所有参数都会被微调。[CLS]是添加在每个输入示例前面的特殊符号,而[SEP]是一个特殊的分隔符标记(例如,用于分隔问题/答案)。
2.3 从监督数据进行迁移学习
也有研究表明从具有大型数据集的监督任务中进行有效迁移,如自然语言推理(Conneau等人,2017)和机器翻译(McCann等人,2017)。计算机视觉研究也展示了从大型预训练模型进行迁移学习的重要性,其中一个有效的方法是微调预先用ImageNet(Deng等人,2009;Yosinski等人,2014)训练的模型。
3 BERT
我们在本节中介绍BERT及其详细实现。我们的框架包含两个步骤:预训练和微调。在预训练过程中,模型通过不同的预训练任务在未标记数据上进行训练。对于微调,BERT模型首先使用预训练参数进行初始化,然后使用下游任务的标记数据对所有参数进行微调。每个下游任务都有单独的微调模型,尽管它们都使用相同的预训练参数进行初始化。图1中的问答示例将作为本节的运行示例。
BERT的一个显著特点是其跨不同任务的统一架构。预训练架构和最终的下游架构之间的差异很小。
模型架构
BERT的模型架构是一个基于Vaswani等人(2017)所描述的原始实现的多层双向Transformer编码器,并在tensor2tensor库中发布。由于Transformer的使用已经变得普遍,且我们的实现与原始实现几乎相同,我们将省略模型架构的详尽背景描述,读者可以参考Vaswani等人(2017)以及优秀的指南如"The Annotated Transformer"。
在本工作中,我们将层数(即Transformer块)表示为L,隐藏层大小表示为H,自注意力头数表示为A。我们主要报告两种模型大小的结果:BERTBASE(L=12,H=768,A=12,总参数=110M)和BERTLARGE(L=24,H=1024,A=16,总参数=340M)。
BERTBASE的选择是为了与OpenAI GPT具有相同的模型大小以便进行比较。然而,至关重要的是,BERT Transformer使用双向自注意力,而GPT Transformer使用约束性自注意力,其中每个词元只能关注其左侧的上下文。
输入/输出表示
为了使BERT能够处理各种下游任务,我们的输入表示能够在一个词元序列中明确表示单个句子和句子对(例如,⟨问题,回答⟩)。在本文中,"句子"可以是任意一段连续文本,而不一定是一个实际的语言学句子。"序列"指的是输入到BERT的词元序列,可以是单个句子或两个打包在一起的句子。
我们使用WordPiece嵌入(Wu等人,2016)和30,000个词元的词汇表。每个序列的第一个词元始终是一个特殊的分类词元([CLS])。对应于此词元的最终隐藏状态被用作分类任务的聚合序列表示。句子对被打包到一个序列中。我们以两种方式区分句子。首先,我们用一个特殊词元([SEP])将它们分开。其次,我们为每个词元添加一个学习型嵌入,指示它属于句子A还是句子B。如图1所示,我们将输入嵌入表示为E,特殊[CLS]词元的最终隐藏向量表示为C∈RH,第i个输入词元的最终隐藏向量表示为T_i∈RH。
对于给定的词元,其输入表示是通过将相应的词元、段和位置嵌入相加构建的。这种构建的可视化可以在图2中看到。
3.1 BERT的预训练
与Peters等人(2018a)和Radford等人(2018)不同,我们不使用传统的从左到右或从右到左的语言模型来预训练BERT。相反,我们使用本节描述的两个无监督任务预训练BERT。这一步骤在图1的左侧部分呈现。
任务#1:掩码LM 直觉上,认为深度双向模型严格比从左到右模型或从左到右和从右到左模型的浅层连接更强大是合理的。不幸的是,标准条件语言模型只能从左到右或从右到左训练,因为双向条件会让每个词间接地"看到自己",并且模型可以在多层上下文中轻易预测目标词。
任务#1:掩码LM(续) 为了训练深度双向表示,我们简单地随机掩盖一定百分比的输入词元,然后预测这些被掩盖的词元。我们将此过程称为"掩码LM"(MLM),尽管在文献中它通常被称为完形填空任务(Taylor,1953)。在这种情况下,对应于掩码词元的最终隐藏向量被输入到词汇表上的输出softmax中,就像标准LM一样。在我们所有的实验中,我们在每个序列中随机掩盖15%的所有WordPiece词元。与去噪自编码器(Vincent等人,2008)不同,我们只预测被掩盖的词,而不是重建整个输入。
尽管这使我们能够获得双向预训练模型,但缺点是我们在预训练和微调之间创建了不匹配,因为[MASK]词元在微调期间不会出现。为了缓解这一问题,我们不总是用实际的[MASK]词元替换"被掩盖"的词。训练数据生成器随机选择15%的词元位置进行预测。如果选择了第i个词元,我们将第i个词元替换为(1)80%的时间替换为[MASK]词元(2)10%的时间替换为随机词元(3)10%的时间保持第i个词元不变。然后,Ti将被用来预测原始词元,使用交叉熵损失。我们在附录C.2中比较了这一过程的不同变体。
任务#2:下一句预测(NSP) 许多重要的下游任务,如问答(QA)和自然语言推理(NLI),都基于理解两个句子之间的关系,而这不能直接通过语言建模捕获。为了训练一个理解句子关系的模型,我们为一个二元化的下一句预测任务进行预训练,这个任务可以从任何单语语料库中轻松生成。具体来说,当为每个预训练示例选择句子A和B时,50%的情况下B是实际上跟随A的下一句(标记为IsNext),而50%的情况下它是语料库中的一个随机句子(标记为NotNext)。如图1所示,C用于下一句预测(NSP)。尽管它很简单,我们在5.1节中证明,针对这一任务的预训练对QA和NLI都非常有益。
NSP任务与Jernite等人(2017)和Logeswaran与Lee(2018)使用的表示学习目标密切相关。然而,在之前的工作中,只有句子嵌入被迁移到下游任务,而BERT则迁移所有参数来初始化终端任务模型参数。

图2:BERT输入表示。输入嵌入是词元嵌入、分段嵌入和位置嵌入的总和。
3.1 预训练数据
预训练程序在很大程度上遵循现有的语言模型预训练文献。对于预训练语料库,我们使用BooksCorpus(8亿词)(Zhu等人,2015)和英语维基百科(25亿词)。对于维基百科,我们只提取文本段落,忽略列表、表格和标题。使用文档级语料库而不是像Billion Word Benchmark(Chelba等人,2013)这样的打乱的句子级语料库是至关重要的,以便提取长的连续序列。
3.2 微调BERT
由于Transformer中的自注意力机制使BERT能够通过更换适当的输入和输出来模拟许多下游任务(无论它们涉及单一文本还是文本对),因此微调非常简单。对于涉及文本对的应用,一种常见的模式是在应用双向交叉注意力之前独立编码文本对,例如Parikh等人(2016);Seo等人(2017)。BERT反而使用自注意力机制来统一这两个阶段,因为用自注意力编码连接的文本对实际上包含了两个句子之间的双向交叉注意力。
对于每个任务,我们只需将特定任务的输入和输出插入BERT中,并端到端地微调所有参数。在输入端,来自预训练的句子A和句子B类似于(1)复述中的句子对,(2)蕴含中的假设-前提对,(3)问答中的问题-段落对。
(4)在文本分类或序列标记中的退化文本-∅对。在输出方面,词元表示被输入到输出层用于词元级任务,如序列标记或问答,而[CLS]表示被输入到输出层用于分类任务,如推断或情感分析。
与预训练相比,微调相对廉价。本文中的所有结果可以在单个Cloud TPU上最多1小时内复制,或在GPU上几小时内复制,从完全相同的预训练模型开始。我们在第4节的相应小节中描述了特定任务的详细信息。更多细节可以在附录A.5中找到。
4 实验
在本节中,我们展示BERT在11个NLP任务上的微调结果。
4.1 GLUE
通用语言理解评估(GLUE)基准(Wang等人,2018a)是一系列多样化的自然语言理解任务的集合。GLUE数据集的详细描述包含在附录B.1中。
为了在GLUE上进行微调,我们如第3节所述表示输入序列(对于单个句子或句子对),并使用与第一个输入词元([CLS])对应的最终隐藏向量C∈RH作为聚合表示。微调期间引入的唯一新参数是分类层权重W∈RK×H,其中K是标签数量。我们使用C和W计算标准分类损失,即log(softmax(CW^T))。

表 1:GLUE测试结果,由评估服务器评分(https://gluebenchmark.com/leaderboard)。
每个任务下方的数字表示训练样例的数量。"平均值"列与官方GLUE分数略有不同,因为我们排除了有问题的WNLI集。BERT和OpenAI GPT是单模型、单任务的。QQP和MRPC报告的是F1分数,STS-B报告的是Spearman相关性,其他任务报告的是准确率分数。我们排除了使用BERT作为其组件之一的条目。
我们使用32的批量大小,在所有GLUE任务的数据上微调3个epoch。对于每个任务,我们在开发集上选择了最佳微调学习率(在5e-5、4e-5、3e-5和2e-5中选择)。此外,对于BERTLARGE,我们发现在小数据集上微调有时不稳定,因此我们运行了几次随机重启,并在开发集上选择了最佳模型。使用随机重启,我们使用相同的预训练检查点,但执行不同的微调数据打乱和分类器层初始化。
结果在表1中呈现。BERTBASE和BERTLARGE在所有任务上都大幅超越了所有系统,分别获得了比先前最先进水平高4.5%和7.0%的平均准确率改进。请注意,BERTBASE和OpenAI GPT在模型架构方面几乎相同,除了注意力掩码。对于最大和最广泛报道的GLUE任务MNLI,BERT获得了4.6%的绝对准确率提升。在官方GLUE排行榜上,BERTLARGE获得了80.5的得分,相比之下,截至撰写之日,OpenAI GPT获得72.8。
我们发现BERTLARGE在所有任务上都显著优于BERTBASE,尤其是那些训练数据非常少的任务。模型大小的效果在5.2节中有更深入的探讨。
4.2 SQuAD v1.1
斯坦福问答数据集(SQuAD v1.1)是一个由10万对众包问答配对组成的集合(Rajpurkar等人,2016)。给定一个问题和一个包含答案的维基百科段落,任务是预测段落中的答案文本跨度。
如图1所示,在问答任务中,我们将输入的问题和段落表示为一个单一的打包序列,问题使用A嵌入,段落使用B嵌入。我们在微调期间只引入一个起始向量S∈RH和一个结束向量E∈RH。单词i是答案跨度起始位置的概率计算为Ti和S之间的点积,然后对段落中的所有单词进行softmax:Pi = e^(S·Ti) / Σ_j e^(S·Tj)。类似的公式用于答案跨度的结束位置。从位置i到位置j的候选跨度的得分定义为S·Ti + E·Tj,使用得分最高且j≥i的跨度作为预测。训练目标是正确起始和结束位置的对数似然之和。我们以5e-5的学习率和32的批量大小进行3个epoch的微调。
表2显示了排行榜上的顶级条目以及来自顶级发表系统的结果(Seo等人,2017; Clark和Gardner,2018; Peters等人,2018a; Hu等人,2018)。SQuAD排行榜上的顶级结果没有最新的公开系统描述,并且允许在训练他们的系统时使用任何公共数据。
因此,我们在系统中使用了适度的数据增强,方法是在微调SQuAD之前先在TriviaQA(Joshi等人,2017)上进行微调。
我们表现最好的系统在集成方面比排行榜上的顶级系统高出+1.5个F1分数,作为单一系统高出+1.3个F1分数。事实上,我们的单一BERT模型在F1分数方面超过了顶级集成系统。不使用TriviaQA微调
数据,我们只损失0.1-0.4的F1,仍然大幅超过所有现有系统。12

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

表 3:SQuAD 2.0 结果。我们排除了使用BERT作为其组件之一的条目。
4.3 SQuAD v2.0
SQuAD 2.0任务扩展了SQuAD 1.1的问题定义,允许在提供的段落中可能不存在简短答案,使得问题更加现实。
我们使用一种简单的方法来扩展SQuAD v1.1 BERT模型以适应此任务。我们将没有答案的问题视为有一个答案跨度,其起始位置和结束位置都在[CLS]词元处。答案跨度起始和结束位置的概率空间扩展到包括[CLS]词元的位置。对于预测,我们比较无答案跨度的得分:snull = S·C + E·C与最佳非空跨度的得分:sˆi,j = maxj≥i S·Ti + E·Tj。当sˆi,j > snull + τ时,我们预测非空答案,其中阈值τ是在开发集上选择的,以最大化F1值。
我们没有为此模型使用TriviaQA数据。我们以5e-5的学习率和48的批量大小进行了2个epoch的微调。
与先前排行榜条目和顶级发表工作(Sun等人,2018;Wang等人,2018b)相比的结果显示在表3中,不包括使用BERT作为其组件之一的系统。我们观察到比之前最佳系统高出+5.1 F1的改进。
4.4 SWAG
包含对抗性生成的情境(SWAG)数据集包含113k个句子对完成示例,用于评估基于常识的推理(Zellers等人,2018)。给定一个句子,任务是在四个选项中选择最合理的延续句。
在对SWAG数据集进行微调时,我们构建了四个输入序列,每个序列包含给定句子(句子A)和一个可能的延续句(句子B)的连接。引入的唯一特定于任务的参数是一个向量,其与[CLS]词元表示C的点积表示每个选项的得分,通过softmax层进行归一化。
我们以2e-5的学习率和16的批量大小对模型进行了3个epoch的微调。结果在表4中呈现。BERTLARGE比作者的基线ESIM+ELMo系统高出+27.1%,比OpenAI GPT高出8.3%。

表 4:SWAG开发集和测试集准确率。†人类表现是基于100个样本测量的,如SWAG论文中报告的那样。
5 消融研究
在本节中,我们对BERT的多个方面进行消融实验,以更好地理解它们的相对重要性。

表 5:使用BERTBASE架构对预训练任务的消融实验。"No NSP"是在没有下一句预测任务的情况下训练的。"LTR & No NSP"是作为从左到右的语言模型训练的,没有下一句预测,类似于OpenAI GPT。"+ BiLSTM"在微调期间在"LTR + No NSP"模型之上添加了一个随机初始化的BiLSTM。
5.1 预训练任务的影响
我们通过评估两种使用完全相同预训练数据、微调方案和超参数的预训练目标来展示BERT深层双向性的重要性:
无NSP:一个使用"掩码语言模型"(MLM)训练但没有"下一句预测"(NSP)任务的双向模型。
LTR与无NSP:一个仅使用左侧上下文的模型,使用标准的从左到右(LTR)语言模型训练,而不是掩码语言模型。在微调时也应用了左侧上下文的约束,因为移除它会引入预训练/微调不匹配,降低下游性能。此外,此模型在预训练时没有NSP任务。这与OpenAI GPT直接可比,但使用了我们更大的训练数据集、我们的输入表示和我们的微调方案。
我们首先检验NSP任务带来的影响。在表5中,我们显示移除NSP会显著降低QNLI、MNLI和SQuAD 1.1的性能。接下来,我们通过比较"无NSP"与"LTR与无NSP"来评估训练双向表示的影响。LTR模型在所有任务上的表现都比MLM模型差,在MRPC和SQuAD上的下降尤为明显。
对于SQuAD来说,LTR模型在词元预测上表现不佳是直观可理解的,因为词元级隐藏状态没有右侧上下文。为了对LTR系统进行一次诚意尝试加强,我们在顶部添加了一个随机初始化的BiLSTM。这确实显著改善了SQuAD的结果,但结果仍远不及预训练的双向模型。BiLSTM反而损害了GLUE任务的性能。
我们认识到也可以训练单独的LTR和RTL模型,并像ELMo那样将每个词元表示为两个模型的拼接。然而:(a)这比单个双向模型的成本高一倍;(b)这对于QA等任务来说是不直观的,因为RTL模型将无法基于问题条件化答案;(c)这严格来说不如深层双向模型强大,因为后者可以在每一层都使用左右上下文。
5.2 模型大小的影响
在本节中,我们探讨模型大小对微调任务准确性的影响。我们训练了一系列具有不同层数、隐藏单元和注意力头数的BERT模型,同时使用与之前描述的相同超参数和训练过程。
表6显示了在选定GLUE任务上的结果。在此表中,我们报告了来自5次随机重启微调的平均开发集准确率。我们可以看到,更大的模型在所有四个数据集上都带来了严格的准确率提升,即使是MRPC,它只有3,600个标记训练样本,且与预训练任务有实质性差异。相对于现有文献,我们能够在已经相当大的模型基础上实现如此显著的改进,这也许令人惊讶。例如,Vaswani等人(2017)探索的最大Transformer是(L=6, H=1024, A=16),编码器有1亿参数,而我们在文献中发现的最大Transformer是(L=64, H=512, A=2),有2.35亿参数(Al-Rfou等人,2018)。相比之下,BERTBASE包含1.1亿参数,BERTLARGE包含3.4亿参数。
长期以来,人们已知增加模型大小会持续改善机器翻译和语言建模等大规模任务的性能,这一点从表6所示的保留训练数据的语言模型困惑度可以看出。然而,我们相信这是第一个令人信服地证明扩展到极端模型大小也会在非常小规模任务上带来巨大改进的工作,前提是模型已经充分预训练。Peters等人(2018b)提出了
Peters等人(2018b)提出了关于增加预训练双向语言模型规模从两层到四层对下游任务影响的混合结果,而Melamud等人(2016)简略提到将隐藏维度大小从200增加到600有帮助,但进一步增加到1,000并未带来更多改进。这两项先前的工作都使用了基于特征的方法——我们假设,当模型直接在下游任务上微调,并且只使用极少量随机初始化的额外参数时,即使下游任务数据非常少,特定任务模型也能从更大、表达能力更强的预训练表示中受益。
5.3 基于特征的BERT方法
迄今为止呈现的所有BERT结果都使用了微调方法,即在预训练模型上添加一个简单的分类层,并在下游任务上联合微调所有参数。然而,基于特征的方法(从预训练模型中提取固定特征)具有某些优势。首先,并非所有任务都能轻松通过Transformer编码器架构表示,因此需要添加特定于任务的模型架构。其次,预先计算训练数据的昂贵表示一次,然后在此表示上运行多个成本较低的模型实验,这有重大的计算效益。
在本节中,我们通过将BERT应用于CoNLL-2003命名实体识别(NER)任务(Tjong Kim Sang和De Meulder, 2003)来比较这两种方法。在BERT的输入中,我们使用保留大小写的WordPiece模型,并包含数据提供的最大文档上下文。按照标准实践,我们将此任务表述为标记任务,但不使用CRF

表 6:BERT模型大小的消融实验。#L = 层数;#H = 隐藏层大小;#A = 注意力头数量。"LM (ppl)"是保留训练数据的掩码语言模型困惑度。

**表 7:CoNLL-2003 命名实体识别结果。**超参数是使用开发集选择的。报告的开发集和测试集分数是使用这些超参数进行的5次随机重启的平均值。
在输出层中。我们使用第一个子词元的表示作为对NER标签集进行词元级分类器的输入。
为了分析微调方法,我们应用了基于特征的方法,即在不微调BERT任何参数的情况下从一个或多个层中提取激活值。这些上下文嵌入被用作随机初始化的两层768维BiLSTM在分类层之前的输入。
结果如表7所示。BERTLARGE与最先进的方法表现相当。表现最好的方法是连接预训练Transformer顶部四个隐藏层的词元表示,这仅比微调整个模型低0.3个F1分。这表明BERT对微调和基于特征的方法都是有效的。
6 结论
近期基于语言模型迁移学习的实证改进表明,丰富的、无监督的预训练是许多语言理解系统不可或缺的部分。特别是,这些结果使即使是低资源任务也能从深度单向架构中获益。我们的主要贡献是将这些发现进一步推广到深度双向架构,使同一个预训练模型能够成功处理广泛的自然语言处理任务。
陕公网安备61011302002223号