bertt

发布于:2025-06-28 ⋅ 阅读:(19) ⋅ 点赞:(0)

以下是论文《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》的中文翻译:

BERT:用于语言理解的深度双向 Transformer 预训练

Jacob Devlin、Ming-Wei Chang、Kenton Lee、Kristina Toutanova
Google AI Language
{jacobdevlin, mingweichang, kentonl, kristout}@google.com

摘要

我们引入了一种新的语言表示模型,称为BERT,它代表来自Transformer的双向编码器表示(Bidirectional Encoder Representations from Transformers)。与最近的语言表示模型(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个百分点)。

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(来自Transformer的双向编码器表示)来改进基于微调的方法。受完形填空任务(Taylor,1953)的启发,BERT通过使用“掩码语言模型”(MLM)预训练目标来缓解前面提到的单向性约束。掩码语言模型从输入中随机掩码一些标记,目标是仅基于其上下文预测被掩码标记的原始词汇ID。

与从左到右的语言模型预训练不同,MLM目标使表示能够融合左右上下文,这允许我们预训练深度双向Transformer。除了掩码语言模型之外,我们还使用“下一句预测”任务来联合预训练文本对表示。本文的贡献如下:

  • 我们证明了双向预训练对语言表示的重要性。与Radford等人(2018)使用单向语言模型进行预训练不同,BERT使用掩码语言模型来实现预训练的深度双向表示。这也与Peters等人(2018a)不同,他们使用独立训练的从左到右和从右到左LM的浅层拼接。

  • 我们表明,预训练表示减少了对许多精心设计的特定于任务的架构的需求。BERT是第一个基于微调的表示模型,在一系列大型句子级和标记级任务上实现了最先进的性能,优于许多特定于任务的架构。

  • BERT推动了11个NLP任务的最新技术水平。代码和预训练模型可在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在几个主要的NLP基准上推进了最新技术水平(Peters等人,2018a),包括问答(Rajpurkar等人,2016)、情感分析(Socher等人,2013)和命名实体识别(Tjong Kim Sang和De Meulder,2003)。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)。

2.3 来自监督数据的迁移学习

也有工作表明,从具有大型数据集的监督任务(如自然语言推理(Conneau等人,2017)和机器翻译(McCann等人,2017))进行有效迁移是可能的。计算机视觉研究也证明了从大型预训练模型进行迁移学习的重要性,其中一个有效的方法是微调使用ImageNet预训练的模型(Deng等人,2009;Yosinski等人,2014)。

3 BERT

我们在本节中介绍BERT及其详细实现。我们的框架中有两个步骤:预训练和微调。在预训练期间,模型在不同的预训练任务上对未标记数据进行训练。对于微调,BERT模型首先使用预训练参数进行初始化,然后使用来自下游任务的标记数据对所有参数进行微调。每个下游任务都有单独的微调模型,即使它们使用相同的预训练参数进行初始化。图1中的问答示例将作为本节的运行示例。

BERT的一个显著特点是其跨不同任务的统一架构。预训练架构和最终下游架构之间几乎没有差异。

模型架构

BERT的模型架构是基于Vaswani等人(2017)描述并在tensor2tensor库中发布的原始实现的多层双向Transformer编码器。由于Transformer的使用已变得普遍,并且我们的实现与原始实现几乎相同,因此我们将省略模型架构的详尽背景描述,并请读者参考Vaswani等人(2017)以及优秀的指南,如“The Annotated Transformer”。

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

选择BERT-BASE是为了与OpenAI GPT具有相同的模型大小以便进行比较。然而,关键的是,BERT Transformer使用双向自注意力,而GPT Transformer使用受限自注意力,其中每个标记只能关注其左侧的上下文。

在所有情况下,我们将前馈/过滤器大小设置为4H,即H=768时为3072,H=1024时为4096。

输入/输出表示

为了使BERT能够处理各种下游任务,我们的输入表示能够在一个标记序列中明确表示单个句子和句子对(例如,〈问题,答案〉)。在整个工作中,“句子”可以是任意连续文本的跨度,而不是实际的语言句子。“序列”指的是BERT的输入标记序列,它可以是单个句子或打包在一起的两个句子。

我们使用WordPiece嵌入(Wu等人,2016)和30,000个标记的词汇表。每个序列的第一个标记始终是特殊的分类标记([CLS])。对应于该标记的最终隐藏状态用作分类任务的聚合序列表示。句子对被打包成单个序列。我们通过两种方式区分句子。首先,我们使用特殊标记([SEP])分隔它们。其次,我们向每个标记添加一个学习的嵌入,指示它属于句子A还是句子B。如图1所示,我们将输入嵌入表示为E,特殊[CLS]标记的最终隐藏向量表示为C∈ℝH,第i个输入标记的最终隐藏向量表示为T_i∈ℝH。

对于给定的标记,其输入表示通过将相应的标记、段和位置嵌入相加来构造。此构造的可视化可以在图2中看到。

3.1 预训练BERT

与Peters等人(2018a)和Radford等人(2018)不同,我们不使用


网站公告

今日签到

点亮在社区的每一天
去签到