Abstract
Attention Residuals 是 Moonshot AI Kimi Team 在 2026 年 3 月 16 日发布的技术报告,项目代码同步开源在 GitHub。
这篇论文讨论的是一个看起来很基础、但几乎所有大模型都会用到的模块:残差连接(Residual Connection)。
如果只看最常见的写法,残差连接很简单:
大部分介绍都会说,残差连接的作用是给梯度留一条“直通路径”,让深层网络更容易训练。这当然没错,但这篇论文指出,残差连接还有另一个同样重要、却更容易被忽略的作用:
- 它决定了前面各层的信息,是怎么一路传到后面层的;
- 它决定了“当前层到底能看到前面哪些层的信息”。
标准残差连接的做法,其实非常朴素:前面所有层的输出,全部直接加起来。也就是说,所有历史层一视同仁,没有筛选,没有权重竞争,没有“哪一层更重要”这种机制。
Attention Residuals(注意力残差,简称 AttnRes)做的事情可以用一句话概括:
- 传统残差连接:把前面所有层的输出直接相加;
- 注意力残差:让当前层先对前面各层打分,再做加权求和。
这就是这篇论文最核心的改动。
更具体地说,论文提出了两个版本:
- Full Attention Residuals(全量注意力残差):当前层可以直接查看前面所有层的输出;
- Block Attention Residuals(分块注意力残差):为了降低显存和通信开销,把前面很多层先压缩成块级表示,再做注意力聚合。
Introduction
先看传统残差连接到底在做什么。
第 $l$ 层的输入写成:
把这个递推一直展开,会得到:
这里的含义非常直接:第 $l$ 层看到的输入,不只是上一层的输出,而是“初始词向量(embedding)加上前面所有层输出的总和”。
这也是残差连接为什么一方面很好用,另一方面又会埋下问题的原因。
它的好处很清楚:
- 早期层的信息可以一直往后传;
- 反向传播时梯度有一条不经过复杂变换的路径;
- 深层网络更容易训练稳定。
但它的限制也同样很清楚:
- 前面所有层的输出都被混在同一个和里;
- 当前层并不知道“哪些历史层更重要”;
- 越往后,这个和会越大,单层输出在这个总和里所占的比例会越来越小。
这就是论文里一直在强调的一个现象:在 PreNorm(前归一化)架构下,残差主路径不会在每次相加后立刻重新归一化,所以隐藏状态的“总量”会随着深度持续累加。后面层如果还想让自己的输出有影响力,就只能把自己的输出做得越来越大。
这里把这句话单独展开一下。Attention Residuals 正文里直接给出了结论,理论背景主要来自On Layer Normalization in the Transformer Architecture和SiameseNorm。这几篇文章连起来看,逻辑会更清楚。
为什么 PreNorm 会出现幅值增长 先把一个标准 Transformer block 里 LayerNorm(层归一化)到底放在哪里说清楚。
如果按一个完整 block 来写,PreNorm 的形式是:
$$ \begin{align} h_{l+1}&=h_l+\text{Attn}(\text{LN}_1(h_l))+\text{MLP}(\text{LN}_2(h_l+\text{Attn}(\text{LN}_1(h_l)))) \\ &=h_l+\Delta_l=h_l+f_l(h_l) \end{align} $$
也就是说,一个 block 里会发生两次“先归一化,再进子层,再加回主路径”的操作:
- 先对 $h_l$ 做归一化,再送进 Attention(注意力)子层;
- Attention 输出直接加回主路径,得到 $u_l$;
- 再对 $u_l$ 做归一化,再送进 MLP(前馈网络)子层;
- MLP 输出再直接加回主路径,得到 $h_{l+1}$。
注意最关键的一点:
- 归一化发生在残差分支输入处;
- 但“相加之后的主路径”本身没有在 block 内被重新归一化。
这就是 PreNorm(前归一化)和 PostNorm(后归一化)的本质区别。
PostNorm 如果写成同样的 block 形式,则是:
也就是说,PostNorm 是每次残差相加后,立刻把主路径重新归一化;而 PreNorm 是只归一化分支输入,不归一化主路径本身。
这个差别看起来只是 LayerNorm 放前还是放后,但对 hidden state(隐藏状态)的尺度变化影响非常大。
所以这篇论文的逻辑其实是:
- PreNorm 的主路径会持续累积;
- 单层增量相对主路径的占比越来越小;
- 后面层必须输出更大的量才有存在感;
- 这会造成深度利用率下降;
- 因此不应该继续让所有历史层都用固定系数 1 去做累加,而应该改成可选择的注意力聚合。
用一句更直白的话说,传统残差连接像是把前面所有层的结果都倒进同一个桶里。桶会越来越满,但当前层并不能把桶里的内容再拆开来看,只能接着在这个混合结果上继续算。
Attention Residuals(注意力残差)想解决的,就是这个“都倒进同一个桶里”的问题。
论文的思路很像序列建模的发展过程:
- 循环神经网络(RNN)是把过去所有词元(token)压成一个状态;
- Transformer 用注意力机制(Attention)替代了这种单状态递推;
- 传统残差连接也在 depth(深度)维度上做了类似的单状态递推;
- 那么自然也可以考虑:在深度维度上,用注意力替代简单的递推累加。
Motivation
这篇论文的动机部分其实就是在回答一个问题:
为什么“残差连接把前面所有层全部加起来”会成为一个值得单独处理的问题?
Training Deep Networks via Residuals
残差连接最经典的作用,是让梯度更容易往前传。
对中间层 $h_l$ 来说,损失函数对它的梯度可以写成:
把这个乘积展开,里面总会有一个恒等项 $I$。这意味着不管网络有多深,梯度总有一条“直接穿过去”的路,所以深层网络比纯粹堆叠普通层更稳定。
但如果看前向传播,问题就出来了。
第 $l$ 层的输入是:
这里面前面每一层的输出,系数都是 1。
也就是说,传统残差连接默认做了三个假设:
- 前面每一层都同样重要;
- 当前层不需要区分“哪一层的信息更有用”;
- 把所有历史层直接相加,不会带来严重的信息淹没问题。
论文认为,这三个假设在现代大模型里都太强了。
因为一旦深度很大,这种简单相加会带来三个问题:
- 无法选择历史层
当前层拿到的是一个总和,而不是一组独立的历史层表示。所以它只能看“混合后的结果”,不能看“某一层单独的结果”。
- 早期信息越来越容易被淹没
假设第 $i$ 层输出对第 $l$ 层输入的相对贡献写成:
随着 $l$ 增大,分母会越来越大,而单层输出的占比会越来越小。
- 越往后的层,越需要把输出做大
因为如果输出幅值不够大,自己的影响就会被前面越来越大的 residual stream(残差流)淹没。
这也是论文里说的 PreNorm dilution(前归一化稀释)问题:前面所有层不断累加,导致单层贡献越来越“稀”。
所以,论文真正要改的不是“梯度路径”本身,而是“信息在深度维度上怎么聚合”这件事。
Attention Residuals: A Unified View of Time and Depth
这一节是整篇论文最核心的部分。
The Duality of Time and Depth
论文先给出一个很重要的类比:
- 在时间维度上,RNN 用一个状态去压缩过去所有词元(token);
- 在深度维度上,传统残差连接也用一个状态去压缩过去所有层。
如果把这件事写成公式,会更清楚。
传统残差连接展开后是:
注意力残差则写成:
其中这些权重满足:
这个改动看起来只是“把 1 换成了可学习的 $\alpha$”,但含义完全不同。
传统残差连接里,每一层都固定占 1 份权重,没有竞争。
注意力残差里,所有历史层共享同一份总权重。某一层权重大了,其他层的权重就会变小。这意味着当前层不再是“把历史全收下”,而是“在历史里挑重点”。
这也是传统残差连接和注意力残差连接最本质的区别。
Full Attention Residuals
Full Attention Residuals(全量注意力残差)的思路很直接:当前层直接看前面所有层,然后用 softmax 归一化注意力去决定该取哪些层。
论文定义的权重是:
其中打分函数是:
这里有三个对象:
- $q_l$:第 $l$ 层自己的 query(查询向量);
- $k_i$:前面第 $i$ 个来源的 key(键向量);
- $v_i$:前面第 $i$ 个来源的 value(值向量)。
论文采用的定义是:
最终第 $l$ 层的输入是:
这组公式本身不复杂,但背后的设计点很值得展开。
和传统残差连接的区别到底是什么 把两者并排看最清楚。
传统残差连接:
注意力残差连接:
两者的差别可以概括成四点:
- 传统残差连接是固定求和,注意力残差是动态加权求和
传统残差里,每个历史层的系数都固定等于 1。当前层没有选择权。
注意力残差里,每个历史层的权重都由当前层动态决定。
- 传统残差连接只能看“混合结果”,注意力残差能看“单个历史层”
传统残差把所有历史层先混起来再往后传,后面的层无法再知道“哪一部分来自哪一层”。
注意力残差直接对历史层逐个打分,所以它保留了“按层选择”的能力。
- 传统残差连接的总幅值容易随着深度变大,注意力残差会把总权重归一化
传统残差连接的权重一直在累加,所以隐藏状态(hidden state)的规模更容易随着层数增长。
注意力残差因为用了 softmax,所有权重加起来恒等于 1,至少在残差聚合这一段上,规模更容易控制。
- 传统残差连接默认“大家都重要”,注意力残差允许“有些层比别的层更重要”
这对于大模型尤其重要,因为不同层往往分工不同:
- 有些层更偏词法和局部模式;
- 有些层更偏信息路由;
- 有些层更偏组合和推理。
如果当前层不能主动决定“该多看谁”,就只能接受一个固定的历史混合物。
为什么 query(查询向量)用一个可学习向量,而不是当前隐藏状态
论文这里用了一个很轻量的设计:每层只额外引入一个向量 $w_l$,把它当作 query(查询向量)。
也就是说,当前层的查询不是从输入里现算出来的,而是一个层级参数。
这么做有两个作用:
- 参数开销很小,每层只多一个长度为 $d$ 的向量;
- 更重要的是,它和前向隐藏状态(hidden state)解耦了,后面系统实现里就可以把同一个 block 内很多层的 query 一起算。
论文也做了消融实验:如果把 query 改成从当前隐藏状态(hidden state)投影出来,效果还会更好一点,但工程代价会明显上升。
为什么 key 上要加 RMSNorm(均方根归一化) 这一点很容易被忽略,但其实很重要。
如果直接用:
去打分,那么幅值很大的层,哪怕方向并不更匹配,也可能因为数值更大而拿到更高权重。
而论文真正想做的是“内容选择”,不是“谁的向量绝对值更大谁赢”。
所以它先做:
这样历史层之间的幅值差异不会直接主导 softmax 权重。
为什么所有 query 要零初始化 论文特别强调,所有 $w_l$ 必须初始化为 0。
原因很简单。当 $w_l = 0$ 时,所有历史层的得分都一样,所以一开始的权重就是均匀分布。
也就是说,训练一开始时,Full Attention Residuals(全量注意力残差)不是随机乱选历史层,而是先从“平均看所有历史层”开始,再慢慢学会选择。
这会明显减轻训练初期的不稳定。
Full Attention Residuals 的代价 全量注意力残差的好处是最直接、最完整,但代价也最直接。
如果网络有 $L$ 层,那么第 $l$ 层要看前面 $l-1$ 个历史层。所有层加起来,残差这一部分的计算规模大致是:
- 计算量:$O(L^2 d)$
- 历史层缓存访问:$O(Ld)$
在小规模训练里,这不一定是问题,因为这些中间层本来就要保存下来用于反向传播。
但在大规模预训练里,问题会立刻变重,特别是下面两种场景:
- activation recomputation(激活重算):原本可以丢掉的中间层现在不能轻易丢;
- pipeline parallelism(流水线并行):这些历史表示还要在不同 stage 之间传来传去。
这就引出了论文的第二个版本。
Block Attention Residuals
Block Attention Residuals(分块注意力残差)的目标非常明确:保留“按层选择历史”的能力,但把系统代价压下来。
这一部分的符号定义直接对应原论文Attention Residuals里对 Block Attention Residuals(分块注意力残差)的公式化描述,整体结构示意可以结合论文的 Figure 1(c) 和 Figure 3 一起看。
它的做法也很直观:
- 不再让每一层都直接看前面所有单层输出;
- 而是把若干层分成一个 block(块);
- 同一个 block 里的层,先用普通残差把结果累加起来;
- block 和 block 之间,再做注意力聚合。
设第 $n$ 个 block 的层集合是 $\mathcal B_n$,那么这个 block 的总表示写成:
如果只累加到 block 内前 $i$ 层,那么部分和写成:
论文还定义:
也就是把最初的输入词向量(token embedding)单独当成一个固定来源保留下来。
对于第 $n$ 个 block 内第 $i$ 层,注意力看到的 value 集合分两种情况:
第一种,如果它是这个 block 的第一层,那么它只能看:
第二种,如果它已经是 block 中后面的层,那么它还能额外看到当前 block 的部分和:
这一步非常关键,因为它说明 Block Attention Residuals(分块注意力残差)并不是简单地把很多层粗暴压扁掉了,而是采用了一个分工结构:
- 块内仍然保留顺序细节;
- 块间只保留压缩后的摘要。
于是它在“表达能力”和“工程成本”之间做了一个折中。
这个设计和传统残差连接的区别也很容易看清:
- 传统残差连接:所有历史层一直混在一个总和里;
- 分块注意力残差:近处的信息保留更细,远处的信息先压成块摘要,再按需读取。
论文最终发现,用大约 8 个 blocks,已经能恢复 Full Attention Residuals(全量注意力残差)的大部分收益。
References
[1] Kimi Team. “Attention Residuals” arXiv 2026.
[2] Moonshot AI. “Attention-Residuals” GitHub repository.
[3] Xiong et al. “On Layer Normalization in the Transformer Architecture” ICML 2020.
[4] Li et al. “SiameseNorm: Breaking the Barrier to Reconciling Pre/Post-Norm” arXiv 2026.
[5] Zhang and Sennrich. “Root Mean Square Layer Normalization” NeurIPS 2019.
[6] Kimi Team. “Kimi Linear: An Expressive, Efficient Attention Architecture” arXiv 2025.