BART和MASS都是2019年发布的,面向生成任务,基于Transformer神经翻译结构的序列到序列模型。分别由Facebook 和微软亚洲研究院提出。他们都对encoder输入的屏蔽(mask)方式进行了改进,并且在生成任务的效果也都比之前有了不少提升。让我们花10分钟来一起来看看这两个模型吧。 两个模型都是以Transformer的神经翻译模型作为基础结构,而Transformer的encoder-decoder结构(图 1)的具体讲解可以参考上一篇文章。
图(1) Transformer的encoder-decoder结构
MASS
Masked Sequence to Sequence Pre-training for Language Generation
任务类型
面向自然语言生成任务(神经机器翻译、文本摘要和会话响应生成等)的预训练模型。
模型结构
MASS 是一个基于Transformer的序列到序列模型,由attention将encoder和decoder 连接在一起。相比基础的Transformer结构,MASS的不同为:它的encoder的输入是被随机屏蔽了一个长度为k的连续片段的句子(图 2 左侧)。decoder来预测这个被屏蔽的片段,其中decoder的输入会屏蔽在encoder中没有被屏蔽掉的token(图 2 右侧)。
图(2) MASS的encoder-decoder结构,其中“-”表示被屏蔽掉的token
举例说明: 图 2 中,encoder端的输入中,第3-6个token被屏蔽掉,而decoder只预测这3-6这几个连续的token,而屏蔽掉其它token。这里会引入一个超参数 k(被屏蔽的连续文段的长度占句子总长度的百分比),通过参数k可以对模型进行灵活的调整。
这种设计的优势有:
超参数 k
这里单独把超参数k拎出来讲,是因为参数k的设计使得MASS模型可以被看作一个统一的预训练框架,BART(k =1)和GPT(k=m)都可以被包含在这种框架里面。这里 k 是指被屏蔽的连续文段的长度占句子总长度的百分比,除此之外,再加上 k = 1 和 k = m (m 为句子长度)。
图(3) k=1 --> BERT
这时decoder输入为空,可视为一个非线性分类器,类似于BERT中使用的softmax矩阵,MASS类似于由Transformer encoder 块累加起来的BERT。
图(4) k=m --> GPT
这时encoder输入为空,没有信息输入到encoder中,MASS类似于由Transformer decoder 块累加起来的GPT。
在翻译任务,摘要任务以及对话相应生成任务上的实验结果表明,k = 50%时,模型效果最好。因为此时encoder和decoder之间达到一个很好的平衡,如果encoder或者decoder端的输入token太少,会造成模型偏向某一边,不利于encoder-decoder框架提取encoder中的句子表示以及在decoder中建模和生成句子的语言生成任务。
BART
Denoising Sequence-to-Sequence Pre-training for
Natural Language Generation, Translation, and Comprehension
任务类型
BART是一个面向自然语言生成、翻译和理解任务的 序列到序列 预训练 降噪自编码器(降噪自编码器的原理在公众号介绍UniLM 2.0有具体讲解)。它的训练分为(1)用任意的噪声函数(选择被屏蔽token的方法)来破坏输入文本。(2)训练模型重现未被破坏的文本。
模型结构
和MASS一样,BART也是基于标准Transformer神经翻译模型的网络结构(做了一点改动,参考GPT,将激活函数ReLU换成 GeLUs),同样也是在选择被屏蔽token的方法(噪声函数)上进行了改变(图 5)。不同于MASS的是,BART对decoder没有进行改变。
图(5)BART模型结构,“-”表示被屏蔽的token
噪声函数:
图(6)添加噪声的方法,这些方法可以组合
特点:
不同于一些只能针对特定的噪声的降噪自编码器,BART可以使用任意的方法去破坏文档,最极端的情况下,源文本信息全部丧失,BART这时就相当于一个语言模型。
微调
BART生成的表达可以用通过多种方式,用于下游应用。
结果
在 SQuAD(抽取式问答的任务)MNLI(推理任务)ELI5(抽象问题回答生成任务)XSum(摘要生成任务)ConvAI2(对话反应生成任务)CNN/DM(摘要生成任务)等数据集上进行测试, 不同的噪声函数结果差距比较大,总结可以得到以下的结论:
体会
BART和MASS对生成任务的效果都有提升。MASS专注于生成任务,BART在保证理解任务性能的前提下,生成任务的结果也得到提升。总体来看,这两个模型有相似也有不同,MASK的方式对预训练模型的结果影响很大。
论文代码
MASS文章:https://arxiv.org/pdf/1905.02450.pdf
MASS代码:https://github.com/microsoft/MASS
BART文章:https://arxiv.org/pdf/1910.13461.pdf
BART代码:huggingface的transformer库最近更新了BART模型。
参考资料
[1] BART \ Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension(2019)
[2] MASS \ Masked Sequence to Sequence Pre-training for Language Generation(2019)
[3] Transformer \ Attention Is All You Need (2017)
[4] Span-BERT \ Improving Pre-training by Representing and Predicting Spans()