回看你学过的两条线:BERT(encoder-only)做分类要在顶上接一个分类头、做问答接一个抽取头,每个任务换一个输出结构;翻译 / 摘要那边走的是 seq2seq。 迁移学习(pre-train 一次、到处微调)已经是共识,但「微调成什么形状」却五花八门——每加一个任务,就要设计一套新的输出层和损失。
T5 的赌注:不再为任何任务定制输出头。无论翻译、分类、打分还是摘要,输入都是一段文字,输出也都是一段文字。
任务的区别,只靠输入开头的一个任务前缀(task prefix)来告诉模型——translate English to German:、summarize:、cola sentence:。
模型不知道「这是分类还是回归」,它只管:读进一串字,生成另一串字。
每个任务都被压成同一个模子——任务前缀 + 输入文字 → 输出文字。看这张「翻译表」,注意最右列全是字符串,连数字、连类别都是「生成出来的字」:
| 任务 | 改写成的输入(带任务前缀) | 输出(一串文字) |
|---|---|---|
| 翻译 | translate English to German: That is good. | Das ist gut. |
| 情感 / 分类 | sst2 sentence: 这家店服务太差 | negative(生成的是字,不是 id) |
| 相似度(回归) | stsb sentence1: ... sentence2: ... | 3.2(连分数都是生成出来的字符串) |
| 摘要 | summarize: 一长段新闻…… | 三句话的摘要…… |
| 问答 | question: ... context: ... | 答案那段文字 |
别和上一课混了。GPT-3 统一的是「不更新权重」(冻结模型 + few-shot);T5 统一的是「输入输出的形状」——它仍然每个任务微调,只是所有任务都微调成同一种 text-to-text 格式,共用一套架构、一种交叉熵 loss、一种解码。 两条统一是互补的:T5 把「任务长什么样」统一了,后来的指令模型(FLAN-T5、InstructGPT)才能在这套统一形状上,把「任务前缀」升级成「自然语言指令」、再做到不微调也听话。
把所有任务捏成一个形状,看着像「为了优雅」,其实换来三个硬收益——也正是为什么今天的 chat 模型全走这条路。
| 统一形状带来 | 说明 |
|---|---|
| ① 一套代码跑所有任务 | 同一个模型、同一种 loss、同一种解码。加新任务=换个前缀、换批数据,不用再设计输出层。 |
| ② 任务之间能互相搭便车 | 形状一样,就能把多个任务混在一起训(multi-task),一个任务学到的能力能迁移给另一个。 |
| ③ 终于能做「公平的受控对比」 | 这是论文真正的贡献:有了统一接口,就能在同一把尺子下系统比较「架构 / 预训练目标 / 数据 / 规模」哪个改动真有用——这就是标题 Exploring the Limits 的意思:一篇巨大的受控 bake-off。 |
第 ③ 点值得单独记住:T5 本质是一篇「先搭统一实验框架,再在上面做对照实验」的论文——和工程上做技术选型对比(bake-off)时先统一测试接口是同一个信条:先把接口统一,比较才有意义。
点不同任务,看它被压成同一个形状的样子——尤其注意「分类」和「回归打分」的输出,都是生成出来的字符串,模型根本不知道任务类型。
五个任务、一个模子:前缀告诉模型「这是什么任务」,模型只管把一串字变成另一串字。这正是你对 chat 模型的体感——你从不「换模型做分类」,你只是换一句话开头。
| 维度 | BERT(P05) | GPT-3(P08) | T5(本篇 P09) |
|---|---|---|---|
| 架构 | encoder-only | decoder-only | encoder-decoder(回到原版 Transformer) |
| 怎么适配任务 | 接任务头 + 微调 | 冻结 + prompt 给例子 | 统一 text-to-text + 微调 |
| 输出形状 | 每任务一种(类别 / 跨度…) | 生成文字 | 一律生成文字 |
| 统一了什么 | 预训练(双向 MLM) | 不训练(few-shot) | 任务的形状(万物皆字符串) |
| 对你的意义 | 「先 pre-train 再微调」 | 「prompt 塞例子就管用」 | 「同一个模型、换句话就换任务」 |
为什么 T5 选 encoder-decoder?它做了受控对比:encoder 双向读懂输入、decoder 自回归生成输出,对「读一段、写一段」的任务(翻译 / 摘要 / 问答)最自然;其变体 prefix-LM(前半段双向、后半段单向)介于二者之间。结论是:在它的 text-to-text 设定下,encoder-decoder 综合最稳。
在统一接口下,T5 把每个旋钮都拧了一遍做对比。两个对你最有用的结论:
| 旋钮 | T5 的选择 / 结论 | 对照你已学的 |
|---|---|---|
| 预训练目标 | span corruption(片段损坏)胜出:随机遮掉连续的一小段词,用一个哨兵 token(<X>)占位,让模型生成被遮掉的那段 | 比 BERT 的 MLM(遮单个词、原位预测)更省、更贴合「生成」,也和 encoder-decoder 天生对味 |
| 训练数据 | 自建 C4(Colossal Clean Crawled Corpus):把 Common Crawl 狠狠清洗后得到 ~750GB 干净文本 | 呼应 GPT-2 的 WebText,也和搭 RAG 知识库时的选料信条一致——质 ≥ 量,清洗是地基 |
| 规模 | 同一配方放大到 11B,越大越好(但成本陡升) | 把悬念交给下一阶段:到底怎么配最划算? |
🔮 T5 把「形状」统一了,又用受控实验确认「放大就涨」,但没回答「规模、数据、算力到底该按什么比例配」。这正是下一篇 Scaling Laws(P10) 和 Chinchilla(P11) 要量化的事。
| 你工作里的东西 | 其实就是这篇论文的什么 |
|---|---|
| 对同一个 chat 模型,用 prompt 做分类 / 抽取 / 打分 / 翻译,从不换模型 | 就是 text-to-text 统一框架——「万物皆字符串变换」,今天 chat 范式的底座在这篇 |
| 你用 LLM 给对话/输出打分(LLM-as-judge),让模型生成一个分数(如「7/10」) | 就是 T5 把回归也变成「生成数字字符串」(STS-B 打分)的同一招——分数是生成出来的字,不是回归头算的 |
| 你 prompt 开头那句「你是一个…请把以下…」 | 就是 T5 任务前缀(task prefix)的后代;指令微调(FLAN-T5 直接基于 T5)就是把前缀升级成自然语言指令 |
| 你做技术选型对比(bake-off),先统一测试接口再对比方案 | 和 T5 同一方法论:先搭统一的评测框架,受控对比才公平——这篇论文本身就是一次巨型 bake-off |
| 你搭 RAG 知识库时强调「清洗 > 堆量」 | 就是 T5 造 C4(清洗 Common Crawl)的信条:数据质量是地基 |
把这一课接到你真实工作上的几个关键问。点开看答。
会牺牲一点点:生成「positive」要逐 token 解码,比一个分类头直接出一个类别 id 略慢;回归用「生成数字串」也不如真回归头精确。但 T5 用实测证明:这点损失换来的「统一性 + 通用性」远更值——一套代码、一种 loss、任意加任务、任务间能迁移。
这就是为什么今天的 chat 模型全押了 text-to-text:在「极致单任务性能」和「一个模型什么都能干」之间,通用性赢了。你用 LLM 做打分(而不是训一个回归模型),吃的就是这笔交易。
是它的祖先,但还不等于。T5 的前缀是固定的短标签(translate English to German:),而且模型是被微调过来认这些前缀的——你不能随便换措辞。你今天写的是自然语言指令,模型不微调也能听懂。
中间那一步关键演化叫 instruction tuning(指令微调):把成千上万任务都写成「自然语言指令 + text-to-text」去微调,模型就学会「听任意指令」。第一个标志性成果 FLAN-T5 就直接长在 T5 上。所以链条是:T5 任务前缀 → FLAN 指令微调 → InstructGPT(P15)/ 今天的 chat。
在 T5 的设定(每任务微调、读一段输入写一段输出)里,encoder-decoder 综合最稳:encoder 用双向把输入读透,decoder 自回归生成——天生适配翻译 / 摘要 / 问答这类「输入→输出」任务。论文里它确实优于同等算力的 decoder-only。
后来 decoder-only 成主流,是因为目标变了:要的是「一个冻结模型、靠 prompt 通吃、还能 few-shot」(GPT-3 路线),decoder-only 更简单、更好放大、对「续写式」交互更顺。不是 encoder-decoder 错了,是赛道从「每任务微调」换到了「一个通用对话模型」。两套架构今天都还在用(很多翻译 / 摘要专用模型仍是 encoder-decoder)。
读原典:Raffel et al. — Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer(T5, 2019)。
建立直觉首选:Google AI Blog — Exploring Transfer Learning with T5;想看后续演化,搜 FLAN-T5(指令微调如何长在 text-to-text 上)。
阶段三开篇:T5 统一了「任务的形状」。下一步 P10 Scaling Laws / P11 Chinchilla:把「放大就涨」量化成「规模 × 数据 × 算力到底怎么配最划算」。
参考:
Raffel et al., Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer, 2019/2020.