学生没换、教师没换,只是让教师互相盯着对方的作业——多教师蒸馏的内讧治好了

核心摘要:多教师在线蒸馏(MOPD)的标准做法是"领域路由"——数学题给数学教师批,医学题给医学教师批,各管各的。但问题来了:路由只决定了"谁来教",所有教师的更新最终都作用在同一份学生参数上,教师之间风格差异一大,梯度就开始打架,联合训练反而把某个领域(通常是弱势的那个)打残。这篇论文(arXiv:2610.13521)提出的 Road MOPD 思路很直接:让非路由教师也来看一眼当前这条学生轨迹,两个教师在 token 级别达成一致就加强监督、打架就削弱;梯度层面再用辅助教师的同轨迹梯度做"预防性投影",把冲突分量削掉但保留至少 60% 的目标梯度模长。高冲突场景下医学域比 Vanilla MOPD 涨 5.6 到 8.8 个点,低冲突和三域场景也全面领先。我觉得这篇最值钱的不是涨点,而是它把 MOPD 的失败模式定性成了"更新兼容性问题",并给了一个有实证支撑的探测手段。

论文信息 - 标题:Beyond Domain-Routed Supervision: Cross-Teacher Guarding for Multi-Teacher On-Policy Distillation - 作者:Shi-Yu Tian、Yong Liu、Ximan Liu、Tianrui Zhu、Sule Bai、Xinwei Yang、Ruiqi Liu、Kun-Yang Yu、Ming Yang、Zhi Zhou、Yu-Feng Li、Yipeng Sun、Gu Simiu - 机构:Nanjing University、JD.com - 链接:https://arxiv.org/abs/2610.13521 (2026 年 10 月 9 日提交,30 页,9 图 10 表)


🎯 问题:路由只分工,不管"合得来"

先交代一下背景。On-policy distillation(OPD)这两年挺火:学生自己生成轨迹,教师对学生实际写出来的 token 做稠密监督,比离线蒸馏更贴合学生当前的生成分布。多教师版本 MOPD 是自然的延伸——我有数学专家、代码专家、医学专家,那就按领域路由,谁的题谁批。

听起来很美好。但作者发现了一个挺扎心的现象:Math × Code 联合训练基本不掉点,而 Medical 只要跟 Math 或 Code 联合训练,医学性能就稳定跌破单域 OPD 基线,而且训练越到后期,梯度冲突的层数占比越高。

你想想看,路由机制干了什么?它只是决定了"这条轨迹由谁打分"。打分之后产生的梯度,全都往同一个学生参数上怼。医学教师的回答风格(谨慎、结构化、爱引用指南)和数学教师(跳步、激进的符号推导)差异巨大,两个教师各自单独的监督信号都没问题,但合在共享参数上就是持续的梯度冲突。学生被两边拉扯,弱势域先崩。

说实话我看到这个定性的时候是有共鸣的——多任务学习里 PCGrad 那套梯度手术早就存在了,但 MOPD 场景的特殊之处在于:冲突不是在"两个任务各自的数据"上计算的梯度之间,而是同一个行为在不同教师眼里评价完全相反。这个区别后面会成为方法设计的关键。


🧠 方法:让非路由教师当"跨域批评家"

Road MOPD(Cross-Teacher Guarding)的核心动作一句话:保留路由教师的主监督不动,但让非路由教师(auxiliary teacher)也对同一条学生轨迹打一遍分,用这份"第二意见"在 token 和梯度两个层面做协调。

图1:Vanilla MOPD 与 Road MOPD 对比

图 1:左边是 Vanilla MOPD——领域数据经 Router 硬路由给各自教师,教师之间零交互,\(g_A\) 和 \(g_B\) 内积小于零、夹角大于 90 度,直接在共享参数 \(\theta\) 上打架。右边是 Road MOPD——学生在领域 d 数据上 rollout 后,路由教师 \(T_r\)、辅助教师 \(T_a\)、冻结参考模型 \(\pi_{\mathrm{ref}}\) 三方对同一批共享前缀打分;(A)跨教师一致性做 token 级信用分配,上调/下调监督强度;(B)预防性梯度投影,把目标梯度 \(g_d\) 中与辅助梯度 \(g'_d\) 冲突的分量部分削掉,同时守住最小模长保留线。

注意一个设计上的克制:辅助教师不是来教目标域知识的,它的角色只是"兼容性探测器"。论文里明确说了,它的相对偏好只作为该教师所代表能力的兼容性信号。这个定位很关键,不然就退化成简单的多教师集成打分了。

Token 层:一致性调制的信用分配

OPD 里有个相对奖励的形式(沿用 ExOPD 的写法):用 \(\lambda \log \frac{\pi_T(y|x)}{\pi_{\mathrm{ref}}(y|x)}\) 当奖励、配一个到冻结参考的 KL 惩罚。原始做法里 \(\lambda\) 是全局固定的,一条轨迹里所有 token 一视同仁。

Road MOPD 把 \(\lambda\) 变成 token 级的,依据是两个教师的"一致性分数":

\[s_{t}=\tanh\!\left(\frac{\ell_{t}^{\mathrm{r}}-\ell_{t}^{\mathrm{ref}}}{\tau}\right)\times\tanh\!\left(\frac{\ell_{t}^{\mathrm{a}}-\ell_{t}^{\mathrm{ref}}}{\tau}\right),\qquad s_{t}\in[-1,1]\]
\[\lambda_{t}=\operatorname{clip}\!\left(1+\rho_{\mathrm{g}}s_{t},\lambda_{\min},\lambda_{\max}\right)\]

直觉很简单:两个教师相对参考模型的对数概率差,各自过 tanh 压到 \([-1,1]\),乘起来。同号(都更喜欢或都更不喜欢这个 token)→ \(s_t > 0\) → \(\lambda_t > 1\) 加强监督;异号 → \(\lambda_t < 1\) 削弱。超参数很朴素:\(\tau=1\)、\(\rho_{\mathrm{g}}=0.5\)、\([\lambda_{\min},\lambda_{\max}]=[0.5,1.5]\)——因为 \(s_t\) 本身就在 \([-1,1]\),clip 实际不起作用,映射天然落在 \([0.5,1.5]\) 里。

这个设计我喜欢的一点是:它不需要教师之间做任何显式通信,也不需要额外的训练,只是多跑一遍前向打分。多教师场景下把多个辅助教师的一致性取平均即可。

梯度层:预防性投影 + 模长保留

Token 级调制管不了参数聚合后的事——就算 token 信号都合理,聚合到共享参数上的更新方向照样可能冲突。所以第二步是在梯度上做文章。

关键区别在于对比 PCGrad:PCGrad 是"事后手术",拿两个域在各自数据上独立算出的梯度,互相减掉冲突分量。Road MOPD 是"预防性"的——辅助教师在同一条目标域轨迹上算一个辅助梯度 \(g'_d\)(把路由教师换成辅助教师、关掉一致性调制,其余完全一样),然后用它约束目标域梯度 \(g_d\)。

具体做法:对每个参数张量,如果 \(\langle g, g'\rangle < 0\) 说明有局部冲突,就在 \(g\) 和它的全投影 \(g_{\mathrm{full}}=g-\frac{\langle g,g'\rangle}{\|g'\|_2^2}g'\) 之间的线段上找一个点:

\[\widetilde{g}=\underset{v\in\mathcal{S}(g,g')}{\arg\min}\;-\langle v,g'\rangle\quad\text{s.t.}\quad\|v\|_2^2\geq m^{2}\|g\|_2^2\]

闭式解就是部分投影 \(\widetilde{g}=g-\alpha^{\star}\frac{\langle g,g'\rangle}{\|g'\|_2^2}g'\)。能全投影且满足模长地板就全投影(\(\alpha^\star=1\)),否则削到模长正好等于 \(m\|g\|\) 为止。\(m=0.6\),即至少保留 60% 的目标梯度模长。

为什么要模长保留?因为全投影在两梯度接近反向时几乎会把 \(g\) 抹成零——冲突是没了,学习目标域的信号也没了。消融实验(下面会讲)证明这个自适应保留确实比一刀切的全投影好。

训练配置上提一句:verl 框架,FSDP 学生 + vLLM 做 rollout 和教师打分,8 张 B200 单节点,AdamW 学习率 \(10^{-5}\),配对域训 58 个 rollout batch、三域 116 个。


📊 实验:高冲突救火、低冲突不拖后腿、三域全面领先

实验设置:学生是 Qwen3-4B 和 Qwen3-1.7B(关掉 thinking),数学/代码教师是特化的 Qwen3-4B checkpoint,医学教师是 II-Medical-8B。11 个 benchmark 覆盖 Math(AIME24/25、HMMT25 Feb/Nov)、Code(HumanEval+、MBPP+、LiveCodeBench)、Medical(MedQA、MedXpertQA、MedMCQA、SuperGPQA-Med)。每个配对域 10,000 条 prompt。基线包括 Vanilla MOPD、ExOPD、Open-MOPD、CaMOPD。

主结果:四个高冲突配对全部拿下

Table 1 的核心数字(All 为两域平均):

设置 学生 最强基线(All) Road MOPD(All) 医学域亮点
Math × Medical Qwen3-4B CaMOPD 47.20 47.92 医学 48.23,恢复到 Single OPD 的 47.90 之上
Math × Medical Qwen3-1.7B ExOPD 30.72 32.05 医学 36.89,反超 Single OPD 的 35.67
Code × Medical Qwen3-4B Open-MOPD 54.09 55.38 医学 47.75,接近 Single OPD
Code × Medical Qwen3-1.7B ExOPD 41.97 44.86 医学 36.51,比最强多域基线高 5.17 个点

几个观察值得展开说。

4B 场景下,医学恢复不是零和博弈。Vanilla MOPD 把医学打到 39.45(Math 配对),比初始学生的 41.01 还低——联合训练净亏损。Road MOPD 的医学回到 48.23 的同时,数学也是所有多域方法里最高的 47.60。不是拆了东墙补西墙,是两边都涨。

1.7B 场景下涨点更猛,但有取舍。Road MOPD 医学比最强多域基线高 3.88 和 5.17 个点,但数学和代码均分分别比 ExOPD 低 1.23 和 0.94。作者的回应是两域等权平均仍赢 1.33 和 2.89 个点。说实话这个 trade-off 是真实存在的,论文没回避,这点比很多只挑好看数字的工作诚实。

低冲突和三域泛化

设置 Vanilla MOPD ExOPD CaMOPD Road MOPD
Math × Code(低冲突,All) 53.68 55.05 53.34 55.40
Math × Code × Medical(三域,All) 49.76 51.41 51.71 52.89

低冲突场景下 Road MOPD 没有因为额外的约束而拖后腿——代码 63.07 最高,数学比 ExOPD 低 0.55 但总分反超。三域场景更硬:每个域都领先,All 比 CaMOPD 高 1.18 个点。三域也是多辅助教师设置的验证场:一致性取平均、梯度约束按序施加、共享同一个模长地板。

一致性分数真的能预测梯度冲突吗?

这是我觉得全文最值钱的实证。作者在一个固定 checkpoint 上采样,按批次的教师分歧度 \(S_-\)(所有 token 上 \(\max(-s_t,0)\) 的均值)分成五档,看每一档里"两个教师的原始 OPD 梯度余弦为负"的批次占比。

图2:教师分歧与局部监督

图 2:左图——分歧越大的批次,梯度冲突率越高:Math 从最低分歧档的 24% 升到最高档的 40%,Medical 从 46% 升到 76%。医学域整体冲突水平远高于数学,印证了引言里"医学一联合就崩"的现象。右图——token 级信用分配的可视化:Math 里 "Alternatively" 这种数学教师想改、医学教师不认的修正被蓝色下调;Medical 里 "The question asks" 被下调,而 "perhaps"/"Maybe" 这种两位教师都支持的 hedging 表达被橙色上调。

24% → 40%、46% → 76%。单调上升。教师分歧和梯度冲突之间确实存在相关性,这给 token 级信用分配提供了直接的实证依据——不是拍脑袋设计的调制信号。

右图的 case 也挺有说服力:被下调的都是领域特定风格强的 token(数学的跳步推导、医学的指南式表述),被上调的是跨域通用的推理模式。这正是方法想要的行为。

消融与 PCGrad 对比

变体 Math × Med(Avg) Code × Med(Avg)
去掉信用分配 46.76 53.50
去掉梯度保护 47.65 54.94
全投影替代自适应保留 47.09 54.94
完整 Road MOPD 47.92 55.38

两个组件都有贡献:去掉信用分配,Math 和 Code 分别掉 1.82 和 3.48 个点;去掉梯度保护,Code × Med 的医学掉 0.88。自适应保留 vs 全投影的对比验证了模长地板的价值——全投影在两个设置下分别低 0.83 和 0.44 个点。

跟 PCGrad 的正面对比:同样保留信用分配和模长机制,只换投影策略。Road MOPD 在四个域均分上比 PCGrad 高 0.18 到 2.12 个点。还有个有意思的发现:同轨迹梯度对在训练大部分时间里层间余弦为负,而 PCGrad 那种独立域梯度对大多非负——说明独立梯度看起来不冲突,不代表同一条行为上的反馈兼容。这直接支撑了"预防性约束"的动机。


🤔 我的判断

这篇论文的定位,我觉得是问题定性 + 工程方案,而不是理论突破。它做了三件实在事:把 MOPD 的失败模式从玄学("联合训练不稳定")变成可测量的量(分歧度 → 冲突率的单调关系);给出一套即插即用的双层级协调机制,不碰主监督结构;实验覆盖两个学生规模、三种域组合、低冲突到高冲突,该做的消融和对照都有了。

但几个问题也值得说。

成本翻倍是真问题。每条轨迹要辅助教师多打一遍分、多算一份辅助梯度。论文结论里自己承认"auxiliary scoring and gradient computation add training cost"。教师池一大(比如 10 个领域),两两互检的成本是平方级的,作者也说要研究高效的教师选择和兼容性估计——这块目前完全是空白。

评估域只有三个,且全是文本推理。数学、代码、医学都是验证式或半验证式任务,风格差异大而清晰。换到更模糊的领域(比如创意写作 × 客服对话),一致性信号是否还有这种单调预测力,不好说。

\(m=0.6\) 这类超参数的敏感度没扫。附录有训练动态和模长保留曲线,但主文没给 \(m\) 的扫描实验。60% 这个数字是调出来的还是稳健的,读者无从判断。

跟同期工作比,Open-MOPD 调 token 份额和域权重、CaMOPD 分能力恢复和域保持更新,说到底都还在"路由范式内打补丁"。Road MOPD 是第一个把非路由教师拉进同一轨迹评估的——这个视角转换是真正的差异点,也是它名字里 "Beyond Domain-Routed" 的底气。

如果你在做多域联合蒸馏或者多任务 RL 后训练,这套"第二意见"机制值得试:实现成本低(多一次前向 + 一个闭式投影),不需要改训练框架骨架。先跑一个固定 checkpoint 的分歧-冲突探针,看看你手里的域组合是不是真的冲突——这个诊断工具本身就很实用。


觉得有启发的话,欢迎点赞、在看、转发。跟进最新AI前沿,关注我