Advertisement

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

阅读量:

BERT模型基于深度双向Transformer的预训练技术用于语言理解 论文翻译

由于课题研究需要深入理解bert技术原理,因而特意研读了这篇论文,现就其中主要内容进行了概述介绍,仅供学习参考之用,如有误谬恳请大家指正

论文全文链接:https://arxiv.org/pdf/1810.04805.pdf

摘要

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

我们验证了双向预训练语言表示的价值。与之相比,在单向预训练方面Radford的方法与其他模型不同;BERT则采用了mask语言模型以实现深度双向表示;这与基于独立正向序列建模的研究方向存在差异。

该研究证实了预训练表示在降低重工程相关任务特殊结构方面的显著效果。BERT通过微调方法在大规模句子和词汇层次上展现出卓越性能,在多种任务中均超越了基于特定领域结构设计的模型。

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

2 相关工作

在这里插入图片描述

图1展示了Bert经过整体预训练及微调的过程。值得注意的是,在这一过程中除了输出层之外的所有层都采用了相同的架构设计,并利用了与目标领域无关的语言模型权重来进行初始化工作。这些参数随后也被用于初始化各种下游任务所需的模型架构,在后续的学习过程中所有相关的参数均参与了这一过程。CL标识符则被预先附加于每个输入样本中作为序列开始标记,在此系统中该标记标识则作为特定分隔符并用于区分不同的文本片段

Bert明显表现出一种跨任务统一架构的特征。在大多数下游任务与预训练任务之间仅存在极小的结构差异。

图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作为其中一部分的任务

在这里插入图片描述

表2展示了SQuAD 1-1的任务结果

在这里插入图片描述

表格3呈现了SQuAD 2.0的任务评估结果。
4.4 SWAG
SWAG数据集包含了113,000对句子示例用于评估基于常识的推理能力。
给定一个输入句子 SWAG系统将从四个选项中选择最符合逻辑的后续句子。
在模型微调过程中 我们设计了四个不同的输入序列组 每个序列组包含原始句子与可能后续的一个候选句。
其中唯一引入的关键参数是一个向量 该向量与表示形式C进行点积计算 从而得到每个候选句的相关性分数 并通过softmax层对其进行归一化处理。
为了优化模型性能 我们采用了预训练策略 在学习率2e-5 和batchsize为16 的情况下进行了3轮微调训练。
具体结果显示在表4中

在这里插入图片描述

5 ablation研究

5.1 预训练任务的影响

没有NSP:一个使用MLM进行训练的双向模型

LTR或者NSP:一个只有左侧上下文的模型

对于SQuAD

双向长短时记忆网络的影响

全部评论 (0)

还没有任何评论哟~