这件事对我们做AI应用的人来说意味着什么?意味着底层架构的效率天花板正在被打开,同样的算力能干更多的事。下面把这两篇论文的核心拆开讲清楚。
先搞懂残差连接在干什么
标准残差连接的公式很简单:
h_l = h_{l-1} + f_{l-1}(h_{l-1})
每一层的输出 = 上一层的输出 + 这一层学到的新东西。固定权重,均匀累加。这个设计从2015年一直用到今天,所有主流大模型都没改过。
问题是,这种「一视同仁」的累加方式,随着模型越来越深,暴露出了几个严重的结构性缺陷。
DeepSeek的思路:让权重从固定变成可学习
DeepSeek的问题意识很直接——固定权重是不是太死板了?每一层对之前所有层都同等对待,合理吗?
他们先搞了一版Hyper-Connections(HC),把残差流从1条扩展到4条,每条的权重可学习,让模型自己决定怎么混合信号。效果不错,但有个致命问题:训练不稳定。可学习的权重矩阵没有约束,经过60层累乘之后,信号被放大了3000倍,损失曲线训练到一半直接炸了。
最终版本mHC的解法很精巧:把权重矩阵约束在「双随机矩阵」上——每行之和等于1、每列之和等于1。这个数学性质保证了矩阵的谱范数不超过1,多层连乘之后信号不会爆炸。训练稳定了,性能也超过了标准残差连接,额外训练时间只多了6.7%。
一句话总结DeepSeek的贡献:连接权重从固定变成可学习,用数学约束兜底稳定性。
Kimi发现了更深层的问题
Kimi的论文开头也在讲残差连接的问题,但他们的问题定义和DeepSeek不在同一个层面。DeepSeek问的是「权重能不能更灵活」,Kimi问的是「就算权重可以学习,整个设计里还有什么根本没解决的」。
他们找到了三个核心缺陷:
不能点菜。 每一层只能看到上一层传下来的「混合状态」,所有前面层的输出搅在一起。但不同类型的层需要的东西不一样——有些层需要早期的原始语义,有些层需要最近几层刚算出来的特征。现在它们没法说「我要第3层的输出」。
信息找不回来。 某一层学到了很有价值的东西,一旦被混进累积状态,就和其他层的输出搅在一起了。随着后面的层不断叠加,这个信息越来越淡,最终被淹没,不可逆。
后面的层越来越难产生影响。 就像在一间越来越吵的房间里说话,前面的层已经积累了很大的信号,后面的层必须比所有前辈加起来喊得更大声才能被听到。论文实测了这个效应:到模型最后几层,信号量级是开头的十多倍。
mHC虽然让权重可学习了,但这三个问题都没解决——因为mHC的权重训练完就固定了,不管输入是什么,权重都一样。
Kimi的解法:把注意力机制用到层与层之间
这里是最漂亮的部分。Kimi发现,这三个问题和2017年之前用RNN处理文本序列时遇到的问题一模一样——信息被压缩进一个状态逐步传递,找不回来,不能选择性地回头看。
2017年那篇划时代的《Attention Is All You Need》用注意力机制解决了序列维度上的这个问题。但有意思的是,那篇论文升级了文本处理的信息流,却没有动层与层之间的信息流——残差连接依然是2015年的固定累加。
Kimi的核心洞察就是:在序列维度上我们已经用注意力替代了「压缩传递」,那层与层之间为什么还在用「压缩传递」?
这就是AttnRes——把注意力机制用到层间连接上。改完之后,每一层可以「回头看」所有之前层的输出,根据当前处理的内容动态决定最需要参考哪几层的结果。参数代价几乎可以忽略,每一层只多了一个向量。
最关键的区别在这:AttnRes的「回头看谁」的权重不是固定的。同一个模型处理不同输入时,每一层对之前各层的关注程度完全不同,实时决定。这是和mHC最本质的差异——mHC的权重训练完就定了,AttnRes的权重是活的。
论文里有一个消融实验特别说明问题:让模型能看到所有之前层的输出,但权重固定,效果和原来几乎一样。换成动态权重,性能才明显提升。结论很清楚——光是「能回头看」不够,必须是「根据内容动态地回头看」才有价值。
工程落地:Block AttnRes
理想状态下每一层都能回头看所有之前层(Full AttnRes),但100多层的模型意味着要把所有层的输出都存着,内存吃不消。
Kimi的工程方案是Block AttnRes:把所有层分成大约8个「块」,块内用标准残差做累加,块与块之间用注意力。需要记住的东西从「每一层的输出」缩减到「每个块的汇总」,内存占用大幅下降。
性能损失几乎可以忽略,大约8个块就能恢复绝大部分收益。训练额外开销不超过4%,推理延迟增加不超过2%,比mHC的工程代价还低。
实际效果
实验在Kimi自家的48B参数模型上做的,几个关键数字:
- 同样算力下,AttnRes达到了标准方法需要多烧25%算力才能达到的性能。不加机器、不加数据,只改信息流结构,白赚25%的算力效果
- GPQA-Diamond(研究生级科学推理):36.9 → 44.4,提了7.5个点
- 数学:53.5 → 57.1
- 代码:59.1 → 62.2
- 中文理解(C-Eval):79.6 → 82.5
推理类任务提升最大,这说得通——多步推理需要不同层之间紧密协作,正是信息流改善受益最大的场景。
训练过程也更健康了,「越来越吵的房间」问题被明显缓解:每层的信号量级不再单调递增,保持在有界范围内,后面的层不再被淹没。
两种方案的对比
| DeepSeek mHC | Kimi AttnRes | |
|---|---|---|
| 改的是什么 | 连接权重的学习方式 | 信息流的结构 |
| 权重特性 | 训练完就固定 | 每次处理不同输入都不同 |
| 能看到什么 | 只能看到上一层的混合状态 | 可以直接看所有之前层的原始输出 |
| 解决了什么 | 权重太死板 | 不能点菜 + 后面层越来越难发声 |
模型自己学到的东西也很有意思
训练好之后,Kimi可视化了模型「回头看」的模式,三个发现值得关注:
- 大部分时候还是看最近的邻居层,标准残差的默认行为并不完全错
- 但最原始的输入一直没被忘掉,即使到了模型最深的层,对最开头输入的注意力权重都不为零
- 模型自己发明了「捷径」——某些层会跳过中间,直接关注很早期的层,这完全是训练中自发出现的信息通路
还有一个实验我觉得特别值得关注:Kimi测试了25种不同的模型架构配置,发现用了AttnRes之后,最优的模型设计从「宽而浅」变成了「窄而深」。之前模型不敢做太深,因为深了之后后面的层越来越难学到东西。AttnRes解决了这个问题,让「加深度」重新变成了有效的设计手段。这不只是给现有架构加了个性能插件,而是重新开放了模型设计的一个维度。
对我们意味着什么
如果你用一句大白话理解这件事:大模型就像一栋100层的大楼,过去每一层的工人只能看上一层递过来的一份混合文件,前面谁写了什么全搅在一起了。现在Kimi给每一层装了一部电话,第100层的工人要用第3层当时算的数据,可以直接打电话回去查,而且每个工人根据手头的任务自己决定打给谁。就这么一个改动,同样的机器和数据,性能白赚25%。
过去几年大模型的架构创新主要发生在上层模块——注意力机制的变体、MoE路由策略、位置编码改进。残差连接一直待在最底层,被当作「默认配置」没人碰。现在两家中国实验室先后在这里找到了突破口,说明架构优化的前沿已经从上层模块深入到了最基础的信号传递结构。
对于我们做AI应用、搭Agent的人来说,短期内这些改动不需要你自己实现,但值得持续关注。当这些优化进入开源模型之后,同样的硬件条件下能跑更强的模型,对于算力有限的独立开发者和一人公司来说,这就是实实在在的降本增效。底层架构每提升一个台阶,上层应用的天花板就高一截。