大模型论文:BART

大模型论文:BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension

文章地址:1910.13461 (arxiv.org)


摘要

本文提出了 BART,一种用于预训练序列到序列模型(sequence-to-sequence models)的去噪自编码器(denoising autoencoder)。BART 的训练方式包括两步:

  1. 使用任意噪声函数对文本进行扰动(corrupt);
  2. 学习一个模型来重建原始文本。

BART 使用的是一种基于 Transformer 的神经机器翻译架构,尽管这种结构很简洁,但它可以被看作是对以下模型的泛化:

  • BERT(双向编码器)、
  • GPT(左到右的解码器)、
  • 许多更近期的预训练方案

本文评估了多种噪声策略,发现最优的方案是在原始句子中随机打乱顺序,并使用一种新颖的文本填充机制,该机制将文本中的连续片段用一个单一的 mask token 替换。BART 在文本生成任务中表现尤其出色,同时也适用于阅读理解任务。它在使用与 RoBERTa 相当的训练资源时,在 GLUE 和 SQuAD 上达到了相似的效果。同时,在摘要、问答、对话生成等多种抽象生成任务中也取得了新 SOTA(最先进)成果,ROUGE 得分提升高达 6 分。此外,BART 还在机器翻译任务中提供了 1.1 BLEU 的提升(采用仅对目标语言预训练的反向翻译系统)。本文还报告了一些消融实验,这些实验复现了 BART 框架中其它预训练方案,以更好地分析哪些因素对最终任务性能影响最大。

  • 总结:BART是一个结合了 BERT 和 GPT 优点的预训练模型:像 BERT 一样编码输入(使用双向注意力),又像 GPT 一样解码输出(使用自回归左到右生成),被设计为一个 去噪自编码器,能有效学习如何从损坏的文本中恢复信息



模型背景

  • 自监督学习方法(Self-supervised methods)在自然语言处理(NLP)的广泛任务中取得了显著成功,最成功的策略通常是掩码语言模型(masked language models),这些模型是去噪自编码器(denoising autoencoders),训练目标是重建那些其中部分词语被随机遮蔽(masked)的文本

  • 一些研究表明,通过优化被遮蔽词的分布预测遮蔽词的顺序、以及替代遮蔽词时所利用的上下文范围,可以取得更好的效果。然而,这些方法通常专注于特定类型的下游任务(例如跨度预测文本生成等),这在一定程度上限制了它们的通用性。即这些方法只能在特定的任务上表现良好,比如BERT的掩码方式导致其在文本生成上效果不好

  • 因此,本文提出了 BART,它是一种结合了双向 Transformer自回归 Transformer 的预训练模型。BART 是一种建立在序列到序列模型(sequence-to-sequence model)基础上的去噪自编码器,适用于非常广泛的下游任务,它的预训练分为两个阶段:

    • 使用任意噪声函数(arbitrary noising function)对文本进行扰动;

    • 训练一个序列到序列(sequence-to-sequence model)模型来重建原始文本

  • BART的一个关键优势在于其高度灵活的加噪方式(noising flexibility):可以对原始文本应用任意的转换,包括改变文本长度

  • 本文评估了多种加噪方法,发现效果最好的包括:

    • 随机打乱原始句子的顺序
    • 使用一种新颖的in-filling(填充)机制:将任意长度的文本片段(包括长度为零的情况)用一个单一的掩码标记(mask token)替换。



BART模型详解

  • BART 是一种基于Transformer架构的去噪自动编码器,它将损坏的文档映射到它派生的原始文档

  • BART模型是在Transformer架构的改动:

    • 将原始的 ReLU 激活函数 修改为 GeLU(Gaussian Error Linear Unit)激活函数,GeLU 在 GPT 和 BERT 中表现更好,有更平滑的梯度

    • 将所有模型参数初始化为服从 正态分布 N(0, 0.02),这是从 BERT 和 GPT 的经验出发。较小的方差可以防止在训练初期产生过大的激活值,从而稳定模型

  • 在模型规模方面:

    • BART-Base 模型使用 6 层编码器(encoder)和 6 层解码器(decoder)
    • BART-Large 模型则使用 12 层编码器和 12 层解码器
  • 其整体架构与 BERT 非常相近,但有以下两个主要区别

    • BART 的解码器中的每一层都会额外执行一个 跨注意力(cross-attention)机制,作用于编码器最终隐藏层的输出(这与标准 Transformer 的 encoder-decoder 模式一致)

    • BERT 在进行词预测(word prediction)之前,使用了一个 额外的前馈神经网络(feed-forward network),而 BART 没有这一步骤

  • 总体而言,在参数数量方面,BART 比同等规模的 BERT 多出约 10% 的参数量




BART预训练

  • BART 的训练方式是对文档进行破坏(加噪),然后优化一个重建损失函数——即解码器输出与原始文档之间的交叉熵(cross-entropy)

  • 与其他去噪自编码器不同,BART 并不依赖于特定的噪声策略,而是允许对文档应用任意类型的破坏操作。在极端情况下,如果输入中所有与源文本有关的信息都丢失了,BART 也就相当于一个标准语言模型

  • 本文提出了五种扰动加噪方式
    BART的五种加噪方式

    1. Token Masking(词级遮蔽)

    仿照 BERT(Devlin et al., 2019),从输入中随机采样一些 token,然后将它们替换为 [MASK]

    🔍 解释:
    • 与 BERT 一样,让模型学会从上下文推断被遮盖的词语
    • 示例:
      原句:The cat sat on the mat.
      遮盖后:The [MASK] sat on the [MASK].

    2. Token Deletion(词级删除)

    随机从输入中删除某些 token。
    与 Token Masking 不同,这要求模型推断哪些位置缺失了内容

    🔍 解释:
    • 删除词使得上下文变得更“缺失”,模型更难推理具体位置和内容
    • 示例:
      原句:The cat sat on the mat.
      删除后:The sat the. → 模型需恢复出 “cat”, “on”, “mat” 的位置和内容。

    3. Text Infilling(文本填充)

    从文本中采样多个片段(spans),片段长度服从 Poisson 分布(λ=3),每个片段被一个 [MASK] 替换。长度为 0 的片段相当于插入 [MASK]

    🔍 灵感来源:
    • 受 SpanBERT 启发(Joshi et al., 2019),但不同于 SpanBERT 用多个 mask 替换,BART 用一个 [MASK] 替换整个 span。
    🔍 意义:
    • 训练模型不仅预测内容,还预测缺失片段的长度,增强模型推理跨句长距离依赖能力
    • 示例:
      原句:The quick brown fox jumps over the lazy dog.
      变成:The quick [MASK] the lazy dog.

    4. Sentence Permutation(句子打乱)

    将文档按句号划分为多个句子,再随机打乱这些句子的顺序。

    🔍 目的:
    • 强化模型理解全局语义结构的能力,而不是仅靠局部上下文。

    • 示例:

      原句:

      1. The sun is shining.
      2. Birds are singing.
      3. Flowers are blooming.
        打乱后顺序可能是 2 → 1 → 3。

    5. Document Rotation(文档旋转)

    随机选择一个 token,将它作为文档的新起点,文本旋转排列。

    🔍 目的:
    • 训练模型理解文档的“逻辑开头”,从而学习整体结构的判定能力
    • 示例:
      原句:The cat sat on the mat and licked its paw.
      旋转起点选在 “mat”:
      mat and licked its paw. The cat sat on the

BART微调

  • 序列分类任务(Sequence Classification Tasks):对于序列分类任务,将相同的输入送入编码器和解码器,然后取解码器中最后一个 token 的最终隐藏状态,并输入一个新的多类别线性分类器中进行分类。这种方法类似于 BERT 中的 [CLS] token 机制,但会在末尾添加一个额外 token,使得该位置的表示可以访问输入中所有的解码器状态

  • Token 级别分类任务(Token Classification Tasks):对于 token 分类任务(如 SQuAD 中的答案终点分类),将完整文档输入编码器和解码器,然后使用解码器每个词位置的顶层隐藏状态,作为每个 token 的语义表示,用于预测该 token 的分类标签

  • 序列生成任务(Sequence Generation Tasks):由于 BART 具备自回归解码器,它可以直接被用于序列生成任务的微调,例如抽象式问答与摘要生成。在这些任务中,输出序列由输入处理后生成,类似于 BART 的预训练任务

  • 机器翻译任务(Machine Translation):探索使用 BART 来改进翻译为英语的机器翻译解码器。之前的研究表明使用预训练编码器可以提升性能,但在解码器中引入预训练语言模型的尝试有限。本文展示了使用整个 BART 模型(包括编码器和解码器)作为一个整体的预训练解码器的可能性

    微调任务类型输入内容解码方式用途示例
    序列分类输入+结尾token → encoder+decoderdecoder 最后一位输出情感分类、新闻主题
    token 分类完整输入 → encoder+decoderdecoder 每个词位置输出SQuAD、命名实体识别
    序列生成输入序列 → decoder 自回归生成标准生成流程问答、摘要
    机器翻译外语输入 → 经过新编码器 → BART 解码器生成英文BART 被视为“预训练的语言解码器”Romanian→English 翻译

使用BART在特定任务上微调


BART、BERT和GPT对比

  • 下图是对BART、BERT和GPT三个模型的简单对比

BERT,GPT和BART的比较

  • 这个图展示了三种典型的预训练模型架构:BERT、GPT 和 BART。每种架构都采用不同的输入处理方式、上下文建模方式以及在下游任务中的适用性。下面将按图中 a)、b)、c) 三个部分分别详细解释其结构、优缺点

🧩 图 a):BERT —— 双向编码器(Bidirectional Encoder)

🔧 结构说明:

  • 输入文本中的部分 token 被随机替换为 [MASK]
  • 该模型通过一个双向 Transformer 编码器来编码整个句子,能同时看到左侧和右侧上下文。
  • 每个被 mask 的位置是独立预测的,即每个词的预测不考虑其它 mask 词的预测结果。

🧠 特点:

优点缺点
能利用全局上下文(左+右)来进行理解不适合生成任务,因为预测的是 mask 位置,而不是逐步生成序列

📌 示例:

原始文本:The cat sat on the mat

加噪后输入:The [MASK] sat on the [MASK]

目标输出:catmat 分别填回 mask 位置


🧩 图 b):GPT —— 自回归解码器(Autoregressive Decoder)

🔧 结构说明:

  • 输入序列从左到右依次输入(例如 <s> A B C D
  • 通过一个**自回归的解码器(decoder-only transformer)**来预测下一个 token
  • 只能看到左边的上下文,不能访问右边的信息

🧠 特点:

优点缺点
非常适合文本生成(如写文章、聊天)无法捕捉双向信息,不适合理解任务如问答或阅读理解

📌 示例:

输入:<s> The cat sat on

目标输出:themat

即根据左侧内容,预测下一个词。


🧩 图 c):BART —— 编码器-解码器结构(Bidirectional Encoder + Autoregressive Decoder)

🔧 结构说明:

  • 编码器使用双向 Transformer,可以利用左右上下文理解输入
  • 解码器使用自回归 Transformer,从左到右生成输出
  • 输入经过任意噪声处理(如删除、乱序、遮盖)
  • 解码器目标是还原原始、干净的文本序列

🧠 特点:

优点举例说明
同时适合理解和生成任务,结构灵活、适用面广既可以用于 SQuAD(理解任务),也可用于 XSum(摘要生成)
编码器输入可以加噪,自由控制难度训练阶段可以掩盖或打乱输入,提高模型鲁棒性

📌 示例:

原始文本:The cat sat on the mat

加噪输入:The [MASK] on [MASK]

编码器处理带噪文本,解码器目标输出:The cat sat on the mat


🎯 三者对比总结:

模型架构输入处理适合任务类型能否生成文本
BERT双向编码器随机遮盖理解任务(如分类、问答)
GPT单向解码器左到右输入生成任务(如对话、写作)
BART编码器 + 解码器任意加噪同时支持理解与生成任务
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白学C++.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值