HelloAI
📄 论文精读 🏆 必读经典 · 2019 · Google · JMLR 2020

Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer (T5)

Colin Raffel, Noam Shazeer, Adam Roberts, Katherine Lee, Sharan Narang, Michael Matena, Yanqi Zhou, Wei Li, Peter J. Liu
📖 如果你只读一段,读这段
Google 2019 提出 T5——把"翻译/分类/问答/摘要"全部统一成"文本输入 → 文本输出"。"text-to-text"框架后来成了 LLM 通用 API 的基础。
#T5#Encoder-Decoder#Transfer Learning#必读

为什么这篇论文重要

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-Small60M
T5-Base220M
T5-Large770M
T5-3B3B
T5-11B11B(当时最大)

关键贡献:系统性实验

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 步

主要结论

  1. encoder-decoder 普遍优于纯 encoder / 纯 decoder(在他们的实验里)
  2. span corruption 比 MLM 更好——遮掩连续片段而不是孤立 token
  3. C4 dataset(750 GB 清洗后 CommonCrawl)是好数据集
  4. scale 持续帮助——模型/数据/计算 越大越好
  5. 统一文本格式有效——多任务训练能正向迁移

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-T5T5 多语言 / 字符级 / 指令微调版本
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 账号登录评论
⚠️ Giscus 评论未配置 —— 在 src/components/Comments.astro 顶部填入 仓库 ID 和分类 ID(见组件注释里的配置步骤)。