BART和mBART


本文前置知识:

BART和mBART

本文是如下论文的阅读笔记和个人理解:

BART

Basic Idea

Transformer浑身都是宝, 相较于直接延续Transformer的Seq2Seq架构, 更广为使用的是把EncoderDecoder的单独堆叠, 分别对应着只使用Encoder的BERT和只使用Decoder的GPT. 如果只是单纯的使用其中的某一部分, 就会造成两个鸿沟:

  • BERT: 具备双向语言理解能力的却不具备做生成任务的能力.

  • GPT: 拥有自回归特性的却不能更好的从双向理解语言.

    因此, 作者希望将二者融合, 让模型保留双向语言理解能力的同时, 也能解决生成任务.

BART Model

BART(Bidirectional and Auto - Regressive Transformers)的结构非常的简单, 既然只使用Encoder或者只使用Decoder不能让鱼和熊掌兼得, 那就重新把它们组装回来:

左侧为BERT(Transformer Encoder), 右侧为GPT(Transformer Decoder).

所以BART采用的其实还是标准Transformer结构, 如果把Encoder和Decoder组装回来, 就又成了标准Transformer:

但是, BART所采用的输入数据训练目标和Transformer完全不一样, 换句话说, 作者希望BART所做的事情和Transformer是完全不一样的, 这也是BART与Transformer的最大区别.

作者指出, BART和BERT有两点最大的 不同:

  1. 除了对Encoder的堆叠外, 还使用了Decoder, 并添加了Encoder和Decoder之间的Cross Attention(其实就是结构和标准Transformer一样).
  2. BERT在预测时加了额外的FFN, 而BART没使用FFN. 整体来说, 包含了Decoder的BART只是比同级别的BERT多了10%的参数.

Pre - Training BART

BART使用的是类似BERT的Denoising AutoEncoder的形式来训练的, 即模型需要对被添加噪声的数据去噪, 恢复出原始数据.

我猜测, 之所以BART名字是仿照BERT, 而不是仿照Transformer最大原因, 是因为BERT和BART都是去噪自编码器, 而Transformer不是.

BART允许对原始数据做任意形式的噪声干扰, 作者提出了五种可行的添加噪声的方式:

  • Token Masking: 与BERT打[Mask]的策略完全相同.
  • Token Deletion: 直接随机删除某些Token.
  • Text Infilling: 同时选中多个连续的Token, 仅替换成一个[Mask], 或者在原始数据中随机插入Mask Token(即使没有数据缺失). 模型不知道[Mask]对应的是多少个Token, 也不知道[Mask]是否有效. 这就要求模型有强大的学习能力.
  • Sentence Permutation: 将一个文档中的句子之间的顺序打乱.
  • Document Rotation: 从文档中随机选定一个Token作为整个文档的起始Token, 对文档Rotation. 该方法令模型能识别文档的起始Token.

上述五种方式的示例如下:

即使有Decoder, 也不需要让Encoder和Decoder对应的部分对齐. 在极端情况下, 所有的原始信息都丢失了, 此时BART相当于Language Model. BART添加噪声的方式不单包含了Token Masking, 还包含了更为复杂的噪声, 它们也可以互相组合. 想从这些噪声中按照原语序恢复出句子还是非常困难的, 因为它们包含了缺失, 乱序的情况.

在输入加噪的数据后, BART先通过Encoder双向编码, 再通过Decoder用自回归极大似然解码, 恢复出原始序列.

Fine - Tuning BART

BART在预训练后, 需要对下游任务微调. 对于不同的任务, BART有不同的使用方法:

  • Sequence Classification: 对序列分类任务, Encoder和Decoder以相同的数据输入, 利用Decoder的最后一次输出代表整个句子的表示, 类似于BERT中的[CLS]. 只不过BART是有Decoder的, 所以需要让Decoder的输出作为整个句子的表示.

  • Token Classification: 对于Token分类任务, Encoder和Decoder也以相同的数据输入, BART也将Decoder中所对应Token的输出作为分类的隐藏状态.

  • Sequence Generation: 对于序列生成任务, BART直接适应生成任务, 对Encoder和Decoder微调即可. 该类任务包括文本摘要, 问答等.

  • Machine Translation: 机器翻译任务比较特殊, 因为它的任务输入和输出是两种不同的语言.

    结合先前在机器翻译上的研究, 额外添加一个专门用于外语映射的Encoder(例如其他语言映射到英语)将有助于模型性能的提升. 所以BART需要训练一个新的Encoder来将源语言与目标语言语义空间对齐, 来替代掉BART原来的Word Embedding, 在完成对齐后, BART将把源语言转换为目标语言, 与Transformer保持一致.

    训练分为了两个阶段:

    1. 一阶段中, 对BART的大多数参数冻结, 只更新随机初始化的源语言Encoder, BART的位置编码, BART Encoder的第一层Self - Attention投影矩阵.
    2. 二阶段中, 对整个BART(包含后来添加的Encoder)中的所有参数做少次迭代.

对于上述四种任务的处理概括为下图:

左侧为处理分类问题的示意图, 右侧为处理机器翻译的示意图.

Experiments

详细的实验设置请参照原论文.

Comparsion Pre - Training Objectives

作者做了各不同预训练目标的模型的效果对比, 这些模型并不是原始论文中的模型, 而是作者或多或少调整过的. 其中所使用的模型分别类似于:

  • Language Model: GPT.
  • Permuted Language Model: XLNet.
  • Masked Language Mode: BERT.
  • Multitask Masked Language Model: UniLM.
  • Masked Seq - to - Seq: MASS.

实验结果如下:

从实验中看到, 使用Text Infilling的效果非常好, 只使用Document Rotation和Sentence Shuffling的效果比较差. 并且, 预训练的有效性高度取决于任务, 自回归式的模型有利于解决生成类任务.

Discriminative Tasks

各类Large模型在SQuAD和GLUE上的结果如下:

RoBERTa和BART的表现相似, 但是BART能够在不牺牲性能的情况下将任务扩展到生成任务上, 这对BART来说是一个独天得厚的优势, 因为扩展只带来了将近10%的参数量增长.

Generation Tasks

Summarization

在摘要任务上的实验结果如下:

Dialogue

在对话任务上的结果如下:

Abstractive QA

抽象问答数据集上结果如下:

Machine Translation

在机器翻译任务上结果如下:

Baseline是标准Transformer. Fixed BART和Tuned BART分别代表单向翻译和使用反向翻译的BART. 没有反向翻译的BART效果不太好, 可能涉及到过拟合, 使用反向翻译后应该增强了泛化能力, 效果得到了改善.

反向翻译指的是, 将目标语言输入模型得到源语言的预测结果, 其中预测错误的内容将视为噪声, 将该预测结果再重新输入新的模型, 让它生成目标语言, 这是一种常见的文本数据增强方式.

mBART

但我不是MT方向的, 所以实验部分我只挑着看了比较关键的部分. 之所以把mBART也写在这篇文章中, 是因为mBART只是作为BART的多语言版本, 没有本质上的结构变化, 作者展示了一种基于BART处理机器翻译问题的方法, 比较有趣, 在本文中作为扩展内容.

mBART(Multilingual Bidirectional and Auto - Regressive Transformers)是BART的多语言版本, 用于处理不同语言之间的机器翻译问题.

mBART Model

mBART仍然是分为Pre - TrainingFine - Tuning两个阶段. Pre - Training将使用多个语种的语料作为预训练数据.

Pre - Training mBART

预训练阶段延续了BART的做法, 仍然采用Denoising AutoEncoder的方法令mBART的每条数据在单语言内训练. 目标是将单语言文本加噪干扰后再恢复回来. 作者采取了两种BART中的加噪方式:

  • Sentence Permutation: 打乱句子和句子之间的顺序.
  • Word - Span masking: 连续的Mask掉一些内容, 并且只用一个[Mask]替换.

除此外, mBART的初衷是多语言模型, 必须将语种的信息加入. 在文本输入结束后, 在句子末尾处需要加上句子结尾标识<\s>和对应语言的标识[LID].

Fine - Tuning mBART

微调阶段才针对机器翻译任务训练. 用[LID]替换Decoder原来的第一个输入[Start], 表明要翻译成哪个语种.

Sentence Level MT和Document Level MT的主要区别就在于文本的长度不同, Document Level MT更困难一些.

上述方法概括为下图:

左侧为预训练阶段, 每条数据使用单语言文本并加噪, mBART将其恢复为原来的单语言文本. 右侧为微调阶段, 针对某两种语言之间做微调, 输入为源语言, 期望输出为目标语言, Decoder的首次输入为目标语言的<LID>.

Language Transfer

作者额外提出了一种新的语言迁移的无监督机器翻译方式.

常见的的反向翻译示意图如下:

先用预训练权重初始化翻译模型, 然后对目标语言到源语言的翻译模型做训练, 生成源语言的文本作为扩充数据, 再将之前的平行语料和新生成源语言的文本共同作为训练数据, 训练源语言到目标语言的模型.

而作者提出的语言迁移方法如下:

直接在预训练阶段就注入多语言的平行语料, 使得模型能学习到不同语种之间潜在的共性, 在Fine Tuning后, 直接就能应对相似语种的翻译任务.

Experiments

详细的实验设置请参照原论文.

文中mBART25代表用25种语言预训练出的mBART. 文章中实验所涉及到的语言代码分别如下:

在低资源数据集上结果如下:

Random代表不对每种翻译任务使用预训练, 直接在该任务上训练. mBART25效果要好.

在高资源数据集上结果如下:

结果显示, 当数据集大小增加后, 不做预训练的效果反而是要好一点, mBART和Random表现相近.

作者尝试了不同语种到英文的Fine Tuning, 并使用不同的Testting Language观察不同Fine Tuning Language对最终结果的影响:

灰色的部分为同一个语系中的语言.

这个表格意味着:

  • 主对角线上Fine Tuning时所采用的语料为X-EN, Testing时测试的任务为X-X.
  • 同一X轴上代表使用的Fine Tuning Language相同(X-EN), 但采用了不同的Testing Language.
  • 同一Y轴上代表采用了不同的Fine Tuning Language, 但使用的Testing Language相同(X-X).

除去翻译最好的是自己的语言外, 次优的一般都是同一语系下的其他语言. 确实说明了语言之间存在一定的共性.

Summary

BART算是BERT和GPT的集大成者, 它的结构和标准Transformer一致, 但与Transformer不同点在于数据输入训练目标, 以自回归式去噪自动编码器的形式存在.

因为使用了Transformer Decoder, 使得BART具有了BERT不具备的处理生成任务的能力, 实验结果表明, 没有损失性能, 也没有添加过多的参数.

作者尝试了包括Masking在内的多种噪声的添加方式, 这些噪声的干扰非常强大, 强制要求模型也要有与之匹配的预测能力.

mBART作为BART多语言版本, 给出了一种基于BART的多语言机器翻译上的处理思路, 也揭示了机器翻译中同一语系下不同语种之间的一些潜在共性.


文章作者: DaNing
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 DaNing !
评论
 上一篇
StructBERT: Incorporating Language Structures into Pre-training for Deep Language Understanding StructBERT: Incorporating Language Structures into Pre-training for Deep Language Understanding
本文前置知识: BERT: 详见ELMo, GPT, BERT. StructBERT: Incorporating Language Structures into Pre-training for Deep Language U
2021-05-04
下一篇 
GAKE: Graph Aware Knowledge Embedding GAKE: Graph Aware Knowledge Embedding
GAKE: Graph Aware Knowledge Embedding本文是论文GAKE: Graph Aware Knowledge Embedding的阅读笔记和个人理解. Basic Idea在现有的KGE方法中, 都是基于三元组
2021-04-18
  目录