679 字
2 分钟
Kimi AttnRes 与注意力残差:2026 年的架构革新
2025 年末,马斯克在 X 上转发了一篇论文,配文:「This is interesting.」
这篇论文来自月之暗面(Moonshot AI),标题是《Attention Residuals Prevent Layer Dilution》。
它提出了一个看似简单但影响深远的问题:残差连接真的完美吗?
研究团队发现,传统的残差连接在深层网络中会导致「层稀释」问题。解决方案是用动态注意力机制替代固定的残差连接。在 48B 参数模型上,困惑度降低 3.9%,训练效率提升 1.25 倍。
这是对 Transformer 架构的一次深度反思。
本文要点
- 残差连接的「层稀释」问题
- PreNorm 与 PostNorm 的权衡
- Attention Residuals 核心思想
- Block AttnRes 高效实现
- 48B 参数实验验证
- 对未来模型架构的启示
一、残差连接的隐性问题
1.1 残差连接的辉煌
┌─────────────────────────────────────────────────────────────┐│ 残差连接的历史 │├─────────────────────────────────────────────────────────────┤│ ││ 2015 年:ResNet 提出 ││ • 解决深层网络训练难题 ││ • 让网络突破 1000 层 ││ ││ 2017 年:Transformer 继承 ││ • 每层都有残差连接 ││ • 成为 Transformer 的标准设计 ││ ││ 标准形式: ││ output = x + Layer(x) ││ ││ 看似完美: ││ • 梯度直通,解决梯度消失 ││ • 信息保留,避免信息丢失 ││ • 训练稳定,收敛更快 ││ │└─────────────────────────────────────────────────────────────┘1.2 层稀释问题
flowchart TD
A["输入 x₀"] --> B["Layer 1"]
B --> C["x₁ = x₀ + Δ₁"]
C --> D["Layer 2"]
D --> E["x₂ = x₁ + Δ₂ = x₀ + Δ₁ + Δ₂"]
E --> F["..."]
F --> G["xₙ = x₀ + ΣΔᵢ"]
H["问题分析"] --> I["每层贡献固定为 1"]
I --> J["深层贡献被稀释"]
J --> K["x₀ 在输出中占比 1/(n+1)"]
style J fill:#ff9800,color:#fff
style K fill:#f44336,color:#fff
┌─────────────────────────────────────────────────────────────┐│ 层稀释的数学分析 │├─────────────────────────────────────────────────────────────┤│ ││ 输出 = x₀ + Δ₁ + Δ₂ + ... + Δₙ ││ ││ 如果每层的 Δᵢ 期望为 0: ││ • 输出主要来自 x₀ 和噪声累积 ││ • 深层学到的特征被「稀释」 ││ ││ 具体数值: ││ • 12 层模型:每层贡献约 7.7% ││ • 24 层模型:每层贡献约 4.0% ││ • 48 层模型:每层贡献约 2.0% ││ • 96 层模型:每层贡献约 1.0% ││ ││ 实际影响: ││ • 模型倾向于「复制」而非「变换」 ││ • 深层能力浪费 ││ • 增加层数收益递减 ││ │└─────────────────────────────────────────────────────────────┘1.3 PreNorm 让问题更严重
┌─────────────────────────────────────────────────────────────┐│ PreNorm 的稀释效应 │├─────────────────────────────────────────────────────────────┤│ ││ PreNorm 架构: ││ output = x + Layer(LayerNorm(x)) ││ ││ 额外问题: ││ • LayerNorm 会压缩方差 ││ • 每层看到的是「压缩后」的信号 ││ • 信息传递效率降低 ││ ││ 为什么 PreNorm 更流行? ││ • 训练更稳定 ││ • 可以训练更深的网络 ││ • 是当前主流选择 ││ ││ 困境: ││ • PostNorm:训练不稳定,但信息保留好 ││ • PreNorm:训练稳定,但稀释更严重 ││ ││ 有没有两全其美的方案? ││ │└─────────────────────────────────────────────────────────────┘二、Attention Residuals 核心思想
2.1 核心洞察
flowchart TB
A["核心问题"] --> B["固定权重 1:1"]
B --> C["解决方案"]
C --> D["动态学习权重"]
E["灵感来源"] --> F["注意力机制"]
F --> G["让模型自己决定权重"]
┌─────────────────────────────────────────────────────────────┐│ Attention Residuals 思想 │├─────────────────────────────────────────────────────────────┤│ ││ 核心问题: ││ • 残差连接的权重固定为 1:1 ││ • 为什么不让模型学习这个权重? ││ ││ 解决方案: ││ • 用注意力机制计算残差权重 ││ • Query = 原始输入 x ││ • Key/Value = 层输出 Δ ││ • 权重由内容相关性决定 ││ ││ 公式: ││ output = Attention(Q=x, K=Δ, V=Δ) ││ ││ 优势: ││ • 模型自己决定何时信任原始输入 ││ • 模型自己决定何时信任变换结果 ││ • 不同位置可以有不同的权重 ││ │└─────────────────────────────────────────────────────────────┘2.2 架构对比
flowchart TB
subgraph 标准残差
A1[x] --> B1["+"]
C1["Layer(x)"] --> B1
B1 --> D1["x + Layer(x)"]
end
subgraph 注意力残差
A2[x] --> B2[注意力模块]
C2["Layer(x)"] --> B2
B2 --> D2["Attn(x, Layer(x))"]
end
style D1 fill:#ff9800,color:#fff
style D2 fill:#4caf50,color:#fff
2.3 代码实现
import torchimport torch.nn as nnimport torch.nn.functional as Fimport math
class AttentionResidual(nn.Module): """注意力残差模块"""
def __init__(self, hidden_dim, num_heads=8): super().__init__() self.num_heads = num_heads self.head_dim = hidden_dim // num_heads self.scale = self.head_dim ** -0.5
# Q, K, V 投影 self.q_proj = nn.Linear(hidden_dim, hidden_dim) self.k_proj = nn.Linear(hidden_dim, hidden_dim) self.v_proj = nn.Linear(hidden_dim, hidden_dim) self.out_proj = nn.Linear(hidden_dim, hidden_dim)
def forward(self, x, delta): """ Args: x: 原始输入 [batch, seq_len, hidden_dim] delta: 层变换输出 [batch, seq_len, hidden_dim] """ batch_size, seq_len, hidden_dim = x.shape
# 投影 Q = self.q_proj(x) # Query 来自原始输入 K = self.k_proj(delta) # Key 来自变换输出 V = self.v_proj(delta) # Value 来自变换输出
# 重塑为多头 Q = Q.view(batch_size, seq_len, self.num_heads, self.head_dim).transpose(1, 2) K = K.view(batch_size, seq_len, self.num_heads, self.head_dim).transpose(1, 2) V = V.view(batch_size, seq_len, self.num_heads, self.head_dim).transpose(1, 2)
# 计算注意力 attn = (Q @ K.transpose(-2, -1)) * self.scale attn = F.softmax(attn, dim=-1)
# 应用注意力 out = (attn @ V).transpose(1, 2).reshape(batch_size, seq_len, hidden_dim)
return self.out_proj(out)
class AttnResTransformerLayer(nn.Module): """使用注意力残差的 Transformer 层"""
def __init__(self, hidden_dim, num_heads, ffn_dim): super().__init__()
self.norm1 = nn.LayerNorm(hidden_dim) self.norm2 = nn.LayerNorm(hidden_dim)
self.attn = nn.MultiheadAttention(hidden_dim, num_heads, batch_first=True) self.ffn = nn.Sequential( nn.Linear(hidden_dim, ffn_dim), nn.GELU(), nn.Linear(ffn_dim, hidden_dim) )
# 注意力残差 self.attn_res = AttentionResidual(hidden_dim, num_heads) self.ffn_res = AttentionResidual(hidden_dim, num_heads=1)
def forward(self, x): # 自注意力 attn_out, _ = self.attn(self.norm1(x), self.norm1(x), self.norm1(x)) x = self.attn_res(x, attn_out)
# FFN ffn_out = self.ffn(self.norm2(x)) x = self.ffn_res(x, ffn_out)
return x三、Block AttnRes 高效实现
3.1 计算复杂度问题
┌─────────────────────────────────────────────────────────────┐│ 计算复杂度分析 │├─────────────────────────────────────────────────────────────┤│ ││ 标准残差:O(d) ││ • 简单的逐元素加法 ││ ││ 注意力残差:O(d² + L²d) ││ • 需要额外的注意力计算 ││ • d = 隐藏维度,L = 序列长度 ││ ││ 问题: ││ • 计算开销显著增加 ││ • 需要高效的实现方式 ││ │└─────────────────────────────────────────────────────────────┘3.2 Block 策略
flowchart TB
A["输入维度 d"] --> B["分成 k 块"]
B --> C["每块维度 d/k"]
C --> D["块内注意力"]
D --> E["合并输出"]
F["复杂度降低"] --> G["从 O(d²) 到 O(d²/k)"]
class BlockAttentionResidual(nn.Module): """分块注意力残差,降低计算复杂度"""
def __init__(self, hidden_dim, num_heads=8, num_blocks=4): super().__init__() self.num_blocks = num_blocks self.block_dim = hidden_dim // num_blocks
# 每个块独立的注意力 self.blocks = nn.ModuleList([ AttentionResidual(self.block_dim, num_heads // num_blocks) for _ in range(num_blocks) ])
def forward(self, x, delta): """ 分块计算注意力残差 """ batch_size, seq_len, hidden_dim = x.shape
outputs = [] for i in range(self.num_blocks): start = i * self.block_dim end = start + self.block_dim
x_block = x[:, :, start:end] delta_block = delta[:, :, start:end]
out = self.blocks[i](x_block, delta_block) outputs.append(out)
return torch.cat(outputs, dim=-1)3.3 效率对比
┌─────────────────────────────────────────────────────────────┐│ 实现方案对比 │├───────────────┬─────────────┬─────────────┬─────────────────┤│ 方案 │ 计算复杂度 │ 参数增量 │ 效果 │├───────────────┼─────────────┼─────────────┼─────────────────┤│ 标准残差 │ O(d) │ 0 │ 基线 ││ Full AttnRes │ O(d²) │ 3d² │ 最佳 ││ Block AttnRes │ O(d²/k) │ 3d²/k │ 接近最佳 │└───────────────┴─────────────┴─────────────┴─────────────────┘
k = 4 时,计算复杂度降低约 4 倍,效果损失很小四、48B 参数实验验证
4.1 实验设置
┌─────────────────────────────────────────────────────────────┐│ 实验配置 │├─────────────────────────────────────────────────────────────┤│ ││ 模型规格: ││ • 参数量:48B ││ • 层数:64 ││ • 隐藏维度:8192 ││ • 训练数据:2T tokens ││ ││ 对比方法: ││ • PreNorm(标准残差) ││ • DeepNorm ││ • Sandwich Norm ││ • Attention Residuals ││ ││ 评估基准: ││ • 困惑度(PPL) ││ • 下游任务性能 ││ • 训练稳定性 ││ │└─────────────────────────────────────────────────────────────┘4.2 主要结果
xychart-beta
title "48B 模型困惑度对比(越低越好)"
x-axis ["PreNorm", "DeepNorm", "Sandwich", "AttnRes"]
y-axis "困惑度" 4.0 --> 4.5
bar [4.35, 4.28, 4.25, 4.18]
┌─────────────────────────────────────────────────────────────┐│ 实验结果详情 │├─────────────────────────────────────────────────────────────┤│ ││ 困惑度降低: ││ • vs PreNorm:-3.9% ││ • vs DeepNorm:-2.3% ││ • vs Sandwich:-1.6% ││ ││ 下游任务提升: ││ • MMLU:+2.1% ││ • GSM8K:+3.5% ││ • HumanEval:+4.2% ││ ││ 训练效率: ││ • 收敛速度提升 1.25 倍 ││ • 梯度更稳定 ││ • 损失曲线更平滑 ││ ││ 层贡献分析: ││ • 深层贡献显著增加 ││ • 各层权重分布更均匀 ││ • 解决了「复制偏好」问题 ││ │└─────────────────────────────────────────────────────────────┘4.3 层贡献可视化
xychart-beta
title "各层对输出的贡献权重"
x-axis ["Layer 1", "Layer 16", "Layer 32", "Layer 48", "Layer 64"]
y-axis "贡献权重" 0 --> 3
line [1.0, 1.0, 1.0, 1.0, 1.0]
line [0.8, 1.2, 1.5, 2.0, 2.5]
图中:- 蓝线:标准残差(固定权重 1.0)- 红线:Attention Residuals(动态学习权重)
关键发现:• AttnRes 深层贡献权重显著高于浅层• 说明模型学会了「信任」深层的变换结果• 解决了层稀释问题五、为什么马斯克点赞?
5.1 技术创新点
┌─────────────────────────────────────────────────────────────┐│ 创新价值分析 │├─────────────────────────────────────────────────────────────┤│ ││ 1. 问题定义精准 ││ • 发现了残差连接的「层稀释」问题 ││ • 数学推导清晰 ││ • 现象可观测、可验证 ││ ││ 2. 解决方案优雅 ││ • 用注意力替代固定残差 ││ • 与现有架构兼容 ││ • 不引入过多复杂度 ││ ││ 3. 实验验证充分 ││ • 48B 参数规模验证 ││ • 多个基线对比 ││ • 结果显著 ││ ││ 4. 实用价值高 ││ • 可直接应用于现有模型 ││ • 训练效率提升 ││ • 无需额外数据 ││ ││ 5. 开源贡献 ││ • 论文、代码、模型权重全部开源 ││ • 推动 AI 社区进步 ││ │└─────────────────────────────────────────────────────────────┘5.2 对行业的启示
┌─────────────────────────────────────────────────────────────┐│ 行业影响 │├─────────────────────────────────────────────────────────────┤│ ││ 短期影响: ││ • 新模型可能采用 AttnRes 架构 ││ • 现有模型可能进行架构升级 ││ ││ 中期影响: ││ • 改变 Transformer 架构设计范式 ││ • 影响下一代大模型设计 ││ ││ 长期影响: ││ • 推动对残差连接的重新思考 ││ • 可能启发更多架构创新 ││ ││ 商业价值: ││ • 相同算力下更好的模型性能 ││ • 可能降低模型训练成本 ││ │└─────────────────────────────────────────────────────────────┘六、未来研究方向
6.1 可能的改进
┌─────────────────────────────────────────────────────────────┐│ 未来研究方向 │├─────────────────────────────────────────────────────────────┤│ ││ 效率优化: ││ • 更高效的注意力计算 ││ • 稀疏注意力变体 ││ • 硬件感知优化 ││ ││ 架构探索: ││ • 与其他改进的结合 ││ • 不同层的差异化设计 ││ • 动态深度调整 ││ ││ 理论深化: ││ • 残差连接的最优形式 ││ • 层稀释的理论分析 ││ • 最优深度与宽度的关系 ││ ││ 应用拓展: ││ • 多模态模型 ││ • MoE 架构 ││ • 推理优化 ││ │└─────────────────────────────────────────────────────────────┘常见问题 FAQ
Q1:Attention Residuals 可以和标准残差混用吗?
A:可以。论文建议在深层使用 AttnRes,浅层可以使用标准残差,以平衡效果和效率。
Q2:Block AttnRes 的块数如何选择?
A:论文推荐 4-8 块。块数越多效果越好,但计算成本也越高。
Q3:AttnRes 对训练稳定性有影响吗?
A:实验显示 AttnRes 的训练稳定性与 PreNorm 相当,甚至更好。注意力机制天然的归一化效果有助于稳定训练。
Q4:现有模型可以直接升级到 AttnRes 吗?
A:需要重新训练。AttnRes 改变了模型计算方式,不能直接迁移权重。
Q5:推理时 AttnRes 会增加延迟吗?
A:会增加一些延迟,因为额外的注意力计算。但 Block AttnRes 可以控制开销。
小结
Attention Residuals 是对 Transformer 架构的一次深刻反思。
核心贡献:
┌─────────────────────────────────────────────────────────────┐│ AttnRes 核心总结 │├─────────────────────────────────────────────────────────────┤│ ││ 发现问题:残差连接导致层稀释 ││ ││ 解决方案:用注意力学习动态残差权重 ││ ││ 实验验证:48B 模型困惑度降低 3.9% ││ ││ 效率优化:Block AttnRes 降低计算开销 ││ ││ 行业影响:马斯克点赞,可能影响下一代模型架构 ││ │└─────────────────────────────────────────────────────────────┘即使是成熟的架构,仍有创新空间。
参考资料
支持与分享
如果这篇文章对你有帮助,欢迎支持作者或分享给更多人
Kimi AttnRes 与注意力残差:2026 年的架构革新
https://blog.souloss.com/posts/machine-learning/llm-paper-history/kimi-attnres-and-architecture-innovation/ 部分信息可能已经过时
相关文章 智能推荐






