
2016年,ResNet让"深度"这个词成了深度学习的信仰。层数越多,表达能力理论上应该越强,这几乎成了所有人的共识。可是到了大语言模型这个量级,事情开始变得诡异。
你往一个已经有几十层的Transformer里再加几层,训练损失曲线却不怎么往下走了。
这不是哪家公司调参没调好,而是一个在2024年后被反复验证的现象:深度扩展的边际收益正在塌陷。上海交通大学联合小红书Dots Studio的研究团队在这篇论文里,把这件事的根子挖了出来,顺手还给出了一个相当巧妙的修补方案,叫MSAR。
**核心问题:信息在深度方向上被悄悄稀释了**
先说清楚一件事:Transformer里的"残差连接"到底在干什么。
每一层网络算完之后,不是把结果直接传给下一层,而是把这一层的输出加到之前积累的"隐藏状态"上,像滚雪球一样往前滚。这个设计是2016年何恺明那篇ResNet论文留下的遗产,目的是让梯度能顺畅地穿过几十上百层网络,不至于训练到后面全是梯度消失。
问题出在"滚雪球"这个比喻本身。
雪球滚到后面,体积越来越大,新加进去的那一点雪,相对分量越来越小。放到Transformer里就是:早期层产生的特征,被压缩进一个不断累加的向量里,层数越深,这个特征占的"权重"相对就越稀薄,后面的层想要精准地把它提取出来,变得越来越难。
**残差流*:Transformer中贯穿所有层、通过逐层相加来传递信息的隐藏状态轨迹,是ResNet残差连接思想在深度网络中的延伸。**
这篇论文管这个现象叫"深度维度的信息稀释"。论文引用的几项研究发现,这不是危言耸听:有实验证明语言模型并没有把深度用足,层数堆上去了,但模型并没有相应地变聪明。这就是为什么"扩展深度"这件事,实际收益开始跟不上理论预期。
如果你开过一场需要传话的大型会议,你会秒懂这个困境。第一个人说的话,经过五六个人转述之后,内容已经严重走样,到了第十个人耳朵里,原话的细节基本消失殆尽,只剩下一个模糊的大概意思。这不是因为传话的人笨,而是因为"把所有历史信息压进一句转述"这个机制,天生就会丢信息。如果不解决这个问题,后面的人越来越依赖那句已经失真的转述,而不是回头去问第一个人到底说了什么。
**已有的两条修补路线,各自卡在哪**
面对这个问题,业内已经有两条路子在尝试。
第一条是"多条线同时传"。叫Hyper-Connections(简称HC),还有它的稳定版本mHC。思路很直接:既然一条雪球线容易稀释信息,那就同时滚好几条雪球,层层之间学一个混合矩阵,决定怎么把几条线的信息搅拌到一起。这个办法在DeepSeek-V4-Pro这类万亿参数模型里已经验证过效果。
第二条叫Attention Residuals(简称AttnRes),是Kimi团队提出的。它不滚雪球了,改成"检索"。把每一层的输出都单独存起来,后面的层想要某个早期特征,直接用一个可学习的查询向量,对所有历史层做一次类似Transformer里那种softmax注意力打分,按打分权重把需要的信息捞出来。这个办法已经在Kimi K3里验证过。
**softmax:一种把一堆分数转换成总和为1的概率分布的函数,数值越大的分数,转换后占的比例也越大,常用于注意力机制里决定"该关注谁多一点"。**
这两条路都比标准残差连接强,论文的实验数据后面会证明这一点。但研究团队琢磨出一件更深的事:这两条路,其实分别对应着序列维度注意力机制里的两种经典设计。HC家族像是深度方向上的"线性注意力",维护一个持续混合的状态;AttnRes则像是深度方向上的"单头softmax注意力",每次检索都是一次独立的打分竞争。
序列维度的注意力机制早就从单头进化到多头了,这是Transformer本身能成功的关键一环,不同的头能从不同角度理解同一句话。那深度维度的注意力,能不能也来一次多头升级?
**多头注意力:把一次注意力计算拆成多个并行的"头",每个头独立学习关注不同的信息侧面,最后把结果拼起来,是原始Transformer论文提出的核心设计。**
**为什么直接套用多头设计会失败**
这个想法听起来顺理成章,但论文里提到,AttnRes团队自己试过,结果是失败的。
他们尝试的办法是把隐藏状态按通道切开,切成几份,每份算一个头。但深度注意力里,被检索出来的"值"本质上就是整个隐藏状态本身,这个状态是一个完整的、有内在结构的表示,把它硬切成低维碎片,相当于把一个人的完整档案撕成几张纸片分给不同的人看,谁都看不全。性能因此掉了下去。
第二种直觉做法是借用HC那种"写回"机制,从同一个层输出里派生出几个候选流,当成几个检索头。这个办法保留了每个候选的完整维度,听起来更合理。但论文指出一个隐藏的陷阱:这些候选流本质上只是同一个向量乘以不同的标量系数,经过归一化处理之后,这些系数差异基本被抹平了,几个头算出来的"键"几乎长得一模一样,等于白白浪费了多头的名额,头和头之间根本没有学到不同的东西。
这两次失败揭示了一个核心矛盾:怎么从单一的层输出里,造出真正彼此不同、同时又保持完整维度的多个检索源头。
**MSAR的解法:向左右邻居借context,而不是切割自己**
研究团队的答案有点出人意料,他们没有在"这一层输出本身"上做文章,而是转向了序列这个维度去借资源。
具体做法是:对每一层的输出,用几个不同感受野大小的因果卷积,各自扫一遍。因果卷积保证只看过去的token,不会偷看未来,这在自回归语言建模里是硬性要求。扫完之后,会得到好几份不同的"流",每一份都是完整维度的向量,但内容略有不同,因为每一份融合了不同范围内邻近token的上下文信息。
论文的默认配置用了三个卷积核,尺寸分别是4、8、12,再加上保留原始输出不做任何处理的那一份,一共凑出4个流。
**因果卷积:卷积计算时只允许看当前位置及之前的信息,不会看到未来位置,保证模型在生成时不会"作弊"。**
**依赖注意力*:每个流对应一个独立学习的伪查询向量,各自对所有历史源做一次完整的softmax注意力计算,互不干扰,得到各自检索出的历史表示,再用轻量级的门控权重把这些检索结果加权融合成最终输入。**
这里的关键在于,这几个流虽然来自同一个向量,但它们各自"看到"的上下文范围不一样。窗口小的流更关注最近邻的几个token,窗口大的流能摸到更远处的信息。于是即便源头相同,四个流提取出的语义重点自然会产生分化,而且这种分化是靠数据驱动学出来的,不是靠切割强加上去的。
如果你用过团购软件里的"多人拼单",你大概能体会这种设计的巧妙。同一份外卖菜单,不同的人会根据自己最近吃过什么、口味偏好什么,圈出不一样的推荐组合。大家看的是同一份菜单,但各自基于"最近的经验窗口"给出了不同的视角。如果强行把菜单按页码切成几份分给不同人看,每个人看到的信息都是残缺的,根本做不出靠谱的推荐。MSAR做的就是前者,用不同的"经验窗口"(卷积感受野)去看同一份完整信息,而不是把信息硬生生切碎。
**存储代价怎么控制住**
多流听起来很美好,但一个显而易见的担忧是:存储和通信开销会不会爆炸?如果真的要把每一层扩出来的4份流全部存起来,跨设备传输,这个代价对大规模训练来说是不可接受的。
论文给出的答案是:MSAR从头到尾只存一份主干流,多出来的那几个流,都是从主干流通过卷积实时算出来的,用完即丢,根本不进硬盘也不占持久显存。
更进一步,论文还提出了Block MSAR,把整个网络按层分成若干个区块,大约8个区块。区块内部的多层输出先按老办法滚雪球累加成一个单流摘要,只有当后面的层真的需要做检索时,才临时把这个摘要展开成多个流去计算。这样一来,对于N个存储源,MSAR把存储和通信开销从理论上的O(mNd)压缩回O(Nd),和AttnRes打平,其中m是流的数量,d是隐藏维度。
论文里还设计了一套"两阶段计算"和"融合内核"的工程技巧,让卷积展开和注意力检索在一次内核调用里完成,中间结果不写回内存。实测在28B规模的MoE模型上,MSAR只多耗费0.5%的训练算力和0.3%的激活参数,代价小到可以忽略。
**MoE:混合专家模型,一种让模型在推理时只激活一部分参数(专家)参与计算的架构,能在总参数量很大的同时控制实际计算量。**
这个设计思路让我想起城市里的共享单车调度。单车公司不会在每个小区都囤一堆车等着用,而是根据实时需求,把车从别处调过来,用完之后再调走。如果反过来,每个小区都常备满仓单车,表面上随用随取很方便,但仓储成本会直接压垮整个系统。MSAR的按需展开,本质上就是这种"不囤货、按需调"的逻辑。
**实验结果:从18B到28B,全部12个基准测试通杀**
说了这么多设计思路,数据才是硬道理。研究团队在18B和28B两个规模的MoE模型上,把MSAR和标准残差连接(Vanilla)、mHC、AttnRes做了正面对比。
18B规模下,训练损失上,MSAR最终收敛到1.750,而Vanilla是1.799,mHC是1.776,AttnRes是1.769。下游任务的平均得分上,MSAR拿到45.7分,比Vanilla的37.5分高出8.2分,比mHC高4.0分,比AttnRes高3.9分。
更关键的是,这种优势不是靠某一两个任务刷出来的。论文测试了覆盖知识、推理、数学、代码、中文理解五大类共12个基准,包括MMLU、ARC-C、BBH、HumanEval、GSM8K、MATH、CMMLU、C-Eval等。结果是MSAR在全部12个基准上都拿到了四种方法里的最高分,没有一个例外。
| 基准类别 | 代表测试 | Vanilla | mHC | AttnRes | MSAR |
|---|---|---|---|---|---|
| 通用能力 | MMLU | 48.9 | 54.7 | 53.0 | **56.6** |
| 通用能力 | ARC-C | 55.7 | 66.3 | 68.7 | **74.9** |
| 代码数学 | GSM8K | 37.7 | 44.5 | 48.4 | **49.9** |
| 代码数学 | MATH | 17.8 | 19.1 | 20.9 | **24.4** |
| 中文理解 | CMMLU | 42.7 | 47.6 | 46.1 | **50.5** |
| 综合平均 | - | 37.5 | 41.7 | 41.8 | **45.7** |
28B规模下,这个优势没有消失,反而继续保持。MSAR的平均分是52.4,相比Vanilla的44.6高出7.8分,比mHC高5.0分,比AttnRes高3.0分。这说明MSAR的优势不是小模型上的偶然现象,放大模型规模之后依然站得住脚。
**缩放定律实验:同样的损失,少花37%的算力**
论文还做了一件格外有说服力的事:缩放定律(scaling law)实验。
简单说,就是在四个不同的模型规模下,分别训练Vanilla、mHC、AttnRes、MSAR,记录训练损失随算力投入的变化曲线,再用一个幂律公式去拟合这条曲线,推算出要达到同样的损失水平,各个方法分别需要多少算力。
结果是,相对于Vanilla基线,MSAR实现了1.58倍的等损失算力加速,也就是说达到同样的训练损失,MSAR需要的算力只有Vanilla的约63%。作为对比,AttnRes是1.35倍,mHC是1.30倍。
这个数字意味着什么?如果你的训练预算是固定的,用MSAR可以把原本需要跑1.58份算力才能达到的损失水平,用1份算力就跑到。对于动辄几千万美元的大模型训练来说,这不是一个无关紧要的优化,而是实打实的真金白银。
**消融实验:拆开来看,每个零件都有用**
研究团队没有止步于"MSAR整体比别人强",还做了细致的拆解实验,搞清楚每个设计决定到底贡献了多少。
**消融实验:通过逐一去掉或替换模型的某个组件,观察性能变化,来判断该组件对整体效果的真实贡献有多大。**
他们先测试了一个"直接把AttnRes和mHC加起来"的朴素组合方案,结果损失只比单独AttnRes降低了0.006,远不如MSAR的0.020降幅。这说明MSAR的效果不是简单地把两条已有路线的状态叠加就能得到的,卷积展开和自适应融合这套组合拳本身才是关键。
去掉卷积展开,只保留多个独立的伪查询(相当于让四个头去检索同一份内容,只是查询向量不同),损失从1.847回升到1.862。这证明光有查询多样性不够,源头内容本身的多样性才是真正的发力点。
把自适应的融合权重换成简单的平均,损失只是略微回升到1.851。说明融合方式这个环节虽然也有贡献,但不是决定性的,源头多样性才是大头。
流的数量方面,2个流已经能拿到大部分收益(1.850),4个流进一步优化到1.847,8个流只带来边际提升(1.846),所以默认用4个流是性价比最高的选择。
**可视化:模型真的学会了"分工"**
论文还做了一件挺有意思的事,把训练好的模型里,不同流到底在关注什么历史信息,画成了热力图。
结果显示,针对注意力子层的读取,权重分布得比较均匀,会比较多地照顾到早期的嵌入层和较早的区块;而针对MLP子层的读取,权重更集中,往往聚焦在最近一两个区块上。更有意思的是,同样是MLP子层,不同的流学出了完全不同的"偏好":有的流特别喜欢回看最初的嵌入层,有的流几乎不看嵌入层,反而死死盯着某个特定的中间区块。
这说明MSAR不是在表演多样性,它是真的在用数据训练出了功能分化的多个检索头,就像一个团队里,有人专门负责盯最新进展,有人专门负责回溯最初的项目背景,分工是自发长出来的,不是人为规定的。
写在后面
读这篇论文时,最让我意外的不是MSAR的最终效果,而是那两次"失败的直觉尝试"被原原本本写了出来。切通道失败,写回式候选流也失败,这两条路看起来都挺合理,甚至更简单,但都栽了跟头。研究者没有藏着这些弯路,反而把它们当成论证的一部分,这种诚实本身比结果更有价值,因为它告诉读者"多头"这个概念在不同维度上不是随便能套用的,表面相似的机制,底层约束可能完全不同。
还有一点值得琢磨:MSAR解决多样性问题的办法,是向序列维度借资源,而不是在深度维度内部硬想办法。这种"跨维度借力"的思路,其实在很多领域都出现过。信号处理里,时域解决不了的问题经常拿到频域去解;统计学习里,样本不够就靠先验分布来补。MSAR做的事情,本质上是遇到深度维度资源匮乏时,顺手从序列维度薅了一把羊毛。这提醒我一件事:卡壳的时候,答案不一定在问题本身所在的维度里。
论文最后也留了一个开放性的说法,多状态表示和跨层访问这两种思路的收益"并不完全重叠",暗示着还有更优雅的组合方式没被发现。这句话写得挺克制,但背后的意思值得玩味:HC和AttnRes各自代表了残差设计空间里两条独立的轴,MSAR找到了它们的一个交点,但交点未必只有一个。
Q&A
Q1:MSAR是什么?
A:MSAR全称Multi-Stream Attention Residuals,是上海交通大学与小红书Dots Studio团队提出的一种残差连接架构,它把深度方向上的单流注意力检索升级为多头检索,通过多尺度因果卷积从序列上下文中构造多个视角的流,再用轻量级融合机制把它们合并成每一层的输入。
Q2:MSAR相比AttnRes和mHC有什么优势?
A:在18B和28B规模的MoE模型上,MSAR在全部12个下游基准测试中都超过了标准残差连接、mHC和AttnRes。缩放定律实验显示,MSAR相对Vanilla基线实现了1.58倍的等损失算力加速,优于AttnRes的1.35倍和mHC的1.30倍,而且训练FLOPs和参数开销只增加不到1%。
Q3:MSAR会不会大幅增加存储和通信开销?
A:不会。MSAR只存储单流的区块摘要,多个流都是通过轻量级因果卷积在需要时实时展开出来的,用完即弃,不需要持久化存储。这让它的存储和通信开销从理论上的O(mNd)降到O(Nd),和AttnRes持平,配合融合内核设计,28B规模下仅增加0.5%训练算力和0.3%激活参数。
好文章,需要你的鼓励
RGPO用"临时脚手架"破解大模型强化学习的奖励稀疏难题:先让模型独立解题,失败则分段放出标准解法引导重写,仅采纳经验证更优的答案。难题测试准确率从0跃至99.5%,语言模型平均分高出最强基线5.0分。
论文提出用MoE模型的路由器输出作为跨语言对齐目标,通过持续预训练对翻译句对施加路由KL散度损失,在不改变分词和架构的前提下让隐藏表示更接近,并在四个开源MoE模型、七种语言上验证了下游任务性能的一致提升。
DiffGate提出难度门控的教师指导机制,让验证器决定何时需要教师介入,仅对失败且困难的轨迹提供有界教师指导,结合GRPO强化学习,在数学与代码任务上显著提升解题覆盖率与跨领域迁移能力。
研究者用固定不变的16位二进制编码替代传统可训练词嵌入表,在17亿参数规模模型上训练1000亿token,证明模型仍可获得实质语言能力,揭示输入表并非必需,但性能略逊于可学习方案。