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

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

BART:用于自然语言生成、翻译和理解的seq2seq去噪预训练器

作者:Mike Lewis等,来自Facebook AI  2019年

论文地址:https://aclanthology.org/2020.acl-main.703.pdf

参考博客:https://zhuanlan.zhihu.com/p/173858031

 

一、BERT

BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

作者:Jacob Devlin  来自google  2019年

 

BERT的全称是Bidirectional Encoder Representation from Transformers,即基于 Transformer 的双向编码表示器,其中「双向」表示模型在处理某一个词时,它能同时利用前面的词和后面的词两部分信息。这种「双向」的来源在于 BERT 与传统语言模型不同,它不是在给定所有前面词的条件下预测最可能的当前词,而是随机遮掩一些词,并利用所有没被遮掩的词进行预测。

1 BERT的训练任务有两个

Task1:Next Sentence Prediction (NSP),在数据集中抽取两个句子A和B,B有50%的概率是A的下一句,这样通过判断B是否是A的下一句来判断BERT模型。(网上普遍认为关于这种任务BERT完成的并不是很出色,李宏毅老师认为这是因为训练任务太简单,从而学到的东西比较少)。

Task2:Masked LM ,Mask语言模型,传统语言模型是给定所有前面词来预测最可能的当前词,而BERT模型则是随机的使用「mask」来掩盖一些词,并利用所有没有被掩盖的词对这些词进行预测。论文中是随机mask掉15%的词,并且在确定需要mask的词后,80%的情况会使用「mask」来掩盖,10%的情况会使用随机词来替换,10%的情况会保留原词,例如:

原句:xx xx xx xx hello

80%:xx xx xx xx 「mask」

10%:xx xx xx xx world

10%:xx xx xx xx hello

如图1,模型内部用的是transformer机制,也就是当预测w2时,w2的输出综合了1、2、3、4所有的信息,因为w2被mask掉了所以模型必须通过学习才能得到正确的w2,以此方式达到学习的目的。

 

图1 Mask语言模型

2 但是,BERT 不善言辞

具体是指在generate的任务中:

我们暂时认为产生一个文章,产生一个句子的方法应该是从左往右,而BERT的训练方式不是按照文本从左往右的方式生成文本,而是根据上下文,因此根据现在产生一个句子的方法,根据上文写下下一个字,两者是不同的,虽然可以以如下图右侧的方式生成下一个,但是因为与训练的方式不同,因此效果不太理想,因此在这一方面的应用,我们会说BERT是不善言词的。但是此处讨论仅仅针对Auto-regressive的model。

 

图2

这里再引入两个概念:

Auto-encoding: 把input encoder到一个hidden state再通过试图重构input的方式去学习如何得到一个更优的hidden state。典型的auto-encoding模型像BERT(对应任务是masked language modeling),auto-encoder等等都是。主要用于natural language understanding任务。

Auto-regressive: 仅根据过去的预测信息来预测未来的信息就叫auto-regressive。典型的model像GPT-2。通常用于做natural language generation。而BERT并不擅长。

 

BERT使用的是transformer的编码部分,因为缺乏generation的能力,所以她可能不太适合用来做seq2seq的预训练模型,假设你是seq2seq的model,那BERT可能只能当作Encoder。那有没有办法使用这种自监督模型对seq2seq进行预训练呢?

 

二、GPT

GPT:Improving Language Understanding by Generative Pre-Training 

论文地址:https://s3-us-west-2.amazonaws.com/openai-assets/research-covers/language-unsupervised/language_understanding_paper.pdf

作者:Alec Radford   来自openAI  2018年

而后还有GPT-2、GPT-3。GPT-3的效果是最惊艳的,最终实现不用微调就可以完成对应领域的任务,我认为这是GPT给人类最大的可能性。

 

GPT主要是大力出奇迹,在模型设计上没有做什么努力,主要的工作集中在不断加大模型对模型进行训练。简而言之,GPT使用的是transformer的解码部分,顺序生成结果,因此她是seq2seq的,适合文本生成任务,模型局限性是不能双向获取信息,但是大力出奇迹的方式还是让人类看到了更多的可能性。

 

三、BART

因此,Mike Lewis等人提出了 BART,一种用于预训练seq2seq模型的去噪自动编码器。

BART的全称是Bidirectional and Auto-Regressive Transformers,顾名思义,就是兼具上下文语境信息和自回归特性的Transformer。

 

BART 通过以下方式进行训练:(1) 使用任意噪声函数破坏文本。(2) 学习seq2seq模型来重建原始文本。 它使用标准的基于 Transformer 的机器翻译架构,尽管它很简单,但可以看作是对 BERT(双向编码器)、GPT(从左到右解码器)和其他预训练方案的泛化。文章评估了许多噪声方法,通过随机打乱句子的顺序、使用新颖的填充、多个连续文本被单个掩码标记替换等多种方式来找到最佳性能。BART 在针对文本生成进行微调时特别有效,但也适用于理解任务。它与 RoBERTa 在 GLUE 和 SQuAD 上的性能相匹配,并在一系列抽象对话、问答和摘要任务上取得了SOTA。

 

1 BART结构

GPT是一种Auto-Regressive(自回归)的语言模型。它也可以看作是Transformer model的Decoder部分,它的优化目标就是标准的语言模型目标:序列中所有token的联合概率。GPT采用的是自然序列中的从左到右(或者从右到左)的因式分解。

BERT是一种Auto-Encoding(自编码)的语言模型。它也可以看作是Transformer model的Encoder部分,在输入端随机使用一种特殊的[MASK]token来替换序列中的token,这也可以看作是一种noise,所以BERT也叫Masked Language Model。

BART吸收了BERT的bidirectional encoder和GPT的left-to-right decoder各自的特点,建立在标准的seq2seq Transformer model的基础之上,这使得它比BERT更适合文本生成的场景;相比GPT,也多了双向上下文语境信息。在生成任务上获得进步的同时,它也可以在一些文本理解类任务上取得SOTA。

 

BART是一个encoder-decoder的结构,其encoder端的输入是加了噪音的序列,decoder端的输入是right-shifted(右移)的序列,decoder端的目标是原序列。模型设计的目的很明确,就是在利用encoder端的双向建模能力的同时,保留自回归的特性,以适用于生成任务。

 

 

对于自监督方式(自监督学习从数据本身获得监督信号)预训练seq2seq模型而言,假设模型如下图所示,那么重新构造的w5、w6、w7、w8应该是与输入w1、w2、w3、w4一致的,那对模型而言直接一一对应复制过来就好了,这样的话模型无法得到学习,因此,最简单的方法就是对输入w1、w2、w3、w4进行破坏,破坏的方法有很多种,比如此处BART提到的五种。

 

 

2 BART预训练

BART是通过破坏文档,然后优化重建损失(解码器输出和原始文档之间的交叉熵)来训练的。与现有的去噪自动编码器不同,BART允许应用任何类型的文件损坏。在极端情况下,所有关于源的信息都会丢失。如下Figure 2。

l  Token Masking:使用[MASK]随机替代tokens

l  Token Deletion:随机删除tokens,模型通过找到删除的位置进行学习

l  Text Infilling:对多个spans进行抽样,每个span的长度符合λ=3的泊松分布,每个span即0-n长度的tokens被替换为[MASK]。

l  Sentence Permutation:调换句子顺序,让模型学习句子顺序

l  Document Rotation:在末尾随机选取1-n个token,作为一个整体放到开始位置,让模型学习识别文本开头。

 

 

3 BART微调

BART生成的表示可以使用以下几种方式用于下游应用程序。

1)      序列分类任务

将该序列同时输入给encoder端和decoder端,然后取decoder最后一个token对应的final hidden state作为label,输入给一个线性多分类器。注意在序列的最后要加一个token,保证seq2seq模型输出的label包含序列中每一个token的信息(因为decoder的输入是right-shifted的,不这样做的话label将不包含最后一个token的信息) (Figure 3a)。

2)      Token分类任务

将完整的文档输入编码器和解码器,并使用解码器的顶部隐藏状态作为每个单词的表示。这种表示方式用于对token进行分类。

3)      序列生成任务

因为BART有一个自回归解码器,它可以直接微调序列生成任务,如抽象问题回答和总结。在这两种任务中,信息都是从输入中复制但进行了操作,这与去噪训练前的目标密切相关。这里,编码器输入是输入序列,解码器自回归生成输出。

4)      机器翻译

将BART的encoder端的embedding层替换成randomly initialized encoder,新的encoder也可以用不同的vocabulary。通过新加的Encoder,我们可以将新的语言映射到BART能解码到English(假设BART是在English的语料上进行的预训练)的空间。具体的finetune过程分两阶段:

第一步只更新randomly initialized encoder + BART positional embedding + BART的encoder第一层的self-attention 输入映射矩阵。

第二步更新全部参数,但是只训练很少的几轮。

 

 

4 与不同预训练模型比较

如table 1。

比较的预训练模型有:

1)       GPT: (Auto-Regressive) Language model

2)       XLNET: Permuted Language Model

3)       BERT: Masked Language Model

4)       UniLM: Multitask Masked Language Model

5)       MASS: Masked Seq-to-Seq

涉及的下游任务有:

1)       SQuAD: 将context和question连在一起输入Encoder和Decoder,输出的是context中的span。

2)       MNLI: 将2个句子连在一起输入Encoder和Decoder(中间加上[EOS]表示隔开),模型输出的是两个句子之间的关系,是典型的序列分类问题。

3)       ELI5: 抽象的问答,将context和question连在一起输入,模型输出抽象摘要文本。

4)       XSum: 新闻摘要生成任务

5)       ConvAI2: 对话生成任务

6)       CNN/DM:摘要生成任务

 

结论:

不同预训练方法表现差异显著,预训练方法是否有效高度依赖于下游任务。例如,一个简单的GPT可以获得最好的ELI5性能,但是得到最差的SQUAD结果。

Token的MASK机制很重要,调换句子顺序或者循环位移单独作用时表现很差,成功的方法要么使用了token删除或MASK,要么使用了自注意MASK,删除token的方式似乎在生成任务上优于MASK。

对于SQuAD任务而言双向编码很重要,单向解码器在SQuAD上表现不佳,因为基于上下文的预测对于分类决策问题很关键,然而,BART只需要一半的双向层数量就可以实现类似的性能。

纯语言模型在ELI5上表现最好,ELI5数据集是一个异常值,其复杂程度远远高于其他任务,也是唯一一个其他模型优于BART的生成任务。这表明当输出仅受输入的松散约束时,BART的效率较低。

BART实现了最强大的性能。除了ELI5之外,使用文本填充的BART模型在所有任务中都表现良好。

 

5 大规模预训练实验

当预训练和语料库规模大时,下游任务性能可以显著提高。为了测试BART在这种模式下的表现,并为下游任务创建一个有用的模型,我们使用与RoBERTa模型相同的规模来训练BART。

1)实验参数设置

编码器和解码器均为12层,隐藏层大小为1024,batch size为8000,epoch为500000。

2)判别任务实验

Table 2比较了BART和其他最新几种模型在SQuAD和自然语言理解(NLU)任务上的表现。

结果表明在NLU任务上与较基线RoBERTa模型比较效果持平。这表明BART在生成任务上的改进并不是以牺牲分类性能为代价的。

 

 

3)生成任务实验

摘要

对话生成

摘要式问答

 

 

 

4)翻译任务实验

 

 

posted @ 2022-11-01 10:49  silvan_happy  阅读(479)  评论(0编辑  收藏  举报