Gated Attention:让注意力头决定写入多少信息

笔记日期: 2026 年 9 月 23 日
作者: Zhongzhu Zhou
论文: Gated Attention for Large Language Models: Non-linearity, Sparsity, and Attention-Sink-Free
论文作者: Zihan Qiu、Zekun Wang、Bo Zheng、Zeyu Huang、Kaiyue Wen、Songlin Yang、Rui Men、Le Yu、Fei Huang、Suozhi Huang、Dayiheng Liu、Jingren Zhou、Junyang Lin
阅读版本: NeurIPS 2025 正式会议版,共 27 页,包含补充材料和论文检查表。arXiv:2505.06708 首发于 2025 年 5 月 10 日,其 17 页 v1 与会议版不是同一份文档。下文表号、图号均指会议版。
资源: 会议页面 · 作者提供的代码资源入口

1. 先把问题分开:看哪里,以及写入多少

阅读这篇论文时,我觉得最有用的切入点是把注意力头的工作拆成两个决定。第一个决定是:当前 token 应该从哪些历史位置取信息?第二个决定是:取回的信息,到底应该有多少进入当前表示?标准 softmax 很擅长回答前一个问题,却没有直接给后一个问题留下一个独立旋钮。

原因很简单:softmax 权重的总和始终为 1。即使某个头在当前位置没有特别值得写入的内容,它也必须把这份概率分给一些 token。网络当然还有其他办法,比如把 value 学得很小、通过输出投影抵消某些分量,或者把注意力分给一个比较无害的位置。门控提供了更直接的办法:先正常检索,再决定检索结果有多少真正写出去。

论文中效果最好的改动,是在 SDPA 加权求和之后、输出投影之前,加一个由当前输入生成的 sigmoid 门。不同 query head 可以拥有不同的门,同一个头内部也可以逐坐标调节。公式很短,但它所在的位置很关键:信息已经从历史 token 聚合回来,又还没有被输出投影混到模型维度里。

图 1:G1 输出门控的位置。图为依据论文第 2–3 节绘制的原创解释图;门控保留普通 softmax 检索,在不同头混合之前调节输出。

在 15B MoE、400B 训练 token 的主要比较中,最好的 G1 逐元素门把平均困惑度从 6.026 降到了 5.761。论文还报告了部分稠密模型在较大学习率下更稳定,以及经过一种长上下文扩展后更好的 RULER 表现。这些结果值得重视,不过它们分别回答了表示质量、训练配方和位置外推的问题,不能合并成一个无条件的“更快、更省、更准”。

我会沿着三条边界读这篇论文。其一,把激活压小,不等于不计算这个激活。其二,在低秩映射中加入输入相关变换,不等于每个固定映射都突然满秩。其三,一个训练好的带门模型没有明显 attention sink,不等于给旧模型乘一下门就能立即消除它原来的注意力模式。

论文的主要价值也不只是“提出乘一个 sigmoid”。门控此前已经出现在多种网络里。这里更有说服力的是系统比较:门放在哪里、是否逐头独立、是否逐元素、是否依赖当前输入、选择什么激活函数,都会怎样影响结果。把这些选择放在较大规模训练中比较,再结合内部统计和失败案例,才让这个简单公式成为值得研究的架构变量。

下文的实验数字均来自论文。原创示意图、数值小例子和算术换算仅用于解释;提出的后续实验方案也会单独注明,不能当成作者已经完成的实验。

2. 前置知识:一个注意力层里有哪些映射

2.1 Query 选择位置,value 携带内容

先统一记号。使用行向量,令 xi∈Rdx_i\in\mathbb R^d 表示位置 ii 经过归一化后的隐藏状态,hh 表示 query head。分组查询注意力 GQA 允许多个 query head 共用一组 key/value;用 r(h)r(h) 表示头 hh 对应的 KV 组,则

qih=xiWQh,kjr(h)=xjWKr(h),vjr(h)=xjWVr(h).q_i^h=x_iW_Q^h,\qquad k_j^{r(h)}=x_jW_K^{r(h)},\qquad v_j^{r(h)}=x_jW_V^{r(h)}.

论文使用的模型还包含 QK normalization 和 RoPE。为了先看清 value 与输出投影的关系,这里暂时不展开这两项;在真正计算注意力分数时,应把相应归一化和位置变换包含在 query、key 路径中。

因果注意力只能访问 j≤ij\le i 的位置。经过缩放点积和 softmax,得到

sijh=qih(kjr(h))⊤dh,aijh=exp⁡(sijh)∑t≤iexp⁡(sith),yih=∑j≤iaijhvjr(h).\begin{aligned} s_{ij}^h&=\frac{q_i^h(k_j^{r(h)})^\top}{\sqrt{d_h}},\\ a_{ij}^h&=\frac{\exp(s_{ij}^h)}{\sum_{t\le i}\exp(s_{it}^h)},\\ y_i^h&=\sum_{j\le i}a_{ij}^h v_j^{r(h)}. \end{aligned}

yihy_i^h 是一个头取回的向量,宽度为 dhd_h。所有头的输出先拼接,再经过 WOW_O 回到模型维度。把 WOW_O 按头拆成行块 WOh∈Rdh×dW_O^h\in\mathbb R^{d_h\times d},可以得到等价写法:

oi=Concat⁡h(yih)WO=∑hyihWOh.o_i=\operatorname{Concat}_h(y_i^h)W_O =\sum_h y_i^hW_O^h.

这里要特别留意先后顺序:投影前是拼接,投影后的各头贡献在模型空间里相加。若把投影后的结果又当作拼接,维度就不对了,后面的秩分析也容易被带偏。

2.2 Attention sink 不是一个通用的质量分数

Attention sink 指某些位置长期吸收大量注意力概率,即使它们并不是当前问题最相关的语义来源。论文主要观察第一个 token,使用 F-Attn 统计不同头和层平均分给首 token 的注意力。比如 0.467,描述的是其测量条件下的平均值,不意味着每个头、每次输入都固定分配 46.7%。

softmax 的归一化约束为 sink 提供了一种直观解释:若一个头想少写入一点内容,把概率移向某个近似无害的位置,可能是一条训练中学到的旁路。但归一化本身并不能证明 sink 必然出现。value 可以很小,不同贡献也可能抵消;首 token 有时还确实包含有用信息。

因此,“首 token 注意力更低”应当作为内部机制的观察,而不是单独优化的目标。真正需要回答的是:这个变化是否伴随着更好的预测、检索或训练行为?论文的后续实验提供了一些支持,但没有把它提升为适用于所有模型和上下文的质量准则。

2.3 困惑度、准确率与效率不能混算

困惑度是平均负对数似然的指数。在相同评估分布上,从 P0P_0 降到 P1P_1,对应的平均对数损失下降为

ΔNLL=log⁡P0−log⁡P1=log⁡P0P1.\Delta\mathrm{NLL}=\log P_0-\log P_1 =\log\frac{P_0}{P_1}.

把 6.026 与 5.761 代入,约为每 token 0.04497 nats,或者困惑度相对下降 4.40%。这并不是准确率提高 4.40 个百分点。MMLU、GSM8K、RULER 和训练耗时都必须保留各自的分母与单位。

效率也有多个层次。一个方案可能让每步计算略贵,却减少训练发散和重跑;也可能在相同 token 数下得到更好模型,从而改善质量与总计算量的关系。另一方面,平均门值很小,并不说明 KV cache 更小。把这些层次分开,才能判断这篇论文对 Efficient ML 的价值具体落在哪里。

3. 方法:门放在哪,决定它能控制什么

3.1 G1 由当前 query 的表示决定输出强度

对逐头独立、逐元素的 G1 门,定义

gih=σ(xiWGh)∈(0,1)dh,zih=yih⊙gih.g_i^h=\sigma(x_iW_G^h)\in(0,1)^{d_h},\qquad z_i^h=y_i^h\odot g_i^h.

于是注意力输出变为

oigate=∑h(yih⊙gih)WOh.o_i^{\mathrm{gate}} =\sum_h (y_i^h\odot g_i^h)W_O^h.

门来自当前位置的表示。即使两个 query 取回相同的历史内容,它们也可以保留不同的坐标。这与注意力权重的工作不一样:注意力决定不同来源怎样混合,门决定混合后的哪些特征、以多大强度进入下一步。

sigmoid 给出非负且不超过 1 的乘子,因此在这个局部操作里,它主要负责衰减和近似关闭。它不能直接把分量乘成负数,也不能把某个分量放大到原来的数倍。但别把这条局部性质理解成“带门模型的整层输出一定小于基线”:两种模型训练后,WVW_V、WOW_O 和其他参数都可能不同,网络也可以在其他地方补偿尺度。

3.2 Headwise 与 head-shared 是两种不同的约束

Headwise 表示一个头只用一个标量门 γih\gamma_i^h,同时缩放该头的所有坐标。它仍允许不同头做不同决定。Elementwise 则为每个头的每个坐标分别给门,表达能力更细,参数也更多。

Head-shared 表示多个 query head 共享门值,它限制的是头与头之间的独立性。不能把 headwise 与 head-shared 混为一谈:前者问“一个头内部需要多细的选择”,后者问“不同头是否需要独立选择”。

论文中的 head-shared 版本,是先生成完整投影的门分数,再沿 query-head 维度平均。因此表 1 里它仍有相应的完整投影参数量,不等于一个直接投影共享门的最省参数版本。“共享”在这里首先是一项功能约束,而不是天然的参数压缩承诺。

这组比较里一个很有意思的结果是:极小的 headwise G1 已经获得接近 elementwise 的困惑度收益。它提示我们,给不同头分别决定写入强度,可能比一开始就追求最细粒度的坐标控制更值得作为设计基线。

3.3 五个位置分别改变了什么

位置被调节的对象直接影响
G1SDPA 聚合后的输出当前 query 决定各头写入多少
G2Value 投影结果历史源 token 决定携带什么内容
G3Key 投影结果改变不同来源的注意力竞争
G4Query 投影结果改变当前检索的分数分布
G5Dense 输出投影之后在头已混合的模型空间里调节坐标

G2 与 G1 的区别可以直接写出来。前者对每个历史 value 先乘自己的门,再求加权和;后者先求和,再乘当前 query 的门。一般而言,

∑jaij(vj⊙gj)≠(∑jaijvj)⊙gi.\sum_j a_{ij}(v_j\odot g_j) \ne \left(\sum_j a_{ij}v_j\right)\odot g_i.

只有在特殊条件下,比如所有参与求和的源门都恰好等于当前门,两者才可能相等。G5 也不能随便挪到 G1,因为逐元素乘法通常无法与一个稠密输出矩阵交换顺序。门只移动一步,能独立控制的空间就变了。

3.4 算法 1:带 G1 门的概念前向过程

输入: 归一化隐藏状态、因果掩码、Q/K/V/O 投影和门投影。输出: 写入残差流的注意力分支结果。

01  Q, K, V <- project(normalized_states)
02  Q, K <- apply_QK_norm_and_positions(Q, K)
03  G <- reshape(sigmoid(normalized_states @ W_G))
04  for each query head h:
05      r <- KV_group(h)
06      A[h] <- causal_softmax(Q[h] @ K[r]^T / sqrt(d_h))
07      Y[h] <- A[h] @ V[r]
08      Z[h] <- Y[h] * G[h]
09  O <- concatenate_heads(Z) @ W_O
10  return O

这里 @ 表示矩阵乘法,* 表示逐元素乘法。门的每一行对应当前 query 位置;causal_softmax 屏蔽未来 token。第 8 行仅在 headwise 情况下沿头内坐标广播。返回值随后进入外围残差块。这份编号伪代码表达数学依赖关系,实际融合执行不要求把完整注意力矩阵或所有门张量都实体化到显存中。

4. 数学推导:增加的是输入相关性,固定秩界仍在

4.1 Value 与输出投影之间有一个低维通道

把 value 投影代入单头输出,可以得到

oih=(∑jaijhxjWVr(h))WOh=∑jaijhxj(WVr(h)WOh).\begin{aligned} o_i^h &=\left(\sum_j a_{ij}^h x_jW_V^{r(h)}\right)W_O^h\\ &=\sum_j a_{ij}^h x_j\left(W_V^{r(h)}W_O^h\right). \end{aligned}

矩阵 WVr(h)WOhW_V^{r(h)}W_O^h 从模型维度映射回模型维度,中间却只经过宽度为 dhd_h 的空间,因此

rank⁡(WVr(h)WOh)≤dh.\operatorname{rank}\left(W_V^{r(h)}W_O^h\right)\le d_h.

这里讨论的是单头 value/output 路径,并把注意力权重视作给定的系数。完整注意力早已通过 query、key 对输入产生非线性,所以不能说“普通注意力整体是线性的,只有加门以后才非线性”。多头也会贡献多个不同的映射,单头秩界不是整个多头层只有 dhd_h 秩的证明。

4.2 插入门后,矩阵族随当前输入而变

令 Dih=diag⁡(gih)D_i^h=\operatorname{diag}(g_i^h),带门路径可以写成

oih,gate=∑jaijhxjWVr(h)DihWOh.o_i^{h,\mathrm{gate}} =\sum_j a_{ij}^h x_jW_V^{r(h)}D_i^hW_O^h.

对于每一个固定的门,它依然满足

rank⁡(WVr(h)DihWOh)≤dh.\operatorname{rank}\left(W_V^{r(h)}D_i^hW_O^h\right)\le d_h.

门没有把中间通道凭空拓宽。新增的自由度在于 DihD_i^h 依赖当前输入:不同 query 可以对同一组中间特征分配不同强度。把这一点称作“在低秩映射中加入非线性”是合理的;把它转述成“消除了秩瓶颈,变成满秩”则过强。

可以用一个二维小例子理解。设 value 投影暂时为单位阵,输出投影负责固定地组合两个特征。Query A 使用接近 (1,0)(1,0) 的门,Query B 使用接近 (0,1)(0,1) 的门,就能选择不同特征贡献。Headwise 标量可以一起压小这两个特征,但无法完成这次坐标间的选择。这个例子说明表达能力的区别,并没有证明真实任务一定需要更贵的逐元素门。

4.3 常量门提供了一条重要反证边界

若门与输入无关,推理时它就是固定对角矩阵 DD。这时

WVDWO=WVW~O,W~O=DWO.W_VDW_O=W_V\widetilde W_O,\qquad \widetilde W_O=DW_O.

它可以吸收到输出投影里,因此不会在这条路径上增加新的输入非线性。可是论文中的 input-independent gate 仍然比基线有更低困惑度。这说明不同参数化、初始化、正则化交互或优化轨迹,本身就可能改变训练结果。

这个观察不是否定门控,而是提醒我们不要把每项收益都强行归入同一种解释。动态门同时改变输入条件化和参数化;常量门可以改变优化,却不扩大上述固定线性映射的表达集合。若要说明“到底为什么有效”,需要把这些因素分开。

4.4 梯度不只沿被缩小的输出传播

为清楚地写 Jacobian,这一小节改用列向量。令 y=f(x)y=f(x)、g=σ(Bx)g=\sigma(Bx)、z=y⊙gz=y\odot g。乘法求导给出

Jz=diag⁡(g)Jf+diag⁡(y)diag⁡ ⁣(g⊙(1−g))B.J_z=\operatorname{diag}(g)J_f +\operatorname{diag}(y)\operatorname{diag}\!\big(g\odot(1-g)\big)B.

第一项是经过内容分支的直接梯度,被 00 到 11 的门缩放。第二项来自“门本身也依赖输入”这件事。利用 sigmoid 导数不超过 1/41/4,可以写出

∥Jz∥2≤∥Jf∥2+14∥y∥∞∥B∥2.\|J_z\|_2 \le \|J_f\|_2 +\frac14\|y\|_\infty\|B\|_2.

右边第二项并不一定小,所以这个界不能证明整个变换收缩,更不能证明带门 Transformer 永不发散。sigmoid 靠近 0 或 1 时还可能饱和,让对应 logits 的学习变慢。残差连接提供额外的梯度通道,但完整块的稳定性仍需要看所有路径。

因此,局部乘子有界可以成为稳定性解释的一部分,却不足以直接推出全局训练结论。论文中的大规模训练结果恰好补上了经验层面的证据;数学直觉和经验结果各有自己的角色。

5. 成本:门很简单,参数却不一定很少

附录 A.2 给出的 MoE 配置是 24 层、模型宽度 2048、32 个 query head、4 个 KV head、头宽 128。模型总参数约 15B,每 token 激活参数约 2.54B;128 个专家中选择 8 个。门投影位于注意力路径,不会因为 FFN 使用稀疏专家就自动免去计算。

忽略 bias,G1 逐元素门新增参数为

NG1,element=L d Hq dh=24⋅2048⋅32⋅128=201,326,592.\begin{aligned} N_{G1,\mathrm{element}} &=L\,d\,H_q\,d_h\\ &=24\cdot2048\cdot32\cdot128\\ &=201{,}326{,}592. \end{aligned}

若每个头只有一个标量,新增参数变成

NG1,head=L d Hq=1,572,864.N_{G1,\mathrm{head}} =L\,d\,H_q =1{,}572{,}864.

G2 逐元素门把 HqH_q 换成 Hkv=4H_{kv}=4,得到 25,165,824;G5 对输出模型维度投影,约为 Ld2=100,663,296Ld^2=100{,}663{,}296。这正好对应表 1 中取整后的 201M、1.6M、25M 和 100M。

图 2:依据附录模型维度计算的门参数量,不含 bias。Headwise G1 保留逐头独立控制,成本却远低于逐元素版本。

看百分比时也要保留分母。201M 相对 15B 总参数只有约 1.34%,相对 2.54B 激活参数却约为 7.9%。两者都不能直接当作步时增幅:不同算子的算力利用率、访存和通信成本不同。论文报告其设置下 wall-time 开销小于 2%,这是一项具体实验观察,不是由参数比例推出的普适结论。

中间激活的差距同样明显。以一条长度 4096 的序列、单层计算为例,逐元素门有

4096×32×128=16,777,2164096\times32\times128=16{,}777{,}216

个标量。若单独保存成 BF16 张量,约占 32 MiB;headwise 门只有 131,072 个标量,约 0.25 MiB。这只是朴素缓冲区大小的算术示例,不是实际峰值显存测量。算子融合、重计算、batch 和并行切分都会改变实际分配。

更关键的是,G1 仍然先完成普通注意力的加权求和。小 sigmoid 值通常是小正数,而不是专门交给稀疏执行器的硬零。这个方法既没有给出 token 淘汰规则,也没有改变 dense attention 的渐近复杂度。若要进一步获得推理加速或 KV 压缩,需要额外的方法和误差证据。

稠密模型的成本比较还用了另一种处理:增加门之后,作者缩窄 FFN 来保持总参数量。这是一种合理的固定预算架构比较,但意味着结果包含“把参数从 FFN 重新分配给门”的效果。它与在完全相同的稠密模型上直接额外添加参数,并不是同一个实验问题。

6. MoE 主实验:位置比较比单个最好分数更重要

6.1 先确认比较条件

主要 MoE 实验训练 400B tokens,序列长度为 4096,batch size 为 1024,约 100K 步。学习率经过 1K 步 warmup 到 2×10−32\times10^{-3},再余弦下降到 3×10−53\times10^{-5}。训练文本包含多语言、数学和一般内容,来自更大的训练语料。论文没有公开到足以完全还原数据混合与顺序的程度。

这个规模让困惑度的改善不只是小模型现象。不过,论文检查表也明确说明没有提供误差条或相应显著性信息。所以较大的整体模式值得认真看,几个强方案之间只有零点几分的细排名,则不宜当作非常稳定的结论。

表 1 加入了多种扩容对照:KV head 从 4 增至 8,额外约 50M 参数;query head 增至 48,额外约 201M;增加 4 个专家,额外约 400M。这些方案都没有达到 G1 最好的困惑度。这说明收益不能简单解释成“只要多给差不多的参数就一样”。但它当然也没有穷尽所有可能的预算分配方式。

图 3:表 1 的位置与扩容比较。横轴从 5.6 开始,方便看清差异,不能按从零起始的柱长比例解读。所有数值都来自 15B MoE、400B tokens 的同组实验。

6.2 G1 和 G2 有效,不代表所有门都一样有效

G1 与 G2 的困惑度分别是 5.761、5.820,明显优于基线 6.026;G3、G4、G5 则分别为 6.016、5.981、6.017。这让 value/output 路径成为更有说服力的干预位置,而不是“注意力里随便找个地方乘门都行”。

下游指标总体支持 G1,但并不形成完全一致的排序。G1 逐元素门的 MMLU 从 58.79 到 60.82,GSM8K 从 52.92 到 55.27,HellaSwag 从 73.07 到 74.64。可在 C-eval 上,增加 4 个专家得到 63.19,高于 G1 的 62.20。加法 SiLU 门的 HellaSwag 为 74.81,也略高于 G1 sigmoid 的 74.64,尽管前者困惑度更差。

这些差异并非枝节。若实际目标是某一种语言、知识覆盖或特定代码能力,就不能只按平均困惑度选一个全局冠军。模型选择需要把目标指标、统计波动和成本放在一起看。

我最关注的是 headwise G1:额外约 1.6M 参数,困惑度为 5.792;逐元素版本额外约 201M,困惑度为 5.761。后者确实更好,但大幅增加参数只进一步换来较小的困惑度差距。若投影访存、优化器状态或总模型预算很紧,前者是很值得保留的对照。

Head-shared G1 得到 5.801,也比基线好,但其后续 sink 与激活诊断并不像独立逐头门那样理想。这再次说明,内部统计变化很大,不一定机械地对应到同样大的困惑度变化。

6.3 非线性对照说明了什么

表 3 在 value 与输出映射之间比较了多种操作。逐头 RMSNorm 得到 5.847,并不需要同样大的门投影;只给 SDPA 输出加 SiLU 为 5.975;加法 SiLU 为 5.821;加法 identity 对照为 5.882;最好的 G1 sigmoid 为 5.761。

图 4:表 3 的归一化、加法和非线性对照。普通 SiLU 并没有接近最佳效果,加法 identity 也能改善结果,因此不宜只用一个因素解释全部收益。

因此,结论应比“增加非线性就能修好注意力”更细。RMSNorm 改变尺度与特征间关系;加法门提供一条新的输入相关路径;乘法门调节已有检索结果。它们同时改变表示行为和训练优化。不同非线性给出不同效果,甚至不依赖那种新增非线性的改动也能有收益。

作者把非线性与 query-dependent sparse gating 放在一起解释,比单一因素更合理。但这些消融仍不能精确分解“多少收益来自非线性、多少来自幅度、多少来自优化”。它们是在缩小解释范围,并没有完成全部因果归因。

7. 稀疏性:门很小,和计算很少是两回事

7.1 论文观察到的是软抑制

表 4 中,G1 逐元素门的均值为 0.116,headwise G1 为 0.172,value 门为 0.221;图 3 的分布也在接近 0 的区域聚集。这里“稀疏”主要描述软抑制,以及有多少激活落到某个阈值以下。

从数学上说,只要输入是有限实数,σ(u)=1/(1+e−u)\sigma(u)=1/(1+e^{-u}) 就严格在 0 与 1 之间。一个很小的门值可能让某个输出在特定误差容忍度下近似可忽略,但要真正省掉计算,还需要阈值选择、误差控制和可执行的稀疏结构。门分布本身没有提供这些条件。

这也不同于 MoE 的 top-kk 专家选择。后者明确只执行部分专家;这里并没有因为某些门值小,就自动跳过生成注意力结果所需的点积和 value 聚合。两处都使用“稀疏”一词,却指向不同的执行含义。

7.2 均值缩放对照,让稀疏解释更可信也更有限

附录 A.3 比较了三种输出:门控前、统一乘平均门值之后、乘真实输入相关门之后。阈值为 0.01 时,低于阈值的比例分别为 0.03、0.33、0.44;阈值为 0.001 时,分别为 0.003、0.080、0.126。

图 5:表 4 的门均值、最大激活统计和首 token 注意力。三个面板的尺度不同,应分别阅读;value 门大幅降低激活统计后,仍保留比 G1 高得多的首 token 注意力。

图 6:附录 A.3 按绝对阈值测量的稀疏比例。均值缩放已经解释了相当一部分变化,真实门进一步增加抑制;这些是激活统计,不是跳过运算的比例。

这个对照很重要。如果把所有数统一乘一个很小的常数,很多数自然会掉到固定阈值以下,即使完全没有输入相关选择。真实门带来了超出这种统一衰减的变化,因此不能把结果全都归结为尺度变小;但也不能把全部阈值变化都视作语义无关信息被准确过滤。

对 NN 个坐标,可以把阈值统计写成

Sτ(y)=1N∑n=1N1{∣yn∣<τ}.S_\tau(y)=\frac1N\sum_{n=1}^{N}\mathbf1\{|y_n|<\tau\}.

当统一乘以正数 cc 时,

Sτ(cy)=Sτ/c(y).S_\tau(cy)=S_{\tau/c}(y).

也就是说,改变尺度等价于改变测量阈值。一个自然的补充研究是按每头尺度归一化,或在输出范数匹配后继续比较。这样能回答“选择性是否超出了总体缩放”这个更细的问题,但它是后续建议,不是论文已经报告的结果。

7.3 非稀疏 sigmoid 并非只改了一个因素

论文把 sigmoid 换成

NS-sigmoid⁡(u)=0.5+0.5σ(u),\operatorname{NS\text{-}sigmoid}(u) =0.5+0.5\sigma(u),

使门落在 (0.5,1)(0.5,1),不能强烈关闭输出。该版本平均门值 0.653、困惑度 5.900、首 token 注意力 0.451;原 G1 分别是 0.116、5.761、0.048。这支持了“允许接近零的门值很有用”。

不过,这个替换同时改变门的均值、动态范围和导数。相同 logit 下,它的导数只有原 sigmoid 的一半。因此它不是在其余因素完全固定时,只单独改变稀疏性。若加入均值、方差或输出尺度匹配的对照,能进一步缩小机制解释的范围。

原文还存在一个数值不一致:表 4 给 NS-sigmoid 的 F-Attn 为 0.451,图 6 对应图例则写 0.481。本文的诊断图统一采用表 4 的值,并明确保留这个差异。无论使用哪一个,它与 G1 的 0.048 都有较大距离;但不能假装两处数字已经完全核对一致。

8. Sink 与大激活:有联系,但不能画成一条必然链

8.1 门给了注意力头一种“几乎不写入”的选择

先看 headwise 标量门。输出为

zih=γih∑jaijhvj=∑j(γihaijh)vj.z_i^h=\gamma_i^h\sum_j a_{ij}^h v_j =\sum_j\left(\gamma_i^h a_{ij}^h\right)v_j.

若把括号内看作有效系数,就有

∑jγihaijh=γih.\sum_j\gamma_i^h a_{ij}^h=\gamma_i^h.

它的总量可以接近零。这意味着一个头不必完全依靠重新分配 token 概率来压小自己的输出。对于逐元素门,这个有效总量还会随特征坐标改变,因此不能用同一张新的注意力矩阵描述所有维度。

用一个人工构造的小例子:两个历史 token 的权重是 (0.4,0.6)(0.4,0.6),value 分别是 (2,1)(2,1) 和 (0,3)(0,3),则聚合结果为 (0.8,2.2)(0.8,2.2)。若当前门为 (0.1,0.8)(0.1,0.8),输出变成 (0.08,1.76)(0.08,1.76)。第一维被强烈压小,第二维保留较多。但最初的概率仍是 (0.4,0.6)(0.4,0.6),并没有在这次前向里被门反过来修改。

所以论文观察到 sink 减弱,是一个经过联合训练后的结果。架构给了模型新的调节手段,训练可能因此学到不同的 Q/K/V。不能拿一个冻结模型,在其现有输出上乘门,就声称已经改变了它那次前向的注意力分配。

8.2 Value 门构成了很有价值的反例

基线的最大激活汇总统计为 1053,F-Attn 为 0.467;G1 逐元素门是 94 与 0.048;headwise G1 是 98 与 0.073。这个差距表明,训练后的带门模型确实进入了不同的内部状态分布。

更有辨识力的是 G2 value 门:激活统计降到了 125,但 F-Attn 仍有 0.297。也就是说,大激活明显减少,并不自动导致首 token 注意力消失。Head-shared G1 的对应数字是 286 与 0.301,同样说明门的位置和各头独立性不能被一个总体尺度解释掉。

附录 A.4 追踪了 FFN 输出和残差流。在图示基线中,大激活大约从第六层附近出现,随后通过残差路径延续到较深层。这为归一化、有限精度和训练稳定性之间的关系提供了线索,但不能外推成“所有模型的数值问题都从这一层开始”,也不能证明注意力输出幅度就是唯一根源。

论文主要分析部分据此指出,大激活不是 sink 的必要条件;value 门就是其反例。相关工作部分有一句措辞与此不一致。读这类结论时,应以能直接检查的实验对照为准,而不是把互相冲突的句子拼成一个必要且充分的因果关系。

8.3 算法 2:怎样让诊断统计更可解释

下面是本文建议的未来测量流程,并非已经完成的附加实验。

  1. 先固定评估语料、上下文长度、掩码规则和平均方式,再比较不同架构。
  2. 按层、头和位置分别记录门分布,保留分位数与尾部,而不只保存一个全局均值。
  3. 同时测首 token 注意力和更一般的 sink 集中度,区分真实首 token、padding 与人为边界标记。
  4. 分别观察门前、门后和残差流激活,明确最大值先按什么维度求,再按什么维度平均。
  5. 对相同样本做均值缩放和范数匹配对照,再比较绝对阈值及相对阈值下的稀疏统计。
  6. 将这些统计与任务错误、检索位置和训练事件联系起来,避免把“更低 sink”直接当作模型目标。
  7. 在多个独立训练中重复关键对照,再讨论细小差距或中介因果关系。

这样做能帮助区分“表示更有用”与“因为尺度变小所以统计更好看”。它还可能揭示均值掩盖的异质性:少数很重要的头保留 sink-like 模式,并不妨碍全局平均值很低。

9. 稠密模型:门扩大了哪些训练配方的可用范围

论文使用两种约 1.7B 的稠密模型:28 层版本宽度 2048,48 层版本宽度 1536;两者均有 16 个 query head、8 个 KV head、头宽 128。它们是不同的深度与宽度配置,不能理解成给同一个网络原封不动追加 20 层。

在 28 层、400B tokens 下,最大学习率 0.004 时,困惑度由 7.499 降到 7.404。训练到 3.5T tokens、使用最大学习率 0.0045 和 batch 2048 时,从 6.180 降到 6.130。后一组 HumanEval 从 34.15 到 37.80,MMLU 从 59.10 到 59.61。困惑度改善不大,特定能力指标却可能变化更多;它们不能互相替代。

图 7:表 2 的部分学习率比较。左图高学习率基线仍有完整分数,只是性能严重退化;右图的高学习率基线才被论文标为发散。两个面板采用不同 token 预算和 batch。

48 层实验更清楚地展示了稳定性边界。在 400B tokens、batch 1024 下,基线最大学习率从 0.004 提到 0.008,困惑度从 7.421 恶化到 9.195;高学习率基线加 sandwich normalization 后为 7.407。逐元素 G1 在两档学习率下分别是 7.288、7.325。因此,门确实让较大学习率变得可用,但这个设置里更大学习率并没有继续改善它的困惑度。

其他指标又有不同变化:带门模型在上述两档学习率下,MMLU 从 52.44 到 54.47,GSM8K 从 32.37 到 36.62,HumanEval 却从 31.71 到 31.10。把结论写成“提高学习率后各项能力都更好”,就抹掉了实际的取舍。

到 1T tokens、batch 4096 时,基线在 0.008 下被标记为发散,带门模型则完成训练,困惑度为 7.078。在 0.0053 下,两者为 7.363 和 7.101。这组证据更有力地支持:在作者的测试条件下,门扩大了可用配方的范围。但它没有给所有新模型、优化器和精度格式提供一个安全的统一学习率倍率。

附录 A.6 还试过简单裁剪,把注意力与 FFN 输出限制在正负 100 或正负 300。它没有解决 0.008 下的收敛问题。这说明单纯把大数截住,不等价于从训练开始就让网络学习一个门;后者改变了整个训练过程里的映射与梯度结构。

实际启示是:把门作为架构搜索变量,同时重新探索学习率、batch 和归一化。验证时应关注多随机种子失败率、loss spike、优化器状态、真实吞吐及固定总预算下的质量,而不是不加条件地把已有学习率翻倍。论文足以支持开展这样的比较,却没有替每一种部署环境完成比较。

10. 长上下文:最大的差距出现在位置扩展之后

这一节最容易被二手转述省掉关键条件。实验有三个阶段:先训练 3.5T tokens;再把 RoPE base 从 10K 调到 1M,用长度 32K 的序列继续训练 80B tokens;最后用 YaRN 把标称上下文扩展到 128K,这最后一步没有额外训练。

“最终扩展不需要再训练”与“整个过程没有长上下文训练”完全不是一回事。作者在 YaRN 之前,已经对两种模型都进行了 80B tokens 的 32K 训练。若跳过这个阶段,只说从短上下文直接无训练扩到 128K,会明显改变读者对实验难度和成本的理解。

图 8:表 5 的 RULER 结果。虚线表示 YaRN 前的训练范围内评估,实线表示扩展后的配置。两种模型都经历了额外的 32K 继续训练阶段。

YaRN 之前,32K 上基线与带门模型分别为 79.50、79.77,只差 0.27 分。YaRN 之后,同样在 32K 评估,变成 37.94、72.88,差距达到 34.94 分。基线因为这次位置扩展掉了 41.56 分,带门模型掉了 6.89 分。

可以进一步做一个简单的差分比较,把两种模型在扩展前后分别变化多少保留下来:

Δextension=(72.88−79.77)−(37.94−79.50)=34.67 points.\begin{aligned} \Delta_{\mathrm{extension}} &=(72.88-79.77)-(37.94-79.50)\\ &=34.67\ \text{points}. \end{aligned}

在 128K,扩展后的基线为 31.65,带门模型为 58.82,相差 27.17 分;64K 的差距为 29.09 分。这个结果相当显著,但最精确的结论是:带门模型对这套位置外推操作更稳健。扩展前 32K 差距很小,反而不支持把结果笼统概括为“只要消除 sink,所有长上下文检索都会明显变好”。

作者的解释是,依赖 sink 来调节输出的模型,可能对 RoPE 几何变化更敏感;有输出门之后,模型可以更直接地控制信息强度,减少这种依赖。这个解释与观测相容,但实验并没有在保持其他网络参数不变的情况下,独立调节 sink 强度。架构、训练轨迹和多项内部统计一起变了,所以性能对比比具体因果路径更确定。

落到系统使用时,还要继续区分几种能力:可接受 128K 输入、在 RULER 上得分更高、可靠地完成 128K 内的复杂推理。它们不是同义词。真实任务可能要求跨多个位置整合信息、识别矛盾、生成长代码,或者在工具交互中动态更新上下文;表 5 并没有评估所有这些行为。

这里一个值得后续测试的问题是,门是否改善了位置外推本身,还是让某些依赖首 token 的注意力习惯不那么脆弱。若换一种位置扩展方法、保持长度但改变边界 token,或使用不同的 32K 训练预算,结果会怎样?这些比较能让“稳健性”这条结论更具体,而不是只重复最终 128K 的分数。

11. 设计取舍:什么时候该用哪种控制

11.1 为什么 G1 是合理起点

G1 同时满足两点:门由当前 query 的表示决定,而且仍然能独立操作尚未混合的各头输出。位置消融支持这两个性质在当前设置下有价值。G2 改的是源 token 携带的内容,G5 改的是头已经混合后的模型坐标,都不是同一个控制空间。

在 G1 内部,headwise 与 elementwise 的选择则更像成本取舍。逐元素门更细,但参数贵很多;headwise 仍能让不同头分别选择写入强度,而且已有相当好的主实验结果。对显存、带宽、优化器状态或总参数量敏感的项目,应该把它当成正式候选,而不是只把最细粒度版本当作唯一正确答案。

逐头 RMSNorm 也值得保留,因为它用较少新增参数改善了结果,但没有表达同样的近零写入决定。Sandwich normalization 作用于残差块的其他位置,也改善了高学习率基线。这些对照提示,门与归一化布局最好放在一起比较:不能默认所有架构都存在完全相同的未解决问题。

11.2 乘法与加法改变的是不同信息路径

乘法门需要原来的检索内容存在。某个坐标若是零,再乘任何门还是零;加法路径却可以在原检索坐标为零时,直接注入一个由 query 生成的新特征。这使加法更像另一条来自当前输入的支路,而乘法更像决定现有检索结果有多少通过。

论文里乘法 sigmoid 的平均困惑度优于加法 SiLU,但这一对比同时改变了运算和激活函数。表 1 又提供乘法 SiLU,其困惑度也不如乘法 sigmoid。合起来看,这些结果支持在作者设置里采用有界乘法门,却不能证明加法条件化在所有注意力架构里都必然更差。

从局部解释看,sigmoid 是“保留多少”的非负比例;SiLU 可以为负,也没有相同的上界,因而可以反向或放大某些内容。额外自由度可能影响优化和尺度,但这仍是为什么设计选择值得比较的理由,不是凭一张准确率表就已经确定的机制。

11.3 从头训练与给旧模型加门,要分开预期

附录 A.7 对实际使用者尤其重要。作者尝试在继续预训练时加入输出门,结果没有明显缓解已有大激活和 sink,也没有显著改善最终表现。他们认为主要收益可能来自训练早期就发生改变的学习动态。

这条负面结果不应被正文里的成功掩盖。从一开始联合训练,Q/K/V、输出投影和门可以共同寻找表示信息的方式;给已有模型加门,则要求它重新组织已经形成的补偿机制。后者可能需要不同初始化、适应预算或目标,但现有附录不足以证明所有改造策略都不可能成功。能说的是,简单追加一个门并不自动构成现有 checkpoint 的升级。

从公式还可以看出一个可能的初始化取舍。门初始接近 1,较能保留旧模型输出,却处于 sigmoid 导数较小的区域;初始接近 0.5,导数较大,却会一开始就缩小注意力分支。这个取舍可能影响改造过程,但它是本文建议研究的变量,不是作者已经验证的解释。

11.4 与线性注意力、KV 压缩是什么关系

“Gated” 这个词很容易把不同架构放进同一个抽屉。在递归线性注意力里,门可能决定有限状态记忆如何遗忘和更新;这里的 G1 则调节普通 softmax 已经取回的向量。它没有把一长串 KV 替换成固定大小的状态。

因此,后续读 Gated Delta Networks 或 Kimi Linear 时,应先问门作用于哪里。状态更新门影响哪些历史信息将来仍可用;softmax 输出门决定当前检索结果现在写出多少。两者都在控制信息,但内存复杂度、误差积累方式和失败边界并不相同。

同样,首 token sink 减弱并不意味着可以删除首 token 的 KV。某个 token 在当前诊断语料上权重很低,不代表未来任何 query 都不需要它。缓存策略需要自己的规则、目标分布和质量验证。本文提供了值得继续探索的架构现象,还没有提供缓存压缩的正确性保证。

12. 局限:哪些问题还不能由这份证据回答

统计不确定性。 论文覆盖的训练规模不小,但检查表明确没有误差条或相应统计显著性信息。两个强方案之间很小的分数差距,因此不足以确定稳定排名。发散与成功完成之间的差别更有辨识力,不过若要估计失败概率,仍需要多个种子和重复实验。

机制没有完全解耦。 位置、参数化、幅度、非线性响应、逐头独立性与优化轨迹在多个比较中一起改变。论文已经显著缩小解释范围,却没有精确确定每项因素贡献多少。把低门均值、小激活、少 sink 和高质量画成一条唯一的因果链,会超出实验支持。

评估范围。 结果主要来自语言建模、部分知识和推理任务,以及 RULER。它们不能自动覆盖所有多语言场景、后训练配方、生产生成任务或工具型 agent。预训练阶段有效的控制,遇到另一种归一化结构或后续优化目标,可能出现不同交互。

成本信息不完整。 小于 2% 的 wall-time 开销是有用的具体报告,但还不是完整的硬件研究。它不足以推断任意并行配置下的服务延迟、峰值显存、能耗与通信成本。稠密实验通过缩减 FFN 匹配参数预算,也让成本比较包含了资源重新分配。

改造旧模型的证据偏弱。 继续训练加入门的尝试没有重现主要收益。这是一条真实边界,但该实验也没有详细探索所有初始化和适应方案。对手里只有现有 checkpoint、没有从头训练预算的读者,这一条尤其需要放在决策前面。

原文有少量数值冲突。 Value-elementwise 门在表 1 的 GSM8K 为 53.97,在表 4 的对应行却为 51.33,其他列与困惑度大体对应;NS-sigmoid 的首 token 注意力又有表 4 的 0.451 与图 6 的 0.481 两个值。本文主性能比较采用表 1,诊断图采用表 4,并保留冲突说明。这些问题不推翻 G1 主要结果,但禁止我们把每个重复数字都当作已完全对齐。

平均值会藏住尾部。 平均门值、平均首 token 注意力、逐层最大激活的汇总,可能掩盖少数关键头、特殊输入或罕见数值事件。附录的分层图改善了这一点,却仍不能证明所有输入和部署条件都遵循同样的内部模式。

13. 批判性分析:结果很扎实,单一路径解释还不够

13.1 最有说服力的是哪部分

我认为核心是位置消融。G1 在相同大框架下,比 query、key 或输出投影之后的门更突出;扩容对照又说明,这不只是简单的参数增加。稠密模型结果进一步表明,它不是只在一个 MoE 配置中有效。合起来看,论文足以支持把 query-dependent output control 当作一个认真研究的架构方向。

Headwise 结果同样重要。约 1.6M 参数就得到接近 201M 逐元素门的困惑度改善,说明“不同头能否分别决定贡献强度”可能是相当大的机会。它没有证明头内特征选择无用,却提供了比“更多非线性总会更好”更具体的研究假设。

附录里的失败尝试也增加了论文价值。简单 clipping 没有复制稳定性收益,后加门继续训练没有复制主要模式。这些观察约束了过于简单的解释,也让成功公式不至于被误读成可以到处粘贴的通用补丁。

图 9:门控可能同时改变前向映射、梯度结构与训练轨迹,质量和内部诊断也可能一起变化。图中箭头表示待检验的机制假设,不是论文已经独立识别的因果效应。

13.2 三句话可以说得更精确

第一句是“在低秩 value/output 路径上增加输入相关的非线性控制”。它比“消除了秩瓶颈”准确。固定门下的秩界还在,变化的是不同输入可以选择不同的中间通道强度,以及这种参数化对优化的影响。这个准确版本已经足以解释,为什么一个小操作可以产生明显效果,不需要更夸张的线性代数结论。

第二句是“软抑制与更低 sink 统计共同出现”。它比直接认定稀疏性是独立原因更符合证据。NS-sigmoid 同时改变幅度和导数;固定阈值统计会随统一缩放变化;常量门还能通过参数化影响训练。这些事实并没有排除稀疏性解释,只是说明它必须与其他因素一起分析。

第三句是“在这套 YaRN 扩展下更稳健”。扩展后大差距之所以有意思,恰恰因为扩展前 32K 差距很小。把问题落到一个明确干预上,比泛泛说“sink-free 一定更适合长上下文”更能指导下一次实验。

13.3 算法 3:一个更能拆开机制的后续实验方案

下面仅为研究建议,本文未执行新的模型训练。

  1. 固定一个架构和数据流,明确总参数预算与总训练计算预算,并设置多个随机种子。
  2. 比较无门、headwise G1、elementwise G1,同时保留参数容量对照和逐头归一化对照。
  3. 加入常量门参数化,以及跨样本或跨头打乱动态门分数的对照,尽量匹配边际统计。
  4. 设计均值、方差或输出范数匹配的门,记录仍然存在的激活函数与梯度差异。
  5. 从头训练与旧模型继续训练分开实验;后者明确初始化、适应 token 预算及优化器设置。
  6. 同时报告损失、下游质量、失败率和真实成本,保存按层、头和位置划分的注意力与激活分布。
  7. 将门类型与位置扩展方法、32K 继续训练预算交叉比较,对同一任务分析扩展前后差值。
  8. 在控制架构和训练进度后,检查诊断变化是否仍能预测质量,报告不确定性而不仅是最好的一次。

这也不是一个完美的因果识别方案。打乱门值本身可能引入分布失配;匹配均值并不等于匹配全部梯度场。它的作用是用一组互补对照降低最明显的混杂,而不是寄希望于某个额外消融一次解释所有事情。

13.4 对不同工作,结论应该怎样落地

若准备开始新的预训练项目,这篇论文支持尽早加入 G1 和 headwise 对照,并联合搜索学习率与归一化。若只打算修改一个已训练 checkpoint,就应把附录的负面结果纳入收益预期。若主要做推理系统,则不能据此直接宣称 KV 更省或注意力 FLOPs 更少。

我更愿意保留的通用思想是:选择哪些 token,与决定写入多大强度,不一定要共用同一种归一化约束。一个注意力层可以先取回信息,再由当前 query 决定各通道贡献。这个分工很自然,也可能是方法能跨若干配置有效的原因;但具体有多少收益,仍来自训练出的网络,而不是单靠公式优美就能预定。

14. 结论

Gated Attention 在一个关键位置加上了很小的操作:softmax 取回各头内容之后、头混合之前,用当前输入生成的门逐头调节输出。论文在所测试的预训练设置中提供了较充分的收益证据,也观察到激活、sink 和位置外推表现的共同变化。

准确理解这些结果,比把它概括成一个万能技巧更有帮助。门带来输入相关控制,但保留固定门下的单头秩界;它增加运算,也不自动压缩 KV;最强证据来自联合训练,内部统计则仍在支持和约束机制假设。

这次阅读给我的主要收获是:把“每个注意力头究竟写出多少”当作一个独立的架构选择。下一步值得比较的,不只是更大的模型,而是在相同预算下,逐头控制、逐特征控制、归一化和训练动态之间怎样配合。

15. 资料与配图来源

  1. Qiu 等,Gated Attention for Large Language Models: Non-linearity, Sparsity, and Attention-Sink-Free,NeurIPS 2025。27 页正式 PDF 是本文公式、训练条件、表 1–7 与附录 A.1–A.9 的主要依据。
  2. arXiv:2505.06708,用于核实题目、作者与最初提交日期;没有用较短的 v1 替代扩充后的正式会议版。
  3. 作者资源入口,供需要查看发布材料的读者继续访问。

图 1 和图 9 是原创解释图;图 2 根据模型维度计算;图 3–8 依据会议版表 1–5 及附录 A.3 的数值重绘,没有复制原图,也没有从少量点虚构训练曲线。人工小例子和后续实验方案均属于本文分析,不作为作者的新实验或额外模型测量。