BERT 文章翻译

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

文章目录

  • BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
  • Abstract
  • 1.Introduction
  • 2 Related Work
    • 2.1 Unsupervised Feature-based Approaches
    • 2.2 Unsupervised Fine-tuning Approaches
    • 2.3 Transfer Learning from Supervised Data
  • 3 BERT
    • 3.1 Pre-training BERT
    • 3.2 Fine-tuning BERT
  • 4 Experiments
    • 4.1 GLUE
    • 4.2 SQuAD v1.1
    • 4.3 SQuAD v2.0
    • 4.4 SWAG
  • 5 Ablation Studies
    • 5.1 Effect of Pre-training Tasks
    • 5.2 Effect of Model Size
    • 5.3 Feature-based Approach with BERT
  • Conclusion

Abstract

我们介绍了一种新的语言表示模型,称为BERT(Bidirectional Encoder Representations from Transformers)。与最近的语言表示模型(Peters等人,2018a;Radford等人,2018)不同,BERT旨在通过在所有层中联合调节左右语境,从未标记文本中预训练深度双向表示。因此,只需增加一个输出层,就可以对预训练的BERT模型进行微调,从而为广泛的任务(如问答和语言推理)创建最先进的模型,而无需对特定于任务的架构进行实质性修改。
BERT概念简单,经验丰富。它在11个自然语言处理任务上获得了最新的结果,包括将GLUE分数提高到80.5%(绝对提高7.7%),MultiNLI准确性提高到86.7%(绝对提高4.6%),将SQuAD 1.1问题答案的TEST F1提高到93.2(绝对提高了1.5分),将SQuAD 2.0的TEST F1提高到83.1(绝对提高了5.1分)。

1.Introduction

语言模型预训练对于改善许多自然语言处理任务是有效的。这些任务包括句子级任务(sequence-level task),如自然语言推理和释义,其目的是通过整体分析来预测句子之间的关系。 作为诸如命名实体识别和问题回答之类的token-level task,其中需要模型以在token级上产生细粒度的输出。

将预训练的语言表示应用于下游任务有两种现有策略:基于特征(feature-based)和微调(fine-tuning)。基于特征的方法,例如ELMo,使用特定于任务的架构,其中包括预训练的表示作为附加特征。微调方法,例如生成预训练Transformer(OpenAI GPT),引入了最小的任务特定参数,并通过简单微调所有预训练参数对下游任务进行训练。这两种方法在预训练期间具有相同的目标函数,它们使用单向语言模型来学习一般的语言表示。

我们认为,当前的技术限制了预训练(pre-trained)表示的能力,特别是对于微调方法。主要限制是标准语言模型是单向的,这限制了在预训练期间可以使用的架构的选择。例如,在OpenAI GPT中,作者使用了左向右架构,其中每个token只能关注Transformer自注意力层中的先前token。这种限制对于句子级任务来说不是最优的,并且在将基于微调的方法应用于token级任务(如问答)时可能非常有害,在问答中,从两个方向合并上下文至关重要。

在本文中,我们通过提出BERT:Bidirectional Encoder Representations form Transformers。受Cloze任务的启发,BERT通过使用“遮掩语言模型”(MLM)预训练目标来缓解前面提到的单向性约束。屏蔽语言模型随机屏蔽输入中的一些token,目标是仅根据其上下文预测屏蔽词的原始词汇ID 。与从左到右语言模型预训练不同,MLM目标使表示能够融合左右上下文语境,这使我们能够预训练深度双向Transformer。除了掩蔽语言模型外,我们还使用了“下一句预测”任务,该任务联合预训练文本对表示。本文的贡献如下:

  1. 我们证明了双向预训练对于语言表征的重要性。与Radford等人(2018)他使用单向语言模型进行预训练不同,BERT使用掩码语言模型来实现预训练的深度双向表示。这也与Peters等人(2018a)相反,Peters等人使用了独立训练的从左到右和从右到左LMs的浅连接。
  2. 我们表明,预先训练的表示减少了对许多高度工程化的任务特定架构的需求。BERT是第一个基于微调(fine-tuning)的表示模型,它在一系列句子级(sentence-level)和token级任务上实现了最先进的性能,优于许多特定于任务的架构。
  3. BERT推动了11项NLP任务的发展。 可以在https://github.com/ google-research / bert上找到代码和经过预先训练的模型。

2 Related Work

一般语言表征的预训练有着悠久的历史,我们在本节中简要回顾了最广泛使用的方法。

2.1 Unsupervised Feature-based Approaches

几十年来,学习广泛适用的单词表示一直是一个活跃的研究领域,包括非神经网络方法(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提出了几个主要的自然语言处理基准(Peters等人,2018a),包括问答(Rajpurkar等人,2016)、情感分析(Socher等人,2013)和命名实体识别(Tjong Kim Sang和De Meulder,2003)。Melamud等人(2016年)提出通过使用LSTM从左右语境预测单个单词的任务来学习语境表征。与ELMo类似,他们的模型是基于特征的,而不是深度双向的。Fedus等人(2018)表明,完形填空任务可用于提高文本生成模型的稳健性。

2.2 Unsupervised Fine-tuning Approaches

与基于特征的方法一样,第一种方法仅在未标记文本中预训练单词嵌入参数的方向上工作(Collobert和Weston,2008)

最近,产生上下文标记表示的句子或文档编码器已从未标记文本中预训练,并针对监督的下游任务进行微调(Dai和Le,2015;Howard和Ruder,2018;Radford等人,2018)。这些方法的优点是很少需要从头开始学习参数。至少部分由于这一优势,OpenAI GPT(Radford等人,2018)在GLUE基准测试的许多句子级任务上取得了之前最先进的结果(王等人,2018a)。从左到右的语言建模和自动编码器目标已用于此类模型的预训练(Howard和Ruder,2018;Radford等人,2018;Dai和Le,2015)。

2.3 Transfer Learning from Supervised Data

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

3 BERT

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

BERT的一个显著特点是其跨不同任务的统一结构。预训练结构和最终下游架构之间存在微小差异。

BERT 文章翻译_第1张图片> Figure 1:BERT的整体预训练和微调程序。除了输出层之外,在预训练和微调中使用相同的结构。相同的预训练模型参数用于初始化不同下游任务的模型。在微调过程中,对所有参数进行微调。[CLS]是添加在每个输入示例前面的特殊符号,[SEP]是一个特殊的分隔符标记(例如,分隔问题/答案)。

Model Architecture BERT的模型结构是一种多层双向Transformer编码器,基于Vaswani等人(2017)中描述的原始实现,并在tensor2tensor库中发布。由于Transformers的使用已变得普遍 1 ^1 1,并且我们的实现几乎与原始版本相同,因此我们将省略对模型架构的详尽背景描述,并向读者介绍V aswani等人(2017)以及优秀的阐述,如“The Annoteated Tranformer” 2 ^2 2。【Tranformer具体的论文详解可以参见这篇文章】

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

为了进行比较,选择BERT(BASE)的模型尺寸与OpenAI GPT相同。然而,关键的是,BERT使用双向自注意力,而GPT变换器使用约束自注意力,其中每个token只能关注其左侧的上下文 4 ^4 4

  1. https://github.com/tensorflow/tensor2tensor
  2. http://nlp.seas.harvard.edu/2018/04/03/attention.html
  3. 在所有情况下,我们将前馈滤波器大小设置为4H,即,对于H=768,为3072,对于H=1024,为4096。
  4. (left-context-only version)被称为“Transformer decoder”,因为它可以用于文本生成)*

Input/Output Representations 为了使BERT处理各种下游任务,我们的输入表示能够在一个token序列中明确表示单个句子和一对句子(例如,Quesition,Answer)。在本研究中,“句子”可以是连续文本的任意范围,而不是实际的语言句子。“序列”是指BERT的输入token序列,可以是一个句子或两个句子组合在一起。

我们使用了30000个token词汇表的词条嵌入(Wu等人,2016)。每个序列的第一个token总是一个特殊的分类令牌([CLS])。与该token对应的最终隐藏状态用作分类任务的聚合序列表示。句子对被压缩成一个序列。我们用两种方式区分句子。首先,我们用一个特殊标记([SEP])将它们分开。其次,我们向每个标记添加学习嵌入,指示其属于句子A还是句子B。如图1所示,我们将输入嵌入表示为E,特殊[CLS]标记的最终隐藏向量表示为 C ∈ R H C\in\mathbb R^H CRH i t h i^{th} ith输入token的最终隐藏向量为 T i ∈ R H T_i\in\mathbb R^H TiRH

对于给定的token,其输入表示是通过对相应的token、段和位置嵌入求和来构造的。这种结构的可视化如图2所示。

BERT 文章翻译_第2张图片
图2:BERT输入表示。输入token是令牌嵌入、分段嵌入和位置嵌入的总和。

3.1 Pre-training BERT

与Peters等人(2018a)和Radford等人(2018)不同,我们不使用传统的从左到右或从右到左的语言模型来预训练BERT。相反,我们使用两个无监督任务预训练BERT,如本节所述。这一步如图1左侧所示。

Task #1: Masked LM 直观地说,有理由相信深度双向模型比从左到右的模型或从左到右和从右到左的模型的浅连接更强大。不幸的是,标准的条件语言模型只能从左到右或从右到左进行训练,因为双向条件作用将允许每个单词间接地“看到自己”,并且该模型可以在多层上下文中轻松预测目标单词。

为了训练深度双向表示,我们只需随机遮掩某些百分比的输入token,然后预测这些屏蔽token。我们将这一过程称为“掩码LM”(MLM),尽管在文献中它通常被称为完形填空(Taylor,1953)。在这种情况下,与标准的LM一样,与掩码token相对应的最终隐藏向量被馈送到词汇表上的输出softmax中,。在我们的所有实验中,我们随机屏蔽了每个序列中15%的WordPiece标记。与去噪自动编码器(Vincent等人,2008)不同,我们只预测掩盖的文字,而不是重建整个输入。

虽然这使我们能够获得双向预训练模型,但缺点是我们在预训练和微调之间创建了不匹配,因为在微调过程中不会出现[mask]标记。为了缓解这种情况,我们并不总是用实际的[mask]标记替换“masked”单词。训练数据生成器随机选择15%的令牌位置进行预测。如果选择了第i个令牌,我们将第i个令牌替换为(1)80%概率替换为[MASK]令牌(2)10%概率随机替换为其他token(3)10%概率不进行替换。然后, T i T_i Ti将用于预测具有交叉熵损失的原始token。我们在附录C.2中比较了该程序的变化。

C.2附录如下:
掩码LM和掩码过程假设未标记的句子是:my dog is hairy,在随机掩蔽过程中,我们选择了第4个token(对应于hairy),我们的掩蔽过程可以通过以下公式进一步说明:
80% of the time: Replace the word with the [MASK] token, e.g., my dog is hairy → my dog is [MASK]
10% of the time: Replace the word with a random word, e.g., my dog is hairy → my dog is apple

10% of the time: Keep the word unchanged, e.g., my dog is hairy → my dog is hairy. The purpose of this is to bias the representation towards the actual observed word.

Task #2: Next Sentence Prediction (NSP) 许多重要的下游任务,如问答(Q&A)和自然语言推理(NLI)都是基于理解两个句子之间的关系,而语言建模并不能直接捕捉到这些关系。为了训练一个理解句子关系的模型,我们预先训练了一个二值化的下一个句子预测任务,该任务可以从任何单语语料库生成。具体来说,当为每个预训练示例选择句子A和B时,50%的时间B是A后面的实际下一个句子(标记为IsNext),50%的时间是语料库中的随机句子(标记为NotNext)。如图1所示,C用于下一句预测(NSP) 5 ^5 5。尽管其简单,但我们在第5.1节中证明,针对该任务的预培训对QA和NLI都非常有益 6 ^6 6

  1. The final model achieves 97%-98% accuracy on NSP.
  2. The vector C is not a meaningful sentence representation
    without fine-tuning, since it was trained with NSP

NSP任务与Jernite等人(2017)以及Logeswaran和Lee(2018)中使用的表征学习目标密切相关。然而,在之前的工作中,只有句子嵌入被转移到下游任务,其中BERT传输所有参数以初始化结束任务模型参数。

Pre-training data 预训练过程在很大程度上遵循了关于语言模型预训练的现有文献。对于预训练语料库,我们使用了BooksCorpus(800M单词)(朱等人,2015)和English Wikipedia(25000M单词)。对于Wikipedia,我们只提取文本段落,而忽略列表、表格和标题。为了提取长的连续序列,关键是使用文档级语料库,而不是混合句子级语料库,如BillionWord Benchmark(Chelba等人,2013)。

3.2 Fine-tuning BERT

微调很简单,因为Transformer中的自注意力机制允许BERT对许多下游任务进行建模,无论它们是涉及单个文本还是通过交换适当的输入和输出来涉及文本对。对于涉及文本对的应用,常见的模式是在应用双向交叉注意之前独立编码文本对,例如Parikh等人(2016);Seo等人(2017年)。相反,BERT使用自注意力机制来统一这两个阶段,因为编码具有自注意力的串联文本对有效地包括两个句子之间的双向交叉注意力。

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

与预训练相比,微调相对容易。从完全相同的预训练模型开始,本文中的所有结果最多可以在单个云TPU上复制1小时,或在GPU上复制几个小时 7 ^7 7。我们在第4节的相应小节中描述了特定于任务的细节。更多细节见附录A.5。

例如,可以在单个云TPU上在大约30分钟内训练BERT团队模型,以实现91.0%的开发F1分数。

4 Experiments

在本节中,我们介绍了11个非线性规划任务的BERT微调结果。

4.1 GLUE

通用语言理解评估(GLUE)基准(wang等人,2018a)是各种自然语言理解任务的集合。GLUE数据集的详细说明见附录B.1。

为了对GLUE进行微调,我们如第3节所述表示输入序列(针对单个句子或句子对),并使用最终隐藏向量 C ∈ R H C\in\mathbb R^H CRH中的第一个标记([CLS])
作为句子表示,。微调期间引入的唯一新参数是分类层权重 W ∈ R K × H W\in\mathbb R^{K×H} WRK×H,其中K是分类的数量。我们用C和W计算标准分类损失,即 l o g ( s o f t m a x ( C W T ) ) log(softmax(CW^T)) log(softmax(CWT))

我们使用32的批量大小,并对所有GLUE任务的数据进行3个epoch的微调。对于每个任务,我们在开发集上选择最佳微调学习速率( 5 e − 5 5e-5 5e5 4 e − 5 4e-5 4e5 3 e − 5 3e-5 3e5 2 e − 5 2e-5 2e5)。此外,对于Bert(lagle),我们发现微调有时在小数据集上不稳定,因此我们运行了几次随机重启,并在验证记集上选择了最佳模型。对于随机重启,我们使用相同的预训练检查点,但执行不同的微调数据打乱和分类器层初始化 9 ^9 9

  1. 我们注意到,GLUE 发布的数据集不包括测试的标签,所以我们分别将 B E R T B A S E BERT_{BASE} BERTBASE B E R T L A R G E BERT_{LARGE} BERTLARGE向 GLUE 评估服务器提交结果。

结果如表1所示。 B E R T B A S E BERT_{BASE} BERTBASE B E R T L A R G E BERT_{LARGE} BERTLARGE在所有任务上都优于所有系统,在现有技术的基础上分别获得了4.5%和7.0%的平均精度改进。请注意,除了注意力掩蔽外, B E R T B A S E BERT_{BASE} BERTBASE和OpenAI GPT在模型架构方面几乎相同。对于最大且报道最广泛的GLUE任务MNLI,BERT获得了4.6%的绝对精度提高。在官方的GLUE排行榜10中,Bertlagle获得了80.5分,而OpenAI GPT相比截至本文写作时只获得了72.8分。

Table 1:GLUE 测试结果,由 GLUE 评估服务器评分。每个任务下面的数字表示训练示例的数量。“Average”列与官方 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/ 获得。
BERT 文章翻译_第3张图片

我们发现, B E R T L A R G E BERT_{LARGE} BERTLARGE在所有任务中都显著优于 B E R T B A S E BERT_{BASE} BERTBASE,尤其是那些训练数据很少的任务。第5.2节更深入地探讨了模型尺寸的影响。

4.2 SQuAD v1.1

斯坦福问答数据集(SQuAD v1.1)是10万个众包问答对的集合(Rajpurkar等人,2016)。给定一个问题和包含答案的维基百科文章,任务是预测这段文字的区间。例如:

输入问题:
Where do water droplets collide with ice crystals to form precipitation?
输入段落
… Precipitation forms as smaller droplets coalesce via collision with other rain drops or ice crystals within a cloud. …
输出答案
within a cloud

这种区间预测任务与 GLUE 的序列分类任务有很大的区别,但是我们能够让 BERT 以一种直接的方式在 SQuAD 上运行。就像在 GLUE 中,我们将输入问题和段落表示为一个单一打包序列(packed sequence),其中问题使用 A 嵌入,段落使用 B 嵌入。在微调模型期间唯一需要学习的新参数是区间开始向量 S ∈ R H S\in\mathbb R^H SRH和区间结束向量 E ∈ R H E\in\mathbb R^H ERH。让 BERT 模型最后一层的隐藏向量的第 i t h i_{th} ith输入标记被表示为 T i ∈ R H T_i\in\mathbb R^H TiRH。如图 3(c)可视化的表示。然后,计算单词 i i i作为答案区间开始的概率,它是 T i T_i Ti S S S之间的点积并除以该段落所有单词的结果之后再 softmax: P i = e S ⋅ T i ∑ e S ⋅ T j P_i = \frac{e^{S·T_i}}{\sum e^{S·T_j}} Pi=eSTjeSTi同样的式子用来计算单词作为答案区间的结束的概率,并采用得分最高的区间作为预测结果。训练目标是正确的开始和结束位置的对数可能性。

我们使用 5 e − 5 5e-5 5e5的学习率,32 的批次大小训练模型 3 个周期。在模型推断期间,因为结束位置与开始位置没有条件关系,我们增加了结束位置必须在开始位置之后的条件,但没有使用其他启发式。为了方便评估,把序列化后的标记区间对齐回原始未序列化的输入。

表2显示了顶级排行榜条目以及顶级发布系统的结果(Seo等人,2017;Clark和Gardner,2018;Peters等人,2018a;Hu等人,2018)。排行榜上的排名靠前的结果没有最新的描述 1 1 ^11 11,并且允许在训练其系统时使用任何公共数据。因此,我们在我们的系统中使用适度的数据扩充,在对团队进行微调之前,首先对TriviaQA进行微调(Joshi等人,2017)。

11.QANet在Y u等人(2018)中进行了描述,但该系统在发布后有了很大的改进

我们表现最好的模型在集成模型排名中上比排名第一模型高出 1.5 个 F1 值,在一个单模型排行榜中比排名第一的模型高出 1.7(译者注:原文是 1.3) 个 F1 值。实际上,我们的单模型 BERT 就比最优的集成模型表现更优。即使只在 SQuAD 数据集上(不用 TriviaQA 数据集)我们只损失 0.1-0.4 个 F1 值,而且我们的模型输出结果仍然比现有模型的表现好很多。

表 2:SQuAD 结果。Ensemble BERT 是使用不同的预训练模型检查点和微调种子的 7x 模型。
BERT 文章翻译_第4张图片

4.3 SQuAD v2.0

为了评估标记任务的性能,我们在 CoNLL 2003 命名实体识别数据集(NER Named Entity Recognition)上微调 BERT 模型。该数据集由 200k 个训练单词组成,这些训练词被标注为人员、组织、地点、杂项或其他(无命名实体)。

为了微调,我们将最后一层每个单词的隐藏表示 T i ∈ R H T_i\in\mathbb R^{H} TiRH
送入一个在 NER 标签集合的分类层。每个单词的分类不以周围预测为条件(换句话说,没有自回归和没有 CRF)。为了与词块(WordPiece)序列化相适应,我们把 CoNLI-序列化的(CoNLL-tokenized)的输入词输入我们的 WordPiece 序列化器,然后使用这些隐藏状态相对应的第一个块而不用预测标记为 X的块。例如:
在这里插入图片描述
由于单词块序列化边界是输入中已知的一部分,因此对训练和测试都要这样做。
结果如表 3 所示。 B E R T L A R G E BERT_{LARGE} BERTLARGE优于现存的最优模型,使用多任务学习的交叉视野训练 (Clark et al., 2018),CoNLL-2003 命名实体识别测试集上高 0.2 F1 值。

表 3:CoNLL-2003 命名实体识别。模型超参数使用验证集进行选择,报告的验证集和测试分数使用这些超参数进行随机五次以上的实验然后取实验的平均结果。
BERT 文章翻译_第5张图片

4.4 SWAG

Adversarial Generations(SWAG)数据集由 113k 个句子对组合而成,用于评估基于常识的推理 (Zellers et al., 2018)。

给出一个来自视频字幕数据集的句子,任务是在四个选项中选择最合理的延续。例如:
BERT 文章翻译_第6张图片
为 SWAG 数据集调整 BERT 模型的方式与为 GLUE 数据集调整的方式相似。对于每个例子,我们构造四个输入序列,每一个都连接给定的句子(句子A)和一个可能的延续(句子B)。唯一的特定于任务的参数是我们引入向量 V ∈ R H V\in\mathbb R^{H} VRH,然后它点乘最后层的句子总表示 C i ∈ R H C_i\in\mathbb R^H CiRH为每一个选择 i i i产生一个分数。概率分布为 softmax 这四个选择:
P i = e V ⋅ C i s u m j 4 e S ⋅ C j P_i = \frac{e^{V·C_i}}{sum_{j}^4e^{S·C_j}} Pi=sumj4eSCjeVCi

我们使用 2 e − 5 2e-52e−5 的学习率,16 的批次大小训练模型 3 个周期。结果如表 4 所示。 B E R T L A R G E BERT_{LARGE} BERTLARGE优于作者的 ESIM+ELMo 的基线标准模型的 27.1% 。

表 4:SWAG 验证集和测试集准确率。测试结果由 SWAG 作者对隐藏的标签进行评分。人类的表现是用 100 个样本来衡量的,正如 SWAG 论文中描述的那样。
BERT 文章翻译_第7张图片

5 Ablation Studies

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

5.1 Effect of Pre-training Tasks

我们通过使用与 B E R T B A S E BERT_{BASE} BERTBASE完全相同的预训练数据、微调方案和超参数来评估两个预训练目标,证明了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&无NSP”来评估训练双向表征的影响。LTR模型在所有任务上的表现都比MLM模型差,MRPC和SQuAD的表现大幅下降。

Table 5:使用 B E R T B A S E BERT_{BASE} BERTBASE架构对训练前任务进行消融。在没有下一个句子预测任务的情况下训练“No-NSP”。“LTR&No NSP”就和OpenAI GPT一样,使用从左到右的语言模型不进行下一句预测任务来训练模型。在微调期间,“+BiLSTM”在“LTR+No NSP”模型的顶部添加了一个随机初始化的BiLSTM。
BERT 文章翻译_第8张图片

从直觉上看,LTR模型在token预测方面表现不佳,因为token级隐藏状态没有右侧上下文。为了尝试加强LTR系统,我们在顶部添加了一个随机初始化的BiLSTM。这确实显著改善了SQuAD的结果,但结果仍远不如预训练的双向模型。BiLSTM会影响GLUE任务的性能。

我们认识到,也可以训练单独的LTR和RTL模型,并像ELMo那样将每个token表示为两个模型的串联。然而:(a)这是单个双向模型任务量的两倍;(b) 对于QA这样的任务来说,这是不直观的,因为RTL模型无法对问题的答案施加条件;(c) 这严格来说,它不如深度双向模型强大,因为它可以在每一层使用左右上下文。

5.2 Effect of Model Size

在本节中,我们探讨了模型大小对微调任务精度的影响。我们训练了许多具有不同层数、隐藏单元和注意头的BERT模型,同时使用了与前面描述的相同的超参数和训练过程。

表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)。相比之下, B E R T B A S E BERT_{BASE} BERTBASE包含110M参数, B E R T L A R G E BERT_{LARGE} BERTLARGE包含340M参数。

众所周知,增加模型大小将导致大规模任务(如机器翻译和语言建模)的持续改进,表6中所示的训练数据的LM困惑度就证明了这一点。然而,我们认为,这是第一次令人信服地证明,如果模型经过充分的预训练,扩展到极端模型尺寸也会在非常小的规模任务上带来很大的改进。Peters等人(2018b)提出了将预训练的bi-LM大小从两层增加到四层对下游任务影响的混合结果,Melamud等人(2016)提到,将隐藏维度大小从200增加到600有帮助,但进一步增加到1000并没有带来进一步的改善。这两项之前的工作都使用了基于特征的方法——我们假设,当模型直接在下游任务上进行微调,并且只使用非常少的随机初始化的附加参数时,即使下游任务数据非常小,任务特定模型也可以受益于更大、更具表现力的预训练表示法。

Table 6:调整 BERT 的模型大小。#L = 层数;#H = 隐藏维度大小;#A = 注意力头的个数。“LM (ppl)”表示遮蔽语言模型在预留训练数据上的困惑度。
BERT 文章翻译_第9张图片

5.3 Feature-based Approach with BERT

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

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

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

结果如表7所示。 B E R T L A R G E BERT_{LARGE} BERTLARGE采用最先进的方法进行竞争。性能最好的方法将来自预训练的Transformer的前四个隐藏层的token表示连接起来,这只比微调整个模型的F1 Score落后0.3。这表明,BERT对于微调和基于特征的方法都是有效的。

表7:CoNLL-2003命名实体识别结果。使用Dev集选择超参数。使用这些超参数在5次随机重启过程中平均报告的开发和测试分数。
BERT 文章翻译_第10张图片

Conclusion

最近,由于使用语言模型进行迁移学习而取得的实验提升表明,丰富的、无监督的预训练是许多语言理解系统不可或缺的组成部分。特别是,这些结果使得即使是低资源(少量标签的数据集)的任务也能从非常深的单向结构模型中受益。我们的主要贡献是将这些发现进一步推广到深层的双向结构,使同样的预训练模型能够成功地广泛地处理 NLP 任务。虽然这些实证结果很有说服力,在某些情况下甚至超过了人类的表现,但未来重要的工作是研究 BERT 可能捕捉到的或不捕捉到的语言现象。

你可能感兴趣的:(文献阅读,bert,自然语言处理,深度学习)