Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer (T5)
为什么这篇论文重要
2019 年 NLP 是一团乱:
- 分类任务用 BERT
- 生成任务用 GPT
- 翻译用 encoder-decoder
- 问答又有专门架构
- 每个任务有自己的输入/输出格式
T5(Text-to-Text Transfer Transformer)说:
统一所有任务为”文本输入 → 文本输出”。
Task Input Output
─────────────────────────────────────────────────────────────────────
Translation "translate English to German: ..." "Übersetzung ..."
Summarization "summarize: ..." "Brief: ..."
Classification "sentiment: ..." "positive"
Question Answering "question: ... context: ..." "answer"
Regression "stsb sentence1: ... 2: ..." "3.4"
任何任务都是 “前面加个 prefix 描述任务 → 模型输出答案”。
这个框架后来直接成了 ChatGPT API 的基本设计—— 所有任务都通过对话/prompt 表达,模型用文本回应。
架构:标准 Encoder-Decoder Transformer
T5 没发明新架构,用的是 2017 原版 Transformer 的 encoder-decoder:
Input text → [Encoder] → memory → [Decoder] → Output text
不像 BERT(只 encoder)或 GPT(只 decoder),T5 两者都有—— 适合任何”输入 → 输出”任务。
模型规模(论文当时):
| 模型 | 参数 |
|---|---|
| T5-Small | 60M |
| T5-Base | 220M |
| T5-Large | 770M |
| T5-3B | 3B |
| T5-11B | 11B(当时最大) |
关键贡献:系统性实验
T5 论文最大的价值不是”提出 T5”,是做了几十组对比实验回答:
“什么样的预训练对 transfer learning 最有效?“
实验维度
- 架构:encoder-decoder vs encoder-only vs decoder-only
- 预训练目标:MLM vs span corruption vs causal LM
- mask 比例:15% vs 25% vs 50%
- mask 长度:单 token vs span(3 tokens, 5 tokens, …)
- 数据:CommonCrawl vs Wikipedia vs RealNews
- 模型大小:60M ~ 11B
- 训练步数:1M 步 vs 10M 步
主要结论
- encoder-decoder 普遍优于纯 encoder / 纯 decoder(在他们的实验里)
- span corruption 比 MLM 更好——遮掩连续片段而不是孤立 token
- C4 dataset(750 GB 清洗后 CommonCrawl)是好数据集
- scale 持续帮助——模型/数据/计算 越大越好
- 统一文本格式有效——多任务训练能正向迁移
C4 数据集
T5 顺手发布了 C4 (Colossal Clean Crawled Corpus):
- 来源:Common Crawl
- 大小:750 GB(清洗后)
- 清洗规则:去重 + 去 boilerplate + 去坏话 + 只留英文
这个数据集后来被几乎所有开源 LLM 训练用到(Llama、Mistral、Falcon…)—— T5 的”清洗 pipeline 公开”是一份重要遗产。
“Text-to-Text” 范式的影响
T5 框架启发了:
| 后续工作 | 继承点 |
|---|---|
| mT5 / ByT5 / FLAN-T5 | T5 多语言 / 字符级 / 指令微调版本 |
| GPT-3 Few-Shot | ”任务用文本描述” 思想直接受 T5 影响 |
| InstructGPT / ChatGPT | 所有任务通过对话表达 = T5 的延伸 |
| 现代 LLM API | 全部用文本 in / 文本 out |
| DSPy | 所有任务可编程化成 prompt = T5 + few-shot |
T5 vs GPT 的命运
T5(encoder-decoder)和 GPT(decoder-only)在 2019-2020 是并行的。
10 年后:
- GPT 路线赢了:GPT-4 / Claude / Gemini 全是 decoder-only
- T5 路线:仍在某些场景用(如 BART、FLAN-T5),但主流不再
为什么 GPT 赢?
- decoder-only 更简单(少一个 encoder)
- scale 更容易
- 生成任务是大部分应用 = decoder 天然擅长
但 T5 的核心思想(统一文本格式、span corruption、多任务训练)已经被 GPT 吸收——它没”输”,它”溶解”进了主流。
FLAN-T5: T5 + 指令微调
2022 年 Google 发布 FLAN-T5—— 对 T5 做大规模指令微调(1800+ 任务)。
效果:3B 参数的 FLAN-T5 在很多任务上超过 175B 的 GPT-3。
这是 RLHF + ChatGPT 前夜的重要工作—— 证明了”指令微调比单纯 scale 更高效”。
在代码里用 T5
from transformers import T5ForConditionalGeneration, T5Tokenizer
tokenizer = T5Tokenizer.from_pretrained("t5-base")
model = T5ForConditionalGeneration.from_pretrained("t5-base")
# 翻译任务
text = "translate English to German: Hello, how are you?"
input_ids = tokenizer(text, return_tensors="pt").input_ids
outputs = model.generate(input_ids)
print(tokenizer.decode(outputs[0]))
# → "Hallo, wie geht es Ihnen?"
# 摘要任务
text = "summarize: " + long_article
outputs = model.generate(input_ids, max_length=50)
# 分类任务(情感)
text = "sentiment: This movie was great!"
# → "positive"
同一个模型,零修改架构,做任意任务——这是 T5 的优雅。
推荐配套阅读
- HelloAI: L3-09 BERT vs GPT + L4-01 LLM 训练
- T5 原论文(arXiv:1910.10683)
- FLAN-T5 论文(2022)—— 指令微调
- mT5 论文 —— 多语言版
T5 论文 80 页——堪比一本书。 但它的深远影响不是任何单一发现,而是:
“让所有任务在同一框架里表达” 这个范式选择。
ChatGPT 的成功本质上是 T5 思想 + GPT 架构 + RLHF + 规模 的组合。 T5 提供了”统一接口”的设计哲学—— 今天每次你跟 LLM 对话,都在用这个哲学。
想要更多论文精读
订阅每周精选 —— 下一篇论文笔记直接送邮箱。
讨论区
· 用 GitHub 账号登录评论src/components/Comments.astro 顶部填入
仓库 ID 和分类 ID(见组件注释里的配置步骤)。