一句话定义:残差流(Residual Stream)是 Transformer 中一条贯穿所有层的高维向量通道,每一层都从它上面读取信息,再把自己算出的结果加回去。
它到底长什么样
Transformer 有很多层,每层里主要有两个模块:注意力(attention)和前馈网络(feed-forward network,FFN)。初学者容易以为数据是"穿过"这些层的——第一层处理完交给第二层,第二层交给第三层,层层覆盖。实际更接近这样:有一块白板从第一层一直传到最后一层,每层都先看白板上已经写了什么,再往上面补一行字,然后交给下一层。这块一直存在的白板,就是残差流。
用公式表示,每层做的是 x ← x + f(x)。那个额外保留下来的 x 就是残差连接(residual connection)的作用:信息不会被覆盖,只会被追加。
为什么这件事重要
第一,好训练。如果每一层都彻底重写表示,梯度往回流时会衰减得很厉害;加法式的写入给梯度留了一条近乎直通的路,这是 Transformer 能堆得很深的关键原因之一。
第二,信息不丢。早期层写进去的内容不会被后面的层抹掉,需要时还能读到。
第三,留了后门。既然写入是加法,研究者就能做各种"读取"实验:把中间某一层的残差流直接投影到词表,看看模型此刻最想说的词是什么(这类做法常被称为 logit lens),也可以在残差流上加一个方向向量来引导输出风格。
和相邻概念的区别
| 概念 | 是什么 | 与残差流的关系 |
|---|---|---|
| 残差连接(residual connection) | 一种加法操作 x + f(x) | 实现机制 |
| 隐藏状态(hidden state) | 某一层某一位置的向量 | 在那一层,它就是残差流的值 |
| 注意力 / FFN 的输出 | 某一层算出的增量 | 写给残差流的内容,不是流本身 |
一句话概括:残差连接是动作,隐藏状态是快照,残差流是那条一直在的总线。
对实际工作的意义
理解残差流,有助于想清楚几件常见的事:LoRA 之类的适配器挂在哪些权重上、为什么可以对中间激活做干预来改变行为、以及为什么"层"更像是轮流读取同一份内容的加工者,而不是严格的串行流水线。对非技术岗位的读者来说,它也解释了大模型为什么能同时保留语法、事实和语气这些不同层面的信息——因为它们被写在同一个地方,谁都没有被擦掉。
不同模型的层数、隐藏维度等具体设定各有不同,以官方文档和技术报告为准。
