土法炼钢兴趣小组的算法知识备份

【Transformer 与注意力机制】39|T5:把所有 NLP 任务塞进 Text-to-Text,代价在哪里

文章导航

分类入口
transformer
标签入口
#transformer#t5#text-to-text#encoder-decoder#span-corruption#c4

Transformer系列导航

按系列顺序继续阅读,而不是停在单篇。

系列目录上一篇:【Transformer 与注意力机制】38|GPT 系列:从 GPT-1 到 GPT-4 的路线演进下一篇:【Transformer 与注意力机制】40|三大路线之争:为什么大模型几乎都是 Decoder-only

目录

如果只读 T5 的介绍性文章,很容易得到一个印象:这篇论文的贡献就是”把所有任务写成文本进、文本出”。这个印象对,但只对了一半,而且是不动手跑消融就能得到的那一半。真正决定一个 span corruption 目标训不训得动、一个多任务混合模型会不会在某个任务上悄悄学会走捷径、一个 Encoder-Decoder 模型能不能塞进线上服务延迟预算里的,是藏在论文消融表格和后续工程实践里的具体数字:corruption rate 定多少、平均 span 长度选多长、任务前缀会不会被模型学成”看到 sst2 sentence: 就吐 positive“的捷径、C4 的清洗规则本身带着什么假设、Encoder 和 Decoder 分开算这件事训练时是优点,到了推理服务又变成什么代价。

37|BERT38|GPT 都不需要回答这些问题,因为它们只有一种输出接口:BERT 输出的是表示,GPT 输出的是续写。T5 的麻烦、也是它的价值,在于它同时要处理生成、分类、回归、抽取,还要在同一个预训练目标里兼顾双向理解和自回归生成。本文不重复”Text-to-Text 很优雅”这类结论,而是把 Raffel 等人(2020,JMLR)论文里真正做了系统消融的几个旋钮,以及后续工作暴露出的几个坑,按顺序拆开讲。

本篇能让你学会四件事:

  1. span corruption 的 corruption rate、平均 span 长度这两个旋钮,论文消融出的具体数字和结论边界在哪;
  2. 任务前缀为什么容易被模型学成格式捷径,学界怎么用 held-out 格式和去前缀测试戳穿这件事;
  3. Encoder-Decoder 在推理服务上和纯 Decoder 模型的结构性差异到底差在哪;
  4. Text-to-Text 是否应该覆盖分类和检索,这条到今天仍有实证分歧的争论线,双方证据都来自同一批作者。

一、Text-to-Text:把输出也变成一句话

T5 最直接的设计,是把所有任务都写成 输入文本 -> 输出文本。翻译任务写成 translate English to German: That is good.,输出 Das ist gut.;情感分类写成 sst2 sentence: This movie is surprisingly good.,输出不是某个分类 head 的 logits,而是文本标签 positive。这个接口的好处是模型不需要为每种任务改变输出层,所有任务都被组织成条件生成:给定输入序列,生成目标序列。

这套框架并不是处处都能无缝套用。论文 2.4 节明确提到一个反例:STS-B 是回归任务,目标是预测 1 到 5 之间的相似度分数。论文观察到大多数标注分数是 0.2 的整数倍,于是把任意分数四舍五入到最近的 0.2 增量,再转成字符串(比如浮点值 2.57 映射成字符串 "2.6"),推理时把模型输出的数字字符串转回浮点数,输出不是合法数字字符串就记为错误。这相当于把一个连续回归问题重新离散化成 21 类分类问题——Text-to-Text 统一了接口形式,但没有消除”这个任务本质上是回归”这个事实,只是把离散化的工作从模型结构转移到了数据预处理。类似地,Winograd 系列任务(WNLI、WSC、DPR)也被改写成”在文本里标出歧义代词,模型预测它指代的名词短语”这种更贴合文本生成的形式,而不是直接套用原始的二分类标注。这两个例子说明,统一接口是有工程代价的:不是任务改写成文本就完事了,怎么改写、改写后信息有没有损失,都要具体设计。


二、为什么是 Encoder-Decoder,不是砍掉一半

T5 论文 3.2 节做了一件很多复述文章都跳过的事:把 Encoder-Decoder、共享参数的 Encoder-Decoder、只用一半层数的 Encoder-Decoder、Decoder-only 语言模型、带前缀可双向注意输入的 Decoder-only(prefix LM)放在同一张表(Table 2)里比较,比较的标准是参数量和计算量。

这里有一个容易被忽视的等价关系:一个 Encoder 和 Decoder 各有 \(L\) 层的 Encoder-Decoder 模型,参数量约等于一个 \(2L\) 层的纯 Decoder 语言模型;但计算量(FLOPs)却约等于一个只有 \(L\) 层的纯 Decoder 模型。原因是纯 Decoder 模型的每一层都要处理输入序列和输出序列拼接后的完整长度,而 Encoder-Decoder 里 Encoder 只处理输入、Decoder 只处理输出,两边分工。论文把这组等价关系记成:\(2L\) 层 Encoder-Decoder 有 \(2P\) 参数、\(M\) FLOPs 计算量,等价计算量的纯 Decoder 模型只有 \(P\) 参数。也就是说,在同样的推理算力预算下,Encoder-Decoder 结构相当于”免费”多拿到了一倍参数量。

消融结果证实了这一点:带 denoising 目标的标准 Encoder-Decoder 在所有任务上表现最好;把 Encoder 和 Decoder 的参数共享(降到 \(P\) 参数、仍是 \(M\) FLOPs)几乎不掉分;但如果为了对齐参数量而直接砍掉一半层数,性能明显下降。论文还专门比较了 Encoder-Decoder 和结构完全对齐(同参数量、同计算量)的 Decoder-only prefix LM——后者对输入部分用双向可见的注意力,其余和标准语言模型一样——Encoder-Decoder 仍然更好,说明显式的 encoder-decoder cross-attention 本身带来了增益,不只是”能看到双向上下文”这一点在起作用。这三条放在一起,是 T5 选择 Encoder-Decoder 而不是 Decoder-only 的直接依据:不是”翻译任务历史上就用 Encoder-Decoder”这种惯性判断,而是同算力预算下的实测对比。


三、任务前缀与格式过拟合:模型学到的是任务,还是格式

T5 在输入前加任务前缀,比如 translate English to German:summarize:sst2 sentence:。论文原文说得很干脆:前缀的具体措辞本质上是一个超参数;他们尝试过不同的前缀写法,发现措辞对结果影响有限,因此没有针对前缀措辞做大规模实验。这句话本身值得多想一层——如果前缀的具体文字对结果影响有限,那模型很可能没有在”理解”前缀这句话的语义,而是把前缀当成一个固定的路由信号:看到这串 token,就把输出分布切换到对应任务的标签集合上。

这在多任务混合训练里是一个真实的风险。设想一个 sst2 sentence: 开头的样本,如果 SST-2 训练集里某个标签占比明显偏高,模型完全可以不认真处理句子内容,只要认出前缀 sst2 加上句子长度、情感词密度这类浅层线索,就能在训练集上拿到不错的准确率——这和后续 NLI 数据集里发现的标注痕迹(annotation artifact)是同一类问题,只是载体从”某个词”换成了”任务前缀 + 输出词表”这一整套结构。

学界对这类”模型是不是真的理解了任务描述,还是在模式匹配”的怀疑,有明确的实证工作。Webson 与 Pavlick(NAACL 2022)用 30 多个人工撰写的自然语言推断 prompt 做实验,发现模型用故意无关甚至误导性的 prompt 学习速度,和用写得很”到位”的 prompt几乎一样快,说明 prompt 起作用的更多是目标词本身而不是 prompt 的语义内容——这个结论在 175B 参数的模型和经过数百种 prompt 指令微调的模型上同样成立。Sanh 等人的 T0(ICLR 2022,基于 T5 encoder-decoder 微调)则从方法论上直接回应了这个风险:他们专门设计了 held-out 任务和 held-out prompt 模板的评测协议——训练时完全不出现某几类任务(自然语言推断、指代消解、句子补全、词义消歧)及其对应数据集,评测时只在这些从未见过的任务和从未见过的措辞上打分。这个协议存在的意义就是排除”模型只是记住了见过的前缀到标签的映射”这种可能性:如果模型在全新的措辞和全新的任务类别上依然有效,才能说它学到的是可迁移的任务理解能力,而不是格式匹配。

对写 T5 类多任务模型的人来说,这给出一个可操作的排查手段:不要只看训练集/验证集同分布下的准确率,要做两件事——换一批和训练时用过的前缀措辞不同、但语义等价的 held-out 格式重新评测一次;再做一次去前缀(或替换成无信息前缀)的对照评测。如果性能在换格式后大幅下滑,或者去掉前缀后模型仍然稳定地按某个任务的标签分布回答,说明模型很可能在吃前缀这个捷径,而不是在读句子内容。


四、span corruption:旋钮、消融,以及它真正改变的学习信号

T5 的预训练目标常被简称为 span corruption:把输入里连续的一段 token 替换成一个 sentinel(<extra_id_0> 这类特殊 token),Decoder 的目标是生成被替换掉的原始片段,用同样的 sentinel 做分隔符。这不是唯一选项,论文 3.3 节做了一整条消融链,数字都写在 Table 4 到 Table 7 里。

先比目标类型。论文先把三种彼此差异很大的目标放在一起比(Table 4):prefix language modeling(把一段文本切成前后两半,前半给 Encoder,后半给 Decoder 预测)、BERT 风格的 MLM(把 15% 的 token 打乱,Decoder 侧目标是完整还原整段未破坏的文本)、deshuffling(打乱整句词序,目标是还原原始顺序)。GLUE 上三者分别是 80.69、82.96、73.17——BERT 风格明显最好,deshuffling 明显最差,这也印证了 denoising 目标全面优于纯语言建模和乱序重排这个更早由 Devlin 等人主张的判断。

再比 BERT 风格内部怎么改。BERT 风格的原始做法要求 Decoder 还原整段未破坏文本,这意味着 Decoder 要对很长的序列做自注意力,训练慢。论文接着比较四种简化(Table 5):BERT-style(还原整段)、MASS-style(只把每个损坏 token 换成 mask,不做随机 token 替换)、replace corrupted spans(T5 最终采用的方案:把连续损坏片段替换成单个 sentinel,目标只是被替换的片段)、drop corrupted tokens(直接从输入里删掉损坏 token,不留任何占位符,目标是按顺序还原被删掉的片段)。GLUE 分数分别是 82.96、82.32、83.28、84.44。乍看 drop corrupted tokens 最高,但这个数字被 CoLA 一个子任务拉高——论文明确指出 drop 版本在 CoLA 上是 60.04,相较其余变体的平均 53.84 高出一截,作者推测这是因为 CoLA 判断句子是否语法完整,而”判断哪里缺了词”恰好和这个任务同构;但 drop 版本在 SuperGLUE 上是 68.67,明显低于 replace corrupted spans 的 71.36。也就是说没有哪个变体全面占优,选择 replace corrupted spans 的理由是它和 drop 版本一样能大幅缩短目标序列(从而加速训练),同时没有 drop 版本在 SuperGLUE 上的明显短板。

再比 corruption rate。固定用 replace corrupted spans,比较 10%、15%、25%、50% 四档(Table 6):GLUE 分别是 82.82、83.28、83.00、81.27,SuperGLUE 是 69.55、71.36、70.48、70.33。结论是 corruption rate 在 10% 到 25% 这个区间内影响有限,只有 50% 这个极端值才明显掉分;15% 被采用,主要是延续 BERT 的历史先例,而不是因为消融证明它严格最优——更高的 corruption rate 也意味着更长的目标序列,训练更慢,这也是不往高走的一个实际理由。

最后比平均 span 长度。固定 corruption rate 15%,比较基线的逐 token 独立采样(i.i.d.)和平均 span 长度 2、3、5、10 的连续片段采样(Table 7):GLUE 分别是 83.28(i.i.d. 基线)、83.54、83.49、83.40、82.85;SQuAD 是 80.88、82.09、81.84、82.05、81.84。论文原话是”平均 span 长度 3 的效果比 i.i.d. 目标小幅但显著更好”,而 span 长度 10 在部分任务上明显掉分。T5 最终选定的正式配方是 corruption rate 15%、平均 span 长度 3,用于论文 3.7 节 “Putting It All Together” 里训练的最终大模型。

这一串消融真正说明的是什么。第一,corruption rate 和 span 长度这两个旋钮在合理范围内对下游分数的影响都不大,选定值更多是历史延续和训练效率的折中,不是被消融”证明”出的全局最优点——这和很多复述文章暗示的”15%/3 是被反复验证的黄金参数”是两件事。第二,选择连续 span 而不是逐 token 独立 mask,本质上改变的是学习信号的粒度:BERT 式逐 token mask 迫使模型在句子内部散落的多个位置分别做局部填空,每个位置的上下文通常是完整的;span corruption 把这些填空点压缩成少数几个更长的空洞,模型要在更少但更难的位置上做”补全一整段”的推断,这也是为什么它天然适合改写成生成任务——目标不再是”哪个词填这个空”,而是”这段缺失的文本写什么”。

这也是 T5 和 BERT MLM、GPT next-token prediction 在学习信号密度上的结构差异所在,这里没有论文直接测量的量化指标,只做机制推导:GPT 的 next-token prediction 对序列里的每一个位置都计算损失,监督信号在位置维度上是稠密的,但每个位置只能看到左侧上下文;BERT MLM 只在被 mask 的约 15% 位置上计算损失,监督在位置维度上是稀疏的,但每个被监督的位置能看到双向完整上下文;T5 的 span corruption 把损失都压缩进一段短得多的目标序列里,目标序列内部的监督是稠密的(每个目标 token 都算损失),但相对原始输入长度而言,真正被”考核”的内容依然只占约 15%,只是这 15% 被重新打包成了一段更容易学、训练更快的连续生成任务。三者不是谁的信号”更多”或”更少”,而是稀疏度和上下文可见性之间做了不同的取舍。


五、C4 不是”干净互联网”,是一套归纳偏置

T5 论文 2.2 节把 C4(Colossal Clean Crawled Corpus)的构造过程写得很具体,这些规则本身就是一套对”什么算自然语言文本”的假设,不是中立的清洗步骤:

论文 3.4.1 节(Table 8)用一个对照实验验证了这套规则不是可有可无的装饰:把这些过滤步骤全部去掉(保留 langdetect 语言过滤)得到”unfiltered C4”,在每一个下游任务上表现都一致变差,未过滤版本是所有对比数据集里表现最差的。这说明清洗规则不是锦上添花,而是决定模型学到什么分布的关键前提。

但这套规则也在悄悄定义”什么值得学”:句末标点过滤会系统性排除列表、目录、导航栏这类结构化短文本,但同时也会误伤本来就是碎片化、非完整句式但仍有信息量的文本;花括号过滤把代码从语料里整体清出去,这也是为什么后来专门做代码模型需要单独构造语料而不能直接沿用 C4 这条路线(35|数据工程 讨论过 C4、The Pile、RefinedWeb、Dolma 这几条语料路线各自的取舍);langdetect 的语言判定门槛意味着 C4 事实上是一个以英语为中心的语料,这个假设直接决定了 T5 基线模型的语言覆盖能力。换句话说,C4 的”干净”不是一个客观属性,而是相对于”训练一个英语为主、面向 GLUE/SuperGLUE/SQuAD 这类评测任务的模型”这个目标定义出来的,规则换一个目标就要跟着换。


六、Encoder-Decoder 的优势与 serving 局限

Encoder-Decoder 在训练阶段的好处上一节已经量化过:同等计算量下相当于多拿到一倍参数量,且 Encoder 端的双向注意力对理解类子任务有直接帮助。但这个结构分工在推理服务阶段变成了另一套问题。

Decoder-only 模型的 KV Cache 结构简单:整个序列(prompt + 生成内容)共享同一套自回归、causal mask 下的 K/V 缓存,新 token 只需要和历史 K/V 做一次 attention,缓存随生成逐步增长。这套简单性是 continuous batching、prefix caching 这类工程手段能大规模落地的前提——同一个 system prompt 的 KV Cache 可以被不同用户请求复用,因为它们在因果结构里就是同一段前缀(详见 11|推理基础 第四、五、九节对 KV Cache 结构、continuous batching 演化和 prefix cache 复用的展开)。

Encoder-Decoder 的 KV Cache 要维护两套结构:Encoder 端做的是一次性的双向自注意力,输入跑完一遍就结束,不需要逐步展开;Decoder 端除了自己的自回归 self-attention KV Cache,每一层还要对 Encoder 的输出做 cross-attention,这部分 K/V 只需要在 Encoder 跑完后计算一次,之后在整个解码过程里反复复用,不会随 Decoder 步数增长。这意味着一次请求要同时管理”计算一次、常驻不变”的 cross-attention KV 和”逐步增长”的 self-attention KV 两套生命周期不同的缓存,工程上比纯 Decoder 的单一因果 KV Cache 更复杂。更关键的是 prefix cache 的复用边界:纯 Decoder 模型下,任意两个请求只要有相同的文本前缀(比如同一个 system prompt),就能在因果结构里共享这段前缀的 KV Cache,与后面各自不同的续写内容无关;Encoder-Decoder 模型里,“前缀”的语义天然发生在 Encoder 侧,而 Encoder 的双向注意力意味着一个 token 的表示依赖于输入里所有其它 token,两个不同的完整输入即便共享字面上的前几个词,Encoder 算出来的这几个词的表示也可能因为后面内容不同而不同——除非两次请求的 Encoder 输入完全逐字相同,Encoder 端的 KV 基本没有天然可复用的公共前缀结构。这就是 Encoder-Decoder 模型难以直接套用纯 Decoder 生态里那套”共享长 system prompt、靠前缀命中率摊薄成本”的服务优化思路的结构性原因,不是工程实现懒,而是双向编码这件事本身和”前缀”这个概念不兼容。


七、争论:Text-to-Text 该不该覆盖分类和检索

T5 论文的隐含主张是:只要任务能写成文本进、文本出,就该用同一个生成式框架处理,包括分类。这个主张在后续工作里遇到了直接的反例,而且反例和支持证据出自同一批作者,值得把两边的证据摆在一起看。

反对生成式接口覆盖一切的证据来自 Sentence-T5(Ni 等人,Findings of ACL 2022)。这篇论文研究怎么从 T5 里提取句子嵌入,比较了三种做法:只用 Encoder 输出第一个 token 的表示、只用 Encoder 输出的均值池化、用完整 Encoder-Decoder 结构下 Decoder 第一步的输出。结果是:在 SentEval 和作者新建的 SentGLUE 迁移任务集上,两种纯 Encoder 池化方法全面超过完整 Encoder-Decoder 方法,并且随着模型从百万级参数扩大到 110 亿参数,这个优势保持稳定;只有在语义文本相似度(STS)这一项任务上,完整 Encoder-Decoder 方法反而取得了当时的最好结果。也就是说,即便是同一个预训练好的 T5 权重,把 Decoder 直接砍掉、只留 Encoder 做嵌入,在大多数分类和迁移任务上比强行套用生成式接口更好。

支持生成式接口能覆盖检索的证据来自 DSI——Differentiable Search Index(Tay 等人,NeurIPS 2022)。这篇论文把检索本身也改写成 Text-to-Text:整个文档库的信息编码进一个 Transformer 的参数里,模型直接把查询字符串映射到相关文档的 docid 字符串,绕开传统的双编码器(dual encoder)+ 近邻检索流程。在 Natural Questions 的 10K 文档子集上,同为 T5-Base 规模,双编码器基线的 是 16.2,而 DSI 用语义字符串 docid 表示的版本达到 33.9,是当时相当显著的提升,且随着模型规模从 Base 扩大到 11B(DSI-XXL),提升幅度进一步扩大。这个结果反过来支持了”生成也能吃掉检索”这条路线。

有意思的是,这两篇论文的作者名单有重叠(Jianmo Ni 同时是这两篇的作者),说明这不是”不同阵营互相打架”,而是同一批研究者在不同任务、不同数据规模下测出了两种相反的结论:句子嵌入和分类迁移场景下 Encoder-only 池化更稳,检索场景下(至少在中小规模语料上)生成式接口有优势。这条争论目前没有一个统一的答案,答案依赖于具体任务的输出空间结构——分类和嵌入的输出是一个固定维度的连续向量,用于后续的相似度计算或线性分类,生成一段变长文本再解析未必比直接产出向量更合适;检索的输出本身可以自然地表示成一个 docid 字符串,生成式接口反而契合。


八、开放问题

DSI 展示的优势并没有在更大规模的语料上稳定复现。Pradeep 等人(EMNLP 2023)做了第一次系统性研究,把生成式检索方法一路扩展到完整的 MS MARCO passage ranking 任务——880 万篇文档,模型规模最高到 110 亿参数。结果是:在小规模语料上生成式检索确实能和最好的双编码器打平甚至更好,但扩展到百万级文档规模时,这个优势基本消失;论文强调用合成查询作为文档表示是唯一在扩大语料规模时依然有效的技术,而其他为提升生成式检索效果提出的架构改动,在按相同计算成本折算后并没有真正的增益,单纯放大模型参数也在超过某个规模后反而损害检索效果。这篇论文的结论很明确:生成式检索能不能扩展到百万级、真实网页规模的语料,仍然是一个尚未解决的问题,不是工程细节没抠对,而是现有技术路线本身还没找到扩展规律。这是一个具体、可检验的开放问题——它不是”生成式检索会不会取代双编码器”这种模糊预测,而是”在合成查询表示之外,还有什么手段能让生成式检索的索引容量随语料规模线性扩展”,感兴趣的话可以从 Pradeep 等人这篇论文的实验设置和消融开始读。

多任务 Text-to-Text 训练里格式过拟合的检测方法同样没有定论。T0 的 held-out 任务/模板协议和 Webson & Pavlick 的 prompt 语义敏感性实验,都只是给出了”如何暴露问题”的检验手段,没有给出”如何从训练层面根治”的答案——換一批更 robust 的 prompt 措辞训练,能不能真正让模型学到任务语义而不是格式统计规律,还是一个开放的实证问题,需要针对具体任务混合和数据规模逐个验证,不能假设某一种训练配方天然免疫。


九、关键概念回顾


十、常见误解

10.1 “T5 就是 GPT 加了 Encoder”

不准确。T5 的训练目标、任务格式和迁移学习框架都和 GPT 路线不同,它是 Encoder-Decoder 框架下系统化消融出的配方,不是在 GPT 基础上做的小改。

10.2 “corruption rate 15%、平均 span 长度 3 是被证明的全局最优参数”

不成立。论文消融显示 corruption rate 在 10% 到 25% 区间内差异有限,只有 50% 明显掉分;平均 span 长度 3 只是”小幅但显著”优于逐 token 独立采样,span 长度 10 在部分任务上反而更差。选定这组参数更多是历史延续(沿用 BERT 的 15%)和训练效率折中,不是穷举后找到的唯一最优点。

10.3 “任务前缀能保证模型理解任务语义”

前缀更像是一个训练出来的路由信号,而不是保证模型”读懂”了任务描述。Webson 与 Pavlick 的实验显示模型对无关甚至误导性的 prompt 学习速度和”好”prompt 相近;判断模型是不是真的理解任务,需要用 held-out 措辞和去前缀这类对照评测,而不是只看同分布下的准确率。

10.4 “Text-to-Text 说明所有任务都该用生成解决”

不成立。Sentence-T5 的结果显示,同一个 T5 权重下,纯 Encoder 池化在多数分类和迁移任务上优于完整 Encoder-Decoder 生成式接口;只有 DSI 这类检索任务上生成式接口表现出优势,而且这个优势在扩大到百万级语料后尚未被稳定验证。任务的输出结构决定接口该怎么选,不是接口越统一越好。


十一、下一步

BERT、GPT、T5 三条路线已经摆在桌面上。下一篇要横向比较:Encoder-only、Encoder-Decoder、Decoder-only 到底分别赢在哪里,为什么今天的大模型几乎都走向 Decoder-only。


十二、参考文献

  1. Raffel, C. et al. “Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer.” JMLR 2020. T5 原始论文,本文 Table 2、4、5、6、7 及 2.2、2.4、3.2、3.3、3.4 节的消融数字均出自此文。
  2. Devlin, J. et al. “BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding.” NAACL 2019. Masked Language Modeling 与 80/10/10 掩码策略的来源。
  3. Radford, A. et al. “Improving Language Understanding by Generative Pre-Training.” OpenAI, 2018. GPT-1 技术报告。
  4. Vaswani, A. et al. “Attention Is All You Need.” NeurIPS 2017. Encoder-Decoder Transformer 原始结构。
  5. Webson, A. and Pavlick, E. “Do Prompt-Based Models Really Understand the Meaning of Their Prompts?” NAACL 2022. 任务前缀/prompt 语义敏感性的实证反例,支撑本文第三节的格式过拟合讨论。
  6. Sanh, V. et al. “Multitask Prompted Training Enables Zero-Shot Task Generalization.” ICLR 2022. T0,基于 T5 encoder-decoder,held-out 任务/模板评测协议的设计初衷。
  7. Ni, J. et al. “Sentence-T5: Scalable Sentence Encoders from Pre-trained Text-to-Text Models.” Findings of ACL 2022. Encoder-only 池化在分类/迁移任务上优于完整 Encoder-Decoder 的直接证据。
  8. Tay, Y. et al. “Transformer Memory as a Differentiable Search Index.” NeurIPS 2022. DSI,生成式检索在中小规模语料上优于双编码器的证据。
  9. Pradeep, R. et al. “How Does Generative Retrieval Scale to Millions of Passages?” EMNLP 2023. 生成式检索扩展到百万级语料失效的实证研究,支撑本文第八节的开放问题。

← 上一篇:38|GPT 系列 | 下一篇:40|三大路线之争

同主题继续阅读

把当前热点继续串成多页阅读,而不是停在单篇消费。

2026-08-06 · transformer

【Transformer 与注意力机制】40|三大路线之争:为什么大模型几乎都是 Decoder-only

Encoder-only、Encoder-Decoder、Decoder-only 的差异不是谁更聪明,而是谁能看见谁的信息流不变量。本文从可见性图出发,解释这个不变量如何锁死任务接口与训练管线,KV Cache、continuous batching、投机解码为什么默认假设单流 causal Decoder,以及 embedding、rerank、强制双向抽取场景为什么不该硬上生成式大模型。

2026-08-06 · transformer

【Transformer 与注意力机制】41|位置编码演进:从 Sinusoidal 到 RoPE、ALiBi 与长度外推的边界

RoPE 把位置从"加在输入上的向量"焊进了 Q·Kᵀ 本身——本文推导旋转后点积为何只依赖相对位置,核对高频通道在长距离上的绕圈失真、RoPE scaling/YaRN 到底改了哪个假设;再看 ALiBi 的线性 bias 何时帮、何时伤长程依赖;最后用 RULER、Lost in the Middle 说明"跑得动"和"用得好"是两件事,并摆出一条有文献支撑的争论:相对位置编码是否在用归纳偏置换长度。


By .