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

2019年《BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension》(BART)论文阅读笔记

摘要

  • BART:一种用于预训练序列到序列模型的去噪自动编码器
  • 通过以下两点训练
    1. 用任意噪声函数破坏文本
    2. 模型重构原始文本
  • 使用标准的基于transformer的机器翻译体系结构,可以看作是对BERT(双向编码器)、GPT(从左到右的解码器)的推广
  • 评估几种去噪方法,通过随机调整原始句子的顺序和使用一种新颖的填充方案(用单个掩码标记替换文本跨度),找到最佳性能
  • BART在针对文本生成进行微调时特别有效
  • 在GLUE和SQuAD的表现与RoBERTa相当
  • 为机器翻译提供了比back-translation高1.1%的BLEU,只需要预训练目标语言
  • 报告在BART框架内复制其他预训练方案的消融实验

介绍

  • 自监督方法在广泛的自然语言处理任务中取得了显著的成功,最成功的方法是去噪的自动编码器,被训练来重建文本,其中随机的单词被屏蔽

  • 本文提出BART,它预训练了一个结合双向和自回归transformer的模型

    • BART是一个去噪自动编码器,采用序列到序列模型构建
    • 预处理有两个阶段:文本被任意的噪声函数破坏、学习序列到序列模型来重构原始文本
  • BART使用标准的基于Tranformer的翻译架构,优点是噪音的灵活性:可以任意转换原始文本,包括改变其长度

  • 评估多种去噪方法,通过随机打乱原始句子的顺序和使用一种新颖的填充方案来找到最佳性能——文本的任意长度跨度(包括零长度)被替换为单个掩码标记——这迫使模型对整个句子长度进行更多的推理,对输入进行更长范围的变换,从而概括了BERT中的原始单词掩蔽和下一句预测目标

  • 效果好,和RoBERTa差不多

    image-20211123184530310

  • BART还开辟了思考微调的新方式。本文提出一种新的机器翻译方案,其中BART模型堆叠在几个额外的transformer层之上,这些层被训练成将外语翻译成有噪声的英文

模型

  • BART是一个去噪自动编码器,将损坏的文本映射到原始文本
  • 被实现为一个seq-seq模型:双向encoder和一个从左到右的自回归decoder
  • 预训练中优化原始文档的负对数似然(negative log likelihood)

架构

  • 使用标准的seq-seq架构(和transformer一样)
  • 将ReLU激活函数修改为GeLU
  • 从$N(0,0.02)$初始化参数
  • 对于BART-base基本模型,encoder和decoder中使用了6层;对于BART-large,encoder和decoder中使用12
  • 与BERT的架构差别:
    1. decoder的每一层都额外对encoder的最终隐藏层执行交叉关注(和transformer的seq-seq一样)
    2. BERT在单词预测之前使用额外的前馈网络,而BART没有
    3. BART包含的参数比同等大小的BERT多10%

预训练BART

  • BART的训练方法是破坏文本,然后优化重建损失——解码器输出和原始文档之间的交叉熵

  • BART允许应用任何类型的文本破坏——极端的情况下,关于源的所有信息都丢失了

  • 尝试了几个以前提出和新颖的转换,包括(具体可见下图):

    • Token masking:和BERT一样,随机的tokens被替换为[mask]
    • Token deletion:随机选择tokens,从输入中删除
    • Text infilling:从泊松分布($\lambda=3$)中采样多次,采样的值表明文本跨度, 每个跨度都被替换为[mask]——0长度跨度对应于插入[mask]。text infilling训练模型预测一个跨度中缺少多少token
    • Sentence permutation:文档根据句号被分成句子,句子以随机的顺序被打乱
    • Document Rotation:随机地选择一个token(服从均匀分布),旋转文档,使其从该标记开始。此任务训练模型识别文档的开始

    image-20211123220258197

微调BART

  • BART生成的representations可以应用于多个下游任务

序列分类任务

  • 相同的输入被同时送入encoder和decoder,取decoder最后一个block的最后一个token的隐藏层状态的特征向量,送入新的多类线性分类器
  • 类似与BERT中的CLS token,但额外的token添加到ends中,以便解码器中的令牌表示可以处理来自完整输入的解码器状态(见figure3 a)

token分类任务

  • 包括token序列分类、序列标注任务等
  • 文档同时送入encoder和decoder,使用decoder最后一个block的所有tokens序列的隐藏状态作为每个单词的表示,送入额外的多类线性分类器

句子生成任务

  • BART有一个自回归decoder,因此可以直接在下游任务中微调
  • 文本的序列索引编码被送入encoder,解码器decoder会以自回归的形式生成序列文本
  • 在微调阶段,decoder以自回归的形式生成文本时,所有文本的序列索引编码也会被输入进decoder中进行计算与指导,但在测试推理阶段,decoder则会以完全自回归的形式生成文本,只会有之前生成的所有文本的隐藏状态的特征表示向量输入进本次decoder的迭代中,以进行下一个token的生成(具体可参考GPT2模型的代码解析)

机器翻译

  • BART在Machine Translation下游任务中使用了一种新的微调方法:BART堆叠在其他几个额外的transformer层之上。额外的transformer层被称为randomly initialized encoder,在BART优化的同时进行反向传播优化
  • randomly initialized encoder实质上是在BART之前先将外语转换为带噪声的英语,相当于将整个BART视为一个预训练的目标方语言模型(pre-trained target-side language model),整个BART(包括encoder与decoder)都相当于一个翻译任务中的decoder
  • 新的微调的过程为
    • 去掉BART中encoder的embedding
    • randomly initialized encoder的权重参数采用随机初始化,randomly initialized encoder在BART之前对输入文档索引进行编码计算, 实质上利用randomly initialized encoder将输入的外语文本先投影为noised English的隐藏状态向量
      • randomly initialized encoder可以使用与BART分离的词汇表
      • randomly initialized encoder输出的noised English的隐藏状态特征向量被输入BART的encoder中计算,BART的encoder的计算结果再被输入BART的decoder中进行解码计算
    • randomly initialized encoder与BART的微调训练过程分为两步, 每一步都使用由BART的最终输出所计算得出的交叉熵损失来反向传播优化
      1. 只更新BART的encoder中第一层transformer block的自注意力(Masked_Multi_Self_Attention)层的参数、BART的位置嵌入参数(positional embeddings)、randomly initialized encoder中的参数
      2. 仅以小次数的迭代来更新额外编码器randomly initialized encoder与BART中的所有参数

image-20211123191134691

对比预训练方法

预训练方法

  • 与其他预训练模型对比,这里使用BART-base

  • 对比方法:

    • Language Model:类似GPT2的单向编码自回归模型,相当于decoder部分不加Cross attention

    • Permuted Language Model(xlnet):随机从原始输入中抽样六分之一的tokens,再以自回归的随机顺序生成这些tokens

    • Masked Language Model:随机将原始输入文本的15%的tokens替换为[mask],再训练mlm独立预测原始的tokens

    • Multitask Masked Language Model:仿照UniLM的方法,使用一个额外的self-attention masks矩阵(即用来mask注意力分数的矩阵)来训练模型。UniLM最核心的Self-attention Masks矩阵的用法如所示;对于一个batch的原始输入,利用self-attention masks:(1) 随机将六分之一的样本按从左向右的方向mask注意力分数;(2) 随机将六分之一的样本按从右向左的方向mask注意力分数;(3) 随机将三分之一的样本不进行mask;(4) 剩余的最后三分之一的样本中前50%的样本不mask,剩余的样本按从左向右的方向mask注意力分数

      img

    • Masked seq-seq:仿照MASS,随机在原始输入文本中选择一个文本片段(span)进行mask,该文本片段应包含原始输入文本中50%的tokens,之后会训练seq-seq形式的模型来预测(复原重建)这些被mask的文本片段中的tokens

结果

image-20211123224408818

  • SQuAD:将context和question连在一起输入encoder和decoder,输出的是context中的span
  • ELI5:抽象的问答,将context和question连在一起输入,模型输出抽象摘要文本
  • MNLI:2个句子连起输入encoder和decoder(中间[eos]分割),模型输出两个句子之间的关系
  • XSum:新闻摘要生成任务
  • ConvAI2:对话生成任务
  • CNN/DM:摘要生成任务

大规模预训练的实验

  • 在BART-large上实验
  • 判别式任务

img

  • 文本生成任务

    • 摘要生成

      img

    • 对话响应生成

      img

    • 抽象问答(Abstractive QA)

      img

    • 机器翻译(large版的transformer模型、预训练的BART、微调的BART)——Bart模型不使用回译增强数据集时,模型的机器翻译效果就会变得不太理想且模型还会容易过拟合

      img