来源:ACL 2020
下载地址:https://aclanthology.org/2020.acl-main.703.pdf
Abstract
我们提出了 BART,一种用于预训练序列到序列模型的去噪自动编码器。
BART 通过以下方式进行训练:(1) 使用任意噪声函数破坏文本。(2) 学习模型来重建原始文本。 它使用标准的基于 Transformer 的机器翻译架构,尽管它很简单,但可以看作是对 BERT(由于双向编码器)、GPT(使用从左到右解码器)和其他最近的预训练方案的泛化。我们评估了许多噪声方法,通过随机打乱句子的顺序和使用新颖的填充方案来找到最佳性能,其中文本的跨度被单个掩码标记替换。BART 在针对文本生成进行微调时特别有效,但也适用于理解任务。它与 RoBERTa 在 GLUE 和 SQuAD 上的性能相匹配,并在一系列抽象对话、问答和摘要任务上取得了新的最先进的结果,增益高达 3.5 ROUGE。BART 还为机器翻译提供了比回译系统提高 1.1 BLEU 的功能,并且只对目标语言进行了预训练。 我们还在 BART 框架内复制了其他预训练方案,以了解它们对最终任务性能的影响。
Introduction
自监督方法在广泛的 NLP 任务中取得了显着的成功。最成功的方法是掩蔽语言模型的变体,它们是去噪自动编码器,经过训练可以重建文本,其中单词的随机子集已被掩蔽。最近的工作通过改善特定类型的最终任务(例如跨度预测、生成等)的分布而显示出收益,从而限制了它们的适用性。
在本文中,我们介绍了 BART,它预训练了一个结合双向和自回归 Transformer 的模型。 BART 是一种使用序列到序列模型构建的去噪自动编码器,适用于非常广泛的最终任务。 预训练有两个阶段(1)文本被任意噪声函数破坏,(2)学习序列到序列模型来重建原始文本。 BART 使用标准的基于 Tranformer 的神经机器翻译架构,尽管它很简单,但可以看作是对 BERT(由于双向编码器)、GPT(使用从左到右解码器)和许多其他最近的预训练方案的泛化 (见图 1)。
图 1:BART 与 BERT(Devlin 等人,2019 年)和 GPT(Radford 等人,2018 年)的示意图比较。
这种设置的一个关键优势是噪声灵活性。 可以对原始文本应用任意转换,包括更改其长度。 我们评估了许多噪声方法,通过随机打乱原始句子的顺序和使用新颖的填充方案找到最佳性能,其中任意长度的文本跨度(包括零长度)被替换为单个掩码标记。 这种方法通过强制模型更多地推理整个句子长度并对输入进行更长范围的转换,从而概括了 BERT 中的原始单词掩码和下一句预测目标。BART 在针对文本生成进行微调时特别有效,但也适用于理解任务。
BART 还开辟了微调的新思路。 我们提出了一种新的机器翻译方案,其中 BART 模型堆叠在几个额外的 Transformer 层之上。 这些层经过训练,通过 BART 传播,基本上将外语翻译成带噪音的英语,从而使用 BART 作为预训练的目标端语言模型。
Model
BART 是一种去噪自动编码器,可将损坏的文档映射到其来源的原始文档。它被实现为一个序列到序列模型,在损坏的文本上具有一个双向编码器和一个从左到右的自回归解码器。 对于预训练,我们优化原始文档的负对数似然。
Architecture
BART 使用来自 (Vaswani et al., 2017) 的标准序列到序列 Transformer 架构,除了参照 GPT ,我们将 ReLU 激活函数修改为 GeLUs (Hendrycks & Gimpel, 2016) 并从 N ( 0 , 0.02 ) \mathcal N(0,0.02) N(0,0.02) 初始化参数。对于我们的基本模型,我们在编码器和解码器中使用 6 层,而对于我们的大型模型,我们在每个中使用 12 层。
该架构与 BERT 中使用的架构密切相关,但有以下区别:(1)解码器的每一层额外对编码器的最终隐藏层执行交叉注意(如在 Transformer 序列到序列模型中); (2) BERT 在单词预测之前使用了一个额外的前馈网络,而 BART 没有。 总的来说,BART 包含的参数比同等大小的 BERT 模型多出大约 10%。
Pre-training BART
BART 的训练方法是破坏文档,然后优化重构损失——解码器输出与原始文档之间的交叉熵。与针对特定噪声方案定制的现有去噪自动编码器不同,BART 允许我们应用任何类型的文档损坏。 在极端情况下,关于源的所有信息都丢失了,BART 相当于一个语言模型。
我们使用的转换总结如下,示例如图 2 所示。
图 2:我们试验的输入噪声的转换。 可以组合这些变换。
Token Masking
和 BERT (Devlin et al., 2019) 一样,随机标记被采样并替换为 [MASK] 元素。
Token Deletion
从输入中删除随机标记。 与 token 掩码相反,模型必须确定哪些位置缺少输入。
Text Infilling
对许多文本跨度进行采样,跨度长度从泊松分布 (λ = 3) 中得出。 每个跨度都替换为单个 [MASK] 标记。 0 长度跨度对应于 [MASK] 标记的插入。 文本填充的灵感来自 SpanBERT(Joshi 等人,2019),但 SpanBERT 从不同分布中采样跨度长度,并用长度完全相同的 [MASK] 标记序列替换每个跨度。 文本填充教模型预测跨度中缺少多少标记。
Sentence Permutation
文档根据句号分为句子,这些句子以随机顺序打乱。
Document Rotation
一个 token 是随机均匀选择的,并且文档被旋转以使其以该 token 开始。 此任务训练模型以识别文档的开头。
Fine-tuning BART
Sequence Classification Tasks
对于序列分类任务,相同的输入被馈送到编码器和解码器,最终解码器 token 的最终隐藏状态被馈送到新的多类线性分类器。 这种做法与BERT中的 CLS token 有关; 但是,我们将附加 token 添加到末尾,以便解码器中 token 的表示可以关注来自完整输入的解码器状态(图 3a)。
图 3:微调 BART 以进行分类和翻译。
Sequence Generation Tasks
因为 BART 有一个自回归解码器,它可以直接针对序列生成任务进行微调,例如抽象问答和摘要。在这两个任务中,信息都是从输入中复制但被操纵的,这与去噪预训练目标密切相关。 这里,编码器输入是输入序列,解码器自回归生成输出。
Machine Translation
以前的工作表明,可以通过合并预训练的编码器来改进模型,但在解码器中使用预训练的语言模型的收益有限。 我们表明,通过添加一组从 bitext 学习的新编码器参数,可以将整个 BART 模型(编码器和解码器)用作机器翻译的单个预训练解码器(参见图 3b)。
更准确地说,我们用一个新的随机初始化编码器替换了 BART 的编码器嵌入层。该模型是端到端训练的,它训练新的编码器将外来词映射到 BART 可以去噪到英语的输入中。 新编码器可以使用与原始 BART 模型不同的词汇表。
我们分两步训练源编码器,在这两种情况下都从 BART 模型的输出反向传播交叉熵损失。 第一步,我们冻结了大部分 BART 参数,只更新随机初始化的源编码器、BART 位置嵌入和 BART 编码器第一层的自注意力输入投影矩阵。 在第二步中,我们为少量迭代训练所有模型参数。
Comparing Pre-training Objectives
BART 在预训练期间支持比以前的工作更广泛的噪声方案。 我们使用基本尺寸模型(6 个编码器和 6 个解码器层,隐藏尺寸为 768)比较了一系列对象。
Comparison Objectives
我们重新实现了最近为判别和生成任务提出的强大的预训练方法。 我们的目标是尽可能控制与预训练目标无关的差异。 但是,我们确实对学习率和层归一化的使用进行了微小的更改,以提高性能(针对每个目标分别调整这些)。 作为参考,我们将我们的实现与 BERT 发布的数字进行了比较,BERT 还结合书籍和维基百科数据进行了 100 万步的训练。
我们比较以下方法:
Language Model
与 GPT (Radford et al., 2018) 类似,训练了一个从左到右的 Transformer 语言模型。 该模型相当于 BART 解码器,没有交叉注意。
Permuted Language Model
基于 XLNet (Yang et al., 2019),我们对 1/6 的 token 进行采样,并以自回归的随机顺序生成它们。 为了与其他模型保持一致,我们没有在 XLNet 中跨段实现相对位置嵌入或注意力。
Masked Language Model
基于 BERT (Devlin et al., 2019) ,我们用 [MASK] 符号替换了 15% 的标记,并训练模型独立预测原始标记。
MultiTask Masked Language Model
与 UniLM (Dong et al., 2019) 一样,我们训练了一个带有额外自注意力掩码的掩码语言模型。 自注意力掩码按以下比例随机选择:1/6 从左到右,1/6 从右到左,1/3 未掩码,1/3 前 50% 的标记未掩码,其余部分从左到右掩码。
Masked Seq-to-Seq
对于 Permuted LM、Masked LM 和 Multitask Masked LM,我们使用双流注意力 (Yang et al., 2019) 来有效计算序列输出部分的似然性(在输出上使用对角自注意力掩码来预测从左到右的单词)。
我们尝试(1)将任务视为标准的序列到序列问题,其中编码器的源输入和目标是解码器的输出,或(2)将源作为前缀添加到解码器中的目标, 仅在序列的目标部分有损失。 我们发现前者更适合 BART 模型,后者更适合其他模型。
为了最直接地比较我们的模型对微调目标(人类文本的对数似然)建模的能力,我们在表 1 中报告了困惑度。
表 1:预训练目标的比较,包括受 BERT、MASS、GPT、XLNet 和 UniLM 启发的方法。 所有模型的大小都与 BERT Base 相似,并且在相同数据上经过 1M 步训练。 底部两个块中的条目使用相同的代码库在相同的数据上进行训练,并使用相同的程序进行微调。 第二块中的条目受到先前工作中提出的预训练目标的启发,但已被简化为专注于评估目标。 不同任务的性能差异很大,但带有文本填充的 BART 模型表现出最稳定的性能。
Tasks
SQuAD(Rajpurkar et al., 2016) 维基百科段落的抽取式问答任务。 答案是从给定文档上下文中提取的文本范围。与 BERT (Devlin et al., 2019) 类似,我们使用连接的问题和上下文作为 BART 编码器的输入,并将它们另外传递给解码器。 该模型包括用于预测每个标记的开始和结束索引的分类器。
MNLI(Williams et al., 2017),一种双文本分类任务,用于预测一个句子是否包含另一个句子。微调模型将两个句子与附加的 EOS 令牌连接起来,并将它们传递给 BART 编码器和解码器。 与 BERT 相比,EOS 令牌的表示用于对句子关系进行分类。
ELI5(Fan et al., 2019),一个长形式的抽象问答数据集。 模型根据问题和支持文档的连接生成答案。
XSum(Narayan et al., 2018),一个具有高度抽象摘要的新闻摘要数据集。
ConvAI2(Dinan et al., 2019),一个对话响应生成任务,以上下文和用户画像为条件。
CNN/DM(Hermann et al., 2015),一个新闻摘要数据集。 这里的摘要通常与源语句密切相关。
Results
Performance of pre-training methods varies significantly across tasks
预训练方法的有效性高度依赖于任务。 例如,一个简单的语言模型实现了最好的 ELI5 性能,但最差的 SQuAD 结果。
Token masking is crucial
基于旋转文档或置换句子的预训练目标在孤立的情况下表现不佳。 成功的方法要么使用令牌删除或掩码,要么使用自注意力掩码。 在生成任务上,删除似乎胜过掩蔽。
Left-to-right pre-training improves generation
Masked Language Model 和 Permuted Language Model 在生成方面的表现不如其他语言模型,并且是我们认为的唯一在预训练期间不包括从左到右自回归语言建模的模型。
Bidirectional encoders are crucial for SQuAD
正如之前的工作(Devlin 等人,2019)所指出的,只是从左到右的解码器在 SQuAD 上表现不佳,因为未来的上下文在分类决策中至关重要。 但是,BART 仅用一半的双向层数即可实现类似的性能。
The pre-training objective is not the only important factor
我们的置换语言模型表现不如 XLNet (Yang et al., 2019)。 这种差异的一部分可能是由于不包括其他架构改进,例如相对位置嵌入或段级递归。
Pure language models perform best on ELI5
ELI5 数据集是一个异常值,比其他任务具有更高的困惑度,并且是唯一一个其他模型优于 BART 的生成任务。 纯语言模型表现最好,这表明当输出仅受输入松散约束时,BART 效率较低。
BART achieves the most consistently strong performance.
除了 ELI5,使用文本填充的 BART 模型在所有任务上都表现良好。
Discriminative Tasks
表 3 和表 2 比较了 BART 与最近在经过充分研究的 SQuAD 和 GLUE 任务上的几种方法的性能。
最直接可比的基线是 RoBERTa,它使用相同的资源进行了预训练,但目标不同。 总体而言,BART 的表现相似,在大多数任务上模型之间只有很小的差异。 表明 BART 对生成任务的改进并不以牺牲分类性能为代价。
表 2:大型模型在 GLUE 任务上的结果。 BART 的性能与 RoBERTa 和 XLNet 相当,这表明 BART 的单向解码器层不会降低判别任务的性能。
表 3:BART 在问答方面给出了与 XLNet 和 RoBERTa 相似的结果。
Generation Tasks
对于文本生成任务,BART 被微调为从输入到输出文本的标准序列到序列模型。 在微调期间,我们使用标签平滑交叉熵损失 (Pereyra et al., 2017),平滑参数设置为 0.1。在生成过程中,我们将波束大小设置为 5,在波束搜索中删除重复的三元组,并在验证集上使用 min-len、max-len、长度惩罚来调整模型(Fan et al., 2017)。
Summarization
为了与摘要中的最新技术进行比较,我们展示了两个摘要数据集 CNN/DailyMail 和 XSum 的结果,它们具有不同的属性(表 4)。
表 4:两个标准汇总数据集的结果。 BART 在任务和所有指标的总结方面都优于以前的工作,包括基于大规模预训练的那些。
CNN/DailyMail 中的摘要往往类似于源语句。 提取模型在这里做得很好,甚至前三个源句的基线也很有竞争力。 然而,BART 优于所有现有工作。相比之下,XSum 是高度抽象的,而抽取模型表现不佳。 BART 在所有 ROUGE 指标上的表现都比基于 RoBERTa 的最佳先前工作高出大约 3.5 分——代表了在这个问题上的性能显着进步。
我们还进行人工评估(表 5)。 注释者被要求从两个摘要中选择一个更好的一个段落。 一个摘要来自 BART,另一个是人类参考或 BERTSUMEXTABS 模型的公开输出。与自动化指标一样,BART 明显优于之前的工作。 但是,它在这项任务上还没有达到人类的表现。
表 5:对 XSum 的人工评估:BART 摘要优于以前工作的摘要,而不是人工编写的参考摘要。
Dialogue
我们在 CONVAI2(Dinan 等人,2019 年)上评估对话响应生成,其中代理必须根据先前的上下文和文本指定的角色生成响应。 BART 在两个自动化指标上的表现优于以前的工作。
表 6:BART 在会话响应生成方面优于以前的工作。 Perplexities 基于 ConvAI2 的官方标记器重新规范化。
Abstractive QA
我们使用最近提出的 ELI5 数据集来测试模型生成长自由形式答案的能力。 我们发现 BART 比之前最好的工作高出 1.2 ROUGE-L,但数据集仍然具有挑战性,因为问题的答案只是微弱地指定。
表 7:BART 在具有挑战性的 ELI5 抽象问答数据集上取得了最先进的结果。
Translation
我们还评估了 WMT16 罗马尼亚英语的性能,并使用 Sennrich 等人的回译数据进行了扩充。 我们使用 6 层转换器源编码器将罗马尼亚语映射为 BART 能够将噪声消除为英语的表示。
实验结果如表 8 所示。我们将我们的结果与 baseline Transformer 架构(Vaswani 等人,2017)和 Transformer-large 设置(baseline行)进行比较。 我们在固定 BART 和调整 BART 行中展示了我们模型的两个步骤的性能。 对于每一行,我们都在原始 WMT16 罗马尼亚语-英语上进行了实验,并增加了回译数据。 我们使用 5 的波束宽度和 α = 1 的长度惩罚。初步结果表明,我们的方法在没有反向翻译数据的情况下效率较低,并且容易过度拟合——未来的工作应该探索额外的正则化技术。
表 8:WMT’16 RO-EN 上baseline和 BART 的 BLEU 分数,增加了反向翻译数据。 BART 通过使用单语英语预训练改进了强大的反向翻译baseline。
Qualitative Analysis
BART 在摘要指标上显示出很大的改进,比之前的最新状态提高了 3.5 个百分点。 为了了解 BART 在自动化指标之外的表现,我们定性地分析了它的世代。表 9 显示了 BART 生成的代表性示例摘要,说明了其主要优势和劣势。 示例取自创建预训练语料库后发布的 WikiNews 文章,以消除所描述事件出现在模型训练数据中的可能性。我们在总结之前删除了文章的第一句话,因此没有简单的文档摘要摘要。
表 9:WikiNews 文章中 XSum-tuned BART 模型的示例摘要。 为清楚起见,仅显示来源的相关摘录。 摘要结合了文章中的信息和先验知识。
不出所料,模型输出是流利且符合语法的英语。 然而,输出也是高度抽象的,几乎没有复制的短语。 摘要通常在事实上是准确的,并将来自输入文档的支持证据与背景知识相结合(例如,正确填写姓名,或推断 PG&E 在加利福尼亚州运营)。 在第一个例子中,推断鱼类正在保护珊瑚礁免受全球变暖的某些影响需要非平凡的推论。这些样本表明,BART 预训练已经学会了自然语言理解和生成的强大组合。
Conclusion
我们介绍了 BART,这是一种预训练方法,可以学习将损坏的文档映射到原始文档。BART 在判别任务上的表现与 RoBERTa 相当,并在几个文本生成任务上取得了新的最先进的结果。 未来的工作应该探索用于预训练破坏文档的新方法,也许可以根据特定的最终任务定制它们。