【文献精读】BERT: Pre-training of Deep Bidirectional Transformers forLanguage Understanding
文章目录
5.2SQuAD v1.1(基于问题和段落对(段落包含答案)在文本中找答案)
1.前言
原文链接:https://jalammar.github.io/illustrated-bert/
论文来源:https://arxiv.org/abs/1810.04805
文章代码:https://github.com/google-research/bert
2.动机
契机是来自一篇讲述多模态检索来应用检测假新闻的文章,来学习文本特征提取和微调的最好用的模型架构——BERT。为什么BERT相比其他自然语言处理的模型在NLP的任务中表现好?为什么要用双向的Transformer架构来提取文本特征?为什么要利用预训练进行下游任务的微调?
3.概要
BERT(Bidirectional Encoder Representations from Transformers.),它代表Transformers的双向编码器表示。与最近的语言表征模型不同,Bert被设计为通过在所有层中联合对左右语境进行条件反射来预训练来自未标记文本的深度双向表征。因此,预先训练的BERT模型可以只用一个额外的输出层进行微调,以创建适用于各种任务的最先进的模型,例如问题回答和语言推理,而不需要对特定于任务的架构进行实质性的修改。
BERT在概念上是简单的,它的模型架构主要来自ELMo和OpenAI GPT,在此基础上改进了双层表征;但在经验上是强大的。它在11个自然语言处理任务上获得了最新的最新结果,包括将GLUE分数推到80.5%(7.7%的绝对提高),MultiNLI准确率达到86.7%(绝对提高4.6%),Team v1.1问答测试F1到93.2(1.5分绝对提高),以及Team v2.0测试F1到83.1(5.1分绝对提高)。
4.方法
4.1预训练——BERT的两个预训练任务
4.1.1遮蔽语言编码(Masked LM)
遮蔽语言编码(MLM)又被形象的称为“完形填空”(Cloze task in the literature),在实验中,我们随机屏蔽了每个序列中所有WordPiess标记的15%,然后BERT根据上下文预测被遮盖的词。
同时,因为预训练可以设置masked tokens,但微调不可以设置,所以不总是用实际的【MASK】替换“masked”words然后进行预测。我们分成三种情况:80%用实际的【MASK】替换“masked”words;10%用随机的【MASK】;10%不换,然后用交叉熵损失函数预测。
4.1.2下一个句子预测
为了训练一个理解句子关系的模型,我们为二值化的下一句预测任务进行了预训练。如句子A B,50%机率B是A的下一个句子(正样本);50%机率B是语料库中随机句子(负样本)。变成一个简单的二分类问题。
4.1.3预训练数据
我们使用Books语料库(8亿字)和英文维基百科(2.5亿样本),我们只提取文本段落,而忽略列表、表格和标题。
4.2微调 BERT
Transformer中的自注意机制:允许Bert通过交换适当的输入和输出来对许多下游任务进行建模。
BERT不是将文本对进行单独编码,而是利用自我注意的串联文本对有效地包括两个句子之间的双向交叉注意。构造完成后,我们只需将特定于任务的输入和输出插入到ERT中,并端到端地调整所有参数。

5.实验及效果
作者介绍了BERT在11个NLP任务上的微调结果。
5.1GLUE(通用语言理解评估基准)
数据集https://gluebenchmark.com/ leaderboard https://blog. openai.com/language-unsupervised.,作者使用第一个输入标记([cls])相对应的最终隐藏向量C∈RH作为聚合表示,引入W表示分类层的权重,K表示标签数量,用C和W计算标准分类softmax损失,得到结果如下:

可以看到BERT_large性能最好,但在小数据集上有时是不稳定的,因此运行了几次随机重新启动,并在Dev集上选择了最佳模型。作者补充:我们使用32的批次大小,并对所有粘合任务的数据进行了3个时期的微调。对于每个任务,我们在Dev集合上选择了最佳微调学习速率(5E-5、4E-5、3E-5和2E-5之间)。
5.2SQuAD v1.1(基于问题和段落对(段落包含答案)在文本中找答案)
引入了开始向量S∈RH和结束向量E∈RH,对所有单词,求开始s是正确答案的起始概率——i是答案范围的开始的概率被计算为Ti和S之间的点积,然后通过softmax。同理对所有单词求E是结尾的概率j。进行加权求和得到候选人。训练目标是正确开始和结束位置的对数似然之和。我们微调了3个纪元,学习率为5e-5,批次大小为32。

5.3 SQuAD v2.0(相对5.2包含了无答案问题)
作者将没有答案的问题视为具有以[cls]标记开始和结束的答案范围,求概率进行预测。我们微调了2个纪元,学习率为5e-5,批次大小为48。

5.4 SWAG(具有对抗性生成的情况-推理下一个句子)
引入的唯一特定于任务的参数是一个向量,该向量与[CLS]令牌表示C的点积表示每个选择的分数,该选择使用Softmax层进行标准化。我们对模型进行了3个时期的微调,学习率为2E-5,批次大小为16。

5.5消融实验
作者通过调整预训练任务、模型架构参数和基于特征的方法来评估两个预训练目标,证明深层双向表证重要性。
预训练任务的影响:作者假设了No NSP(only MLM task)、LTR&No NSP(单向的MLM task),增加了一个随机初始化的BiLSTM,影响不大,仍然不如BERT。可以看出两个预训练任务的重要性。

模型架构参数:我们用不同数量的层、隐藏单元和注意头训练了一些BERT模型与选定的BERT进行对比。5次随机重新启动微调后的平均开发人员设置精度,发现更大的模型导致了所有四个数据集的精度严格提高。

基于特征的方法:与微调的方法对比,发现BERT对于微调和基于功能的方法都是有效的。

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



所有评论(0)