返回介绍

数学基础

统计学习

深度学习

工具

Scala

十六、BART [2019]

发布于 2023-07-17 23:38:25 字数 26712 浏览 0 评论 0 收藏 0

  1. 自监督方法在广泛的 NLP 任务中取得了显著的成功。最成功的方法是 masked language model 的变体,它是降噪自编码器 denoising autoencoder ,被训练从而重建文本,其中掩码了一组随机的单词。最近的工作显示,通过改善 masked token 的分布(SpanBERT)、masked token 的预测顺序(XLNet)、以及替换 masked token 的可用上下文(UNILM )而获得收益。然而,这些方法通常专注于特定类型的下游任务(如 span prediction 任务、生成任务等),限制了其适用性。

    在论文 《BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension》 中,作者提出了 Bidirectional and Auto-Regressive Transformer: BART ,它预训练了一个结合了双向的和自回归的Transformer 的模型。BART 是一个用 sequence-to-sequence 模型构建的降噪自编码器,适用于非常广泛的下游任务。预训练有两个阶段:

    • 以任意的噪音函数破坏文本。
    • 学习一个 sequence-to-sequence 的模型来重建原始文本。

    BART 使用一个标准的基于 Tranformer 的神经机器翻译架构,尽管它很简单,但可以看作是对 BERT (具有双向编码器)、GPT (具有有从左到右的解码器)、以及许多其他最近的预训练方案的推广(如下图所示)。

    这种设置的一个关键优势是噪音的灵活性:可以对原始文本进行任意的变换,包括改变其长度。论文评估了一些噪音方法,发现性能最佳的方法是:同时进行随机混洗原始句子的顺序、以及使用一种新颖的 in-filling 方案(任意长度的文本区间 text span ,包括零长度,被替换为单个 mask token )。这种方法通过迫使模型对整体句子的长度进行更多的推理,以及对输入进行更长范围的变换,从而推广了 BERT 中的原始 word maskingnext sentence prediction 的目标。

    当对文本生成任务进行微调时,BART 特别有效,但对文本理解任务也很有效。BARTGLUESQuAD上以 comparable 的训练资源获得与RoBERTa 相匹配的性能,并在一系列抽象式对话 abstractive dialogue 、问答、和摘要 summarization 任务上取得了新的 SOTA 的结果。例如,BAER 比以前关于 XSum 的工作提高了 6 ROUGE 的性能。

    abstractive dialogue 是非抽取式的。抽取式对话是从给定的段落中抽取答案,而抽象式对话需要生成答案。

    BART 还开辟了微调的新思维方式。论文提出了一个新的机器翻译方案,其中 BART 模型被堆叠在几个额外的 transformer layer 之上。这些额外的 transformer layer 被训练成将外语翻译成有噪音的英语,通过 BART 的传播,从而将 BART 作为预训练的 target-side language model 。在 WMT Romanian-English benchmark 中,这种方法比强大的机器翻译 baseline 的性能提高了1.1 BLEU

    为了更好地理解这些效果,论文还报告了复现最近提出的其他训练目标的消融研究。这项研究使我们能够仔细控制一些因素,包括数据和优化超参数,这些因素已被证明和训练目标的选择一样对整体性能同样地重要。论文发现,在所考虑的所有任务中,BART 表现出一致的最强大性能。

  2. 相关工作:

    • 早期的预训练方法是基于语言模型的。

      • GPT 只建模左侧的上下文,这对某些任务来说是有问题的。
      • ELMo 拼接了纯左侧和纯右侧的representation ,但没有预训练这些特征之间的交互。
      • GPT-2 证明,非常大的语言模型可以作为无监督的多任务模型。
    • BERT 引入了 masked language modelling ,允许预训练学习左右两侧上下文单词之间的交互。最近的工作表明,通过更长的训练时间(Roberta )、通过跨层绑定参数(Albert)、以及通过masking span 而不是单词(Spanbert ),可以实现非常强大的性能。然而,预测不是自回归地进行的,这降低了 BERT 对生成任务的有效性。

    • UniLMan ensemble of masksBERT 进行了微调,其中某些 mask 只允许左侧的上下文。与 BART 一样,这使得 UniLM 可以同时用于生成式的和判别式的任务。一个区别是:UniLM 的预测是条件独立的,而 BART 的预测是自回归的。BART 减少了预训练和生成任务之间的不匹配,因为解码器总是在未被破坏的上下文中被训练。

    • MASS 可能是与 BART 最相似的模型。掩码了一个连续区间 tokeninput sequence 被映射到由这些缺失的 token 组成的序列上。MASS 对判别式任务不太有效,因为不相交的 token 集合被馈入编码器和解码器。

    • XL-Net 通过以 permuted order 来自回归地预测被 masked token 从而扩展了 BERT 。这一目标允许预测同时以左侧上下文和右侧上下文为条件。相比之下,BART decoder 在预训练期间从左到右地工作,在generation 期间与 setting 相匹配。

    有几篇论文探讨了使用预训练的 representation 来改进机器翻译。最大的改进来自于同时对源语言和目标语言的预训练,但这需要对所有感兴趣的语言进行预训练。其他工作表明,使用预训练的 representation 可以改善编码器(《Pre-trained language model representations for language generation》),但解码器的收益更为有限。我们展示了如何使用 BART 来改善机器翻译解码器。

16.1 模型

  1. BART 是一个降噪自编码器denoising autoencoder: DAE ,它将被破坏的文档映射到其原始文档。BART 被实现为一个 sequence-to-sequence 的模型,包含一个双向编码器(作用于被破坏的文本上)、以及一个从左到右的自回归解码器。对于预训练,我们优化原始文档的负对数似然。

    这意味着仅在自回归解码器上计算生成原始文本的损失函数,而编码器用于编码各种被破坏的文本,因此统一了各种预训练任务(如 masked languate modelingnext stentence prediction)。

  2. 架构:BART 使用 《Attention is all you need》中的 sequence-to-sequenceTransformer 架构,除了以下不同:遵从 GPT ,我们将ReLU 激活函数修改为 GeLU,并从N(0,0.02)$ \mathcal N(0,0.02) $ 初始化参数。

    对于我们的 base model ,我们在编码器和解码器中各使用 6 层;对于我们的 large model 模型,我们在编码器和解码器中各使用 12 层。BART 架构与 BERT 架构密切相关,但有以下区别:

    • 解码器的每一层都额外地对编码器的 final hidden laye 进行交叉注意cross-attention (就像在 sequence-to-sequencetransformer 模型中那样)。
    • BERTword-prediction 之前使用了一个额外的前馈网络,而 BART 没有这样做。

    总体而言,BART 比同等规模的 BERT 模型多了大约 10% 的参数。

  3. 预训练 BARTBART 是通过破坏文档,然后优化重建损失(解码器的输出和原始文档之间的交叉熵)来训练的。与现有的降噪自编码器不同,BART 允许我们应用任何类型的文档损坏 document corruption 。在极端的情况下,关于原始文档的所有信息都丢失了,BART 就相当于一个语言模型。

    我们用几个先前提出的、新颖的变换 transformation 来进行实验,但我们相信其它的一些新的替代方案有很大的潜力。我们使用的变换总结如下,一些例子如下图所示。

    • Token 掩码 Token Masking :遵从 BERT ,随机采样的 token 被替代为 [MASK]

    • Token 删除 Token Deletion:随机采样的 token 被直接删除。与 Token Masking 相反,模型必须决定哪些位置是缺失的(Token Masking 通过 [MASK] 知道哪些位置是缺失的)。

      下图中的 Token Deletion 有误,应该是 AC.E.,因为原始的文本只有两个 .

    • 文本填充 Text Infilling:随机采样一些 text span,其中 span 长度服从泊松分布λ=3$ \lambda = 3 $ 。每个 span 都被替换为一个 [MASK] 。如果 span 长度为 0,那么对应于插入 [MASK]

      Text Infilling 受到 SpanBERT 的启发,但是 SpanBERT 从一个不同的分布(截断的几何分布 clamped geometric )中采样 span 长度,并且用一个长度完全相同的 [MASK] 序列来替换每个 spanText Infilling 使模型能够预测一个 span 中缺失多少个 token

      泊松分布的λ$ \lambda $ 指定了期望,即,这些 span 长度的期望为 3 。假设平均的输入序列长度为n$ n $ ,那么掩码率为3/n$ 3/n $ 。

    • 句子排列 Sentence Permutation:一个文档根据句号被分成几个句子,这些句子以随机的顺序被混洗。

    • 文档旋转 Document Rotation:均匀随机地选择一个 token ,然后旋转文档,使其以该 token 开始。这项任务训练模型来识别文档的开始。

    这些 transformation 的价值在不同的下游任务中差异很大。

  4. 微调 BARTBART 产生的 representation 可以通过多种方式用于下游应用。

    • 序列分类任务 Sequence Classification Tasks :对于序列分类任务,相同的输入被馈入编码器和解码器, final decoder tokenfinal hidden state 被馈入新的线性分类器。

      编码器输入:被整体分类的文本序列;解码器输入:被整体分类的文本序列。

      这种方法与 BERT 中的[CLS] token 有关。但是,我们将 additional token 添加到最后,这样解码器中的 additional tokenrepresentation 就可以从完整的输入中 attend 解码器状态(如下图 (a) 所示)。

      BART 中没有 [CLS] token ,而是把解码器整个序列的 representation 视为 additional token (下图中没有画出来)的 representation

      因为解码器是从左右到的,因此 [CLS] token 不能位于左侧第一个位置,因为这个位置无法看到任何上下文。

    • Token 分类任务 Token Classification Tasks :对于 token 分类任务,如 SQuADanswer endpoint 分类 ,我们将完整的文档馈入编码器和解码器,并使用解码器的 top hidden state 作为每个单词的 representation 。这个 representation 被用来对 token 进行分类。

      编码器输入:被 token 分类的文本序列;解码器输入:被 token 分类的文本序列。

    • 序列生成任务 Sequence Generation Tasks: 因为 BART 有一个自回归解码器,它可以直接为序列生成任务进行微调,如抽象式问答abstractive question answering 任务、摘要任务。在这两项任务中,信息都是从输入中复制出来的,这与降噪预训练的目标密切相关。在这里,编码器的输入是输入序列,而解码器则自动生成输出。

      编码器输入:上下文序列;解码器输入:目标序列。

    • 机器翻译 Machine Translation: 我们还探索使用 BART 从而为英语翻译来改进机器翻译解码器。之前的工作 《Pre-trained language model representations for language generation》 表明,通过融合预训练的编码器可以改善模型,但在解码器中使用预训练的语言模型的收益有限。我们表明:可以将整个 BART 模型(包括编码器和解码器)作为机器翻译的单个预训练解码器,方法是增加一组新的编码器参数,这些参数是从 bi-text 中学到的(如下图 (b) 所示)。

      bi-text 指的是同时包含源语言文本和对应的翻译语言文本的 text pair

      更准确而言,我们用一个新的随机初始化的编码器取代 BARTencoder embedding layer 。该模型是端到端来训练的,它训练新的编码器将外语单词映射成 BART 可以降噪成英语单词的 input 。新的编码器可以使用与原始 BART 模型不同的词表。

      我们分两步训练新的编码器,在这两种情况下,都是从 BART 模型的输出中反向传播交叉熵损失:

      • 在第一步中,我们冻结了大部分 BART 参数,只更新随机初始化的新编码器、BART positional embedding 、以及 BART 编码器第一层的 self-attention input projection matrix

        给定 query 矩阵Q$ \mathbf Q $ ,key 矩阵K$ \mathbf K $ ,value 矩阵V$ \mathbf V $ 作为 self-attention 的输入,self-attention 为:

        (38)Attention(QWQ,KWK,VWV)=softmax((QWQ)(KWK)dk)(VWV)

        其中:WQ,WK,WV$ \mathbf W^Q,\mathbf W^K,\mathbf W^V $ 就是 self-attention 的输入投影矩阵。 通过针对不同的任务来适配这三个输入投影矩阵,模型就可以很好地迁移到不同的任务。因为冻结后面的层,只需要调整第一层,就可以使得第一层的输出能够适配后面层的需求。

      • 在第二步中,我们以少量的迭代来训练所有模型参数。

16.2 预训练目标的比较

  1. 与以前的工作相比,BART 在预训练期间支持更广泛的噪声方案。我们使用 base-size 的模型(6 个编码器层和6 个解码器层,隐层维度为 768 )对一系列方案进行了比较,在一个有代表性的任务子集上进行了评估。

  2. 预训练目标之间的比较:虽然人们已经提出了许多预训练目标,但这些目标之间的公平比较一直难以进行,至少部分原因是训练数据、训练资源、模型之间的结构差异、以及微调程序的不同。我们重新实现了最近提出的强大的预训练方法。我们的目标是尽可能地控制与预训练目标无关的差异。然而,我们确实对学习率和 layer normalisation 的使用做了微小的改变,以提高性能(为每个预训练目标分别调优这些)。作为参考,我们将我们的实现与 BERT 公布的数字进行了比较。BERT 也是在 BooksWikipedia 数据的组合上训练了 100 万步。我们比较了以下预训练目标:

    • Language Model:与 GPT 类似,我们训练一个 left-to-rightTransformer语言模型。这个模型等同于 BART 解码器,没有与编码器的 cross-attention
    • Permuted Language Model:基于 XLNet ,我们采样了 1/6token ,并以随机顺序自回归地生成它们。为了与其他模型保持一致,我们没有实现 XLNetrelative positional embedding 或跨 segment 的注意力。
    • Masked Language Model:遵从 BERT ,我们随机选择 15%token 并用 [MASK] 符号来替代,并训练模型独立地预测被掩码的原始 token
    • Multitask Masked Language Model:与 UniLM 一样,我们用额外的自注意力掩码来训练 Masked Language Model 。自注意力掩码是按以下比例随机选择的:1/6 从左到右、1/6 从右到左、1/3 无掩码、1/3 采用前 50%token 无掩码而剩下的 50% 是从左到右的掩码。
    • Masked Seq-to-Seq:受 MASS 的启发,我们掩码了一个 span ,其中这个 span 包含了 50%token ,并训练一个 sequence-to-sequence 模型来预测被掩码的 token

    对于 Permuted LMMasked LM 、以及 Multitask Masked LM ,我们使用双流注意力two-stream attention (参考 Xlnet 的原始论文)来有效地计算序列的输出部分的似然 likelihood

    我们进行了两种实验:

    • 将任务视为标准的 sequence-to-sequence 问题,其中 source sequence 馈入编码器,而 target sequence 是解码器的输出。

    • 在解码器中把source sequence 作为前缀加入 target sequence 作为一个整体序列,仅在这个整体序列的 target sequence 部分上计算损失。

      即,把 source sequence 视为上下文,而 target sequence 视为预测目标。

    我们发现前者对 BART 模型的效果更好,而后者对其他模型的效果更好。

    论文没有数据来支撑这个结论,所以感觉很突兀。

    为了最直接地比较我们的模型对微调目标的建模能力,对于生成任务,我们在Table 1 中报告了困惑度(而不是 ROUGE 指标)。

  3. 任务:

    • SQuAD:是一项关于百科全书段落的抽取式问答任务 extractive question answering task。答案是从一个给定的文档上下文中抽取的 text span 。与 BERT 类似,我们使用拼接的问题和上下文作为 BART 编码器的输入;此外,我们也把拼接的问题和上下文传递给解码器,并在解码器上为每个 token 预测:该 token 作为答案开始的概率、作为答案结束的概率。
    • MNLI:一个 bi-text 的分类任务,预测一个句子是否包含另一个句子。微调后的模型将两个句子与附加的 EOS token 拼接起来,并将它们同时传递给 BART 编码器和解码器。与 BERT 不同的是,解码器上 EOS tokenrepresentation 被用来对句子关系进行分类。
    • ELI5:一个格式很长的抽象式问答数据集 abstractive question answering dataset。模型拼接问题和支持性文档 supporting document,然后以拼接后的字符串为条件来生成答案。
    • XSum:一个新闻摘要数据集。
    • ConvAI2:一个对话响应生成任务 dialogue response generation task ,以上下文和人物为条件。
    • CNN/DM:一个新闻摘要数据集。这里的摘要通常与源句子 source sentence 密切相关。
  4. 结果如下表所示,有几个趋势是明显的:

    • 同一个预训练方法的性能在不同的任务中差异很大:预训练方法的有效性高度依赖于任务。例如,简单的语言模型在 ELI5 中取得了最好的性能,但是在 SQUAD 中取得了最差的性能。

      根据下表的第二个 block (即 Masked Language ModelMultitask Masked Language Model)。

    • Token Masking 是至关重要的:基于 Document RotationSentence Shuffling 的预训练目标在单独的情况下表现很差。成功的方法要么使用 Token DeletionToken Masking ,要么使用 Text Infilling 。在生成任务上,Token Deletion 似乎比 Token Masking 更有优势。

      最后四个任务为生成式任务(指标为 PPL)。

    • 从左到右的预训练改善了生成任务:Masked Language ModelPermuted Language Model 在生成方面的表现不如其他模型。

    • 双向编码器对 SQuAD 至关重要 :正如以前的工作(BERT 论文)所指出的,仅仅从左到右的解码器在 SQuAD 上表现不佳(参考 Language Model 这一行),因为未来的上下文对分类决策至关重要。然而,BART 只用一半数量的bidirectional layer 就能达到类似的性能。

    • 预训练目标不是唯一的重要因素:我们的 Permuted Language Model 的表现不如 XLNet 。这种差异的一部分可能是由于没有包括 XLNet 的其他改进,如 relative-position embeddingsegment-level recurrence

    • 纯语言模型在 ELI5 上表现最好:ELI5 数据集是一个例外,其困惑度比其他任务高得多,是唯一的、其他模型优于 BART 的生成任务。纯语言模型表现最好,这表明当输出只受到输入的松散约束时,BART 的效果较差。

    • BART 取得了最一致的强劲表现:除了 ELI5 之外,使用 Text InfillingBART 模型在所有任务中都表现良好。

16.3 大型预训练实验

  1. 最近的工作表明,当预训练扩展到大 batch size 和大型语料库时,下游任务的性能可以大幅提高。为了测试 BART 在这种范围下的表现,并为下游任务创建一个有用的模型,我们使用与 RoBERTa 模型相同的规模来训练 BART

  2. 实验配置:我们预训练了一个大型模型,编码器和解码器各有 12 层,隐层维度为 1024 。遵从 RoBERTa 的做法,我们 batch size = 8K ,并对模型训练 500K 步。文档采用与 GPT-2 相同的 BPE 进行 tokenize

    根据前面的实验结果,我们使用 text infillingsentence permutation 的组合。对于每篇文档我们掩码了 30%token ,并对所有的句子进行 permute 。虽然 sentence permutationCNN/DM 摘要数据集上显示出明显的加性增益 additive gain ,但我们假设更大的预训练模型可能会更好地从这个任务中学习。

    为了帮助模型更好地适应数据,我们在最后 10% 的训练 step 中禁用 dropout 。我们使用与 Roberta 相同的预训练数据,由新闻、书籍、故事和网络文本组成的 160Gb 数据。

  3. 判别式任务:下表将 BART 的性能与最近几种方法在 SQuADGLUE 任务上进行了比较。最直接的可比 baselineRoBERTa ,它是用相同的资源进行预训练的,但采用不同的预训练目标。

    总的而言,BART 和这些模型的表现相似。在大多数任务上,模型之间只有很小的差异。这表明 BART 在生成任务上的改进并没有牺牲分类任务上的性能。

    CoLA 任务上,BARTCoLA 的差距有点大。

  4. 生成任务:我们还对几个文本生成任务进行了实验。BART 作为标准的 sequence-to-sequence 模型来被微调。在微调过程中,我们使用label smoothed 的交叉熵损失,平滑参数设置为 0.1 。在生成过程中,我们将 beam size 设置为 5 ,在 beam search 中删除重复的 trigram ,并在验证集上调优 min-len, max-len, length penalty

    • 摘要:为了提供与 SOTA 的文本摘要方法的比较,我们在两个摘要数据集 CNN/DailyMailXSum 上展示了结果,这两个数据集有不同的属性。

      • CNN/DailyMail 中的摘要倾向于类似于源句子。抽取式模型 extractive model 在这里表现良好,甚至前三个源句子的 baseline 也具有很强的竞争力。然而,BART 的表现超过了所有现有的工作。

      • 相比之下,XSum 是高度抽象 abstractive 的,抽取式模型表现很差。BART 在所有的 ROUGE 指标上比以前最好的工作高出大约 6.0 分(这表明这个问题上性能的重大进步)。从质量上看,样本质量很高(参考本文后续的定性分析)。

        ROUGE-N 为: ground-truthN-gram 召回率;ROUGE-L 为: predictionground-truth 的最长公共子序列(以 token 来计算)的 F1 得分。

    • 对话:我们评估了 CONVAI2 的对话响应生成 dialogue response generation ,其中 agent 必须同时根据先前的上下文和文本指定的角色来生成响应。BART 在两个 automated metrics 上优于之前的工作。

    • 抽象式问答:我们使用最近提出的 ELI5 数据集来测试该模型生成长的自由格式答案的能力。我们发现 BART 比以前最好的工作高出 1.2 ROUGE-L 。但该数据集仍然具有挑战性,因为答案只是由问题弱弱地指定了。

  5. 翻译: 我们还评估了 WMT16 Romanian-English 的性能,并以 《Edinburgh neural machine translation systems for WMT 16》back-translation 数据作为数据增强。我们使用一个 6 层的 transformer source encoder 将罗马尼亚语 Romanian 映射成一个 representation,然后 BART 能够利用这个 representation 来降噪成英语 English

    即,Romanian 句子首先馈入一个 6 层的 transformer source encoder,这个 encoder 的输出再馈入 BART

    假设我们需要将 A 语言翻译成 B 语言,back-translation 的做法分为三步:

    • 首先,利用 B -> Abi-text 语料来训练一个从 B 语言翻译成 A 语言的模型(与目标方向相反)。
    • 然后,利用 B 语言的单语语料、以及 B -> A 的模型,翻译得到 A 语言的单语语料。
    • 将生成的 A 语言的单语语料与 B 语言的单语语料人工合成 A -> Bbi-text 语料。

    实验结果如下表所示。baselineTransformer-Large 。我们同时评估了 Fixed BARTTuned BART 。我们 beam width = 5、以及 length penalty = 1 。初步结果表明:我们的方法在没有 back-translation 数据的情况下效果较差,而且容易出现过拟合。未来的工作应该探索更多的正则化技术。

    这个结论没有数据支撑?Fixed BARTTuned BART 表示什么?作者都没有讲。

    BLEUpredictionn-gramprecision 的加权和,n=1,2,...,N,权重分为两部分:第一部分是1/N$ 1/N $ ,用于对多个 n-gram 取平均;第二部分是句子简短惩罚Brevity Penalty,用于惩罚太短的 prediction

  6. 定性分析:BART 在文本摘要指标上有很大的改进,比之前的 SOTA 提升高达 6 个点。为了理解 BARTautomated metrics 之外的表现,我们对它的生成内容进行了定性分析。

    下表展示了由 BART 生成的摘要实例。样本来自 WikiNews 文章,该文章是在我们创建预训练语料库之后才发表的,以消除被描述的事件存在于模型训练数据中的可能性。遵从 《Don’t give me the details, just the summary! topic-aware convolutional neural networks for extreme summarization》 的做法,在总结文章之前,我们删除了文章的第一句话,所以不存在容易抽取的文章摘要。

    不出所料,模型输出是流利的、符合语法的英语。然而,模型的输出也是高度抽象的,很少有从输入中复制的短语。输出通常也是事实上准确的,并将整个输入文件的支持性证据 supporting evidence 与背景知识结合起来(例如,正确补全名字,或推断 PG&ECalifornia 运营)。在第一个例子中,推断出 “鱼在保护珊瑚礁免受全球变暖的影响” 需要从文本中进行困难的推理。然而,关于 “这项工作发表在《科学》上” 的说法并没有得到 source document 的支持。

    这些样本表明,BART 预训练已经学会了自然语言理解和自然语言生成的强大组合。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文