← 返回 PaperDaily 大模型与智能体

大模型零遗忘新范式Brainstacks:医疗提问97%路由到数学堆栈

这篇论文最有冲击力的地方,不是零遗忘的堆栈设计本身,而是那个反常识的发现:医疗提示在97%的情况下会路由到聊天+数学堆栈——它们训练时根本没见过医疗数据。这说明微调注入的是可迁移的认知原语,而不是领域知识。思考方式被当作"能力"打包,这件事值得所有做微调的人停下来想想。

大模型零遗忘新范式Brainstacks:医疗提问97%路由到数学堆栈
原论文信息如下:
论文标题:
Brainstacks: Cross-Domain Cognitive Capabilities via Frozen MoE-LoRA Stacks for Continual LLM Learning
发表日期:
2026年4月
发表单位:
Brains Build Research, Ramallah, Palestine
原文链接:
https://arxiv.org/pdf/2604.01152v1.pdf

引言

大语言模型的持续多领域微调,一直是工程落地上的一道坎。加一个新领域,要么从头重训,要么冒着灾难性遗忘的风险做顺序微调;部署之后想单独删掉某个领域能力,几乎不可能;推理时所有知识一视同仁地激活,根本没有"按需取用"这回事。这些问题业界已经念叨了好几年,但绝大多数解决方案还停留在"用一个更大更全的数据集混着训"的思路上——本质上还是打补丁,不是做架构。
这篇来自Brains Build Research的论文,提出了一套名为Brainstacks的模块化架构,把领域专家能力打包成冻结的适配器堆栈,在共享的冻结基座模型上做加法式组合推理。整套系统由五个互相咬合的组件构成:MoE-LoRA构建模块、内循环残差提升、外循环持续领域训练、零空间投影、以及基于结果训练的sigmoid元路由。在TinyLlama-1.1B和Gemma 3 12B IT上的实验里,MoE-LoRA比参数匹配的单一LoRA收敛快2.5倍,残差提升能突破单堆栈天花板,路由系统能恢复被无门控堆叠破坏的生成质量。
但这些工程数字还不是最狠的。真正让龙哥坐直了看的,是那个关于"微调到底在做什么"的结论:基于结果的元路由发现,领域堆栈编码的是可迁移的认知原语——指令遵循清晰度、数值推理、过程逻辑、思维链结构——而不是领域特定知识。医疗提示在97%的情况下最优路由到聊天+数学堆栈,尽管这两个堆栈训练时看到的医疗数据是零。这个发现如果成立,可能会让不少人重新思考:微调注入的,到底是知识,还是能力?

问题背景及相关工作

先把问题摆清楚。现在要给大模型加领域能力,最常见的路子就两条:一是把多个领域的数据混合起来做全参微调,二是顺序微调。前者的问题是每加一个领域就得重来一遍,后者的问题更经典——灾难性遗忘。早期工作如EWC用正则约束保护旧知识,PackNet用剪枝给新任务腾地方,但它们的通病是:模型整体还是单体结构,领域能力揉在共享参数里,既不能单独摘除,也没法在推理时按需组合。
LoRA这类参数高效微调方法把训练成本降下来了,但也没解决模块化问题。后续的MoE-LoRA方向,比如MoLoRA、MixLoRA、LoRAMoE,引入了条件计算,但都是在单个训练阶段内做专家路由,没有持续学习能力。持续学习方向的C-LoRA和Online-LoRA虽然会冻结旧适配器,却只能靠任务ID或路由器选一个适配器,不能做加法式组合。渐进神经网络用侧向连接串起任务列,但每个任务独占一份基座参数,不共享。
零空间方向的工作,InfLoRA和NESS会构造旧任务输入表示的近似零空间,把新任务更新约束进去;GPM把梯度投影到旧任务张成的正交补空间;LoRA-DRS则从冻结权重里减掉旧领域的B×A投影。这些方法都在用线性代数做防遗忘,但都缺一个推理时的选择性激活机制。Brainstacks的定位很清楚:把这些组件——MoE-LoRA、残差堆叠、零空间投影、结果驱动路由——按两个循环组织起来,形成一套完整的持续学习管线。

方法概述

Brainstacks的整体思路可以这样理解:把大模型的持续学习拆成"叠加"而不是"改写"。每个领域训练完后,它的参数被冻成一个独立堆栈,堆在共享基座模型上;新领域训练时,梯度被投影到旧领域方向的零空间里,物理上不可能覆盖旧能力;推理时,一个轻量元路由器根据提示语义决定激活哪些堆栈。这套架构的基本单元是一个覆盖全部七个transformer投影矩阵的MoE-LoRA模块,通过Shazeer式噪声top-2路由做专家选择,用rsLoRA做秩稳定缩放,在QLoRA 4比特量化下训练。
下图展示了论文中最核心的域子空间方向图:对第24层q_proj投影做SVD,提取每个领域堆栈的前三个主方向,可以清楚看到不同领域的子空间方向几乎正交。数学(红色)和推理(橙色)有部分重叠(余弦相似度0.54),这与两个领域训练数据来源有交集的事实一致。
图1:第24层(q_proj)的领域子空间方向。每个箭头是通过SVD提取的top-3主方向。各领域指向不同方向,主标题:微调注入的是能力不是知识?Brainstacks:97%医疗提示绕开医疗栈

<h2 style=冻结堆栈的魔法:Brainstacks如何实现零遗忘持续学习
持续学习是个老问题:模型学会一个新领域,旧领域就开始“失忆”。LoRA把训练成本压下来了,但一个领域一个LoRA,推理时怎么选?多个LoRA硬叠又互相干扰。Brainstacks的解法是彻底换一套思路——把微调从“改参数”变成“叠参数”。每一轮训练产出的参数被冻结成一个独立堆栈,堆在共享基座模型上,新堆栈只能向与旧堆栈正交的方向生长。这让“零遗忘”不再靠正则补偿,而是由线性代数保证。
基本单元是MoE-LoRA模块。先拆一下术语。标准LoRA训练时学习一对低秩矩阵(A,B),推理时把B·A的增量加到原权重上。MoE-LoRA把这“一对”扩展成4个专家,每个专家拥有独立的(Aᵢ,Bᵢ)低秩对,秩16,由一个带可学习噪声的路由器按token粒度挑选top-2专家做加权输出。“噪声路由”来自Shazeer等人2017年提出的稀疏门控机制——噪声幅度由输入决定,训练时鼓励专家探索,推理时关闭噪声。公式(2)给出了噪声logits的定义:噪声注入项通过softplus激活再乘以标准正态随机向量ε,使路由探索更平滑。公式(3)是标准的top-K稀疏门控:top-2之外的概率置零,softmax后恰好2个非零权重。
公式2:噪声路由logits计算
公式2:噪声路由的logits计算。Wᵣ是路由投影,Wₙ是可学习噪声投影,softplus保证噪声幅度为正,ε是标准正态噪声。
公式3:top-K稀疏门控
公式3:top-K稀疏门控。K=2,非top-2位置置为−∞,softmax后恰好两个非零权重。
每个专家输出还要乘一个缩放系数s=α/√r,来自rsLoRA秩稳定缩放。r=16、α=16时,有效缩放系数为4.0。rsLoRA与标准LoRA的关键差异在于:标准LoRA用α/r缩放,秩变大时系数快速趋向零;rsLoRA用α/√r,随秩增长衰减更慢,让高秩专家在训练中保持足够大的更新步长。
公式1:rsLoRA秩稳定缩放
公式1:每个LoRA专家的输出乘以缩放系数s=α/√r。B矩阵零初始化保证新堆栈从恒等输出开始,加入时不会扰动模型。
Brainstacks把MoE-LoRA装到transformer全部7个线性投影上:q、k、v、o四个注意力投影负责注意力头之间的信息交互;gate、up、down三个FFN投影负责特征变换。此前MixLoRA只在FFN层做MoE,LoRAMoE的注意力层仍用单LoRA。能把7个投影同时做成MoE的,本文是第一份。直接好处是:专家多样性不再只集中在特征变换部分,注意力计算本身也具备了条件计算能力——跨域组合时每个模块都是可替换的“乐高块”。
为了让4个专家不彼此撞车,还配了负载均衡辅助损失(公式7)。P(e)是专家e的平均路由概率,f(e)是专家e实际分到的token比例,二者乘积之和乘以专家数N。训练总损失=任务损失+0.01×负载均衡损失。这个系数恰好解释了论文里MoE-LoRA的train loss显示为7.444的原因——辅助损失把日志推高了,任务本身的损失其实与单LoRA可比。
公式7:负载均衡辅助损失
公式7:负载均衡辅助损失。P(e)为专家e的平均路由概率,f(e)为分发到专家e的token比例,系数0.01加入总损失。
堆栈是Brainstacks的第二个核心抽象。一个堆栈就是一组MoE-LoRA模块的集合,在领域训练完成后立即冻结。冻结后的堆栈参数转成半精度,从GPU显存挪到CPU内存,推理时按需调回GPU计算delta,算完再送回CPU,同一时刻只有一个冻结堆栈占用显存。只要CPU/磁盘空间够,领域堆栈数量可以无限扩展,GPU显存占用恒定——论文称之为Superposition LLM原理。公式(8)给出了堆栈加法的完整表达式:模型输出=基座输出+所有冻结堆栈输出+当前活动堆栈输出。由于新堆栈的B矩阵初始化为全零,它加入系统时输出的delta为0,物理上不会扰动已有能力。
公式8:堆栈叠加输出
公式8:堆栈叠加输出。所有冻结堆栈的输出与活动堆栈输出相加,共同构成最终模型输出。
BrainStack MoE-LoRA与标准单LoRA对比(参数匹配约53M,相同数据相同配置)
图:BrainStack MoE-LoRA与标准单LoRA对比(参数匹配约53M,相同数据相同配置)。MoE-LoRA按步数收敛显著更快。

认知原语而非知识存储:97%医疗提示为何路由到聊天+数学堆栈

反直觉的发现藏在一个约200万参数的轻量模块里——元路由器。它输入提示经过基座模型(冻结的、未叠加任何堆栈)后的深度语义特征:0.45×中层隐藏状态+0.55×末层隐藏状态,输出每个领域的独立sigmoid概率。每个领域被独立门控,从而允许“多个领域同时激活”的跨域组合。
关键在于训练目标。传统路由用领域标签训练,学的是“这个提示属于哪个域”。Brainstacks的元路由器用“结果发现”法训练,学的是“激活哪些堆栈能把验证损失压到最低”。对每个样本,算法先算基座模型损失,再算5个单领域堆栈各自的损失,然后用贪心搜索逐步添加领域,能看到损失继续下降就加进去。
于是那个反直觉的发现浮出水面:医疗提示上,贪心搜索找到的最优组合是聊天+数学,占所有医疗提示的97%。聊天和数学堆栈里一个医疗样本都没有。如果堆栈学的是医疗知识,这个结果无法解释。但如果堆栈编码的是认知原语呢?数学堆栈提供数值浓度和步骤推理的组织能力,聊天堆栈提供指令遵循和输出规范化——这两个能力恰好是医疗问答最需要的。医疗问答的难点往往不在医学知识检索(基座模型已经会的部分),而在怎么把临床推理链条组织成清晰回答。
621df26778f05KkH.gif
这也是“医疗提示不用医疗堆栈”这句话的真正含义:路由器发现的不是“哪些堆栈见过医疗数据”,而是“哪些能力模块对当前任务真正有用”。
图8:跨域主方向余弦相似度
图8:各领域堆栈主方向之间的余弦相似度。数值低意味着正交分离有效。数学与推理方向相似度0.54,与二者共用部分数据源的事实一致。

双层循环架构:残差提升与零空间投影的协同设计

Brainstacks的双层循环分内外两环。内环叫残差提升,目标是把一个领域学透。具体做法:在领域数据上训练第一个MoE-LoRA堆栈到收敛,冻结它;然后加第二个堆栈,继续在相同数据上训练。因为第一个堆栈的冻结输出已经修正了模型的一部分错误,第二个堆栈学到的自然就是剩余残差。当一个新堆栈带来的验证损失改善小于0.002时,提前终止。这个机制类似梯度提升:每个新堆栈拟合的是之前所有堆栈的残差。TinyLlama的chat域上效果很有说服力:第一轮把验证损失从2.587拉到1.305,第二轮只到1.303——增量收益不足,触发终止。code域更明显:两轮从0.953直降到0.493。
图3:单LoRA与Brainstacks残差提升在chat域的对比
图3:单LoRA在chat域训练400步后验证损失卡在0.8741;Brainstacks通过三轮残差提升压到0.8531,相对改善2.4%。每个新堆栈学的都是前面堆栈没学会的部分。
外环叫持续领域堆叠,把领域按“认知递进”顺序排列:chat→code→math→medical→reasoning。早期实验发现,medical排在math之前训练会导致医疗收敛很差——缺少数值推理能力。chat必须放在最前面,因为它提供所有领域都要用的指令遵循和输出格式化。reasoning放最后,它像元技能一样组装其他领域。
然后是防遗忘的核心——零空间投影。训练第d个领域之前,先取之前所有冻结堆栈,在若干验证样本上跑一次前向传播,收集每层冻结堆栈的输出delta,得到形状为[样本数, 隐藏维度]的矩阵D。然后做随机SVD取前K个主方向,令V为对应右奇异向量构成的矩阵,得到投影矩阵P=V·Vᵀ。训练中,活动堆栈的输出delta先减去沿P方向的分量:δ_projected=δ−δ·P。这意味着活动堆栈不可能在旧领域主方向上产生任何输出——它是靠线性代数被排除的,不是靠loss调出来的。方法上对Gemma 3 12B取K=64个主方向,隐藏维度3840,每领域仅占约1.7%容量,理论可支撑50多个领域;TinyLlama实验用K=32,效果同样明显。
但有个细节必须澄清:即便有零空间投影的硬隔离,当门控关闭、所有堆栈同时输出时,损失仍会攀升。干扰矩阵显示chat从0.853涨到1.778,medical最严重到1.984。这不是遗忘——冻结参数没有变——而是堆栈输出幅度叠加产生的干扰。图4与图5对比了有无零空间投影的干扰矩阵:无NS时所有最终损失都更高,chat 1.839 vs 1.778,code 1.512 vs 1.452,medical 2.066 vs 1.984,math 1.184 vs 1.041。零空间投影最有趣的效果发生在math自己身上:加投影后math最终损失反而降低了12.1%,说明它释放了本要用于对抗旧方向干扰的模型容量。
图4:有零空间投影的无门控干扰矩阵
图4:有零空间投影时,无门控干扰矩阵。每行表示该领域训练完成后所有领域的验证损失。灰色为尚未训练的领域。这些损失是堆栈输出幅度叠加造成的,不是参数覆盖。
图5:无零空间投影的无门控干扰矩阵
图5:无零空间投影时,所有最终阶段损失更高。零空间投影明显减缓了跨领域干扰的累积速度。
表3:渐进遗忘矩阵:无NS与NS对比
表3:渐进遗忘矩阵(无NS→NS)。几乎所有阶段NS都降低了验证损失,math自身改善最大(12.1%)。

从TinyLlama到Gemma 3 12B:跨规模验证与基准评估

先看MoE-LoRA构建模块是否真的有价值。论文在TinyLlama-1.1B 4比特上对比了MoE-LoRA(4×秩16,53.6M参数)和参数匹配的单LoRA(秩64,50.5M参数)。同样用tatsu-lab/alpaca数据、同样400步、相同超参数。结果见表1:验证损失0.872 vs 0.874,MoE-LoRA略优;按步数算收敛快2.5倍,约160步就追平单LoRA的400步水平(图2)。代价是每步墙钟时间约2倍,因为路由和4个专家的前向都要额外计算——对离线微调来说可接受。
表1:MoE-LoRA与单LoRA在TinyLlama-1.1B上的对比
表1:MoE-LoRA与单LoRA在TinyLlama-1.1B上的对比。MoE-LoRA验证损失略优,墙钟时间约2倍。
图2:单LoRA与MoE-LoRA验证损失曲线
图2:MoE-LoRA约160步达单LoRA最终水平,按步数收敛快2.5倍。
随后是TinyLlama 4域全流程验证:chat(3个堆栈)、code(2个)、medical(2个)、math(2个),合计9个堆栈,约485分钟。表2展示了每轮堆栈的验证损失变化。chat三轮从2.587到0.853;code两轮从0.953到0.493。注意每轮新增堆栈带来的收益逐渐变小——这验证了收敛检测(min_loss_delta=0.002)确实在发挥作用,而不是盲目叠加堆栈。
表2:TinyLlama 4域训练结果
表2:TinyLlama 4域训练结果。9个堆栈、4个领域、总计约485分钟。chat第三轮几乎无增益被提前终止。
接下来跨到Gemma 3 12B IT(5个领域10个堆栈),把Brainstacks从1B级推到12B级。表4给出零样本基准结果(每基准200样本),图11更直观:经过元路由选择性激活的Brainstacks在所有基准上保持可比,没有灾难退化;个别基准的差异在200样本的采样噪声范围内。价值不在于“刷榜”,而在于“不崩”。
表4:Gemma 3 12B IT零样本基准结果
表4:Gemma 3 12B IT零样本基准(每基准200样本)。基座模型与Brainstacks路由系统保持可比,差异在采样噪声范围内。
图11:Gemma 3 12B零样本基准对比图
图11:基座模型(蓝)与Brainstacks路由系统(绿)零样本基准对比。路由系统没有因堆栈累积出现灾难性退化。
论文还做了两个边界实验:一是用随机初始化的Partitioned Subspace Network(PSN)测试整个架构,二是验证每域DPO/GRPO与堆栈原语的兼容性。PSN实验很有趣:一个没有任何Python或数学训练数据的随机模型,路由正确地把代码提示导向code堆栈(code=1.00),生成输出中出现了def关键字和缩进结构;数学提示同时激活code(1.00)和math(0.96)。这说明堆栈内不只是存储领域知识,还在学习生成结构——与“认知原语”假说一脉相承。
图12:PSN v2生成输出示例
图12:PSN v2生成输出。随机初始化的基座模型没有任何Python或数学训练数据,但正确路由后能产生def和缩进结构。

局限与展望:叠加LLM与自扩展AI的未来路径

Brainstacks把“微调”重构为“把可组合的能力打包成插件”。这个思路对工程系统很有吸引力,但论文本身有客观局限。第一,Gemma 3零样本评估每基准仅200个样本,结论是“没有灾难退化”而非“提升”,统计信号较弱。第二,元路由器依赖基座模型的隐藏状态,一旦替换基座模型,路由器需要重训。第三,训练时间是单LoRA的两倍,对大规模模型是实打实的算力成本。第四,论文未开源,大量工程细节(manifest、去污染子系统、BestStackCallback等)依赖单机复现。
未来最有想象力的方向是“Superposition LLM”:任意多的领域堆栈像插件一样随时装卸,GPU显存恒定。另一个方向是自扩展AI——让系统根据任务自动检索并组合已有能力模块,而不是每次全量重训。对企业场景来说,这意味着新领域上线不动旧参数、失败回滚只需卸掉一个堆栈、领域合规审查变成清单核对。从这个意义上说,Brainstacks不只是一个持续学习方案,更像一套模型能力的操作系统雏形。

龙迷三问

下面是龙哥对于大家可能的一些问题的解答:
这篇论文到底在解决什么问题?Brainstacks提出冻结MoE-LoRA堆栈的模块化持续学习架构,以残差提升、零空间投影和结果驱动元路由实现零遗忘多域微调与跨域能力组合。
这篇工作最值得看的点是什么?MoE-LoRA比单LoRA收敛快2.5倍;残差提升突破单堆栈上限(chat损失从0.8741降至0.8531);零空间投影减少跨领域干扰;元路由器在97%医疗提示中选择chat+math堆栈。
这篇工作的边界或风险在哪里?优点:模块化架构支持持续学习、零遗忘保证、跨领域组合能力、磁盘卸载推理实现常数GPU内存。缺点:训练时间较长、推理延迟增加、对数据集质量和顺序高度敏感、需要预训练基础模型、隐藏维度容量有限。
如果你还有哪些想要了解的,欢迎在评论区留言或者讨论~

龙哥点评

论文创新性分数:★★★★☆

提出Brainstacks模块化架构,通过冻结的MoE-LoRA堆栈实现持续多领域微调,结合残差提升、零空间投影和基于结果的元路由器实现跨领域能力组合。

实验合理度:★★★★☆

验证损失、零样本基准准确率、路由准确率、遗忘矩阵。

学术研究价值:★★★★☆

提出Brainstacks模块化架构,通过冻结的MoE-LoRA堆栈实现持续多领域微调,结合残差提升、零空间投影和基于结果的元路由器实现跨领域能力组合;更关键的是问题定义是否可复用到同类任务。

稳定性:★★★☆☆

现有材料未提供充分的极端条件、重复运行或扰动测试,稳定性暂按中性评价。

适应性以及泛化能力:★★★☆☆

现有材料未完整展示跨数据集、跨场景或分布外实验,泛化能力仍需进一步验证。

硬件需求及成本:★★★☆☆

TinyLlama上MoE-LoRA训练时间20.2分钟(vs单LoRA 9.5分钟),Gemma 3 12B上每个领域约500步训练,推理时元路由器开销约5ms/提示。

复现难度:★★★☆☆

现有材料未确认完整代码、配置、数据处理脚本和权重是否齐备,复现难度暂按中性评价。

产品化成熟度:★★★☆☆

论文验证以研究实验为主,真实部署中的时延、成本、维护和异常场景仍需补充验证。

可能的问题:训练时间较长、推理延迟增加、对数据集质量和顺序高度敏感、需要预训练基础模型、隐藏维度容量有限。

主要参考文献


*本文仅代表个人理解及观点,不构成任何论文审核或者项目落地推荐意见,具体以相关组织评审结果为准。欢迎就论文内容交流探讨,理性发言哦~ 想了解更多原文细节的小伙伴,可以点击"阅读原文",查看更多原论文细节哦!       

转发文章 微博 X LinkedIn Facebook
龙哥读论文 · PaperDaily

本文基于龙哥读论文 PaperDaily 数据库整理,结合论文原文与工程视角进行解读。

LONGGE AI COMMUNITY

把每天读到的论文,变成长期积累

加入「龙哥读论文」知识星球,持续获取 AI 论文、资讯、开源项目、招聘与研究思路。

加入龙哥读论文微信群:添加微信 kangjinlonghelper,备注“研究方向 + 地点 + 学校/公司 + 昵称”。

龙哥读论文知识星球二维码 微信扫码加入知识星球