首页 > 其他分享 >BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and

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

时间:2022-11-01 10:55:54浏览次数:83  
标签:Pre BERT training BART Sequence 模型 任务 xx GPT

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)翻译任务实验

 

 

标签:Pre,BERT,training,BART,Sequence,模型,任务,xx,GPT
From: https://www.cnblogs.com/zhouyeqin/p/16846965.html

相关文章

  • 探究Presto SQL引擎(4)-统计计数
    作者:vivo互联网用户运营开发团队- ShuaiGuangying本篇文章介绍了统计计数的基本原理以及Presto的实现思路,精确统计和近似统计的细节及各种优缺点,并给出了统计计数在......
  • sql server 即席查询(ad hoc query)与预定义语句(prepared statement)
    在SQLServer中预定义语句(PreparedStatement)与即席查询(AdHocQuery)是啥区别呢?其实官方文档甚至没有一个非常明确的定义说明,像Oracle、MySQL等其它数据库,也没有即席查询......
  • 人工智能 之 NLP的Precision(查准率,精确率),Recall(查全率,召回率),Accuracy(准确率)
    目录​​〇、推荐​​​​一、简述​​​​二、罗里吧嗦​​​​三、精确率、召回率、F1​​​​四、AP和mAP(meanAveragePrecision)​​​​五、ROC和AUC​​​​六、总......
  • Cannot initialize Cluster. Please check your configuration for mapreduce.framewo
    背景利用ambari搭建的新环境,跑数据出现了不少问题,但如下问题困扰了很长时间,直到今天才得以解决,每次报错。按照网上的各种方式都不行。我知道问题点肯定在spark2.3.1集成h......
  • not present in DVTPlugInCompatibilityUUIDs
    2022-10-3117:24:38.827xcodebuild[43498:351656][MT]PluginLoading:Requiredplug-incompatibilityUUID57505DC8-7C02-42C5-9C44-13FD1CB92B41forplug......
  • [Typescript] 83. Medium - Subsequence
    Givenanarrayofuniqueelements,returnallpossiblesubsequences.Asubsequenceisasequencethatcanbederivedfromanarraybydeletingsomeornoeleme......
  • web服务器8express
    //express和node.js内置的http模块类似,是专门用来创建web服务器的//express是一个第三方的包//express是基于http内置模块封装出来的包,能提升开发效率//web服务器分......
  • MYSQL - Warning: #1681 Integer display width is deprecated
    ​​MYSQL-Warning:#1681Integerdisplaywidthisdeprecated​​mysql8.0不支持,这里就不要使用Int了,换成`id`bigintNOTNULLAUTO_INCREMENT, ......
  • Hadoop MapReduce
    HadoopMapReduce理解mapreduce思想核心:分而治之先分再合两个阶段map阶段(分):如果任何可以拆分并且没有依赖那么就把复杂的任务拆分成小任务拆分成小任务之后可以并行计算......
  • 【XSY4191】sequence(分块,线段树)
    题面sequence题解考虑把原序列每\(k\)位分成一段,然后对于每一段维护起点在这一段中的最小值。先考虑询问,对于起点在中间的整段我们直接线段树查区间最小值,现在考虑两......