橙研所· 方法论 × Agent 拆解
AI 科普 · 逐章拆解

AI圣经09 《T5:把所有 NLP 任务,统统变成「文本进、文本出」》

今天你和 AI 的全部交往,都是同一个动作:打一段字进去,吐一段字出来。翻译是这样,问答是这样,连「给这篇文章打个分」也是这样。这个今天理所当然的接口,2019 年底是 Google 一篇 67 页的论文用几百组对照实验「考」出来的。它就是 T5——名字来自五个 T:Text-to-Text Transfer Transformer。上一篇 GPT-3 选择「不微调、把例子写进提示」;几乎同期的 T5 选了另一条路:把所有任务统一成「文本进、文本出」,然后把当时迁移学习的所有流行招数拉到同一张考卷上,逐个考一遍。这篇论文与其说是发明,不如说是一场 NLP 的「全学科统考」——考出来的结论,铺成了今天大模型的地基。

AI圣经09 T5 封面
📚 AI 圣经 · 系列导览这是「AI 圣经」系列第 09 篇。我会带你逐篇精读撑起今天所有大模型的 21 篇经典论文,分 5 个阶段层层递进(本篇已高亮): 本篇论文:《Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer》· Raffel et al. 2019/2020(Google, JMLR)。可搜「T5 paper」或访问 arXiv 编号 1910.10683 下载。其余各篇论文地址,随当期文章给出。

太长不读2019 年底的 NLP,预训练方法大爆炸,但各家成绩没法横向比。T5(Google)开篇声明不提出新方法,要给领域做一场「全学科统考」:先把所有任务统一成「文本进、文本出」(连打分都输出字符串「3.8」),再固定基线、一次只改一个变量,把架构、预训练目标、语料、微调策略、算力花法逐个考一遍。考出的定论:encoder-decoder 架构最好、挖整段的 span corruption 目标又好又省、语料要大要杂别重复、放大模型普遍好过让小模型多吃数据。副产品都成了传世之作:公开的 750GB 语料 C4、开源全家桶、以及日后 instruction tuning 的雏形——任务前缀。最终 110 亿参数版在 24 项任务拿下 18 项第一,SuperGLUE 距人类只差 0.9 分;翻译四项全部没赢,论文也照实写明。

上篇回顾 · 先答一题上一篇 GPT-3 讲完,我们说阶段二还欠一块拼图。先别往下翻,试着答:GPT-3 用 1750 亿参数证明了「少样本提示」能干活,但它全程刻意不做的那件事是什么?……答案:微调——GPT-3 不改一个参数,全靠提示里的例子。而这恰恰是 T5 出发点反过来的地方:T5 不赌「免微调」,它接受「预训练 + 微调」这个两段式框架,但要把框架里每一个可选项都放上考卷考一遍——预训练目标怎么选?架构用哪种?语料用什么?微调怎么调?算力翻倍该怎么花?2019 年的 NLP,这些问题人人有偏方、没人有定论。T5 的野心,就是把偏方全部变成数据。

012019 年的 NLP:方法大爆炸,但没人说得清哪招真有用

T5 t5-p01.png
论文原文 · 第 1 页:标题 + 摘要——《用统一的文本到文本 Transformer 探索迁移学习的极限》,Google 九位作者,发表于 JMLR 2020,正文 67 页,是本系列迄今篇幅最大的一篇。

先摆问题。从 2018 年起,我们这个系列讲过的路子接连登场:GPT-1 证明「生成式预训练 + 微调」可行,BERT 用「双向 + 挖空」横扫榜单,GPT-2 试探「不微调靠提示」。跟风者蜂拥而至——新的预训练目标、新的架构变体、新的语料配方、新的微调技巧,每个月都有论文宣称「我这招更好」。但这些方法各自用不同的模型、不同的数据、不同的算力跑出来,成绩根本没法横向比:你说你的目标函数好,焉知不是你数据洗得干净?

T5 论文开篇就把自己的定位挑明了,这在顶级论文里相当罕见(论文 §1 原话):「我们的目标不是提出新方法,而是给这个领域的现状提供一个全面的视角」——原文用的词是 survey、exploration、empirical comparison:盘点、探索、实证比较。说白了:别人都在交新答卷,T5 要当一次判卷人

但判卷有个前提:所有考生得答同一张卷子。不同任务的输入输出格式五花八门——分类吐标签、翻译吐句子、回归吐数字——怎么让一个模型、一套流程通吃?这就逼出了这篇论文最有名的发明(好吧,它还是发明了一样东西):text-to-text,万物皆「文本进、文本出」

02万物皆文本:翻译、分类、连打分都是「生成一段字」

T5 t5-p02.png
论文原文 · 第 3 页:Figure 1,text-to-text 框架总图,后来出现在无数教材里——翻译、语法判断、语义打分、摘要四个任务,全部变成「一段文字进、一段文字出」。

这张图(论文 Figure 1)值得多看十秒。四个完全不同的任务,被改写成了同一个样子:

诀窍全在输入开头那个任务前缀:一小段写死的文字(「translate English to German:」「summarize:」),告诉模型这次要干哪种活。这样一来,所有任务共用同一个模型、同一个损失函数、同一套解码流程(论文 §2.4)——判卷人的统一考卷有了。有个细节很可爱:分类任务里模型理论上可能输出一个不在标签表里的词(论文举例:万一它答「hamburger」呢),这种情况按答错算——但作者说,训练好的模型里从来没观察到过

眼尖的读者会想起上一篇:这不就是 GPT-2/GPT-3 的「提示」吗?形似而神异,差别值得记住:GPT 的提示是「说给模型听」的自然语言,模型没专门训练过它,靠的是从海量文本里泛化出的理解力;T5 的前缀是「训练进去」的固定暗号,换个措辞就得重新适应(论文也承认前缀本质上是个超参数,好在实验发现措辞影响有限)。一个是通才听懂人话,一个是统一格式的接口规范。这两条路日后会合流——按下不表。

03喂什么、怎么练:750GB「洗干净的互联网」,和「挖整段」的填空题

T5 t5-p03.png
论文原文 · 第 13 页:Figure 2,span corruption 挖空示意——「Thank you for inviting me to your party last week.」中「for inviting」和「last」被整段挖掉,换成哨兵符 <X> <Y>;模型只需输出被挖的内容本身。

考卷统一了,还差两样:教材(预训练语料)和练习册(预训练目标)。这一节 T5 交出两个日后影响深远的作品。

教材:C4。T5 需要海量文本,于是从 Common Crawl(一个公开的全网抓取库,每月能抓出约 20TB 文本)下手。但生抓的网页大部分是垃圾——菜单、报错信息、乱码、样板文字。论文的清洗规则朴素得让人会心(论文 §2.2,规则均为原文):只保留以标点结尾的行;丢掉少于 3 句话的页面;页面含「脏词表」里的词,整页丢弃;含「lorem ipsum」(网页占位假文)的丢;含大括号 { 的丢——因为正常人说话不用大括号,只有代码才用;「使用条款」「cookie 政策」之类的行删掉;任何连续三句话在数据集里出现过第二次,删到只剩一份;最后用语言检测器只留英语页面。这么洗完,得到约 750GB 干净英文——比当时常用的预训练语料大一个数量级。他们给它起名 C4:Colossal Clean Crawled Corpus,「庞大干净爬取语料库」,并公开发布。这个数据集后来被无数模型沿用,是这篇论文送给整个领域的第一份礼物。

练习册:挖空,但挖的是「整段」。BERT 那一篇我们讲过:随机遮住单词让模型猜,文本自己就是标准答案。T5 的版本叫 span corruption(片段损坏):随机挑 15% 的词,连续的几个词合并成一段一起挖掉,每段用一个哨兵符号(<X>、<Y>)代替;模型要输出的不是整句话,而是被挖掉的那几段内容本身(论文 Figure 2)。打个比方:BERT 的填空题是「每行抠一个词」,T5 是「整段留白让你补写」——而且答题卡上只用写你补的那几段,不用抄全文,目标序列短,训练就快。这个「经济实惠」是刻意设计的,后面大考会反复回到它。

基线模型的配置也交代一句(论文 §3.1):标准 encoder-decoder Transformer,约 2.2 亿参数(大致相当于两个 BERT-base 摞起来),预训练约 340 亿 token——论文特意注明这比 BERT(约 1370 亿)和 RoBERTa(约 2.2 万亿)少得多,因为接下来要跑几百组对照实验,每组都得省着点烧。

04大考第一场:架构、目标、语料、微调,一次只动一个变量

T5 t5-p04.png
论文原文 · 第 17 页:Figure 4,三种架构的注意力可见范围示意——左:encoder-decoder(一读一写);中:纯语言模型(GPT 式一路接龙);右:Prefix LM(前半自由回看、后半接龙)。

一切就绪,开考。T5 的考法是实验科学的老规矩(论文 §3 开篇):固定基线,一次只改一个变量——改架构时目标不动,改目标时语料不动。逐场看成绩:

架构场。三个考生(论文 Figure 4):encoder-decoder(一个专门「读」、一个专门「写」,我们在 seq2seq 那一篇讲过的老搭档)、decoder-only 语言模型(GPT 的路子,从左到右一路接龙)、Prefix LM(折中款:前半段自由回看,后半段接龙)。结果很清楚:在 text-to-text 框架下,原始的 encoder-decoder 结构成绩最好(论文 §3.2 与 Table 2)。有人会说它参数是 decoder-only 的两倍,不公平——论文算过账:参数虽然翻倍,计算量其实相近;而且就算把 encoder 和 decoder 共享参数(参数减半),成绩也几乎不掉。在 BERT 与 GPT 分道扬镳的年代,T5 用数据投了 encoder-decoder 一票。

目标场。三种流派对考(论文 §3.3):接龙式语言建模、BERT 式挖空去噪、打乱句子重排。结论第一层:挖空去噪完胜,接龙次之,重排垫底——「猜缺失的内容」确实比「猜下一个词」更能逼模型理解全文。结论第二层更耐人寻味:去噪内部的各种变体(挖单词还是挖整段、挖 10% 还是 25%、段长 2 还是 5)成绩差异都不大(15% 加平均段长 3 略优;挖到 50% 才明显垮)。判卷人于是给出务实建议:既然分数差不多,就挑目标序列最短、训练最便宜的那个

语料场。拿 C4 和各种「更讲究」的语料对比(论文 §3.4):新闻语料、维基百科、Reddit 高赞过滤版(约 17GB 的 WebText 同款)。发现两件事:领域内数据对相关任务确实有帮助(用新闻语料预训练,新闻类任务涨分);但小语料有致命伤——同一批数据反复喂,模型会开始死记硬背(论文 Table 9 与 Figure 6:训练损失掉得飞快、下游成绩反而变差,典型的 memorization)。结论:通用场景下,要大、要杂、别重复——C4 这种「洗干净的大杂烩」是稳妥答案。

微调场。全参数微调,对上两种「省钱套路」——adapter(冻住主体、只训插入的小模块)和逐层解冻。结果:老老实实微调全部参数最好(论文 §3.5)。另外多任务混着一起训,也没能胜过「先预训练、再逐个微调」的朴素两段式。这场考试的答案要等好几年后 LoRA(我们系列 P12 会讲)出现才被改写——但那是后话。

05大考第二场:突然给你 4 倍算力,这笔预算怎么花?

T5 t5-p05.png
论文原文 · 第 35 页:Table 13,「4 倍算力怎么花」对照表——2× 模型 × 2× 步数拿下 GLUE 全场最高 86.18;放大模型普遍好过让小模型多吃数据;四模型投票(ensemble)是正交的另一条路。

第二场只考一道大题,题干直白得像面试题(论文 §3.6 原话):「你刚拿到了 4 倍算力,应该怎么花?」选项:小模型多训 4 倍步数?批量放大 4 倍?模型放大 2 倍、训 2 倍步数?模型放大 4 倍、步数不变?还是干脆训 4 个模型搞投票(ensemble)?

成绩单(论文 Table 13,GLUE 分数):基线 83.28;小模型多训 4 倍,85.33;2 倍模型 × 2 倍步数,86.18,全场最高;4 倍模型 × 原步数,85.91,紧随其后。四个模型投票也涨(84.77),而且论文指出这是条正交的路——它跟「放大」不冲突,可以叠加。判卷人的批语(论文 §3.6 与 §4.1):各种花法都有效,但「把模型变大」带来的提升,普遍好过「小模型多喂数据」

停一秒,把这个结论和上一篇放在一起看。GPT-3 用八个尺寸的阶梯证明「越大越会看样学样」;T5 在完全不同的框架、不同的任务上,用预算对照实验得出同款结论:规模本身就是最重要的变量之一。两条路线、两家公司、同一个指向——「变大」这件事背后是不是有定律可循?这个问题正是下一篇的主角,先按下。

06交卷:110 亿参数、24 门课 18 门第一,和一份诚实的不及格

T5 t5-p06.png
论文原文 · 第 39 页:Table 14,总成绩单——五档 T5(6 千万到 110 亿参数)对全部任务,24 项拿下 18 项第一;GLUE 90.3、SuperGLUE 88.9 距人类 0.9 分;唯独 WMT 翻译四项全部没赢。

大考的最后一步,是把所有场次的最优解组装起来,钱不省了、往死里加:架构用 encoder-decoder,目标用 span corruption,语料用 C4,全参数微调,然后把模型从 2.2 亿一路放大——Small(6 千万)、Base(2.2 亿)、Large(7.7 亿)、3B(30 亿),一直到 T5-11B:110 亿参数,累计预训练超过 1 万亿 token(论文 §3.7)。

成绩单(论文 Table 14,当时的榜单):24 项任务拿下 18 项第一。GLUE 平均分 90.3;SQuAD 阅读理解超过此前最强的 ALBERT;SuperGLUE——一个特意设计成「当时系统做不了、但受过大学教育的人都能做」的高难度榜单——从此前最好的 84.6 直接拉到 88.9,离人类的 89.8 只差 0.9 分(论文 §3.7)。造这个榜单的人大概没想到,它的「防 AI 设计」一年就快守不住了。

但这篇论文最值得尊敬的地方,是它把没考好的科目写得同样清楚:四项翻译任务,一项第一都没拿到(论文 §3.7 原话直陈)。判卷人自己分析了原因:T5 只用英语语料预训练,而翻译榜的最强成绩靠的是反向翻译等专门的数据增强手段——只靠规模和英语预训练,打不过为翻译量身定做的方法。此外它也提醒:SuperGLUE 里的两项阅读理解成绩已「超过人类」,更可能说明评分指标偏爱机器,而不是机器真读懂了。2019 年的论文有这份清醒,放今天看依然稀缺。

交卷之后,Google 把代码、C4 数据集、全部五档预训练权重全部公开。这份「全家桶开源」让 T5 成了此后几年学界最常用的底座之一;它的任务前缀——「summarize:」「translate:」——今天回头看,就是指令微调(instruction tuning)的雏形:先教会模型「看前缀识别任务」,后来者才想到「干脆用整句人话下指令」。而 C4,在后来许多大模型的语料配方里都能找到它的名字。

承前启后,把阶段二收个口。从 BERT 到 GPT-3 再到 T5,「预训练 + 迁移」的三种答案到齐了:BERT 说「挖空理解,逐任务微调」;GPT 说「接龙生成,提示免微调」;T5 说「万物皆文本,统一框架下把每个选择考清楚」。日后的大模型几乎都是这三者的合流:GPT 的 decoder 接龙做底,T5 式的「一切皆文本」做接口,再用指令微调把「前缀暗号」升级成「自然语言吩咐」。你今天对 ChatGPT 打的每一行字,都流经这三篇论文铺的管道。

读完自测:先别往下翻,试着答

主动回忆一遍才记得住。三问,想好再看答案:

答案1. 它开篇声明不提出新方法,目标是给领域现状一个全面视角——盘点、实证比较,当判卷人而不是交新答卷;顺手的发明(text-to-text、C4)都是为「公平判卷」服务的。2. 因为所有任务被改写成同一格式:输入是「任务前缀 + 原文」,输出一律是一段文字(连打分都输出字符串「3.8」)——格式统一后,模型、损失函数、解码流程就能全套共用。3. 规模场的结论:把模型变大,普遍好过让小模型多吃数据;它与 GPT-3 的八尺寸阶梯相互印证,把整个领域推向了「下注规模」的路线——这正是下一篇 Scaling Laws 的主题。

一句话带走,和下一步

只记一句:T5 用一场几百组对照实验的「全学科统考」,把 2019 年 NLP 的各路偏方考成了定论——统一的「文本进、文本出」接口、洗干净的 C4 语料、挖整段的预训练目标、外加「规模最值钱」的判卷批语;它和 GPT-3 一横一纵,共同铺好了通往今天大模型的路。

阶段二到此收官。GPT-3 和 T5 殊途同归地指向同一个问题:「变大」到底有没有定律?大多少、喂多少、烧多少算力,是玄学还是可以算出来的?下一篇 P10《Scaling Laws》,我们进入阶段三——OpenAI 那篇把「规模」变成一门精确科学的论文,也就是 GPT-3 篇里说的「按定律下注」的那个「定律」本身。

想再深入一点荐读一个最优源:Google AI 官方博客《Exploring Transfer Learning with T5: the Text-To-Text Transfer Transformer》(ai.googleblog.com,2020),作者团队亲自写的通俗版,把 text-to-text 框架和大考结论浓缩成了十分钟读物。/ 互动钩子:T5 考出「encoder-decoder 最好」,可今天的主流大模型几乎全是 decoder-only——你觉得是当年考错了,还是考题变了?欢迎评论区聊聊。

← 返回 AI 圣经目录