Transformer的细节和效果如何

描述

在文本理解任务(Natural Language Understanding)上,预训练模型已经取得了质的飞跃,语言模型预训练+下游任务fine-tune基本上已经成为标配。

很多人曾经尝试将 BERT 等预训练语言模型应用于文本生成任务(Natural Language Generation),然而结果并不理想。究其原因,是在于预训练阶段和下游任务阶段的差异。

BART这篇文章提出的是一种符合生成任务的预训练方法,BART的全称是Bidirectional and Auto-Regressive Transformers,顾名思义,就是兼具上下文语境信息和自回归特性的Transformer。那么它的细节和效果如何呢,就让我们一起来看看吧

论文名称:《BART: Denoising Sequence-to-Sequence Pre-training for NaturalLanguage Generation, Translation, and Comprehension》

论文链接:https://arxiv.org/pdf/1910.13461.pdf

1. 从GPT,BERT到BART

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

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

Transformer表1. GPT和BERT的对比

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

Transformer图1. BERT、GPT和BART对比

1.1. 关于BART的讨论

Loss Function 就是重构损失, 也就是decoder的输出和原文ground truth之间的交叉熵。

BART 的结构在上图中已经很明确了:就是一个BERT+GPT的结构;但是不同之处在于(也是作者通篇在强调的),相对于BERT中单一的noise类型(只有简单地用[MASK] token进行替换这一种noise),BART在encoder端尝试了多种noise。其原因和目的也很简单:

BERT的这种简单替换导致的是encoder端的输入携带了有关序列结构的一些信息(比如序列的长度等信息),而这些信息在文本生成任务中一般是不会提供给模型的。

BART采用更加多样的noise,意图是破坏掉这些有关序列结构的信息,防止模型去“依赖”这样的信息。

1.2. BART中的多种Noise

Token Masking: 就是BERT的方法----随机将token替换成[MASK]。

Token Deletion: 随机删去token。

Text Infilling: 随机将一段连续的token(称作span)替换成一个[MASK],span的长度服从 的泊松分布。注意span长度为0就相当于插入一个[MASK]。

Sentence Permutation: 将一个document的句子打乱。

Document Rotation: 从document序列中随机选择一个token,然后使得该token作为document的开头。

Transformer表2. 不同noise及其作用

注意这里不同的noising变换方式还可以组合。

2. BART在下游任务上的应用

2.1. Sequence Classification Task

将该序列同时输入给encoder端和decoder端,然后取decoder最后一个token对应的final hidden state作为label,输入给一个线性多分类器。

Transformer图2. BART用于序列分类任务

注意在序列的最后要加一个token,保证seq2seq模型输出的label包含序列中每一个token的信息,这是因为decoder的输入是right-shifted的,不这样做的话label将不包含最后一个token的信息。

2.2. Token Classification Task

这一类问题意思是,将序列的所有token都看作独立的选项,序列长度为M,那么选项的个数就是M,在序列的所有token中选择k个。属于这类的经典问题有SQuAD,即answer endpoint classification

将该序列同时输入给encoder端和decoder端,使用decoder的final hidden states作为每个token的向量表征,该向量表征作为分类问题的输入,输入到分类系统中去。

2.3. Sequence Generation Task

由于BART本身就是在sequence-to-sequence的基础上构建并且预训练的,它天然比较适合做序列生成的任务,比如概括性的问答,文本摘要,机器翻译等。

2.4. Machine Translation

具体的做法是将BART的encoder端的embedding层替换成randomly initialized encoder,新的encoder也可以用不同的vocabulary

通过新加的Encoder,我们可以将新的语言映射到BART能解码到English(假设BART是在English的语料上进行的预训练)的空间。具体的finetune过程分两阶段:

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

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

Transformer图3. BART用于机器翻译

3. 实验1: 不同预训练目标的比较

论文对不同的pretrain objective,在多个下游任务上进行了比较严谨详尽的实验对比。模型结构: Transformer-base。

不同的Pre-train Objective有:

GPT: (Auto-Regressive) Language model

XLNET: Permuted Language Model

BERT: Masked Language Model

UniLM: Multitask Masked Language Model

MASS: Masked Seq-to-Seq

对比实验涉及的下游任务有:

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

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

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

XSum: 新闻摘要生成任务

ConvAI2: 对话生成任务

CNN/DM:摘要生成任务

Transformer

3.1 结论

不同预训练方法各有千秋,在不同下游任务上的效果差异很大:比如说Language Model在ELI5任务上最好,但是在SQuAD任务上是最差的。

BART预训练中的Token Masking作用很关键:Token Masking包括Token Masking,Token Deletion,Text Infilling。从表中可以看出,只做Document Rotation / Sentence Shuffling的预训练模型效果很差。另外,Deletion比Masking效果好。

Transformer

Left-to-Right Pretraining会提升生成任务的效果:和Masked Language Model和Permuted Language Model相比,包含Left-to-Right预训练的模型在生成任务上表现更好。

TransformerMasked Language Model和Permuted Language Model相比于包含Left-to-Right Auto-regressive Pre-training的模型,在生成任务上明显表现要差一些

双向的encoder对于SQuAD任务很重要

ELI5任务上单纯的Language Model (Left-to-Right AR Language Model)表现最好,一个可能的解释是该任务的输出和输入关系不大,因此BART没有优势。

预训练目标不是唯一的重要因素,比如表中的Permuted Language Model的效果不如XLNet,作者提到,可能的原因有XLNet中有一些结构上的改进(比如relative-position embedding和segment-level recurrence)

4. 实验2: 大规模实验

实验发现,在discriminative任务(NLU)上和RoBERTa/XLNet效果持平,在生成任务上显著高于BERT, UniLM, XLNet, RoBERTa等模型

4.1. Discriminative Tasks

BART并没有因为单向的decoder而影响在文本理解类任务上的效果:

Transformer

4.2. Generation Tasks

BART得益于单向的decoder,在三大类生成任务上效果拔群

摘要生成:

Transformer摘要任务上的对比

对话生成:

Transformer对话生成任务上的对比

抽象问答

Transformer抽象问答任务上的对比

4.3. 翻译

Transformer

  
      审核编辑:彭静
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分