刘杰鹏作者

ACL2020 | BART:请叫我文本生成领域的老司机

题目:

BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension

机构:Facebook AI

作者:Mike Lewis, Yinhan Liu, Naman Goyal, Marjan Ghazvininejad, Abdelrahman Mohamed, Omer Levy, Ves Stoyanov, Luke Zettlemoyer

论文地址:https://www.aminer.cn/pub/5dbab2523a55acea3c05b02b?conf=acl2020

收录会议:ACL 2020 

代码:https://github.com/pytorch/fairseq/tree/master/examples/bart

摘要

文章提出一个预训练sequence-to-sequence的去噪自编码器:BART。BART的训练主要由2个步骤组成:(1)使用任意噪声函数破坏文本(2)模型学习重建原始文本。BART 使用基于 Transformer 的标准神经机器翻译架构,可视为BERT(双向编码器)、GPT(从左至右的解码器)等近期出现的预训练模型的泛化形式。文中评估了多种噪声方法,最终发现通过随机打乱原始句子的顺序,再使用首创的新型文本填充方法(即用单个 mask token 替换文本片段,换句话说不管是被mask掉多少个token,都只用一个特定的mask token表示该位置有token被遮蔽了)能够获取最优性能。BART 尤其擅长处理文本生成任务,不过在自然语言理解任务中也颇有可圈可点之处。在同等训练资源下,BART 在 GLUE 和 SQuAD 数据集上的效果与 RoBERTa 不相伯仲,并在对话、问答和文本摘要等任务中斩获得新的记录(PS:特指BART刚出道之际。比如CNN / Daily Mail当下冠军模型是Big Bird加持下的BigBird-Pegasus),在 XSum 数据集上的性能比之前的最佳结果高出了6个ROUGE。在机器翻译任务中,BART 在仅使用目标语言预训练的情况下,获得了比回译系统高出 1.1 个 BLEU 值的结果。此外,文章还使用控制变量法在BART 框架内使用其他预训练机制,从而更好地评估影响下游任务性能的因素。

模型

BART结合双向(比如BERT)和自回归(比如GPT) Transformer对模型进行预训练。BART还参考了GPT中的激活函数,将ReLU也改为GeLU。BART、BERT和GPT之间的对比如 Figure1所示。

(a)BERT:用掩码替换随机 token,双向编码文档。由于缺失 token 被单独预测,因此 BERT 较难用于生成任务。(b)GPT:使用自回归方式预测 token,这意味着GPT可用于生成任务。但是,该模型仅基于左侧上下文预测单词,无法学习双向交互。

(c)BART:编码器输入与解码器输出无需对齐,即允许任意噪声变换。使用掩码符号替换文本段,从而破坏文本。使用双向模型编码被破坏的文本(左),然后使用自回归解码器计算原始文档的似然(右)。至于微调,未被破坏的文档是编码器和解码器的输入,研究者使用来自解码器最终隐藏状态的表征。

base版BART的encoder和decoder都是6层网络,large版则分别增加到12层。BART与BERT还有2点不同

(1)decoder中的每一层都与encoder最后隐藏层执行交叉关注(cross-attention,就像在transformer序列到序列模型中一样)。

(2)BERT在预测token之前接一个前馈网络,而BART没有。总的来说,BART比同等大小的BERT模型多了大约10%的参数。 

BART的一个关键优势是噪声的随意性,可以动用任何方式(包括改变长度)对原始文本进行破坏。这种方式让模型学习过程中更多地考虑句子的整体长度,并对输入进行更大范围的转换,从而将BERT中MLM和NSP目标统一起来。此外,BART也为微调开创了一个新思路。BART做机器翻译的时候,将BART堆叠在一些额外的Transformer层之上,这些附加的Transformer层实质上是把其他语种翻译成带噪的英语,再通过BART模型,从而将BART作为一个预训练好的目标端语言模型。这种方法在WMT Romanian-English数据集上高出回译系统1.1个BLEU。

预训练

BART的损失函数是decoder的输出与原始文本之间的交叉熵。与其他去噪自编码器(一般需要定制特定的噪声方案)不同的是BART可以使用任何的加噪方式。在极端情况下,源信息可以全部缺失,此时的BART就蜕化成了一个语言模型。文章中用到的加噪方案(即原始文本如何被破坏)如Figure 2所示。

具体来说主要有:

(1)Token Masking:与 BERT 一样,BART 随机采样 token,并用 [MASK] 这一预定义的特殊token进行替换。

(2)Token Deletion:从输入中随机删除 token。与 Token Masking不同,模型必须同时确定输入中缺失的位置。

(3)Text Infilling:采样多个文本片段,每个文本片段长度服从λ = 3的泊松分布。每个文本片段用单个[MASK] token替换。从泊松分布中采样出长度为 0 的文本片段对应 插入 [MASK] token。这种文本填充方法的思想源于SpanBERT,但SpanBERT采样的文本片段长度服从的是几何分布,且用等长的[MASK] token 序列替换掉文本片段。因此,BART能够迫使模型学习到一个片段中所缺失的token数量。

(4)Sentence Permutation:这里的句子排列变换是指按**句号**将文档分割成多个句子,然后随机打乱这些句子。

(5)Document Rotation:随机均匀地选择 一个token,再旋转文档使文档以该 token 作为起始。该任务的目的是训练模型识别文档开头。 

Fine-tuning

BART在文本分类和翻译任务中的微调如Figure 3所示。以下具体介绍 BART 在各个下游任务的微调。

Figure 3中a:当使用 BART 解决分类问题,用相同的输入文本输入到encoder和decoder,使用最终输出的表征。b:对于机器翻译任务,训练一个额外的小型encoder来替换 BART 中的词嵌入。新encoder可使用不同的词汇。

序列分类任务:

同一个输入同时输入到encoder 和decoder,将最后decoder的token的最终隐层状态被输入到一个新的多类别线性分类器中。该方法与 BERT 中的 CLS token 类似,不过 BART 在decoder最后额外添加了一个 token,如此该 token 在decoder中的表征可以关注到完整输入的decoder状态(见Figure 3a)。

token 分类任务:

token的分类任务,比如SQuAD中答案端点位置的分类。将完整文档输入到encoder和decoder中,使用decoder最上方的隐状态作为每个token的表征以判断该 token 的类别,比如是否为答案端部。

序列生成任务:

由于 BART 具备自回归解码器,因此可以直接应用到序列生成任务(如生成式问答和文本摘要)进行微调。在这两项任务中,从输入复制经过处理的信息,这与去噪预训练目标紧密相关。encoder的输入是输入序列,decoder以自回归的方式生成输出。 

机器翻译

BART用以机器翻译的时候,将整个BART(包括encoder和decoder)作为一个单独的预训练decoder,并增加一系列的从双语语料学习而得的encoder,如 Figure 3b所示。具体操作上是用一个新的随机初始化encoder替换 BART encoder的嵌入层。该模型以端到端的方式训练,即训练一个新的encoder将其他语种词映射到输入(BART可将其去噪为英文)。这个新的encoder可以使用不同于原始 BART 模型的词汇表。 

源encoder的训练分两步,均需要将BART模型输出的交叉熵损失进行反向传播。

(1)冻结 BART 的大部分参数,仅更新随机初始化的源encoder、BART 位置嵌入和 BART encoder第一层的自注意力输入投影矩阵。

(2)将所有模型参数进行少量迭代训练。 

实验

预训练目标对比

文章中还充分对比了不同预训练目标的影响,包括:

(1)语言模型:与GPT类似,训练一个从左到右的Transformer语言模型。该模型相当于BART的decoder,只是没有交叉注意(cross-attention)。

(2)排列语言模型:该模型基于XLNet,采样1/6的token,并以自回归的随机顺序生成。为了与其他模型保持一致,这里没有引入相对位置编码和XLNet中的片段级的循环注意力机制

(3)带遮蔽的语言模型:与BERT相同,15%的token用 [MASK] token替换,训练模型重建出这些被遮蔽掉的token。

(4)多任务遮蔽的语言模型:与 UniLM 一样,使用额外self-attention mask训练带遮蔽的语言模型自注意力遮蔽按如下比例随机选择:1/6从左到右;1/6从右到左;1/3未遮蔽;剩余的1/3中前50%的未遮蔽,其余的从左到右遮蔽。

(5)带遮蔽的seq-to-seq:与MASS模型类似,遮蔽一个片段中50%的token,并训练一个序列到序列模型预测被遮蔽的tokens。

实验过程对比了两种方案:

(1)将所有任务视为sequence-to-sequence问题,source端输入到encoder,decoder端的输出即为target结果。

(2)在decoder端将source作为target的一个前缀,且只在序列的target部分有损失函数

实验发现前者对BART模型更有效,后者对其他模型更有效。更加详细的实验结果如 Table 1所示。

Table 1:预训练目标对比。各个预训练目标源于BERT, MASS, GPT, XLNet和UniLM。对比的模型都是尺寸近似,训练步数都是1M,预训练使用的数据也相同。

可以看出使用文本填充方案(Text Infilling)的BART战绩斐然。从中可以得出以下结论:

(1)在不同的任务中,预训练方法的表现有显著差异。换句话说,预训练方法的有效性高度依赖于任务本身。比如,一个简单的语言模型在ELI5数据集上可以夺冠,但是在SQUAD上的结果却是最差的。

(2)遮蔽Token至关重要。只使用旋转文档或句子组合的预训练目标则效果较差,效果较好的都是使用了token的删除或遮蔽作为预训练目标。此外,在生成任务上,删除token似乎比遮蔽token更胜一筹。

(3)从左到右的预训练目标有助于文本生成任务。遮蔽语言模型和排列语言模型文本生成任务上不如其他模型。而这两种模型在预训练阶段都没有用到从左到右的自回归语言模型

(4)对于SQuAD而言双向的encoder至关重要。因为上下文在分类决策中至关重要,BART仅用双向层数的一半就能达到BERT类似的性能。

(5)预训练目标并不是唯一重要的因素。这里的排列语言模型略逊于XLNet,其中一些差异可能是由于没有使用XLNet架构中的其他的改进,如相对位置编码和片段级的循环机制。

(6)纯语言模型在ELI5数据集上技压群雄,其困惑度远优于其他模型。这表明当输出仅受到输入的松散约束时,BART较为低效。

总而言之,使用文本填充预训练目标的BAR在多项任务上(除了ELI5之外)效果都很好。 

Large版模型对比

自然语言理解任务

由于更大模型和更大batch size有助于下游任务性能的提升,所以文章还进一步对比各模型的large版。Large版的BART,encoder和decoder分别有12层,隐层大小为1024,batch size与RoBERTa一样都是8000,模型预训练了500000个step。tokenized方法借用 GPT-2 中的字节对编码(BPE)。各个模型在GLUE上的实验对比结果如 Table 2所示。

Table 2:Large版模型在 SQuAD 和 GLUE 上的实验结果。BART 的效果可比肩 RoBERTa 和 XLNet,这表明 BART 的单向decoder层并不会降低模型在判别任务上的性能。

各个模型在SQuAD上的对比结果如Table 3所示。

Table 3:BART的结果与XLNet和RoBERTa不相伯仲。

总体而言,BART在自然语言理解任务上与其他先进模型不相上下。这表明BART在生成任务上的进一步突破并不是以牺牲自然语言理解性能为代价。

自然语言生成任务

文本生成任务中选用了摘要生成(CNN/DailyMail 和XSum)、对话(CONVAI2)和生成式问答(ELI5,是一个长篇问答数据集)中对应的数据集进行评测,结果如 Table 4所示。

Table 4:在两个标准摘要数据集上的结果。

从结果可以看出,在这两个摘要任务上,BART 在所有度量指标上均优于之前的模型。BART在更抽象的 XSum 数据集上的比之前最优的RoBERTa模型高出3.5个点(所有的ROUGE指标)。此外,从人工评测的角度来看,BART也大幅优于之前的模型。但与人类的摘要结果相比仍然有差距。 

各模型在CONVAI2上的实验结果如Table 5所示。

Table 5:BART 在对话生成任务上的性能优于之前的模型。其中困惑度基于 ConvAI2 官方 tokenizer 进行了重新归一化。

在ELI5数据集上的评测结果如Table 6所示。

Table 6:BART在具有挑战性的ELI5长文档问答数据集上达到了最先进的结果。

发现BART的性能比之前最好的工作(指Seq2Seq Multi-task)高出1.2个 ROUGE-L。其实该数据集难度较大,因为数据集中的问题只对答案进行了微弱的指定。 

leader board结果如下:

PS:是因为数据比较新,所以知名度不够高,刷榜的人寥寥无几?

机器翻译任务

BART在WMT16 Romanian-English上与其他模型的对比结果如Table 8所示。

Table 8:BART 和基线模型(Transformer)在机器翻译任务上的性能对比情况。

参与对比的模型使用数据集包括 WMT16 RO-EN 和用回译系统做的扩增数据。可以看出BART使用单语英文预训练,性能结果优于基线模型。

总结

文本介绍了一种预训练模型:BART。该模型可以学习将被破坏的文档重建回原始文档。BART在分类任务上的性能结果与RoBERTa相当,并在几个文本生成任务上刷新记录。

AMiner学术头条
AMiner学术头条

AMiner平台由清华大学计算机系研发,拥有我国完全自主知识产权。系统2006年上线,吸引了全球220个国家/地区800多万独立IP访问,数据下载量230万次,年度访问量1000万,成为学术搜索和社会网络挖掘研究的重要数据和实验平台。

https://www.aminer.cn/
专栏二维码
理论文本生成BARTACL2020
相关数据
线性分类器技术

机器学习通过使用对象的特征来识别它所属的类(或组)来进行统计分类。线性分类器通过基于特征的线性组合的值进行分类决策。 对象的特征也称为特征值,通常在称为特征向量的向量中呈现给机器。

激活函数技术

在 计算网络中, 一个节点的激活函数定义了该节点在给定的输入或输入的集合下的输出。标准的计算机芯片电路可以看作是根据输入得到"开"(1)或"关"(0)输出的数字网络激活函数。这与神经网络中的线性感知机的行为类似。 一种函数(例如 ReLU 或 S 型函数),用于对上一层的所有输入求加权和,然后生成一个输出值(通常为非线性值),并将其传递给下一层。

交叉熵技术

交叉熵(Cross Entropy)是Loss函数的一种(也称为损失函数或代价函数),用于描述模型预测值与真实值的差距大小

自然语言理解技术

自然语言理解是人工智能的核心课题之一,也被广泛认为是最困难和最具标志性的任务。最经典的两个人工智能思想实验——图灵测试和中文房间,都是围绕自然语言理解来构建的。自然语言理解在人工智能技术体系中的重要性不言而喻,它一方面承载着机器和人的交流,另一方面直达知识和逻辑。自然语言理解也是人工智能学者孜孜以求的圣杯,机器学习的巨擘 Michael I. Jordan 就曾经在 Reddit 上的 AMA(Ask Me Anything)栏目中畅想用十亿美元建立一个专门用于自然语言理解的实验室。

神经机器翻译技术

2013 年,Nal Kalchbrenner 和 Phil Blunsom 提出了一种用于机器翻译的新型端到端编码器-解码器结构 [4]。该模型可以使用卷积神经网络(CNN)将给定的一段源文本编码成一个连续的向量,然后再使用循环神经网络(RNN)作为解码器将该状态向量转换成目标语言。他们的研究成果可以说是神经机器翻译(NMT)的诞生;神经机器翻译是一种使用深度学习神经网络获取自然语言之间的映射关系的方法。NMT 的非线性映射不同于线性的 SMT 模型,而且是使用了连接编码器和解码器的状态向量来描述语义的等价关系。此外,RNN 应该还能得到无限长句子背后的信息,从而解决所谓的「长距离重新排序(long distance reordering)」问题。

自注意力技术

自注意力(Self-attention),有时也称为内部注意力,它是一种涉及单序列不同位置的注意力机制,并能计算序列的表征。自注意力在多种任务中都有非常成功的应用,例如阅读理解、摘要概括、文字蕴含和语句表征等。自注意力这种在序列内部执行 Attention 的方法可以视为搜索序列内部的隐藏关系,这种内部关系对于翻译以及序列任务的性能非常重要。

词嵌入技术

词嵌入是自然语言处理(NLP)中语言模型与表征学习技术的统称。概念上而言,它是指把一个维数为所有词的数量的高维空间嵌入到一个维数低得多的连续向量空间中,每个单词或词组被映射为实数域上的向量。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

文本分类技术

该技术可被用于理解、组织和分类结构化或非结构化文本文档。文本挖掘所使用的模型有词袋(BOW)模型、语言模型(ngram)和主题模型。隐马尔可夫模型通常用于词性标注(POS)。其涵盖的主要任务有句法分析、情绪分析和垃圾信息检测。

损失函数技术

在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学等领域,损失函数或成本函数是将一或多个变量的一个事件或值映射为可以直观地表示某种与之相关“成本”的实数的函数。

注意力机制技术

我们可以粗略地把神经注意机制类比成一个可以专注于输入内容的某一子集(或特征)的神经网络. 注意力机制最早是由 DeepMind 为图像分类提出的,这让「神经网络在执行预测任务时可以更多关注输入中的相关部分,更少关注不相关的部分」。当解码器生成一个用于构成目标句子的词时,源句子中仅有少部分是相关的;因此,可以应用一个基于内容的注意力机制来根据源句子动态地生成一个(加权的)语境向量(context vector), 然后网络会根据这个语境向量而不是某个固定长度的向量来预测词。

机器翻译技术

机器翻译(MT)是利用机器的力量「自动将一种自然语言(源语言)的文本翻译成另一种语言(目标语言)」。机器翻译方法通常可分成三大类:基于规则的机器翻译(RBMT)、统计机器翻译(SMT)和神经机器翻译(NMT)。

映射技术

映射指的是具有某种特殊结构的函数,或泛指类函数思想的范畴论中的态射。 逻辑和图论中也有一些不太常规的用法。其数学定义为:两个非空集合A与B间存在着对应关系f,而且对于A中的每一个元素x,B中总有有唯一的一个元素y与它对应,就这种对应为从A到B的映射,记作f:A→B。其中,y称为元素x在映射f下的象,记作:y=f(x)。x称为y关于映射f的原象*。*集合A中所有元素的象的集合称为映射f的值域,记作f(A)。同样的,在机器学习中,映射就是输入与输出之间的对应关系。

分类问题技术

分类问题是数据挖掘处理的一个重要组成部分,在机器学习领域,分类问题通常被认为属于监督式学习(supervised learning),也就是说,分类问题的目标是根据已知样本的某些特征,判断一个新的样本属于哪种已知的样本类。根据类别的数量还可以进一步将分类问题划分为二元分类(binary classification)和多元分类(multiclass classification)。

序列到序列技术

堆叠技术

堆叠泛化是一种用于最小化一个或多个泛化器的泛化误差率的方法。它通过推导泛化器相对于所提供的学习集的偏差来发挥其作用。这个推导的过程包括:在第二层中将第一层的原始泛化器对部分学习集的猜测进行泛化,以及尝试对学习集的剩余部分进行猜测,并且输出正确的结果。当与多个泛化器一起使用时,堆叠泛化可以被看作是一个交叉验证的复杂版本,利用比交叉验证更为复杂的策略来组合各个泛化器。当与单个泛化器一起使用时,堆叠泛化是一种用于估计(然后纠正)泛化器的错误的方法,该泛化器已经在特定学习集上进行了训练并被询问了特定问题。

自然语言生成技术

自然语言生成(NLG)是自然语言处理的一部分,从知识库或逻辑形式等等机器表述系统去生成自然语言。这种形式表述当作心理表述的模型时,心理语言学家会选用语言产出这个术语。自然语言生成系统可以说是一种将资料转换成自然语言表述的翻译器。不过产生最终语言的方法不同于编译程式,因为自然语言多样的表达。NLG出现已久,但是商业NLG技术直到最近才变得普及。自然语言生成可以视为自然语言理解的反向: 自然语言理解系统须要厘清输入句的意涵,从而产生机器表述语言;自然语言生成系统须要决定如何把概念转化成语言。

语言模型技术

语言模型经常使用在许多自然语言处理方面的应用,如语音识别,机器翻译,词性标注,句法分析和资讯检索。由于字词与句子都是任意组合的长度,因此在训练过的语言模型中会出现未曾出现的字串(资料稀疏的问题),也使得在语料库中估算字串的机率变得很困难,这也是要使用近似的平滑n元语法(N-gram)模型之原因。

文本生成技术

文本生成是生成文本的任务,其目的是使人类书写文本难以区分。

GPT-2技术

GPT-2是OpenAI于2019年2月发布的基于 transformer 的大型语言模型,包含 15 亿参数、在一个 800 万网页数据集上训练而成。据介绍,该模型是对 GPT 模型的直接扩展,在超出 10 倍的数据量上进行训练,参数量也多出了 10 倍。在性能方面,该模型能够生产连贯的文本段落,在许多语言建模基准上取得了 SOTA 表现。而且该模型在没有任务特定训练的情况下,能够做到初步的阅读理解、机器翻译、问答和自动摘要。

对话生成技术

对话生成是能经由对话或文字进行交谈的计算机程序任务。能够模拟人类对话,通常以通过图灵测试为评估标准。

推荐文章
暂无评论
暂无评论~