多域RL训练完Math就忘?这篇论文给出了"局部扰动"层面的解释
核心摘要
做过多域RL后训练的人大概都有过这种经验:模型在数学上调好了,再去练代码,回头一测数学居然掉了。掉得还不少。一个直观解释是"灾难性遗忘",更技术一点的说法是"梯度冲突"。但这篇论文一开始就给你看了一个挺反直觉的东西——全模型梯度的余弦几乎是 0,但干扰还是大量发生。
正交了还冲突?这就是问题的起点。
作者的回答是:把视角从"全局梯度方向"压到"局部参数子空间"。他们发现单域 RL 产生的参数更新极其稀疏(77%–89% 的参数几乎没动),但稀疏不等于不冲突——不同域虽然改的神经元集合差异很大,但它们共用同一批活跃计算路由,更新方向决定这条共用路由上的人是握手还是打架。基于这个观察,他们用一个二阶局部扰动模型证明:后训练对前域的损伤主要集中在一个低维共享冲突子空间里,用一段非常短的"刷新"训练就能在这个子空间里几何级数地把损伤压回去。
实测结果挺漂亮:Code → Math → QA → CW 这条课程跑完,Math 从单域时的 66.84 掉到 57.66,加一段 Re-Math 短刷新拉回到 66.04,平均分还冲到全场最高的 66.39。更值得说的是免训练版本——只在稀疏代理坐标上做选择性回滚,2% 的参数预算就能恢复 20.4%,32% 预算恢复 73.6%。
如果你正在做多域 SFT/RL 后训练,这篇论文最有用的不是 Re-Math 这个具体动作,而是它把"哪里在冲突"这件事 localize 到了具体参数维度——这意味着遗忘问题第一次有了"代理证据",可以直接动手修。
论文信息
- 标题:A Local Perturbation Theory for Cross-Domain Interference and Recovery in Multi-Domain RL
- 作者:Lei Yang, Siyu Ding, Deyi Xiong
- arXiv:2606.02398
- 提交日期:2026 年 6 月 1 日
一、问题动机:正交怎么还会冲突?
我做过一段时间多域后训练。最早碰到的现象就是:上一阶段练数学练得好好的,第二阶段加代码,验证集一跑——数学掉了 5、6 个点,有时候更多。
当时我们的解释是经典的两条:一是灾难性遗忘(Catastrophic Forgetting),新任务把旧知识冲掉了;二是梯度冲突(Gradient Conflict),两个域的更新方向相反,所以打架。
听起来很合理对吧?但这篇论文一开始就把这两条解释打了一拳——

图1 是这篇论文整个故事的引子:在 Math 的最优解 θ_Math* 处算两个域的梯度余弦,全模型加在一起几乎是 0。如果"正交意味着不冲突"成立,那 Math 后练 QA 不应该掉点才对。但实测掉得很惨,这说明全局正交根本不能保护你。
这就是论文要解的问题:为什么全模型梯度近乎正交,但跨域干扰依然显著?
作者给的答案分三步走,每一步都有可量化的证据。
二、三个反直觉观察:稀疏 + 弱重叠 + 共享路由
观察 1:单域 RL 的更新极度稀疏
把 RL 后训练前后的参数减一下,看变化分布。

77%–89% 的参数动得几乎可以忽略。换句话说,RL 后训练不是在重写模型,是在做一种类似 LoRA 的隐式低秩编辑。这个观察其实不算新——做过 RLHF/GRPO 的同行都知道 RL 阶段更新很轻——但作者把它当成一个正式假设塞进了理论框架里。
观察 2:不同域改的神经元几乎不重叠
按 top-k 取每个域改得最多的那批神经元,做 Jaccard 相似度。
结果是 Jaccard < 0.19。这很低,几乎是两个不重叠的集合。
到这里你可能会想:那不就完了?大家改自己的,互不打扰,应该没冲突啊。
我第一反应也是这个。但作者紧接着丢了第三个观察。
观察 3:但它们共用同一批"活跃路由"
这是整篇论文最关键的洞察。
"改的神经元"和"用的神经元"是两件事。RL 编辑的可能只是某个 MLP 内部的少数参数,但在 forward 的时候,几乎所有推理任务都会走过同一批活跃模块——尤其是 Math/Code/QA 这些推理类任务,它们的活跃神经元集合重叠率反而很高(Jaccard 大概 0.3–0.5)。CW(创意写作)相对独立一些。

换个工程一点的说法:A 域改了路由器 R 上的参数 p1,B 域改了 p2,p1 和 p2 几乎不重叠。但 forward 的时候 R 是必经之路,p1 和 p2 的修改会同时影响 R 的输出。如果两个修改方向相容,就是协同;不相容,就是冲突。
这就是为什么"全局梯度正交"能成立、但"局部仍然干扰"也能成立——干扰发生在共享路由这个低维子空间里,全模型平均一下被稀释成接近 0。
三、方向性对齐:协同还是冲突,到底看什么?
光说"共享路由"还不够,作者继续追问:在共享路由上,两个域的更新方向是相同还是相反?

这张图我反复看了几遍。它说明几个事:
- Code 和 Math 是天然朋友:在大部分层上方向都是对齐的,所以 Code → Math 这个顺序训练里 Math 不仅没掉,反而比单域还高(66.49 vs 66.84,几乎打平)。
- Math 和 QA 是分层敌友:浅层在打架,中后层在握手。这种分层异质性是全局梯度余弦完全看不到的——平均一下就抵消了。
- CW 自成一派:和推理域共享路由很少,所以 CW 训练对 Math/Code/QA 的影响相对小。
到这里,论文的现象层叙事就讲完了。但它真正的贡献是:把这套观察形式化成一个可证明的扰动模型,并给出一个具体可操作的恢复方法。
四、局部扰动理论:为什么短刷新就够了?
这部分公式有点多,但核心思想其实很直接。下面只保留最关键的两条。
命题 1:损伤是二阶项
假设 θ_A* 是域 A 训练完的检查点,作者假设它近似平稳——也就是说在这个点上 A 的梯度已经很小(验证集选 best ckpt 基本能保证这一点)。
那么在 θ_A* 上叠加一个域 B 的更新 δ_B 后,A 域损失的变化是:
线性项被 ε_A(A 的剩余梯度)吃掉了,主导项是二阶 Hessian 项。这意味着干扰的强度由 δ_B 的方向 + A 的曲率共同决定。
命题 2:损伤集中在低维冲突子空间
作者进一步证明,如果存在一个低维子空间 \(\mathcal{S}_{A,B}\)(共享活跃路由对应的那批参数维度),并且 A 的 Hessian 在这个子空间上有正曲率、和补空间弱耦合,那么:
也就是说,只有 δ_B 投影到 S_{A,B} 上的那部分会造成实质损伤,剩下的部分对 A 几乎无害。
定理 1:短刷新的几何收缩
最关键的结论。如果你在 θ_A* + δ_B 这个被污染的状态上,对域 A 做几步梯度下降(也就是"短刷新"),那么冲突子空间上的有害分量会按几何级数衰减:
其中 μ_A 是 S_{A,B} 上的曲率下界。意思是每一步刷新都按一个固定比例 (1-αμ_A) 把投影分量压缩——只要曲率够正,几步就够了。
这就解释了为什么"短刷新"能起作用,并且解释了为什么它能选择性恢复——它压的是子空间内的污染,子空间外的更新(来自其他域的有用学习)受影响较小。
说实话这套理论框架的几个假设(局部光滑性、近似平稳性、正曲率)都是常见的优化假设。最巧妙的不是数学本身,是把"共享活跃路由 = 低维冲突子空间"这个映射建立起来——这一步是经验观察驱动的,不是凭空假设。
五、Re-Math:理论指导下的简短刷新
训练设置
- 基础模型:Qwen3-4B-Thinking-2507
- 训练算法:GRPO,VeRL 框架
- 课程顺序:Code → Math → QA → CW(Omni-Thinker 课程)
- 每域数据量:5,120 条
- 学习率:1e-6
- 响应长度:最大 16,384 tokens
主结果
直接看主表(Re-Math 列是关键):
| 任务 | Base | Code 单域 | Math 单域 | Code_o | Math_o | QA_o | CW_o | CGPO | JT | Re-Math |
|---|---|---|---|---|---|---|---|---|---|---|
| Math | 43.19 | 59.63 | 66.84 | 59.63 | 66.49 | 59.90 | 57.66 | 61.93 | 64.80 | 66.04 |
| Code | 29.57 | 52.67 | 34.65 | 52.67 | 50.69 | 50.99 | 50.47 | 50.05 | 48.61 | 51.05 |
| QA | 60.64 | 60.89 | 60.76 | 60.89 | 60.52 | 62.34 | 62.34 | 62.48 | 62.11 | 62.49 |
| CW | 82.44 | 82.40 | 81.38 | 82.40 | 81.44 | 81.79 | 86.52 | 86.73 | 86.97 | 85.96 |
| AVG | 53.96 | 63.90 | 60.91 | 63.90 | 64.79 | 63.76 | 64.25 | 65.30 | 65.62 | 66.39 |
下标 o 表示 Omni-Thinker 顺序训练后的检查点;下标 s 表示单域专家。Re-Math 是在 CW_o 之后再加一段简短的 Math 刷新。
几个关键数字值得停一下:
- Math:57.66 → 66.04,恢复了 8.38 个点,距离单域专家 66.84 只差 0.8。这就是定理 1 说的几何收缩在起作用。
- 其他域基本不掉:Code 50.47 → 51.05(甚至涨了),QA 62.34 → 62.49,CW 86.52 → 85.96(轻微回吐)。这就是命题 2 说的"选择性"——刷新只在共享子空间里起作用,对其他域的私有维度影响很小。
- 平均分 66.39 全场最高,甩开 CGPO(65.30)和 Joint Training(65.62)超过 0.7 分。这点其实挺关键——Re-Math 是个 post-hoc 的小动作(一段短训练),而 JT 是从头联合训练,开销大得多。
我自己看这个对比的时候在想:JT 之所以能打到 65.62,是因为它从一开始就在多域上平均梯度,自然不会有强遗忘,但代价是单域上限被压低(Code 才 48.61,落后单域专家 4 个点)。Re-Math 这种"先按课程练完 + 末端短刷新"的路线,理论上能接近多域上界——这套范式如果真的稳定,对工程师是友好的,因为它支持增量增加新域。
训练动态

六、免训练版本:直接在稀疏坐标上回滚
主结果之外,论文还做了一个非常有意思的"对照实验":完全不训练,只把 QA_o 的某些参数维度回滚到 Math_o 的值,看 Math 能恢复多少。
这其实是对理论的最强验证——如果干扰真的集中在低维冲突子空间里,那么我直接定位这些坐标、把它们重置,应该就能看到明显的恢复。
作者用三个信号来定位冲突坐标:
- A = 共享激活(Activation):这个参数对应的神经元在两域都活跃
- M = 更新幅度(Magnitude):这个参数从 Math_o 到 QA_o 变化大
- C = 方向冲突(Conflict):这次变化和原本 Math 学到的方向相反
| 选择器 | 参数预算 | Math Avg | Δ vs QA_o | 恢复率 | Δ QA Avg |
|---|---|---|---|---|---|
| Math_o(参考上界) | - | 66.49 | +6.59 | 100.0% | -1.81 |
| QA_o(基线) | - | 59.90 | - | 0.0% | 0.00 |
| 随机选 | 2% | 59.49 | -0.42 | -6.3% | +0.01 |
| A 单独 | 2% | 60.53 | +0.63 | 9.6% | +0.04 |
| A×C | 2% | 60.55 | +0.65 | 9.9% | -0.05 |
| M×C | 2% | 61.11 | +1.21 | 18.3% | +0.04 |
| A×M×C | 2% | 61.25 | +1.35 | 20.4% | -0.06 |
| Joint MLP+Attn | 32% | 64.75 | +4.85 | 73.6% | -0.45 |
我觉得这张表是全文最硬的证据:
- 随机选 2% 是负收益——证明不是"随便回滚都能恢复"。
- 三个信号都有正收益,组合最好——A×M×C 在 2% 预算下恢复 20.4%,QA 自己几乎不掉(-0.06)。
- 预算扩到 32%,恢复率冲到 73.6%,QA 也只掉 0.45。
- 整个过程零训练成本。
这意味着什么?意味着多域 RL 的遗忘其实是一种"可操作的局部污染"。它不是一个抽象的"分布漂移"或"灾难性遗忘",是几千个具体参数维度上的方向反转。你不一定要靠刷新训练去 unlearn,原则上可以直接 surgical edit。
不过坦白说,免训练版本恢复 73.6% 已经是 32% 参数预算的开销了——这个比例其实不算稀疏。我自己更看好这套方法的科学价值(验证理论)而不是工程价值(直接拿去用)。
七、批判性思考:这套理论靠不靠谱?
不吹不黑,我说几个我觉得需要打问号的地方。
1. "近似平稳性"假设其实挺强的。整个二阶展开成立的前提是 ε_A(A 域剩余梯度)很小,论文用"验证集 best ckpt"来保证这一点。但实际训练中,最好的 ckpt 不一定是最平稳的,过拟合到验证集和接近平稳点不是一回事。如果 ε_A 不够小,线性项会回归,整个二阶分析就要打折扣。
2. CW 的特殊性没被充分讨论。CW 和推理域共享路由本来就少,所以 Re-Math 对 CW 的影响小可能是 trivial 的——不是因为方法选择性强,而是因为本来就不太冲突。如果换一个和 Math 高度共享路由的"近邻域"做刷新,是不是还会有这种漂亮的选择性?我有点怀疑。
3. 评估上有点取巧。Math 用 AIME24/25/26 + OlympiadBench + HMMT,Code 只用 LiveCodeBench-v6 一个,QA 用 SuperGPQA+MMLU-Pro,CW 用 WritingBench。Math 这边的评估面很广,但 Code 只有一个 benchmark,结论的稳健性受限。
4. Joint Training 的 baseline 设置。JT 用了 5,120×4 的总数据,但 Re-Math 的总训练量(4 个域顺序 + 一段短刷新)实际更多。开销对比应该挂一个总 token 数或 GPU 小时数的脚注,论文里没看到。
5. 仅 4B 模型 + 单一 backbone。结论会不会推广到更大的模型(70B+)?会不会推广到非 thinking 模型?论文没做。理论上扰动展开和模型规模无关,但稀疏性比例、共享路由的几何结构在大模型上可能就完全不一样。
但这些问题不影响我对这篇论文的整体判断——它第一次给跨域干扰提供了一个可证伪、可定位、可手术修复的解释,仅凭这一点就值。
八、对工程的启发
如果你正在做多域后训练,这篇论文有几条很直接的可操作启发:
- 别再用全模型梯度余弦判断"会不会冲突"。它会骗你。要看就看模块级的、共享活跃路由上的方向余弦。
- 课程顺序不是越平均越好。论文里的 Code → Math 之所以 Math 几乎不掉,是因为方向余弦正;Math → QA 掉 8 分是因为方向余弦在浅层为负。前置任务和后置任务的方向相容性应该是排课程的核心指标。
- 如果回避不了顺序训练带来的遗忘,留 5%–10% 的"末端预算"做关键域的短刷新——它便宜,而且选择性强。
- 稀疏代理回滚是一个值得探索的工程工具。在没有刷新数据的情况下(比如线上模型不能再训),可以用 A×M×C 这套信号挑出嫌疑参数做局部 rollback,至少是一个免训练的 baseline。
九、收尾
这篇论文最让我喜欢的地方是它的层层递进感:先给你一个反直觉的现象(正交但冲突),再给你一组三个相互呼应的观察(稀疏 + 弱重叠 + 共享路由),然后形式化成一个可证明的扰动模型,最后用两个独立的实验(Re-Math 训练 + 免训练回滚)双向印证理论。
这种节奏在多域 RL 这个本来挺工程化的领域里不多见。大部分多域工作都在堆 trick——加 buffer、加正则、调比例、改采样——这篇是少有的从"为什么"切进去的。
它没解决所有问题(CW 的特殊性、规模化、评估广度都还可以再做),但它给了一个有形的、可定位的"冲突"概念。这比抽象的"灾难性遗忘"往前走了一大步。
觉得有启发的话,欢迎点赞、在看、转发。跟进最新AI前沿,关注我