生成式摘要 BART:序列到序列的去噪预训练

FreeGuideOnline 最新 2026-06-15

什么是生成式摘要

生成式摘要旨在理解原文后用自己的话重新表达核心内容,而非简单地从原文中剪切拼接句子。这要求模型具备语言生成能力,通常基于序列到序列(Seq2Seq)架构。近年来,预训练语言模型极大地推动了这一任务的发展,其中BART便是极具代表性的方法。

BART 概述:序列到序列的去噪预训练

BART(Bidirectional and Auto-Regressive Transformer)由Facebook AI提出,是一种去噪自编码器,结合了双向编码器与自回归解码器。其核心理念是:先通过添加噪声破坏输入文本,再让模型学习重建原始文本。这种预训练方式使BART既能深入理解上下文,又能流畅地生成文本,特别适合文本生成任务,如摘要。

BART的架构本质上是一个标准的Transformer Seq2Seq模型,与原始Transformer结构几乎一致,但激活函数改用GeLU,并采用不同的参数初始化策略。

BART 的预训练:创新的去噪目标

BART 的预训练任务非常灵活,通过在输入文本上施加多种噪声,迫使模型学会恢复。常见噪声策略包括:

  • 文本填充:从文本中随机采样多个文本片段,每个片段用单个 [MASK] 标记替换。模型需要预测缺失片段具体包含几个词以及实际内容。这同时解决了跨度预测和长度预测问题。
  • 句子重排序:将文档中的句子顺序随机打乱,模型需输出正确顺序的文本。
  • 词删除:随机删除一部分词,模型判断哪些位置缺失了词。
  • 文档旋转:选定一个词,将该词之前的内容旋转到文档末尾,模型需找到原始开头。

预训练过程中,编码器接收被破坏的文本,解码器自回归地生成原始文本。因为重建目标是完整文档,所以模型天然具备处理长文本和生成连贯语言的能力。

BART 在摘要任务上的微调

将预训练好的BART用于生成式摘要非常直接:保持模型架构不变,将编码器输入设为待摘要的原文,解码器自回归地生成目标摘要。所有参数均可端到端微调。

微调时可以启用长度惩罚重复惩罚等解码策略,减少生成摘要中的重复问题。由于BART在预训练时已经见过大量被破坏的文本和完整的重建目标,因此在微调摘要数据时收敛较快,且生成的摘要往往更接近人工撰写风格。

与GPT、BERT系列在摘要上的对比

  • GPT类模型:单向自回归,擅长生成,但缺少显式的编码器-解码器分离,对于源文本理解依赖于前缀拼接,处理长输入时效率较低。
  • BERT类模型:双向编码强大,但本身不是生成式模型。用于摘要通常需要在下游添加解码器,或使用BERT作为编码器搭配Transformer解码器,无法直接完成生成任务。
  • BART:兼具BERT的双向上下文编码能力和GPT的自回归生成能力,且通过Seq2Seq框架统一预训练与微调,天然适合条件文本生成。

动手实践:使用 Hugging Face 实现 BART 摘要

以下示例基于 transformers 库,展示如何加载微调好的BART摘要模型并生成摘要。

安装必要库

pip install transformers torch

加载模型与分词器

from transformers import BartTokenizer, BartForConditionalGeneration

model_name = "facebook/bart-large-cnn"
tokenizer = BartTokenizer.from_pretrained(model_name)
model = BartForConditionalGeneration.from_pretrained(model_name)

bart-large-cnn 是在CNN/DailyMail数据集上微调的摘要专用模型。

对文本生成摘要

text = """
The Apollo program, also known as Project Apollo, was the third United States human spaceflight
program carried out by the National Aeronautics and Space Administration (NASA), which succeeded
in landing the first humans on the Moon from 1969 to 1972. First conceived during Dwight D.
Eisenhower's administration as a three-person spacecraft to follow the one-person Project Mercury,
Apollo was later dedicated to President John F. Kennedy's national goal for the 1960s of "landing
a man on the Moon and returning him safely to the Earth" in an address to Congress on May 25, 1961.
"""

inputs = tokenizer([text], max_length=1024, return_tensors="pt", truncation=True)
summary_ids = model.generate(
    inputs.input_ids,
    num_beams=4,
    max_length=150,
    early_stopping=True
)
summary = tokenizer.decode(summary_ids[0], skip_special_tokens=True)
print(summary)

输出示例:

The Apollo program was the third U.S. human spaceflight program. It landed the first humans on the Moon from 1969 to 1972. President John F. Kennedy set the goal of landing a man on the Moon and returning him safely to Earth.

参数调优建议

  • max_length:输入文本截断长度,BART模型通常支持最大1024个token,摘要任务可根据需要调整。
  • num_beams:束搜索宽度,数值越大生成质量可能越高,但计算开销增加。通常4~6效果较好。
  • no_repeat_ngram_size:可设为3,防止重复三元组。
  • length_penalty:控制生成长度偏好,大于1.0倾向生成更长序列。

去噪预训练为什么适合摘要

摘要任务本质上要求模型:

  1. 理解原文核心,忽略冗余信息;
  2. 用简洁语言重述

BART的文本填充噪声恰好模拟了“删除冗余”的过程——让模型从被打断的文本中推测缺失内容。句子重排序则迫使模型理解全局语篇结构。经历这些预训练后,模型在微调摘要时能更快地学会识别关键信息并组织成连贯摘要。

常见问题与优化方向

  • 生成重复:可通过设置 no_repeat_ngram_sizerepetition_penalty 缓解。
  • 生成事实错误:BART可能产生与输入不一致的事实,这仍是生成模型的挑战。引入事实一致性评估(如基于问答的验证)可以辅助过滤。
  • 长文本摘要:BART的最大位置编码为1024,对于超长文档,可采用分块摘要或使用Longformer-Encoder-Decoder等变体。
  • 领域适应:在特定领域(如法律、医学)数据上进一步微调BART,可大幅提升摘要质量。

总结

BART通过巧妙的去噪预训练,将Seq2Seq模型的表征与生成能力提升到新高度,成为生成式摘要的基石模型之一。其灵活的噪声设计为理解与生成任务搭建了桥梁,而开箱即用的Hugging Face生态让开发者可以快速将其应用到实际项目中。对于需要高质量摘要的场景,BART依旧是值得优先考虑的基线方案。