Harukaze

 

【论文阅读】BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding[arXiv2019]

论文地址:https://arxiv.org/abs/1810.04805

代码地址(TensorFlow):https://github.com/google-research/bert

Transformer详解:http://nlp.seas.harvard.edu/2018/04/03/attention.html

模型学习地址:https://huggingface.co/transformers/pretrained_models.html

Abstract

我们介绍了一种新的语言表示模型,称为BERT(Bidirectional Encoder Representations from Transformers),它代表来自转换器的双向编码器表示。.BERT的设计目的是通过在所有层的左右上下文上联合调节,从未标记文本中预训练深层双向表示。因此,只需增加一个输出层,就可以对预先训练好的BERT模型进行微调,从而为广泛的任务(如问答和语言推理)创建最先进的模型,而无需对特定任务的体系结构进行大量修改。

BERT is conceptually simple and empirically powerful. It obtains new state-of-the-art results on eleven natural language processing tasks, including pushing the GLUE score to 80.5% (7.7% point absolute improvement), MultiNLI accuracy to 86.7% (4.6% absolute improvement), SQuAD v1.1 question answering Test F1 to 93.2 (1.5 point absolute improvement) and SQuAD v2.0 Test F1 to 83.1 (5.1 point absolute improvement).

1 Introduction

将预先训练好的语言表示应用于下游任务有两种现有策略:基于特征和微调feature-based and fine-tuning。基于特征的方法,如ELMo(Peters et al,2018a),使用特定于任务的体系结构,包括预先训练的表示作为附加特征。微调方法,如生成Pre-trained Transformer(OpenAI GPT)(Radford et al,2018),引入了最小的任务特定参数,并通过简单微调所有预训练参数对下游任务进行训练。这两种方法在训练前使用相同的目标函数,即使用单向语言模型来学习一般的语言表征。

我们认为当前的技术限制了预先训练的表示的能力,特别是对于微调方法。主要的限制是标准语言模型是单向的,这限制了在预训练期间可以使用的体系结构的选择。例如,在OpenAI GPT,作者使用了left-to-right体系结构,其中每个令牌只能关注变压器自我关注层中的先前令牌(V aswani et al.,2017)where every token can only attend to previous tokens in the self-attention layers oftheTransformer(V aswani et al.,2017).这种限制对于句子级任务来说是次优的,并且在将基于微调的方法应用于标记级token-level任务(如问答)时可能非常有害,因为在这些任务中,从两个方向合并上下文是至关重要的。

在本文中,我们通过提出BERT:Transformer的双向编码器表示,改进了基于微调的方法。受完形填空任务(Taylor,1953)的启发,BERT通过使用“蒙面语言模型masked language model”(MLM)预训练目标来缓解前面提到的单向性约束。掩蔽语言模型从输入中随机掩蔽一些标记,其目的是仅根据上下文预测掩蔽词的原始词汇id。与左到右语言模型预训练不同,the MLM objective 使表达能够融合左右语境,这使我们能够预训练deep bidirectional Transformer。除了the masked language model之外,我们还使用“下一句预测next sentence prediction”任务来联合预训练文本对表示。我们的论文贡献如下:

•我们证明了双向预训练对语言表达的重要性。与Radford et al.(2018)使用单向语言模型进行预训练不同,BERT使用蒙面语言模型实现预训练的深度双向表示。这也与Peters et al.(2018a)形成对比,Peters et al.(2018a)使用独立训练的左至右和右至左LMs的浅层串联。which uses a shallow浅的 concatenation of independently trained left-to-right and right-to-left LMs.

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

•BERT advances the state of the art for eleven NLP tasks.

2 Related Work

Feature-based 与 Fine-turning: https://www.jianshu.com/p/689e922503b7

2.1 Unsupervised Feature-based Approaches

ELMo及其前身(Peters et al.,2017,2018a)从不同的维度概括了传统的单词嵌入研究。它们从一个从左到右和从右到左的语言模型中提取上下文相关的特征。每个标记的上下文表示是从左到右和从右到左表示的串联concatenation。当将上下文单词嵌入与现有任务特定的体系结构相结合时,ELMo提高了几个主要NLP基准(Peters等人,2018a)的技术水平,包括问答(Rajpurkar等人,2016年)、情绪分析(Socher等人,2013年)和命名实体识别(Tjong Kim Sang和De Meulder,2003年)。Melamud等人(2016年)提出通过一项任务学习上下文表征,即使用LSTM从左右上下文预测单个单词。与ELMo类似,他们的模型是基于特征的,而不是深度双向的。Fedus等人(2018年)表明完形填空任务可用于提高文本生成模型的稳健性。

2.2 Unsupervised Fine-tuning Approaches

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

2.3 Transfer Learning from Supervised Data 基于监督数据的迁移学习

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

3 BERT

本节将介绍BERT及其详细实现。在我们的框架中有两个步骤:预训练和微调。$pre-training$ and $fine-tuning$

在预训练期间,模型在不同的预训练任务中基于未标记的数据进行训练。

对于微调,首先使用预先训练的参数初始化BERT模型,然后使用来自下游任务的标记数据对所有参数进行微调。

每个下游任务都有单独的微调模型,即使它们是用相同的预训练参数初始化的。图1中的问答示例将作为本节的运行示例。

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

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

Model Architecture

BERT的模型架构是一种多层双向变压器编码器,基于Vaswani et al(2017)中描述的原始实现,并在TensorTensor库中发布。由于Transformer的使用已变得普遍,我们的实现与原始实现几乎相同,我们将省略对模型架构的详尽背景描述,并让读者参考V aswani et al(2017)以及优秀的指南,如“带注释的The Annotated Transformer”。

In this work, we denote the number of layers (i.e., Transformer blocks) as $L$, the hidden size as $H$, and the number of self-attention heads as $A$. We primarily report results on two model sizes: $BERT_{BASE}$($L=12$, $H=768$, $A=12$, Total $Parameters=110M$) and $BERT_{LARGE}$($L=24$, $H=1024$, $A=16$, Total $Parameters=340M$).

[In all cases we set the feed-forward/filter size to be $4H$, i.e., 3072 for the $H = 768$ and 4096 for the $H = 1024$.]

为了便于比较,$BERT_{BASE}$选择与OpenAI GPT具有相同的模型大小。然而,关键的是,BERT Transformer使用双向自我注意,而GPT Transformer 使用约束自我注意constrained self-attention,其中每个标记只能关注其左侧的上下文。

[We note that in the literature the bidirectional Transformer is often referred to as a “Transformer encoder” while the left-context-only version is referred to as a “Transformer decoder” since it can be used for text generation.]

Input/Output Representations

为了使BERT能够处理各种下游任务,我们的输入表示能够在一个标记序列token sequence中明确地表示一个句子和一对句子(e.g., <Question, Answer>)。在我们的工作中,“sentence”可以是连续文本的任意跨度,而不是实际的语言句子。“sequence序列”是指输入到BERT的标记序列,可以是一个句子或两个句子组合在一起。

我们使用带有30000个标记词汇表的WordPiece embedding(Wu et al.,2016)。每个序列的第一个标记总是一个特殊的分类标记([CLS])。与该标记相对应的最终隐藏状态用作分类任务的聚合序列表示aggregate sequence representation。句子对被压缩成一个单一的序列。我们用两种方式区分句子。首先,我们用一个特殊的标记([SEP])将它们分开。Second, we add a learned embedding to every token indicating whether it belongs to sentence A or sentence B. As shown in Figure 1, we denote input embedding as $E$, the final hidden vector of the special [CLS] token as $C \in R^H$, and the final hidden vector for the $i^{th}$ input token as $T_i\in R^H$.

For a given token, its input representation is constructed by summing求和 the corresponding token, segment, and position embeddings. A visualization of this construction can be seen in Figure 2.

For a given token, its input representation is constructed by summing the corresponding token, segment, and position embeddings. A visualization of this construction can be seen in Figure 2.

3.1 Pre-training BERT

与Peters et al(2018a)和Radford et al(2018)不同,我们不使用传统的从左到右或从右到左的语言模型来预训练BERT。在本节中,我们使用了两个无监督的预训练任务。图1的左半部分显示了该步骤。

Task #1: Masked LM

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

为了训练深度双向表示,我们只需随机屏蔽某些百分比的输入令牌,然后预测这些屏蔽令牌。尽管我们在文献中称之为Cloze任务,但它通常被称为“Masked LM”任务。在这种情况下,the final hidden vectors corresponding to the mask tokens are fed into an output softmax over the vocabulary, as in a standard LM.在我们所有的实验中,我们随机屏蔽了每个序列中15%的词条标记。与去噪自动编码器(Vincent et al.,2008)不同,我们只预测屏蔽词,而不是重建整个输入。[完形填空]

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

--------------------------------

插入C.2 Ablation for Different Masking Procedures

在第3.1节中,我们提到,当使用蒙蔽语言模型(MLM)目标进行预训练时,伯特使用混合策略来蒙蔽目标标记。以下是评估不同掩蔽策略效果的消融研究。

注意,掩蔽策略的目的是减少预训练和微调之间的不匹配,因为在微调阶段,[MASK]符号从未出现。我们报告了MNLI和NER的Dev结果。对于NER,我们报告了微调和基于特征fine-tuning and feature-based的方法,正如我们所预期的,基于特征的方法的不匹配将被放大,因为模型将没有机会调整表示。

结果如表8所示。在表中,MASK表示我们用传销的[MASK]符号替换目标令牌;SAME这意味着我们保持目标令牌不变;RND意味着我们用另一个随机令牌替换目标令牌。

对于基于特征的方法,我们将BERT的最后4层连接起来作为特征,这在第5.3节中被证明是最好的方法。

从表中可以看出,Fine-turning对不同的掩蔽策略具有惊人的鲁棒性。然而,正如预期的那样,在将基于特征的方法应用于NER时,仅使用掩码策略是有问题的。有趣的是,仅使用RND策略的性能也比我们的策略差得多。

--------------------------------

Task #2: Next Sentence Prediction (NSP)

许多重要的下游任务,如问答(QA)和自然语言推理(NLI)都是基于理解两个句子之间的关系,而语言建模并不能直接捕获这些关系。为了训练一个理解句子关系的模型,我们预先训练了一个二值化的下一个句子预测任务binarized next sentence prediction task,该任务可以从任何单语语料库生成。具体来说,当为每个预训练示例选择句子A和B时,50%的概率B是A后面的实际下一个句子(标记为$IsNext$),50%的时间B是语料库中的随机句子(标记为$NotNext$)。如图1所示,$C$用于下一句预测(NSP)[最终模型在NSP上达到97%-98%的精度]。尽管它很简单,但我们在第5.1节中演示了针对该任务的预训练对QA和NLI都非常有益。[向量$C$在没有微调的情况下不是有意义的句子表示,因为它是用NSP训练的]

NSP任务与Jernite et al.(2017)和Logeswaran and Lee(2018)中使用的代表性学习目标密切相关。然而,在以前的工作中,只有句子嵌入被转移到下游任务,然而BERT转移所有参数来初始化终端任务模型参数。

Pre-training data

预训练过程主要遵循现有的文献语言模型预训练。对于预训练语料库,我们使用BooksCorpus(8亿字)(Zhu等人,2015年)和英语维基百科(2.5亿字)。对于维基百科,我们只提取文本段落,而忽略列表、表格和标题。为了提取长的连续序列,使用文档级语料库而不是像十亿字基准(Chelba et al.,2013)这样的混合句子级语料库至关重要。

3.2 Fine-tuning BERT

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

对于每个任务,我们只需将特定于任务的输入和输出插入到BERT中,并端到端微调所有参数。在输入时,预训练的句子A和句子B类似于(1)释义中的句子对 sentence pairs in paraphrasing,(2)蕴涵中的假设前提对 hypothesis-premise pairs in entailment,(3)问答中的问句对 question-passage pairs in question answering,(4)退化文本-∅ 在文本分类或序列标记中配对 a degenerate text-∅ pair in text classification or sequence tagging。在输出时,token representations 被送入令牌级任务的输出层,如序列标记或问答,而[CLS]表示被送入分类的输出层,如蕴涵entailment或情感分析。

与预训练相比,微调相对便宜。本文中的所有结果最多可以在一个云TPU上运行1小时,或者在一个GPU上运行几个小时,从完全相同的预先训练模型开始。我们在第4节的相应小节中描述了特定于任务的细节。更多细节可以在附录A.5中找到。

-----------------------------

A.5 Illustrations of Fine-tuning on Different Tasks

图4显示了对不同任务进行微调的BERT。我们的任务特定模型是通过将BERT与一个额外的输出层合并而成的,因此需要从头学习最少数量的参数。在这些任务中,(a)和(b)是序列级任务,而(c)和(d)是令牌级任务。在图中,$E$表示输入嵌入,$T_i$表示令牌i的上下文表示,[CLS]是分类输出的特殊符号,[SEP]是分离非连续令牌序列的特殊符号。

-----------------------------

4 Experiments

4.1 GLUE

通用语言理解评估(GLUE)基准The General Language Understanding Evaluation (GLUE) benchmark(Wang et al,2018a)是各种自然语言理解任务的集合。GLUE数据集的详细说明见附录B.1。

------------------------

B.1 Detailed Descriptions for the GLUE Benchmark Experiments.

榜单:https://gluebenchmark.com/ leaderboard

本文实验结果:https://blog. openai.com/language-unsupervised

  • MNLI:多类型自然语言推理是一项大规模的众包蕴涵分类任务(Williams et al,2018)。给定一对句子,目标是预测第二句与第一句相比是蕴涵,矛盾还是中立。
  • QQP:Quora问题对是一个二元分类任务,其目的是确定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)。
  • WNLI:Winograd NLI是一个源自(Levesque等,2011)的小型自然语言推断数据集。 GLUE网页注意到这个数据集的构造存在问题,提交给GLUE的每一个经过训练的系统的表现都比预估多数类的65.1基线精度差。因此,出于对OpenAI GPT的公平考虑,我们排除了这个集合。对于我们的GLUE提交,我们总是预测大多数类。

------------------------

To fine-tune on GLUE, we represent the input sequence (for single sentence or sentence pairs) as described in Section 3, and use the final hidden vector $C \in R^H$ corresponding to the first input token ([CLS]) as the aggregate representation. The only new parameters introduced during fine-tuning are classification layer weights $W \in R^{K×H}$, where $K$ is the number of labels. We compute a standard classification loss with $C$ and $W$, i.e., $log(softmax(CW^T))$.

 我们使用32的batch_size,并对所有GLUE任务的数据进行3个epochs的微调。对于每个任务,我们在开发集上选择最佳微调学习率(5e-5、4e-5、3e-5和2e-5)。此外,对于$BERT_{LARGE}$,我们发现在小数据集上微调有时是不稳定的,因此我们运行了几次随机重启,并在开发集上选择了最佳模型。对于随机重启,我们使用相同的预先训练的检查点pre-trained checkpoint,但执行不同的微调数据洗牌和分类器层初始化shuffling and classifier layer initialization。

 结果如表1所示。$BERT_{BASE}$和$BERT_{LARGE}$在所有任务上都以相当大的获得4.5%和7.0%的平均精度改进。注意,除了注意掩蔽attention masking之外,$BERT_{BASE}$和OpenAI GPT在模型架构方面几乎是相同的。对于最大和最广泛报道的粘合任务MNLI,BERT获得了4.6%的绝对精度提高。在官方排行榜上,$BERT_{LARGE}$得分为80.5,而OpenAI GPT在撰写本文之日的得分为72.8。

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

 4.2 SQuAD v1.1

斯坦福问答数据集(SQuAD v1.1)收集了10万个众包[crowdsourced adj. 众包的,源自大众的]问答对(Rajpurkar等人,2016)。给定一个问题和一段维基百科中包含答案的文章,任务是预测文章中的答案文本跨度。

如图1所示,在问答任务中,我们将输入问题和文章表示为一个单一的压缩序列,问题使用$A$嵌入,而文章使用$B$嵌入。我们只引入一个起始向量$S\in R^H$和一个结束向量$E\in R^H$ 在微调过程中。单词$i$作为答案范围的开始的概率是通过$T_i$ and $S$之间的点积来计算的,然后是$softmax$对段落中所有单词的点积: $P_i=\frac{e^{S·T_i}}{\sum_j e^{S· T_j}}$。类似的公式用于答案范围的末尾。将位置$i$到位置$j$的候选跨度的评分定义为$S·T_i+ E·T_j$,并以$j≥i$时的最大评分跨度作为预测。训练目标是正确的开始和结束位置的对数似然数之和。我们对3个epochs进行微调,学习率为5e-5,批量大小为32。

表2显示了顶级排行榜条目以及来自顶级发布系统的结果(Seo et al., 2017;克拉克与加德纳,2018;Peters et al., 2018a;胡等人,2018)。SQuAD排行榜上排名靠前的结果没有最新的公共系统描述,并且在训练他们的系统时允许使用任何公共数据。因此,在对SQuAD进行微调之前,我们首先在TriviaQA (Joshi et al., 2017)上进行微调,在我们的系统中使用适度的数据增强。

我们表现最好的系统在整体上比顶级排行榜系统高出$1.5F_1$,作为一个单独的系统高出$1.3F_1$。事实上,我们的单BERT模型在F1分数方面优于顶级集成系统。没有TriviaQA的微调数据,我们只损失了$0.1-0.4 F_1$,仍然比所有现有的系统有很大的优势。

4.3 SQuAD v2.0

SQuAD 2.0任务扩展了SQuAD 1.1问题定义,允许所提供的段落中不存在简短答案的可能性,从而使问题更加现实。

我们使用一种简单的方法来扩展这个任务的SQuAD v1.1 BERT模型。我们将没有答案的问题视为具有以[CLS]标记开始和结束的答案范围。开始和结束答案跨度位置的概率空间被扩展到包括[CLS]令牌的位置。为了进行预测,我们将无答案区间$s_null= S·C + E·C$的得分与最佳非零区间$\hat{s}_{i,j}= max_{j≥i}S·T_i+ E·T_j$的得分进行比较。当$\hat{s}_{i,j}>s_{null}+ τ$时,我们预测一个非零答案,在开发集上选择阈值$τ$使$F_1$最大化。我们在这个模型中没有使用TriviaQA数据。我们对两个epochs进行了微调,学习率为5e-5,批量大小为48。

结果与之前的排行榜条目和排名前的作品(Sun et al., 2018;Wang et al., 2018b)如表3所示,不包括使用BERT作为其组件之一的系统。我们观察到$F_1$比之前最好的系统有+5.1的改进。

4.4 SWAG

“对抗世代情境”The Situations With Adversarial Generations(SWAG)数据集包含113k个评价基本常识推理的句子对完成例子(Zellers et al., 2018)。给定一个句子,任务是在四个选项中选择最合理的延续。

当对SWAG数据集进行微调时,我们构建了四个输入序列,每个都包含给定句子(句子A)的连接concatenation和可能的延续(句子B)。唯一引入的任务特定参数是一个向量,它与[CLS]令牌表示$C$的点积表示每个选择的一个分数,该分数用softmax层标准化。

我们在学习率为2e-5和批量大小为16的情况下,对3个epochs的模型进行微调。结果如表4所示。$BERT_{LARGE}$比作者的基准ESIM+ELMo系统高出27.1%,OpenAI GPT高出8.3%。

5 Ablation Studies

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

----------------------------

C Additional Ablation Studies
C.1 Effect of Number of Training Steps

图5显示了从预先训练了$k$步的检查点进行微调后的MNLI Dev准确性。这让我们可以回答以下问题:

1. 问:BERT真的需要这么多的预训练(128000words/batch* 1,000,000steps)才能达到高的微调精度吗?回答:是的,$BERT_{LARGE}$在MNLI上训练1M步比50万步提高了几乎1.0%的准确率。

2. 问:MLM预训练的收敛速度是否比LTR预训练慢,因为每批只预测了15%的单词,而不是每个单词?答:MLM model确实比LTR模式收敛得稍慢。然而,就绝对准确性而言,MLM model几乎立即开始超越LTR模型。

C.2介绍过

----------------------------

5.1 Effect of Pre-training Tasks

通过使用与BERTBASE完全相同的预训练数据、微调方案和超参数来评估两个预训练目标,我们证明了BERT深度双向性的重要性:

No NSP: A bidirectional model which is trained using the “masked LM” (MLM) but without the “next sentence prediction” (NSP) task.

LTR & No NSP: A left-context-only model which is trained using a standard Left-to-Right (LTR) LM, rather than an MLM. The left-only constraint was also applied at fine-tuning, because removing it introduced a pre-train/fine-tune mismatch that degraded downstream performance. Additionally, this model was pre-trained without the NSP task. This is directly comparable to OpenAI GPT, but using our larger training dataset, our input representation, and our fine-tuning scheme.仅左约束也适用于微调,因为删除它会导致预训练/微调不匹配,从而降低下游性能。此外,该模型在没有NSP任务的情况下进行了预训练。这与OpenAI GPT有直接的可比性,但使用了我们更大的训练数据集、输入表示和微调方案。

我们首先检查NSP任务带来的影响。在表5中,我们发现移除NSP会显著影响QNLI、MNLI和SQuAD1.1的表现。接下来,我们通过比较“No NSP”和“LTR&No NSP”来评估训练双向表征的影响。LTR模式在所有任务上的表现都比MLM模式差,MRPC和SQuAD的表现大幅下降。

对于SQuAD来说,直觉上很清楚,LTR模型在令牌预测方面表现不佳,因为令牌级隐藏状态没有右侧上下文。为了真诚地加强LTR系统,我们在顶部添加了一个随机初始化的BiLSTM。这确实显著改善了团队的结果,但结果仍然比预先训练的双向模型差得多。BiLSTM会影响GLUE任务的性能。

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

5.2 Effect of Model Size

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

所选GLUE任务的结果如表6所示。在此表中,我们报告了5次随机重新启动微调的平均开发集精度。我们可以看到,更大的模型导致所有四个数据集的准确度都有了严格的提高,即使对于MRPC,它只有3600个标记的训练示例,并且与训练前任务有很大的不同。与现有文献相比,我们能够在已经相当大的模型之上实现如此显著的改进,这也许也令人惊讶。例如,Vaswani等人(2017年)研究的最大Transformer为(L=6,H=1024,A=16),编码器参数为100M,我们在文献中发现的最大变压器为(L=64,H=512,A=2),参数为235M(al Rfou等人,2018年)。相比之下,$BERT_{BASE}$包含110M参数,$BERT_LARGE$包含340M参数。

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

5.3 Feature-based Approach with BERT

到目前为止,所有的BERT结果都使用了微调方法,即在预先训练的模型中添加一个简单的分类层,并在下游任务中联合微调所有参数。然而,基于特征的方法,即从预训练模型中提取固定特征,具有一定的优势。首先,并不是所有任务都可以用Transformer编码器体系结构轻松表示,因此需要添加特定于任务的模型体系结构。其次,预先计算一次昂贵的训练数据表示形式,然后在此表示形式的基础上使用更便宜的模型运行许多实验,这有很大的计算优势。Second, there are major computational benefits to pre-compute an expensive representation of the training data once and then run many experiments with cheaper models on top of this representation.

在本节中,我们通过将BERT应用于CoNLL-2003命名实体识别(NER)任务(Tjong Kim Sang和De Meulder,2003)来比较这两种方法。在BERT的输入中,我们使用了一个保留大小写的词条模型case-preserving WordPiece model,并包含了数据提供的最大文档上下文include the maximal document context provided by the data。按照标准实践,我们将其表述为标记任务,但不在输出中使用CRF层。我们使用第一个子令牌的表示作为NER标签集上令牌级分类器的输入。We use the representation of the first sub-token as the input to the token-level classifier over the NER label set.

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

结果如表7所示。$BERT_{LARGE}$采用最先进的方法进行竞争。性能最佳的方法将来自预先训练的Transformer的前四个隐藏层的标记表示连接起来,这仅比微调整个模型落后0.3 F1。这表明BERT对于微调和基于特征的方法都是有效的。

6 Conclusion

由于语言模型的迁移学习,最近的经验改进表明,丰富的、无监督的预训练是许多语言理解系统的一个组成部分。特别是,这些结果使得即使是低资源任务也能从深层单向体系结构中获益。我们的主要贡献是将这些发现进一步推广到深入的双向体系结构中,使相同的预先训练模型能够成功地处理广泛的NLP任务。

---------------------------------

A.1 Illustration of the Pre-training Tasks

此过程的优点是,Transformer编码器不知道将要求其预测哪些字,或者哪些字已被随机字替换,因此它必须保持每个输入标记的分布式上下文表示。此外,由于随机替换只发生在所有令牌的1.5%(即15%中的10%),因此这似乎不会损害模型的语言理解能力。在第C.2节中,我们评估了本程序的影响。

与标准langauge模型训练相比,蒙面LM仅对每批中15%的令牌进行预测,这表明可能需要更多的预训练步骤才能使模型收敛。[因为难训练,任务比较复杂,训练少了模型不收敛]在第C.1节中,我们证明MLM确实比从左到右的模型(预测每一个标志)收敛得稍慢,但MLM模型的经验改进远远超过了增加的训练成本。

A.2 Pre-training Procedure

为了生成每个训练输入序列,我们从语料库中抽取两个跨度的文本,我们称之为“句子”,尽管它们通常比单个句子长很多(但也可以更短)。第一个句子接收A嵌入,第二个句子接收B嵌入。50%的概率B是A后面的实际下一个句子,50%的概率B是随机句子,这是为“下一个句子预测”任务完成的。对其进行采样,使组合长度为≤ 512个tokens。LM掩蔽是在字词标记化之后应用的,掩蔽率为15%,不考虑部分字词。

我们以256个序列的批量大小(256个sequences*512个tokens=128000个tokens/batch)进行1000000个步骤的训练,这在33亿字的语料库中大约是40个epoch。我们使用Adam,学习率为1e-4,$β_1=0.9,β_2=0.999$,L2权重衰减为0.01,前10000步的学习率预热warmup,学习率线性衰减。我们在所有层上使用0.1的dropout概率。我们使用$gelu$激活(Hendrycks和Gimpel,2016),而不是遵循OpenAI GPT的标准$relu$。训练损失是平均蒙蔽LM似然和平均下一句预测似然的总和。The training loss is the sum of the mean masked LM likelihood and the mean next sentence prediction likelihood.

Training of $BERT_{BASE}$ was performed on 4 Cloud TPUs in Pod configuration (16 TPU chips total).Training of $BERT_{LARGE}$was performed on 16 Cloud TPUs (64 TPU chips total). Each pretraining took 4 days to complete.

[https://cloudplatform.googleblog.com/2018/06/Cloud-TPU-now-offers-preemptible-pricing-and-global-availability.html]

较长的序列成本过高,因为注意力是序列长度的二次方。为了在我们的实验中加速预训练,我们对90%的步长进行了序列长度为128的预训练。然后,我们训练序列512的其余10%的步骤来学习位置嵌入。

A.3 Fine-tuning Procedure

对于微调,除了批量大小、学习速率和训练次数外,大多数模型超参数与预训练时相同。辍学概率始终保持在0.1。最佳超参数值是特定于任务的,但我们发现以下可能值的范围适用于所有任务:

•Batch size: 16, 32

•Learning rate (Adam): 5e-5, 3e-5, 2e-5

• Number of epochs: 2, 3, 4

我们还观察到,与小数据集相比,大数据集(例如,100k+标记的训练示例)对超参数选择的敏感性要低得多。微调通常非常快,因此只需对上述参数进行彻底搜索并选择在开发集上表现最佳的模型是合理的。

A.4 Comparison of BERT, ELMo ,and OpenAI GPT

在这里,我们研究了最近流行的表征学习模型的差异,包括ELMo、OpenAI GPT和BERT。模型架构之间的比较如图3所示。请注意,除了架构差异外,BERT和OpenAI GPT是微调方法,而ELMo是基于特性的方法。

图3:预训练模型架构的差异。伯特使用双向变压器。OpenAI GPT使用从左到右的转换器。ELMo使用独立训练的从左到右和从右到左LSTM的串联来生成下游任务的特征。在这三个层次中,只有BERT表示在所有的层次上同时受到左右语境的制约。除了架构上的差异,BERT和OpenAI GPT是微调方法,而ELMo是基于特征的方法。

与BERT最相似的现有预训练方法是OpenAI GPT,它在大型文本语料库上训练从左到右的变换器LM。事实上,BERT中的许多设计决策都是为了使其尽可能接近GPT,以便将这两种方法进行最低限度的比较。这项工作的核心论点是,第3.1节中介绍的双向性和两个预训练任务占了大部分经验改进,但我们确实注意到,在训练BERT和GPT的方式之间还有一些其他差异:

1.GPT is trained on the BooksCorpus (800M words); BERT is trained on the BooksCorpus (800M words) and Wikipedia (2,500M words).

2.GPT uses a sentence separator ([SEP]) and classifier token ([CLS]) which are only introduced at fine-tuning time; BERT learns [SEP], [CLS] and sentence A/B embeddings during pre-training.

3.GPT was trained for 1M steps with a batch size of 32,000 words; BERT was trained for 1M steps with a batch size of 128,000 words.

4.GPT used the same learning rate of 5e-5 for all fine-tuning experiments; BERT chooses a task-specific fine-tuning learning rate which performs the best on the development set.

为了隔离这些差异的影响,我们在第5.1节中进行了消融实验,该实验证明,大多数改进实际上来自两个训练前任务及其实现的双向性。

------------------------------

MASK这样设计的原因:

不全用 [MASK] 是因为在 finetune 到下游任务的时候(例如 POS Tagging)所有词都是已知的,如果模型只在带 [MASK] 的句子上预训练过,那么模型就只知道根据其他词的信息来预测当前词,而不会直接利用这个词本身的信息,会凭空损失一部分信息,对下游任务不利。还有 10% random token 是因为如果都用原 token,模型在预训练时可能会偷懒,不去建模单词间的依赖关系,直接照抄当前词。

 相关阅读:https://www.jianshu.com/p/4cb1f255cd7c

posted on 2021-07-29 17:00  Harukaze  阅读(534)  评论(0)    收藏  举报

导航