- 阶段一 · 地基:P01《Attention Is All You Need》 · P02 Bahdanau Attention · P03 seq2seq · P04 word2vec
- 阶段二 · 预训练范式:P05 BERT · P06 GPT-1 · P07 GPT-2 · P08 GPT-3 · P09 T5 · 本篇
- 阶段三 · 规模与效率:P10 Scaling Laws · P11 Chinchilla · P12 LoRA · P13 FlashAttention · P14 MoE
- 阶段四 · 对齐与推理:P15 InstructGPT(RLHF)· P16 思维链 CoT · P17 DPO · P18 Constitutional AI
- 阶段五 · 检索与 Agent:P19 RAG · P20 ReAct · P21 Toolformer
太长不读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:方法大爆炸,但没人说得清哪招真有用
先摆问题。从 2018 年起,我们这个系列讲过的路子接连登场:GPT-1 证明「生成式预训练 + 微调」可行,BERT 用「双向 + 挖空」横扫榜单,GPT-2 试探「不微调靠提示」。跟风者蜂拥而至——新的预训练目标、新的架构变体、新的语料配方、新的微调技巧,每个月都有论文宣称「我这招更好」。但这些方法各自用不同的模型、不同的数据、不同的算力跑出来,成绩根本没法横向比:你说你的目标函数好,焉知不是你数据洗得干净?
T5 论文开篇就把自己的定位挑明了,这在顶级论文里相当罕见(论文 §1 原话):「我们的目标不是提出新方法,而是给这个领域的现状提供一个全面的视角」——原文用的词是 survey、exploration、empirical comparison:盘点、探索、实证比较。说白了:别人都在交新答卷,T5 要当一次判卷人。
但判卷有个前提:所有考生得答同一张卷子。不同任务的输入输出格式五花八门——分类吐标签、翻译吐句子、回归吐数字——怎么让一个模型、一套流程通吃?这就逼出了这篇论文最有名的发明(好吧,它还是发明了一样东西):text-to-text,万物皆「文本进、文本出」。
02万物皆文本:翻译、分类、连打分都是「生成一段字」
这张图(论文 Figure 1)值得多看十秒。四个完全不同的任务,被改写成了同一个样子:
- 翻译:输入「translate English to German: That is good.」,输出「Das ist gut.」
- 语法判断(CoLA):输入「cola sentence: The course is jumping well.」,输出单词「not acceptable」(不合语法)。
- 语义相似度(STS-B):输入「stsb sentence1: … sentence2: …」,输出——注意——字符串「3.8」。这本来是个回归任务(打 1 到 5 的分),T5 硬是让模型把分数当作文字「念」出来。
- 摘要:输入「summarize: 州政府周二派出应急队伍勘察灾情……」,输出一句概括。
诀窍全在输入开头那个任务前缀:一小段写死的文字(「translate English to German:」「summarize:」),告诉模型这次要干哪种活。这样一来,所有任务共用同一个模型、同一个损失函数、同一套解码流程(论文 §2.4)——判卷人的统一考卷有了。有个细节很可爱:分类任务里模型理论上可能输出一个不在标签表里的词(论文举例:万一它答「hamburger」呢),这种情况按答错算——但作者说,训练好的模型里从来没观察到过。
眼尖的读者会想起上一篇:这不就是 GPT-2/GPT-3 的「提示」吗?形似而神异,差别值得记住:GPT 的提示是「说给模型听」的自然语言,模型没专门训练过它,靠的是从海量文本里泛化出的理解力;T5 的前缀是「训练进去」的固定暗号,换个措辞就得重新适应(论文也承认前缀本质上是个超参数,好在实验发现措辞影响有限)。一个是通才听懂人话,一个是统一格式的接口规范。这两条路日后会合流——按下不表。
03喂什么、怎么练:750GB「洗干净的互联网」,和「挖整段」的填空题
考卷统一了,还差两样:教材(预训练语料)和练习册(预训练目标)。这一节 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 的考法是实验科学的老规矩(论文 §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 倍算力,这笔预算怎么花?
第二场只考一道大题,题干直白得像面试题(论文 §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 门第一,和一份诚实的不及格
大考的最后一步,是把所有场次的最优解组装起来,钱不省了、往死里加:架构用 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. T5 论文自己声明的定位,和大多数论文有什么根本不同?
- 2. 「文本进、文本出」为什么能让翻译、分类、打分共用同一个模型?
- 3. 这场大考里,哪个结论后来被证明最重要?
答案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——你觉得是当年考错了,还是考题变了?欢迎评论区聊聊。