BERT:Pre-training of Deep Bidirectional Transformers for Language Understanding 论文翻译

BERT:Pre-training of Deep Bidirectional Transformers for Language Understanding 论文翻译

由于课题中要求运用到bert,所以特地拜读了这篇论文,现将大部分内容简单翻译如下,仅供回顾学习之用,不通之处还请大家之处 不胜感激
论文原文地址:https://arxiv.org/pdf/1810.04805.pdf
摘要:介绍一个新的语言表示模型BERT 表示转换器的双向编码器表示,不同于最近的语言表示模型,Bert是用来预训练深度双向表示从无序文本中通过在所有层中联合调整左右内容,通过添加一个额外的输出层就可以对预先训练的Bert模型进行调整

introduction:本文的贡献如下:我们展示了双向预训练语言表示的重要性,不同于radford等人使用了单项语言预处理模型,Bert使用了遮盖语言模型来进行预训练深度双向表示。这包括了句子级别的任务比如自然语言推理和注释,目标是预测句子之间的关系通过分析他们的整体,同样词汇级别的任务类似于命名实体识别和问题回答,其中需要模型生成细粒度的输出在词汇级别中。在应用预处理自然语言表示来实现下游任务中有两条策略:基于特征和微调。基于特征的方法,类似于ELMo,使用特定任务的结构,其中包括作为额外特征的预训练表示。微调的方法,类似于生成式预训练转换器(OpenAIGPT),介绍了最小的任务特定参数,在下游任务中通过简单对所有预训练参数进行微调的基础上进行训练。这两种方法在预训练阶段共享相同的目标函数,其中他们使用了单向语言模型来学习一般的语言表示。
我们认为目前的技术限制了预训练表示的能力,尤其是对于微调的方法。主要限制是标准语言模型是单向的,并且这个限制了在预训练期间的结构的选择,比如说,在OpenAIGPT中,作者使用了从坐到右的结构,其中每个词汇仅仅能关注到前面的词汇在转换器的自我注意层中。这些限制对于句子级别的任务是次优的,当应用基于微调的方法来解决词汇级别的任务类似于问题回答的时候是非常不好的,问题回答时从两个方向合并上下文是很重要的。
在这篇文章中,我们提升了基于微调的方法通过提出Bert:双向编码表示从转换器中,Bert通过使用一个mask语言模型,缓解了前面提到的单向的限制,收到Cloze task的启发。mask语言模型随机从输入中mask一些词汇,目标是预测被mask的原始词汇的id。不同于从左到右的语言模型的预训练,MLM目标是使表示能够融合左右的上下文,这将导致我们预训练一个深度双向转换器。除了mask语言模型,我们也使用了下一句预测任务来联合预训练文本表示。本文贡献如下:

  • 我们证明了双向预训练语言表示的重要性。不同于Radford使用了单向预训练语言模型,Bert使用了mask语言模型来使预训练深度双向表示。这也与Peters等人使用了一个从左到右的lms独立训练的模型形成对比。

  • 我们展示了预训练表示减少了很多对于重工程的任务特殊结构。Bert是第一个基于微调的表示模型实现了最先进的表现在大量的句子级别和词汇级别的任务中,性能优于许多针对任务特定结构。

  • Bert在11个任务中实现了高水平

2 相关工作
一般语言表示在预训练之前就有很长的历史了,我们在本节中简要回顾了最广泛使用的方法。
2.1 无监督基于特征的方法
数十年以来,找到广泛适合词汇表示的方法一直是一个活跃的研究领域,包括非神经和神经的方法。预训练词汇向量是现代nlp系统中一个完整的部分了,提供了重要的改进从嵌入式从零开始。为了预训练词汇嵌入式向量,使用从左到右语言模型目标,以及在从左到右的上下文中区别从不正确的词汇中区别出正确的。
这些方法已经适用于粗糙的粒度,比如句子嵌入或者段落嵌入。为了训练句子表示, 之前的工作已经使用目标来对候选的下一个句子进行排序,根据前一个句子的表示从左到右生成下一个句子的单词,或者对自动编码器派生的目标进行去噪。
ELMo和它的前身将传统词汇的嵌入扩展到一个不同的维度,他们从一个从左到右和从右到左的语言模型中提取出上下午相关的特征。每个词汇的上下文表示是从左到右和从右到左的表示的连接。当上下文词汇嵌入与现有任务特定结构集成时,ELMo提升了水平在几个主流NLP基准包括问题回答,情感分析,命名实体识别, 提出了通过使用LSTMs从左右上下文预测单个单词的任务来学习上下文表示。和ELMo相似,他们的模型是基于特征的并且不是深度双向的,fedus证明了完形任务可以被用来提高文本生成模型的鲁棒性。
2.2 无监督的微调方法
和基于特征的方法一样,这个方向的首要工作仅仅是预训练词汇嵌入参数从无标记的文本中。
最近,产生上下文词汇表示的句子或者文档编码器已经从未标记的文本中进行了预训练,并对有监督的下游任务进行了微调。这些方法的优点是几乎不需要从头学习参数。至少部分由于这个优点, OpenAI GPT在GLUE基准测试的许多句子级别的任务上取得了以前最先进的结果。从左到右的语言模型和自动编码器目标已经被用于预训练这些模型。
2.3 从有监督数据中实现转换学习
目前已经有工作表明有效的伴随着庞大数据集的有监督任务的有效转移,类似于自然语言推理和机器翻译。 在NLP之外,计算机视觉研究也证明了从大型预训练模型转移学习的重要性,其中一个有效的方法是对ImageNet上的预训练模型进行微调。
3 Bert
在这一章节, 我们介绍了Bert及其实现的细节。在我们的框架中一共有两步预训练和微调。在预训练过程中,模型是在对不同的预训练任务中无标签的数据上进行训练。对于微调,Bert模型是第一个初始化预训练参数的,并且所有的的参数都是通过下游任务的无标签数据进行微调的。每个下游任务有分开的微调模型,即使他们是使用相同的预训练参数初始化的,图1中的问题回答示例作为本节的运行示例。
在这里插入图片描述

图1:对Bert进行整体的预训练和微调,除了输出层以外,预训练和微调使用的是相同的结构,相同的预训练模型参数被用来初始化不同下游任务的模型。在微调阶段,所有的参数都被微调。CLS是一个添加在每个输入示例前面的特殊符号,SEP是一个特殊的分隔符号(例如 分割问题,答案 )

Bert的一个显著特征是他的跨任务的统一架构。最终下游任务和预训练的结构的差别是最小的。
模型结构:Bert的模型结构是一个多层双向transformer编码器,基于vaswani等人描述的原始实现,并在tensor2tensor库中发布。因为transformer的使用已经很普遍并且我们的实现几乎和以前一样,所以我们将会省略掉详尽的关于模型结构的详细描述并且建议读者去阅读Vaswani等人, 以及诸如“带注释的变压器”等优秀的指南。
在工作中,我们将层的数目表示为L,隐藏层的大小H,自我注意力的头为A,我们首先报告两种模型的大小的最终结果: BERTBASE (L=12, H=768, A=12, Total Parameters=110M) and BERTLARGE (L=24, H=1024, A=16, Total Parameters=340M).
为了进行比较,Bertbase选择了和OpenAIGPT相同的模型大小,重要的是,然而,Bert的transformer使用了双向自我注意力机制,然而GPT transformer使用了受限制的自我注意力机制,其中每个词汇只能注意左边的上下文。
输入/输出表示 为了使Bert能够处理一系列的下游任务,我们的输入表示能够清楚地表示包括一个单独的句子和一对句子(例如<问题,答案>)在一个词汇序列中。贯穿这项工作,一个句子可以可以是一个任意的连续的文本,而不是一个实际的语言意义上的句子。一个顺序是指输入Bert的词汇序列,它可能是一个单的的句子或者是两个打包一起的句子。
我们使用wordpiece嵌入用30000个词汇字典。每一个序列的第一个词汇通常是特殊分类词汇CLS。 与此标记对应的最终隐藏状态用作分类任务的聚合序列表示。句子对被打包进一个单独的序列。我们用两天的时间区分了这些句子。首先,我们用一个特殊的词汇将他们分别开SEP,之后,我们在每个标记中添加一个学习嵌入来表明它属于A还是B,如图1所示,我们用E表述输入嵌入。
对于一个给定词汇, 它的输入表示是通过对相应的标记、段和位置嵌入求和来构造的。这个结构的可视化可以从图2看出。
图2:Bert输入表示。输入嵌入是词汇嵌入,段落嵌入和位置嵌入的和
图2:Bert输入表示。输入嵌入是词汇嵌入,段落嵌入和位置嵌入的和
3.1 预训练Bert、
不同于Peter和radford,我们没有使用传统的从左到右或者从右到左的语言模型来预训练Bert,取而代之的是,我们预训练Bert使用两个无监督任务,在这一节进行描述,
任务1:Masked LM 从直观上讲, 是有理由相信深度双向模型是完全比其他从左到右模型或者简单的将从左到右和从右到左模型的结合的模型更有潜力的。不幸的是,标准的有条件的语言模型仅仅能被从左到右或者从右到左进行训练,因为双向条件可以让每个词汇间接的看见自己,并且该模型可以在多层次的语境中对目标词进行简单预测。
为了训练一个深度双向表示,我们简单的mask了一些输入序列中的词汇,之后来预测这些被mask的词汇。我们将这个程序叫做MLM,即使他经常被叫做完型任务。 在这种情况下,与掩码标记相对应的最终隐藏向量在一个标准LM中输入一个输出softmax。在我们的所有实验中,我们随机mask15%的wordpiece词汇在每个序列中。与自动编码器去噪形成对比,我们仅仅预测被mask的词汇而不是重构整个输入。
虽然这让我们获得了一个双向预训练模型,一个缺点是我们在预训练和微调之间造成了不匹配,因为mask词汇在微调阶段没有出现,为了缓解这一现象,我们并不经常将被mask词汇换成mask标记。训练数据生成器随机选取15%的标记位置进行预测。如果第i个标记被选择到,我们将第i个标记 80%个概率换成mask,10%随机标记,10%不变,然后Ti,被用来预测具有交叉熵损失的原始标记,我们将在C2中比较变化。
任务2:下一句预测 NSP
很多重要的下游任务类似于问答和自然语言推理都是基于对两个句子的理解,而不是直接通过语言模型来抓取。为了训练一个模型能够理解句子之间的关系,我们预训练了昱哥二值化的下一句预测任务能够从任何单语语料库中生成。特殊的,当选择句子A和B来作为每个预训练例子,50%的概率B是真正的A的下一句,50的概率是一个随机的句子从语料库中。正如我们在图1中所展示的,C是用来进行下一句预测。尽管这很简单,但是我们在5.1证明了通过这项任务对QA和NLI都是非常有益的。
NSP任务与jernite和logeswaran等人使用的表示学习的目标非常相近。然而,在先前的任务中,只有句子嵌入被迁移到下游任务,其中Bert所有的参数转化为初始化最终任务模型参数。
预训练数据:预训练程序很大程度上遵循了现有的预训练语言模型的资料。对于预训练语料库我们使用BooksCorpus和英文的维基百科。对于维基百科我们提取了文本信息并且忽视列表,表格和抬头。使用文档级的语料库而不是shuffle句子级别的语料库类似于billion word benchmark是很重要的,目的是提取长的连续的序列。
3.2 Bert微调
微调是很简单的因为自我注意力机制在transformer中允许Bert来进行许多下游任务建模,无论他们引入的是单个的文本或者文本对通过交换合适的输入或者输出。对于涉及文本对的应用,一个常见的模式是在应用双向交叉注意力之前进行文本对的独立编码,类似于parikh。 BERT使用了自我注意机制来统一这两个阶段,因为自我注意编码一个连接的文本对有效地包含了两个句子之间的双向交叉注意。
对于每一个任务来说,我们只需将特定任务的输入和输出插入到Bert并且将所有的参数端到端进行微调。在输入中,预训练的句子A和句子B类似于(1)句子对的释义,(2)隐含的假设提前对,(3)问题回答中的问题段落对(4)文本分类和序列标注中的一种退化文本对。在输出中,词汇表示被输入到一个输出层,用于token级别的任务,类似于序列标记或者问题回答, CLS表示的被输入到一个输出层进行分类,类似于情感分析或者需求。
相比于预训练,微调是相当的简单,本文所有的结果都可以在一个单独的云TPU最多一小时内复制,过着在GPU上几小时,从完全相同的预训练模型开始。我们在第四节的相应小节描述特定于任务的细节。
4 实验
在这一节中,我们描述了Bert微调的结果在11项NLP任务中。
4.1 GLUE
普通语言理解评估基准是一个多种自然语言理解任务中的一个选择。细节描述关于GLUE的数据集将在B.1中包括。
为了在GLUE上进行调整,我们在第三节对输入的句子进行描述,并且使用最终隐藏向量C∈Rh对于第一个输入标记CLS作为最终聚合。在微调过程中引入的唯一的新参数是分类层的权重W∈ R K×H,其中K是标签的数目。我们计算了一个标准分类损失用C和W。
我们将batch size设置为32并且微调次数为3在整个GLUE任务的数据中。对于每个任务,我们选择最好的微调学习比率在开发集中。另外,对于BertLARGE我们发现微调是不变的在小的数据集上,所以我们运行了几次随机重启并且选择最好的模型在开发集中。在随机重启中,我们使用相同的预训练检查点但是执行不同的微调数据变化和分类器层初始化。
在这里插入图片描述
表1:GLUE测试结果,由评估服务器得出分数。每项任务的下面表示训练例子的数目。平均数值和GLUE官方成绩稍稍有所不同,因为我们排除掉了一些有疑问的WNLI数据集。Bert和OpenAIGPT都是单个的模型,单个的任务。F1的分数有QQP和MRPC报告,STS-B报告的是线性系数,其他任务的准确得分也会被报告。我们排除了使用Bert作为其其中一部分的项。
结果已经在图1中表示出来。包括Bertbase和Bertlarge在所有任务中都大大超过系统水平,比先前的水平都有4.5%到7.0%的提升。值得注意的是,Bertbase和OpenAIGPT在模型结构方面,除了masking注意力之外几乎是完全相同的。对于最大和最广泛的GLUE任务:MNLI,Bert获得了几乎4.6%的准确率提升。在GLUE官方排行榜中,Bertlarge获得了80.5的分数,而自本文写作截至OpenAIGPT只获得了72.8分。
我们发现在所有的任务中,Bertlarger明显的要比Bertbase表现好。尤其是在训练数据非常小的时候。关于模型大小的影响我们将在5.2节进行更彻底的研究。
4.2 SQuAD v1.1
斯坦福问答数据集SQuAD是一个100k的问答对众包的合计。给定一个问题和一段包含问题的维基百科中的段落,这项任务目的是预测答案文本在这段落中的范围。
正如图1所示,在问答任务中,我们表述输入问题和段落作为一个单独打包的序列,其中问题使用A嵌入,段落使用B嵌入。我们仅仅介绍一个起始向量S∈RH,一个E∈RH作为终止向量在微调过程中。
单词i作为答案范围开始的概率被计算为Ti和S的点击,紧接着是段落中所有单词的softmax, 。相同的公式可以用于回答范围的结尾。从位置i到位置j的分数定义为 ,使用 作为预测最大的评分跨度。训练的目标是正确的开始和结束的位置之和。我们微调3次,学习率为5e-5,batch size为32。
表格2展示了top排行榜的条目以及顶级公开的系统的结果。来自SQuAD的顶级排行榜还没有更新有价值的公开系统细节,并且被允许使用所有公开的数据当训练他们的系统的时候。我们因此使用了数据进行了适当的扩充通过首先对TriviaQA进行微调,在SQuAD进行微调之前。
我们表现最好的系统超过排行榜最好成绩F1 1.5作为一个集成系统,作为单个系统,超过F1 1.3。事实上,我们单个的bert模型在F1的得分方面要超过顶级的集成系统。没有TriviaQA微调数据,我们仅仅少0.1-0.4F1,仍然比所有的集成系统表现要大幅度的好。
在这里插入图片描述
表2:SQuAD 1.1的结果。
4.3 SQuAD v2.0
SQuADA 2.0任务扩展了SQuAD1.1的问题,考虑到可能没有更短的答案存在于提供的段落中,使问题变得更加实际。
我们使用了一个简单地方法来扩展了对于这个任务的SQuAD 1.1的bert模型。我们将没有答案的问题视为在开始和结束在CLS标记的范围之内有答案。在开始和结束位置可能的区域跨度就扩展到了所有包含CLS标记的范围内。对于预测,我们将没有答案的范围的得分 与最佳非空范围 进行比较,我们预测一个非空答案当 ,其中阈值τ使从开发集中选中的F1最大值。我们没有使用 TriviaQA对于这个模型。我们微调采用2epoch,学习率为5e-5,batch size为48。
结果与先前的排行榜列表和顶级公开的项目相比在表3中展示,刨除掉使用bert作为他们其中一部分的系统,我们观察到5.1F1的提升相比于目前最好的系统。
在这里插入图片描述
表格3:SQuAD 2.0的结果.
4.4 SWAG
SWAG数据集包括113k句子对完成示例,用于评估基于常识的推理。给定一个句子,这个任务来选择最合理的接下来的句子从这四个选项中。
当在SWAG数据集中进行微调的时候,我们构建了四个输入序列,每个包含给定句子的连接句子A和一个可能的延续句子B。唯一引入的特定于任务的参数是一个向量,它于CLS标记表示形式C的点积表示每个选择的分数,该分数使用softmax层进行标准化。
我们对这个模型进行微调epoch为3,学习率2e-5,batchsize为16。结果在表4中进行展示。
在这里插入图片描述
5 ablation研究
在这一节中,我们进行了ablation研究通过bert的许多方面,目的是更好的理解他们的相对重要性。其他的ablation研究可以在附录C中找到。
5.1 预训练任务的影响
我们阐述了bert的深度双向性的重要性通过评估两个预训练目标使用完全相同的预训练数据,微调计划和超参数。
没有NSP:一个使用MLM进行训练的双向模型但是没有NSP任务。
LTR或者NSP:一个只有左侧上下文的模型使用一个从左到右LM进行训练,而不是MLM。只有左边限制的同样在微调中应用, 因为取消它会导致预训练或者微调的不匹配从而降低下游任务的性能。另外,模型是没有NSP任务进行预训练的,是可以直接和OpenAIGPT进行对比,但是使用了我们的更大的数据集,我们的输入表示和我们的微调方案。
我们首先研究NSP任务带来的影响。在表格5中,我们展示了NSP移除严重影响在QNLI,MNLI和SQuAD 1.1任务重的性能。接下来,我们估计了训练双向表示的影响通过将NO NSP和LTR&NO NSP进行对比。LTR模型在所有任务中表现得都比MLM要差,在MRPC和SQuAD中都有较大的缺陷。
对于SQuAD,很明显,LTR模型在词汇预测中表现非常差,因为词汇级别隐藏状态下没有右侧上下文,为了加强LTR系统的可信度常识,我们增加了一个随机初始化的双向长短时记忆网络在顶部。这大大提高了SQuAD的成绩,但是结果还是比那些预训练双向模型差很多。双向长短时记忆网络影响了在GLUE任务上的性能。
我们承认训练分离的LTR和RTL模型并且将两个模型串联起来表示每个词汇是可能的,例如ELMo所做的。然而,a这比一个单独双向模型花费多两倍;b这对于QA等任务来说不太直观,因为RTL模型不能对问题的当设置条件;c严格来说,它的功能没有深度双向模型强大,因为它可以在每一层使用左右上下文。
5.2 模型规模的影响
在这一节中,我们研究了模型规模对微调任务准确性的影响。我们训练了很多bert模型有许多不同数量层数,隐藏单元,和注意力的头但是使用相同的超参数和训练过程如前面所描述。
选定的GLUE的任务的结果在表6中展示。在这张表格中,我们报告了开发集的平均准确率从5个随机重启微调中。我们可以看到更大的模型导致了更加精确的准确度的提高在四个数据集中,甚至MRPC仅仅有3600被标记的训练日志,和预训练任务是大不相同的。也许令人惊讶的是,我们能够在模型的基础上实现如此显著的改进,这些模型的基础上实现如此显著的改进,这些模型对于现有的文献来说已经相当大了。举个例子,最大的transformer在vaswani的研究中是(L=6,H=1024,A=16)用100M参数对于编码,最大的transformer我们已经发现的在数据中(L=64,H=512,A=2)用235M的参数。形成对比的是,bertbase包括110M参数并且bertlarge包括340M参数。
人们早就知道,增加模型大小将导致大规模任务的持续改进,如机器翻译和语言建模,这是由表6说表示的训练数据和LM复杂性所证明的。然而,我们相信这将是首次令人信服的工作证明放缩到极端的模型大小同样会导致大的提高在非常小的放缩的任务上,只要对模型进行了充分的预训练。Peters等人(2018b)对增加预训练的bi-LM大小从2层到4层的下游任务影响提出了混合的结果,Melamud等人(2016)在文中提到增加隐藏维度大小从200到600有所帮助,但是增加到1000并没有带来提高。这两个先前的工作都是用了基于特征的方法,我们假设,当模型直接对下游任务进行微调并且仅仅使用一个非常小的随机初始化的附加参数时,特定于任务的模型可以从更大的、更有表现力的预先训练的表示中获益,即使下游任务数据非常小。
5.3 基于特征的Bert方法
迄今为止,所有的bert结果使用了微调的方法,其中,简单地分类层被添加到预训练模型,所有参数在一个下游任务中被联合微调。然而,基于特征的方法,从预训练模型中提取的混合的特征,有一定的优势。首先,不是所有的任务都能由一个简单的transformer编码结构所表示,因此要求一个任务特定的模型结构来添加,其次,预训练一次数据的昂贵,然后在此表示的基础上使用更便宜的模型运行多次试验,这在计算上有很大的好处。
在这一节中,通过将bert应用于NER,我们将比较这两种方法。在bert的输入中,我们使用一个保留大小写的wordpiece模型,我们包括了有数据提供的最大文档文本。接下来的标准测试,我们计算了这个作为一个标签任务但是在输出没有使用CRF层。我们使用第一个子标记的表示作为在NER标签集上标记级分类器的输入。
为了简化微调方法,我们应用了基于特征的方法通过从一个或者更多的层提取激活,而不微调bert的任何参数。这些上下文嵌入被用作在分类层之前随机从初始化的两层768维Bi-LSTM的输入。
结果在表7中进行了展示,bertlarge在目前方法的水平中表现的很有竞争力。性能最佳的方法是将来自预训练transformer的前四个隐藏层的token表示连接起来,这效果仅仅比完全对模型进行微调差0.1 F1.这阐述了bert对微调和基于特征的方法都是有效的
6 结论
最近由语言模型转移学习带来的经验改进表明,丰富的、无监督的前训练是许多语言理解系统的组成部分。特别是,这些结果使得即使是低资源的任务也可以从深层的单向架构中获益。我们的主要贡献是进一步将这些发现推广到深层的双向架构,允许相同的预训练模型成功地处理广泛的NLP任务。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值