残差流——理解一切改动的地基
上一章结尾说,要看懂 2020 年之后的架构改动,需要先换一副眼镜。这一章就来配这副眼镜。
它要解决的问题是这样的:课本教你的 Transformer 是"一层摞一层"的画法——输入进第一层,第一层的输出进第二层,如此往复。这个画法没有错,但它会让你在面对真实模型时接连产生困惑:为什么 96 层的网络训得动,而你在课本上学过深层网络会梯度消失?为什么归一化放在子层前面还是后面是个天大的事(第三章)?为什么注意力头可以被砍掉大半而模型几乎无损(第五章)?为什么 FFN 可以被拆成几百个"专家"还照常工作(第六章)?这些问题在"一层摞一层"的图景里都显得神秘,而在本章的新图景里都是自然而然的。
这副新眼镜叫残差流(residual stream)。它并不是一项新技术——模型还是那个模型,一个权重都没变——它是一种看待方式,来自可解释性研究社区,如今已经是从业者讨论架构时的默认语言。师兄们说"这个信息写进残差流了"、"这一层在从残差流里读什么",说的就是它。
2.1 从"层层变换"到"一条传送带"
回想残差连接的定义。你在学 ResNet 或 Transformer 时都见过:子层的输出不是直接替换输入,而是加在输入上:
$$ x_{\text{out}} = x_{\text{in}} + F(x_{\text{in}}) $$
课本对它的标准解释是"缓解梯度消失,让深层网络可训练"。这个解释是对的,但它把残差连接讲成了一个辅助技巧、一根"扶手"。现在我们把主次颠倒过来,这是本章最关键的一步:
不要把模型看成"一摞层,层间有捷径";要把它看成"一条从输入直通输出的传送带,每一层只是站在传送带旁边的工人"。
看看数据实际的流动路径就明白这个颠倒的道理。一个 token 的向量从 embedding 出发,经过 $N$ 层到达 unembedding。把每一层的残差连接展开写:
$$ x_N = x_0 + \sum_{i=1}^{N} F_i(x_{i-1}) $$
最终送去预测下一个词的向量 $x_N$,是初始 embedding 加上每一层贡献的增量之和。没有任何一层能"垄断"这个向量——每一层只是往上面加了一点东西。这条贯穿始终、不断被累加的向量通道,就是残差流。它的宽度就是上一章的隐藏维度 $d$:GPT-3 是 12288 维,这条 12288 维的传送带从第一层不间断地延伸到第 96 层。
在这幅图景里,注意力层和 FFN 层的角色变成了:从传送带上读取信息(读),计算出一个增量,再把增量放回传送带(写)。读,是子层入口处对 $x$ 做的那次线性投影;写,是子层出口处加回去的那个 $F(x)$。层与层之间不直接对话——第 40 层不会把结果"交给"第 41 层,它只是把结果写到传送带上,后面任何一层想用就自己去读。传送带是所有层共享的公告栏。
这个图景立刻回答了本章开头的第一个困惑:**为什么 96 层训得动?**因为梯度沿着传送带本身传播时畅通无阻——$x + F(x)$ 对 $x$ 的导数里有一个恒等项,损失的梯度可以原封不动地从第 96 层直达 embedding,每一层的 $F_i$ 只是在这条主干道旁"各自领各自的梯度"。深度不再是梯度的障碍,因为梯度根本不需要穿过每一层的变换,它走的是传送带。
一个值得较真的细节
既然每层只是"加一点增量",那把某一层整个删掉会怎样?答案出人意料:对训练好的大模型,删掉中间某一层,输出常常只是轻微变差而不是崩溃——因为传送带上其他层写入的信息还在。这类实验(layer dropping / layer skipping)反复验证了残差流图景的真实性:层是传送带的修饰者,不是链条上缺一不可的环节。当然,"轻微变差"不等于"没用",几十层的增量叠加起来就是模型的全部本事。
2.2 读和写:两类工人各干什么
传送带图景里,注意力层和 FFN 层都是"读—算—写"的工人,但两者的分工有质的不同,这个不同值得仔细品味。
注意力层是搬运工:在位置之间搬运信息。 记住一个关键事实:残差流不是一条,而是每个 token 位置各有一条——长度为 $T$ 的序列就是 $T$ 条并排的传送带。而注意力是整个模型里唯一能跨传送带搬东西的部件。它的读写可以精确地拆开看:$W_Q$ 和 $W_K$ 负责"决定从哪几条传送带搬"(query 与 key 的点积算出注意力分布),$W_V$ 负责"从源传送带上读出什么",$W_O$ 负责"把搬来的东西以什么形式写回本位置的传送带"。多头注意力就是 $h$ 个独立的搬运工同时开工,各自盯着不同的源头、搬运不同的内容,最后把各自的增量加到同一条传送带上。
FFN 是加工站:只在本位置就地加工。 FFN 对每个位置独立地做同一个变换,不看任何其他位置。它从本条传送带读出向量,升维、过非线性、降维,把结果写回来。它在整个模型里扮演"知识存储与加工"的角色——大量实证研究发现,事实性知识("巴黎是法国的首都"这类关联)主要存在 FFN 的权重里。上一章说过 FFN 占了三分之二的参数,现在你可以这样理解:模型的大部分"知识容量"住在加工站里,而搬运工负责在合适的时机把相关信息运到需要它的位置上。
于是,Transformer 的一次前向传播可以叙述成一条流水线故事:embedding 把每个 token 的"字面身份"放上各自的传送带;底部的层做基础加工(这个词在这个语境里是什么意思);中部的层通过注意力反复搬运和组合(把"法国"搬到"首都"旁边,把代词和它指代的对象连起来),并用 FFN 注入相关知识;顶部的层把传送带上积累的所有信息汇总成"下一个词是什么"的判断。第 $T$ 个位置的传送带在到达顶端时,已经装载了从整个前文搬运、加工、提炼出的一切——unembedding 读取它,给出概率分布。
2.3 传送带上的空间经济学
残差流是所有层共享的公告栏,这马上引出一个问题:它够用吗?
传送带只有 $d$ 维。而要写上去的东西很多:token 的词义、位置信息、语法角色、前文搬来的指代关系、FFN 注入的知识……几十层、几十个注意力头都在往同一条 $d$ 维的带子上写。这些信息互不覆盖的前提是它们大体占据不同的方向(子空间)——一个 12288 维的空间里可以塞下远超 12288 个"几乎互相垂直"的方向,高维空间的这个反直觉性质(近似正交方向的数量随维度指数增长)是整件事成立的数学基础。模型学会把不同类型的信息编码到不同的子空间里:某些方向存放位置信息,某些方向存放"这是一个人名",某些方向存放当前句子的情感倾向。每个注意力头、每个 FFN 只读自己关心的那几个子空间,也只往特定的子空间里写。
但空间终究是有限的、拥挤的。可解释性研究把这种拥挤称为叠加(superposition):模型要表示的特征远多于维度数,只能让特征之间有少量重叠干扰,靠冗余和纠错扛过去。这就是"空间经济学":传送带上寸土寸金,每一层写入的东西都在和其他层竞争带宽。
这个视角能解释很多现象。为什么 $d$ 要随模型规模一起涨(GPT-2 small 的 768 维到 GPT-3 的 12288 维)?因为更大的模型要处理更复杂的任务,需要在传送带上同时保有更多中间结果,带宽必须跟上。为什么第五章会讲到"砍掉一部分注意力头的 K、V 而模型几乎无损"?因为很多头本来就在读写相近的子空间,信息有冗余。为什么第六章的 MoE 可以只激活一小部分专家?因为对某一个具体 token,传送带上需要的加工只涉及少数子空间,大部分"知识"跟它无关。
产业一瞥
残差流这套语言起源于 Anthropic 2021 年的可解释性论文("A Mathematical Framework for Transformer Circuits"),最初是研究者用来逆向工程模型内部机制的工具。有意思的是,它后来反向塑造了架构设计的讨论方式——2026 年你去读任何一家的技术报告或架构讨论,"往残差流里写""从残差流里读"已是不需要解释的通用黑话。一套为"理解模型"发明的语言,成了"设计模型"的母语。
2.4 用新眼镜重看老朋友:归一化站在哪里
配好眼镜,我们马上试戴一次,看一个真实的架构决策——这也是通往第三章的桥。
课本里的原版 Transformer 把归一化放在子层之后、且在残差相加之后(Post-LN):
$$ x_{\text{out}} = \text{LN}\big(x_{\text{in}} + F(x_{\text{in}})\big) $$
用传送带图景看这个式子,你应该立刻感到不安:归一化直接架在了传送带上。每经过一层,传送带上的全部内容——不只是本层写入的增量,而是从 embedding 起累积的一切——都要被强行拉伸缩放一次。96 层就是 96 次。传送带不再是畅通的主干道,梯度每走一层都要穿过一次归一化的变换,"恒等直达"的性质被破坏了。深层 Post-LN 模型难训练、必须靠小心翼翼的学习率 warmup 才能起步,根源就在这里。
而现代模型(从 GPT-2 起)都改用 Pre-LN:归一化挪到子层之前,作用在"工人读取的副本"上,而不是传送带本身:
$$ x_{\text{out}} = x_{\text{in}} + F\big(\text{LN}(x_{\text{in}})\big) $$
传送带上只有干净的加法,从头到尾无人拦截;归一化变成了每个工人上岗前给自己的输入做标准化。一个看似微小的位置调换,背后是"保护传送带的畅通"这个原则——这是残差流视角给出的第一个设计准则,也是后面章节反复出现的母题:动工人可以,动传送带要非常小心。
至于归一化本身为什么必要、LayerNorm 又如何演化成 RMSNorm、训练稳定性之战还有哪些战场——那是下一章的正文。带上这副眼镜,我们出发。
本章要点
- 残差流视角:模型的主干是每个位置一条、宽度为 $d$ 的"传送带",从 embedding 直通 unembedding;$x_N = x_0 + \sum_i F_i$,每层只是读取传送带、计算增量、加回去。
- 梯度沿传送带恒等直达,这是几十上百层可训练的根本原因;层是"修饰者"而非"链条环节"。
- 分工:注意力是唯一跨位置搬运信息的部件($W_Q,W_K$ 定位、$W_V$ 读、$W_O$ 写);FFN 就地加工、存储知识,且占三分之二参数。
- 传送带带宽($d$ 维)是稀缺资源,信息以近似正交的子空间共存(叠加);许多架构现象——砍头无损、MoE 可行、$d$ 随规模增长——都是这套"空间经济学"的推论。
- 第一次试戴眼镜:Post-LN 把归一化架在传送带上、破坏畅通性,Pre-LN 把它挪给"工人的读取副本"——保护传送带,是贯穿全卷的设计准则。