引子:BERT 和 GPT 各自的缺口
2018-2019 年,NLP 被两条路线割裂:
- BERT(Encoder-only):双向理解强,但不能生成
- GPT(Decoder-only):生成强,但单向注意力让理解任务吃亏
有没有一种架构能同时要?答案是 Encoder-Decoder——Transformer 原版就是它,只是被 BERT 和 GPT 各拆走了一半。
2019 年 Google 的 T5 和 Facebook 的 BART 给出了两种不同但互补的答案。
T5:一切皆 Text-to-Text
T5(Text-to-Text Transfer Transformer)的核心主张激进到近乎粗暴:把所有 NLP 任务都改写成"输入文本 → 输出文本"。
| 任务 | 输入 | 输出 |
|---|---|---|
| 翻译 | translate English to German: That is good. |
Das ist gut. |
| 分类 | sst2 sentence: This movie is great. |
positive |
| 相似度 | stsb sentence1: ... sentence2: ... |
3.8 |
| 摘要 | summarize: <长文> |
<摘要> |
模型不需要任何任务特定的输出层——分类任务输出 “positive” 这个 token 序列,回归任务输出 “3.8” 这个数字字符串。统一的不是架构,是接口。
相对位置编码
T5 用简化的相对位置编码(relative position bias):每个注意力头学习一组标量偏置,按 query-key 相对距离查表加到注意力分数上。相比绝对位置编码,它更容易外推到训练时没见过的长度。
预训练任务:Span Corruption
T5 不用 BERT 的单 token 遮蔽,而是遮蔽连续片段:
|
|
每个片段用一个 sentinel token(<X>、<Y>)替换,模型需要输出所有被遮蔽的片段。平均片段长度 3,遮蔽 15%。
这比单 token 遮蔽更难,也更接近生成任务。
C4 数据集
T5 专门构建了 C4(Colossal Clean Crawled Corpus,750GB)——从 Common Crawl 清洗出的英文文本。清洗规则包括:只保留以标点结尾的行、去除重复行、过滤脏词页面等。
训练规模
| 模型 | 参数量 | 层数 | d_model |
|---|---|---|---|
| T5-Small | 60M | 6/6 | 512 |
| T5-Base | 220M | 12/12 | 768 |
| T5-Large | 770M | 24/24 | 1024 |
| T5-3B | 3B | 24/24 | 1024 |
| T5-11B | 11B | 24/24 | 1024 |
T5 论文最有价值的贡献之一是系统性的消融实验:他们比较了 encoder-decoder vs decoder-only、去噪目标 vs 语言模型目标、C4 vs 其他数据集、预训练数据量等。结论是 encoder-decoder + span corruption 在相同计算预算下最优。
BART:去噪自编码器
BART(Bidirectional and Auto-Regressive Transformer)的思路不同:先用任意噪声破坏文本,再让模型重建原文。
它的结构就是完整的 Transformer encoder-decoder:
- Encoder 用双向注意力(像 BERT)
- Decoder 用因果注意力(像 GPT),并且对 encoder 输出做交叉注意力
五种加噪方式
BART 论文测试了多种噪声,其中效果最好的组合是:
- Token Masking:随机遮蔽 token(同 BERT)
- Token Deletion:随机删除 token,模型必须推断位置和内容
- Text Infilling:遮蔽连续片段,用单个 mask 替换(同 SpanBERT)
- Sentence Permutation:打乱句子顺序
- Document Rotation:随机旋转文档,让模型找到真正的起点
最终配置用 text infilling + sentence permutation:遮蔽 30% 的 token(片段长度服从泊松分布 λ=3),并把句子打乱。
图 1:T5 的 span corruption vs BART 的去噪重建(由 Diagram Design 生成)
为什么 BART 适合生成
BART 的 decoder 是自回归的,所以它天生能做摘要、翻译、对话。而 encoder 是双向的,所以它能充分理解输入。这种组合在摘要任务上特别强——BART 在 XSum 上比 T5 更好。
T5 vs BART 对比
| 维度 | T5 | BART |
|---|---|---|
| 架构 | Encoder-Decoder | Encoder-Decoder |
| 预训练目标 | Span corruption(预测被遮蔽片段) | 去噪重建(重建整个原文) |
| 加噪方式 | 连续片段替换为 sentinel | Text infilling + 句子打乱 |
| 优势任务 | 分类、翻译、多任务统一 | 摘要、生成 |
| 位置编码 | 相对位置偏置 | 绝对位置编码(学习) |
| 参数量 | 60M - 11B | 140M - 400M |
核心差异:T5 只预测被破坏的部分,BART 重建整个序列。前者更高效,后者对生成任务更友好。
Encoder-Decoder 的兴衰
2020 年后,Decoder-only 逐渐成为主流(GPT-3、LLaMA、DeepSeek 都是 Decoder-only)。为什么?
- 规模效率:Decoder-only 没有 encoder-decoder 之间的通信开销,同样参数量下更"深"
- 训练简单:只需一个语言模型目标,不需要设计噪声策略
- 通用性:in-context learning 让"理解"任务也能用生成范式解决
但 Encoder-Decoder 没有消失:T5 依然是很多 RAG、翻译、摘要系统的底座,Flan-T5 至今是开源小模型的重要选择。
技术启示
- 接口统一 > 架构统一:T5 的 text-to-text 证明了"统一接口"的价值,这个思想后来被 instruction tuning 继承
- 去噪目标的设计空间很大:T5 的 span corruption 和 BART 的 text infilling 都是去噪,但细节决定任务适配性
- 消融实验比架构创新更稀缺:T5 论文最有价值的是那张消融表,不是模型本身
参考资料
- Raffel, C., et al. (2019). Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer. arXiv:1910.10683.
- Lewis, M., et al. (2019). BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension. arXiv:1910.13461.
- Hugging Face T5 文档:https://huggingface.co/docs/transformers/model_doc/t5