今天给大家介绍阿里巴巴达摩院在ICLR2020的一篇论文,该研究针对预训练语言模型BERT在预训练任务中忽略了语言结构的问题,作者对BERT进行扩展,通过加入语言结构到预训练任务中,其核心思想是在预训练任务中加入两项基于语言结构的任务:word-level ordering和sentence-level ordering。
1
背景
预训练语言模型是NLU(Natural Language Understanding)的关键组成部分,为了获得可靠的语言表示,通过定义文本中单词序列的联合概率来设计神经语言模型。不同于传统的特定单词嵌入的方式,研究人员们从大型文本语料库上训练的语言模型获得具有上下文信息的词向量,这些模型在很多下游任务上都显示出了高效性。在上下文语言模型中,Google在2018年发布的论文《Pre-training of Deep Bidirectional Transformers for Language Understanding》,提出一种预训练语言模型BERT(包括更具鲁棒性的优化版本RoBERTa),一经提出就暴风式地占据了NLP领域,这个模型在解决NLU问题上受到了许多关注,而且在许多NLU任务上都取得了最先进的性能,例如情感分类问题(Sentiment Classification)、自然语言推理(Natural Language Inference)、语义文本相似度(Semantic Textual Similarity)和问答问题(Question Answering),大幅度超过了之前的模型。BERT(Bidirectional Encoder Representation from Transformers)是利用多头注意力机制获得的注意力矩阵和注意力加权,使得序列中的每一个词都含有这个词的前面的信息和后面的信息得到双向表示和利用两种预训练任务(Mask and Next Sentence Prediction)进行预测,虽然取得了先进的性能,但是作者认为其并未充分利用句子的语言结构。
利用语言模型在一系列的词语和句子找到最佳排列是NLP任务的本质,例如机器翻译,基于此,作者提出了一种新型的上下文表示模型,StructBERT。StrucBERT分别利用在句子中和句子间增加结构信息,词序(word-level ordering)和句序(sentence-level ordering)来增强模型的预训练,这样在预训练上可以明确捕获语言方面的内容,可以在上下文表示中对句子和单词之间的依存关系进行编码表示,增强了模型的通用性和适用性。
2
模型
在Input Representation方面和模型架构上同BERT一样,即多层Transformer。改进在于保存了BERT现有的预训练任务Mask LM和NSP(Next Sentence Prediction)的情况下,新增了两个预训练目标:Word Structural Objective和Sentence Structural Objective。
(1)Word Structural Objective
BERT无法直接显式的对单词顺序和高阶依赖性建模。而将一句话中的单词打乱,一个好的语言模型应该能够通过重组单词顺序恢复句子的正确排列。为了能在StructBERT中实现,用Word Structural Objective使得打乱的句子重构成正确的句子顺序。做法是从一句话中未被mask的单词中选取一定长度的子序列,将子序列中的单词打乱,然后让模型恢复正确顺序,为了更好理解,下图2-1充分说明了做法。
图2-1 Word Structural Objective
在这里,作者选取长度为3(Trigram)的子序列(子序列的长度K也是超参数的一部分,即K=3)进行打乱,[需要特别说明的是,较大的K值能够使得模型重构更长的序列,同时注入更多受干扰的输入,相反,较小的K值,序列的干扰会降低,重构能力也会下降,所以作者选取K=3来平衡语言的重构性和模型的鲁棒性],从图中可以看出打乱的是t2,t3,t4,然后最后输出正确的顺序。在具体的实验中,作者从重新排列的子序列中选择5%,进行词序的打乱。
(2)Sentence Structural Objective
在原始的BERT模型任务中,BERT很容易预测下一句话,在StructBERT中,增加上一句话的预测,使得语言模型以双向方式知道句子顺序。具体做法是给定句子对(S1,S2),预测S1是S2的上一句话、S2是S1的上一句话还是S1,S2来自不同的文本(即毫无关联性)。实验中,对于一个句子S,1/3的概率采样S的下一句组成句子对,1/3的概率采样S的上一句组成句子对,1/3的概率随机采样一个其他文档的句子组成句子对。下图2-2可以更好的理解这种做法。
图2-2 Sentence Structural Objective
从图中可以看出,从BERT模型中S1和S2是否是上下文关系的二分类问题变成了这里的三分类问题。
其余的预训练细节和参数都和BERT保持一致。
3
实验
实验部分是StructBERT在各种下游任务上的结果,包括通用语言理解评估(GLUE benchmark),斯坦福自然语言推断(SNLI语料库)和提取性问答(SQuAD v1.1)。
(1) GLUE
GLUE涵盖了9个NLU任务,包括textual entailment (RTE、MNLI), question-answer entailment (QNLI), paraphrase(MRPC), question paraphrase (QQP), textual similarity (STS-B), sentiment (SST-2), linguistic acceptability (CoLA), and Winograd Schema (WNLI)。下表3-1显示出了StructBERT在9个NLU任务的表现结果。
表3-1 Results of published models on the GLUE test set
从表中可以看出,StructBERT在9个任务中在平均上超过现有的所有模型,而且在6个任务中表现最佳。在MNLI(-m/-mm)任务上,提升了0.3%/0.5%,但是只是对域内数据进行了微调,这里体现了模型的通用性。在CoLA任务中,可能是单词的排序任务和语法纠错任务存在着很强的相关性,使得该任务有显著的改进。在SST-2任务中,比BERT有进步,但是性能却不如MT-DNN,表明基于单句的情感分析从词序和句序中受益很少。
(2)SNLI
自然语言推理(NLI)是自然语言理解中的重要任务之一。该任务的目的是测试模型推理两个句子之间的语义关系的能力。为了在NLI任务上表现出色,模型需要捕获句子的语义,从而推断一对句子之间的关系:蕴涵,矛盾或中立。
表3-2 Accuracy (%) on the SNLI dataset.
表3-2显示了StructBERT与其他已发布模型在SNLI数据集上的结果。StructBERT的性能优于现有的模型,准确率达到91.7%,与之前的最新模型SJRC相比,绝对值提高0.4%,与BERT相比,绝对值提高0.9%。由于我们模型的网络架构与BERT,这种改进完全归功于新的预训练目标,这证明了单词预测和句子预测任务的有效性。
(3)EXTRACTIVE QA
SQuAD v1.1是一个机器阅读理解数据集,包含100000多个问题,这些问题是由工作者们在536条维基百科文章上提出的。任务的目的是从给定问题的相应段落中提取正确的答案范围。在SQuAD数据集跑了3个epoch,并将结果与官方排行榜上的性能最好的模型进行了比较,如表3-3所示。
表3-3 SQuAD results
我们可以看到,即使没有任何额外的数据增强(DA)技术, StructBERT模型优于除开发集上的XLNet + DA之外的所有模型。XLNet + DA优于StructBERT,可是后者没有使用数据增强或大型预训练语料库。它证明了所提出的预训练的StructBERT模型在为抽取式QA在段落关系方面的有效性。在QA任务中,将单词和句子结构合并在一起可以大大提高理解能力。
(4)EFFECT OF DIFFERENT STRUCTURAL OBJECTIVES
前文已经证明该模型在各种下游任务上的优秀结果。在StructBERT预训练中,两个新的结构预测任务是最重要的组成部分。因此,作者进行了一次消融研究,通过一次从训练中移除一个结构目标来检查这两个结构目标如何影响各种下游任务的性能。
表3-4 Ablation over the pre-training objectives using StructBERT
从表3-4可以看出,(1)这两个结构目标对于大多数下游任务都是至关重要的,但SNLI任务在Word Structural Objective存在与否都表现差不多。从预训练任务中删除任何一个结构任务都会导致下游任务的性能下降。持续进行结构预训练的StructBERT模型优于原始的BERT模型,该模型显示了所提出的结构目标的有效性。(2)对于MNLI,SNLI,QQP和SQuAD等句子对任务,结合Sentence Structural Objective可以显著提高性能。(3)对于单句任务(例如CoLA和SST-2),Word Structural Objective发挥了很重要的作用。特别是在与语法纠错有关的CoLA任务中,改进超过5%。