文章提出一个预训练 sequence-to-sequence 的去噪自编码器:BART。BART 的训练主要由 2 个步骤组成:(1) 使用任意噪声函数破坏文本 (2)模型学习重建原始文本。BART 使用基于 Transformer 的标准神经机器翻译架构,可视为 BERT(双向编码器)、GPT(从左至右的解码器)等近期出现的预训练模型的泛化形式。
文中评估了多种噪声方法,最终发现通过随机打乱原始句子的顺序,再使用首创的新型文本填充方法(即用单个 mask token 替换文本片段,换句话说不管是被 mask 掉多少个 token,都只用一个特定的 mask token 表示该位置有 token 被遮蔽了)能够获取最优性能。BART 尤其擅长处理文本生成任务,不过在自然语言理解任务中也颇有可圈可点之处。
在同等训练资源下,BART 在 GLUE 和 SQuAD 数据集上的效果与 RoBERTa 不相伯仲,并在对话、问答和文本摘要等任务中斩获得新的记录。在机器翻译任务中,BART 在仅使用目标语言预训练的情况下,获得了比回译系统高出 1.1 个 BLEU 值的结果。此外,文章还使用控制变量法在 BART 框架内使用其他预训练机制,从而更好地评估影响下游任务性能的因素。
BART 结合双向(比如 BERT)和自回归(比如 GPT) Transformer 对模型进行预训练。BART 还参考了 GPT 中的激活函数,将 ReLU 也改为 GeLU。BART、BERT 和 GPT 之间的对比如 Figure1 所示。BART 的训练主要由 2 个步骤组成:(1) 使用任意噪声函数破坏文本 (2)模型学习重建原始文本。
BART 使用基于 Transformer 的标准神经机器翻译架构,可视为 BERT(双向编码器)、GPT(从左至右的解码器)等近期出现的预训练模型的泛化形式。
文中评估了多种噪声方法,最终发现通过随机打乱原始句子的顺序,再使用首创的新型文本填充方法(即用单个 mask token 替换文本片段,换句话说不管是被 mask 掉多少个 token,都只用一个特定的 mask token 表示该位置有 token 被遮蔽了)能够获取最优性能。BART 尤其擅长处理文本生成任务,不过在自然语言理解任务中也颇有可圈可点之处。
在同等训练资源下,BART 在 GLUE 和 SQuAD 数据集上的效果与 RoBERTa 不相伯仲,并在对话、问答和文本摘要等任务中斩获得新的记录。在机器翻译任务中,BART 在仅使用目标语言预训练的情况下,获得了比回译系统高出 1.1 个 BLEU 值的结果。此外,文章还使用控制变量法在 BART 框架内使用其他预训练机制,从而更好地评估影响下游任务性能的因素。
BART 的损失函数是 decoder 的输出与原始文本之间的交叉熵。与其他去噪自编码器(一般需要定制特定的噪声方案)不同的是 BART 可以使用任何的加噪方式。在极端情况下,源信息可以全部缺失,此时的 BART 就蜕化成了一个语言模型。文章中用到的加噪方案(即原始文本如何被破坏)如 Figure 2 所示。
具体来说主要有:(1)Token Masking:与 BERT 一样,BART 随机采样 token,并用 [MASK] 这一预定义的特殊 token 进行替换。(2)Token Deletion:从输入中随机删除 token。与 Token Masking 不同,模型必须同时确定输入中缺失的位置。(3)Text Infilling:采样多个文本片段,每个文本片段长度服从 λ = 3 的泊松分布。
每个文本片段用单个 [MASK] token 替换。从泊松分布中采样出长度为 0 的文本片段对应插入 [MASK] token。这种文本填充方法的思想源于 SpanBERT,但 SpanBERT 采样的文本片段长度服从的是几何分布,且用等长的 [MASK] token 序列替换掉文本片段。因此,BART 能够迫使模型学习到一个片段中所缺失的 token 数量。
(4)Sentence Permutation:这里的句子排列变换是指按句号将文档分割成多个句子,然后随机打乱这些句子。(5)Document Rotation:随机均匀地选择一个 token,再旋转文档使文档以该 token 作为起始。该任务的目的是训练模型识别文档开头。