DASH:自蒸馏如何利用分歧序列调整监督权重?从反向递推到真实梯度

教师与学生在某个 token 上的分歧很小,就说明这里不值得关注吗?未必:相同大小的局部分歧,可能出现在完全不同的推理路径中。DASH 因而不再给每个 token 的蒸馏损失相同系数,而是根据整条 rollout 的分歧变化,构造一组自适应权重。

但理解这篇论文,最重要的是区分反向递推的数值实际更新的梯度。DASH 并没有把未来错误作为策略梯度奖励分配给早期动作;它对已有的局部蒸馏梯度重新加权。这个区别决定了怎样解释方法,也决定了怎样正确复现。

本文精读 ZhiYan Hou、Xinyu Tang 等人的 DASH: Divergence-Adaptive Supervision Horizons for On-Policy Self-Distillation of Reasoning Models,依据 arXiv v2,2026-08-07 的正文、附录、原始表格,并核对官方实现。数值示例为教学构造,独立批评会明确标注。

1. 一句话结论与论文全景

DASH 用“当前位置的局部蒸馏信号减去本条序列均值”控制传播门,再通过多步聚合,将均匀的 token 权重改成依赖整条分歧序列的权重。

它沿用 OPSD 已经计算的教师、学生分布,不增加模型前向。论文在 Qwen3-1.7B、4B、8B 上,相对匹配重跑的 vanilla OPSD,三项数学基准宏平均分别提高 3.20、1.40、1.60 个百分点。(表 1)

这篇的 horizon 是损失聚合的“有效监督跨度”,不是让教师生成更长答案,也不是证明模型能处理更长的 Agent 交互。本文实验是数学推理,主训练 rollout 最长 1,024 tokens,因此按博客主题归入 OPD。

2. Motivation:密集监督为什么仍有分配问题?

2.1 OPSD 已经解决了什么?

强化学习中的最终答案奖励通常很稀疏。在线策略自蒸馏(OPSD)改用一个拥有额外信息的教师:学生只看题目,教师还看参考解答,在学生已经生成的每个前缀上提供下一 token 的概率分布。

这样,每个位置都有可微分的监督,不必等到最终答案出来才得到一个 0 或 1。但 vanilla OPSD 通常把这些位置的损失直接平均,即每个位置的显式系数相同。(§3)

2.2 同一个局部分歧,不代表同一种轨迹状态

图 1 展示了局部分歧相近、后续分歧与最终结果却不同的轨迹。其分析中的轨迹内 Spearman 相关系数中位数约为 \(1.5\times10^{-3}\),说明在这组分析里,当前局部值对后续平均分歧的关联很弱。

这不能证明“小分歧就是关键错误”,也不能证明后续分歧由当前位置因果造成。它支持的较窄结论是:仅看当前一个标量,无法充分表达它所在的分歧变化过程。(图 1)

2.3 均匀系数不等于梯度不看历史

vanilla OPSD 的每个局部梯度仍然基于各自的学生前缀,当然依赖上下文。论文批评的是外面的显式权重统一为 \(1/T\),不是说 Transformer 或局部 KL 完全忽略顺序。

把一组损失数值重新排列,均匀平均的标量不变;DASH 的权重则会随排列变化。但这只是隔离“系数结构”的比较,不能把真实 token 任意打乱后,假设对应的局部梯度还保持不变。(§4.1)

3. Method:从教师分布到自适应监督跨度

3.1 教师从哪里来?不是额外训练一个更大模型

主实验的教师是同一冻结基座关闭 LoRA adapter 后的网络,额外输入参考解答及最终答案;学生是该基座加上可训练 LoRA,只看题目。教师通过 teacher forcing 对学生 rollout 的相同位置评分。(附录 A.2、B.2)

因此,这里的自蒸馏既利用模型共享的基座能力,也利用教师的特权上下文。它不意味着学生和教师每次都使用完全相同的当前参数;教师的基座冻结,学生 adapter 更新。

\(s_t=(x,y_{<t})\) 为学生前缀,\(z\) 为参考解答,记教师分布为 \(q_t\)、学生为 \(p_t\)。教师输出 stop-gradient,学生使用完整词表上的 forward KL:

\[ \begin{aligned} d_t&=D_{\mathrm{KL}}(q_t\|p_t),\\ \ell_{t,v}&=q_t(v)\log\frac{q_t(v)}{p_t(v)},\\ d_t&=\sum_{v\in\mathcal V}\ell_{t,v}. \end{aligned} \]

\(\mathcal V\) 是词表,\(t\) 是生成位置,\(v\) 是候选词表 token。这里的监督不只针对学生实际采样的一个 token。(式 1–2)

3.2 先逐词表项裁剪,再求和

DASH 实际聚合的是:

\[ r_t=\sum_{v\in\mathcal V}\min(\ell_{t,v},\tau), \qquad \tau=0.05. \]

这与 \(\min(d_t,\tau)\) 不同:前者裁剪每个词表项,再相加;后者先算总 KL 再裁剪。算法 1 与官方实现采用前者。

特别要注意,单个 \(\ell_{t,v}\) 可以为负,裁剪后的 \(r_t\) 也可以为负。正项封顶、负项保留后,\(r_t\) 不再保证具备 KL 的非负性。论文附录 A.4 明确说明了这一点。这里的符号 \(r_t\) 是局部损失信号,不是环境奖励。

3.3 用本序列均值形成传播门

对一条含 \(T\) 个有效 token 的 rollout:

\[ \bar r=\frac{1}{T}\sum_{t=1}^{T}r_t, \qquad g_t=r_t-\bar r. \]

\[ \lambda_t=\operatorname{sg}\big[\sigma(-\kappa g_t)\big], \qquad \kappa=5. \]

\(\sigma\) 为 sigmoid,\(\operatorname{sg}\) 表示停止梯度。只需要 \(t=1,\ldots,T-1\) 的门。

  • \(r_t<\bar r\)\(\lambda_t>0.5\),跨过该位置之后的边界传播得更强。
  • \(r_t>\bar r\)\(\lambda_t<0.5\),该边界更收紧。
  • \(r_t=\bar r\)\(\lambda_t=0.5\)

门控制的是位置 \(t\)\(t+1\) 之间的传播。它不是当前位置损失的直接乘数,也不是根据绝对 KL 大小排序的选择器。均值来自完整 rollout,因此这是事后构造训练权重,不是在线预测未来。(算法 1、§5.3)

3.4 反向聚合,以及更容易理解的等价形式

从末尾向前计算:

\[ \begin{aligned} A_T&=r_T,\\ A_t&=r_t+\lambda_t A_{t+1}. \end{aligned} \]

最终最小化 \(\mathcal L=T^{-1}\sum_t A_t\)。这里 \(A_t\) 虽然记作 A,却不自动具有强化学习 advantage 的含义。(式 9–10)

把所有项展开、合并,就得到:

\[ \mathcal L=\frac{1}{T}\sum_{k=1}^{T}c_k r_k, \]

\[ \begin{aligned} c_1&=1,\\ c_k&=1+\lambda_{k-1}c_{k-1}. \end{aligned} \]

例如三位置时,\(c_3=1+\lambda_2+\lambda_1\lambda_2\)\(k\) 个局部损失的系数由前面的门路径决定;这些门又使用整条序列均值,所以系数具有序列条件性。(式 11)

对常数门 \(\lambda\),有:

\[ c_k=\frac{1-\lambda^k}{1-\lambda}. \]

因此固定 \(\lambda\) 也会产生位置相关权重,不能称它为“所有位置等权”。而当 \(\lambda=0\) 时,聚合退回原来的局部平均。

3.5 horizon 指传播质量,不是实际生成长度

从位置 \(t\) 开始,向后各项的传播系数之和定义为有效跨度 \(h_t\)。固定门下:

\[ h_t=\frac{1-\lambda^{T-t+1}}{1-\lambda}. \]

当剩余轨迹足够长时,\(\lambda=0.5\) 的跨度趋近 2,\(\lambda=0.9\) 趋近 10。这是折扣权重的总量,不是硬截断到后面 2 或 10 个 token。自适应门使这一跨度随序列变化。(附录 A.5)

3.6 实际梯度为何不是“未来错误惩罚前面动作”?

由于门及其均值计算都被 detach,实际反传为:

\[ \nabla_\theta\mathcal L =\frac{1}{T}\sum_k c_k\nabla_\theta^{\mathrm{loc}}r_k. \]

也就是说,\(r_3\) 即使出现在 \(A_1\) 里,最终仍通过自己的局部蒸馏计算图更新模型;并没有因此变成 \(r_3\nabla\log\pi(y_1\mid s_1)\)。共享参数当然会让各位置的学习互相影响,但那不等于显式的动作信用分配。(附录 A.6、A.8)

论文命题 1 分解了固定 horizon 期望目标的梯度,其中确实还有一个包含未来 divergence-to-go 的 score-function 项。DASH 没有估计或恢复这个项;该分解只为“系数应考虑时序”提供结构动机。附录也指出,固定 \(H\) 的理论目标与按实际长度 \(T\) 归一化的期望目标不能直接画等号。

训练时需要参考解答及师生分布,评测时只用学生,不输入参考解答;DASH 主目标也不要求最终答案奖励。它是蒸馏权重方案,不是新增 critic 或过程奖励模型。

4. 具体数值例子:包含裁剪、门、递推和梯度

以下是教学用三位置、二元词表简化例子。实际模型词表很大;为展示算法,只保留候选 \(a,b\)。可将任务想成一道算术题,学生已经生成三 token 的固定轨迹;这里只演示这条轨迹怎样产生更新信号,不把三个 token 硬解释为三个完整推理步骤。

4.1 从合法概率算出局部信号

各位置教师分布都取 \(q=(0.5,0.5)\),学生依次为:

\[ \begin{aligned} p_1&=(0.48,0.52),\\ p_2&=(0.30,0.70),\\ p_3&=(0.46,0.54). \end{aligned} \]

使用论文的 \(\tau=0.05\),自然对数下得到:

位置 \(\ell_{t,a}\) \(\ell_{t,b}\) 原始 \(d_t\) 裁剪后 \(r_t\)
1 0.020411 −0.019610 0.000801 0.000801
2 0.255413 −0.168236 0.087177 −0.118236
3 0.041691 −0.038481 0.003210 0.003210

例如第二个位置:

\[ \begin{aligned} \ell_{2,a}&=0.5\log(0.5/0.3)=0.255413,\\ \ell_{2,b}&=0.5\log(0.5/0.7)=-0.168236,\\ r_2&=0.05-0.168236=-0.118236. \end{aligned} \]

原始 KL 最大的位置,经过逐项裁剪后反而拥有最小的局部信号。这是人为选择来暴露裁剪行为的例子,不表示真实训练中总会发生这种排序反转。

4.2 算均值和传播门

三位置均值约为 \(\bar r=-0.038075\)。于是:

\[ \begin{aligned} g_1&=0.038876,\\ g_2&=-0.080161. \end{aligned} \]

代入 \(\kappa=5\)

\[ \begin{aligned} \lambda_1&=\sigma(-0.194379)\approx0.451558,\\ \lambda_2&=\sigma(0.400805)\approx0.598881. \end{aligned} \]

位置 2 的门比较开放,是因为裁剪信号低于均值,不能将这里口头改写为“原始 KL 较小”。最后位置没有下一项,所以不需要 \(\lambda_3\)

4.3 反向算聚合值

\[ \begin{aligned} A_3&=0.003210,\\ A_2&=-0.118236+0.598881A_3\\ &\approx-0.116314,\\ A_1&=0.000801+0.451558A_2\\ &\approx-0.051722. \end{aligned} \]

所以 \(\mathcal L=(A_1+A_2+A_3)/3\approx-0.054942\)。损失为负在这个裁剪定义下是合法的,不应为了让它“像 KL”而擅自补一个下限 0。

再用等价系数复核:

\[ \begin{aligned} c_1&=1,\\ c_2&=1+0.451558=1.451558,\\ c_3&=1+0.598881c_2=1.869311. \end{aligned} \]

代入 \(\sum_k c_k r_k/3\),同样得到 −0.054942。最终各局部梯度的外部系数从统一的 \(1/3\) 变成约 \((0.333333,0.483853,0.623104)\)

注意第一位置仍是 \(c_1=1\)。虽然 \(A_1\) 包含后续项,但没有因此把第一位置的局部梯度系数放大。

4.4 从损失到一次局部更新方向

第一位置的词表项未被裁剪,因此对候选 \(a\) 的 logit,forward KL 局部导数是 \(p_1(a)-q_1(a)=-0.02\)。乘上 DASH 系数后为:

\[ \frac{\partial\mathcal L}{\partial z_{1,a}} =\frac{1}{3}(-0.02)\approx-0.006667. \]

梯度下降倾向于增加该候选的相对概率。其他位置按各自裁剪后的计算图和 \(c_k/T\) 更新;不能对已封顶的词表项继续使用完整 KL 导数。

这条路径的最终训练输出是损失及参数梯度,不是新的正确答案。真实模型由共享 LoRA 参数承接梯度,能否改进解题需要重新生成并评测;上述简化没有模拟完整 tokenizer、网络 Jacobian 或 AdamW 更新。

5. Results:哪些实验支持了自适应权重?

5.1 配置与评测口径

训练集为 OpenThoughts-Math-30K,共 29,434 道题及参考解答。匹配重跑训练 200 个优化步骤,全局 batch 64;LoRA rank 64、alpha 128、dropout 0.05,学习率 \(5\times10^{-6}\),线性衰减,无 warmup。(§5.1、附录 B)

学生训练采样温度 1.1、top-p 0.95、top-k 20,主配置最大完成长度 1,024 tokens。论文还报告尝试 2,048 和 4,096 后表现相近,但主实验不是数万 token 的长 rollout 训练。

评测为 AIME 2024、AIME 2025、HMMT February 2025,每项 30 道题,每题独立采样 12 次。Avg@12 是 12 个答案正确性的平均,不是 pass@12,也不是多数投票正确率。评测使用 thinking 模式、温度 1、top-p 1、最多 38,912 个新 token,与训练长度上限不同。最终答案由符号验证器判定,异常时有字符串比较回退。(附录 B.3)

5.2 主结果:匹配 OPSD 对照最值得看

下表为表 1 的 OPSD / DASH 四训练 seed 均值,单位 %:

模型与方法 AIME24 AIME25 HMMT25 宏平均
1.7B OPSD 55.60 40.80 29.20 41.87
1.7B DASH 58.30 45.80 31.10 45.07
4B OPSD 76.40 68.30 46.10 63.60
4B DASH 77.20 71.10 46.70 65.00
8B OPSD 77.80 70.80 45.80 64.80
8B DASH 78.90 71.40 48.90 66.40

三个尺度的宏平均分别提高 3.20、1.40、1.60 点,九个 benchmark × model 设置都高于匹配 OPSD。1.7B 在 AIME25 上的提升最大,为 5.00 点。

其他蒸馏方法的宏平均如下,但它们是单次训练重跑,而非四 seed 均值:

方法 1.7B 4B 8B
EOPD 38.80 60.17 65.00
AVSD 39.17 62.90 64.03
PW-OPSD 43.43 62.44 65.23

EOPD 在本文共享的特权 OPSD 骨架上实例化,不是完全复现其原始外部教师架构;AVSD 保留多视角教师。表中的 Base、SFT、GRPO 则引用其他论文结果,不受本文统一训练预算约束。(附录 B.1–B.2)

所以,“DASH 在所列结果中最好”成立,不应扩大成“对所有基线均证明统计显著”。附录 C 给出了 DASH 基准级 seed 标准差,例如 1.7B 三项为 0.90、1.20、0.30 点;这也不是宏平均的置信区间。

5.3 一个必须醒目标明的协议:在最终基准上挑 checkpoint

每 20 步保存一次 checkpoint,从第 20 到 200 步共 10 个候选。对每个方法、模型尺度和训练 seed,选择三项最终基准宏平均最高的那一个,再报告该 checkpoint 的三项分数。

作者明确称之为 best-within-200-step,而不是 held-out validation selection。它没有分别挑每个基准的最佳 checkpoint,但仍然用最终测试集合参与选择。因此分数更适合解读为这个选择协议下的最佳观测表现,不能视为完全独立的一次测试估计。(§5.1、附录 B.3)

5.4 固定门与反向门:不是任意递推都一样有效

1.7B 四 seed 宏平均如下(图 3、表 6):

配置 宏平均
OPSD,\(\lambda=0\) 41.87
最佳固定门,\(\lambda=0.1\) 43.63
固定门,\(\lambda=0.5\) 42.70
Inverse-gap,翻转 sigmoid 内符号 42.10
DASH 45.07

固定聚合解释了一部分提升,自适应方案又比最佳固定门高 1.44 点。将小信号开门改成大信号开门后,分数比 DASH 低 2.97 点,支持本文选定的映射方向,但不证明这个方向对所有数据都最优。

5.5 仅仅增大 loss 尺度能解释提升吗?

DASH 的 \(c_k\ge1\),既改变相对权重,也提高平均梯度尺度。作者用一个 \(2\times2\) 对照分离二者(表 7):

权重分配 原始 OPSD 尺度 DASH 平均尺度
均匀 41.87 42.57
自适应 44.27 45.07

在相同尺度下,自适应分配分别带来 +2.40、+2.50 点;仅提高尺度则带来 +0.70、+0.80 点。因此这些实验支持“相对权重分配贡献更大”,而非把所有提升归于梯度整体变强。

5.6 对 KL 方向与词表信息很敏感

1.7B 的完整词表 forward KL 为 45.07;换成 symmetric JSD 后为 38.23,reverse KL 为 41.47。它们不但低于 DASH 主配置,也低于 OPSD 的 41.87,说明不能无条件替换局部损失。(表 8)

保留教师 top-100 token,再把其余概率合并成 tail,得到 44.37,只下降 0.70 点;只保留 top-1 加 tail 则降到 34.83。top-k 加 tail 不是把 top-k 重新归一化并扔掉剩余质量,复现时需区分。(表 2)

\(\kappa\in\{1,2,5,10,20\}\) 的测试都超过 OPSD,但最佳为 5;这支持一定参数鲁棒性,不意味着参数无需选择。

5.7 额外成本低,但不是训练本身免费

作者在匹配运行日志中估计,额外标量扫描少于单步时间的 1%,不需要新增师生前向。表 4 报告 1.7B 约 45 分钟(8 张 A800)、4B 约 2.3 小时(8 张)、8B 约 15 小时(4 张),含调度及排队开销。这些是具体配置的报告,不是硬件无关的性能保证。

附录 E 还探索了与 GRPO 正确性项结合:1.7B 最强混合方案为 44.83,略低于纯 DASH 的 45.07;8B 同配置为 67.30,高于纯 DASH 的 66.40。不能概括成“加入可验证奖励一定更好”,也不能把该可选分支写成主方法。

6. 最具创新性的点

将蒸馏损失的显式系数,变成由真实分歧序列决定的传播路径权重。它不额外造教师、不训练新 critic,而是利用现有分布监督的顺序结构。

与只看位置的 PW-OPSD 不同,DASH 同一位置的权重可以随 rollout 变化;与只看一个局部标量的直接加权不同,它通过前序门的乘积累计形成权重;与策略梯度信用分配不同,它仍更新直接蒸馏通道。

最有说服力的证据是固定门、反向门和尺度匹配消融共同支持“自适应系数分配”的价值。理论分解帮助定位动机,但没有提供 DASH 对原始期望目标的无偏性或收敛优势保证。

7. 不足与可能的改进

7.1 作者明确说明的边界

论文没有独立的 Limitations 章节,但附录明确交代:不恢复遗漏的轨迹梯度;裁剪信号可能为负;固定 horizon 理论不等于变长目标;checkpoint 选择不是独立验证;不对单 seed 或外部基线宣称统计显著。这些是解读本方法必须保留的限制。

7.2 我的分析:需要独立验证集降低挑选偏差

用最终基准选 checkpoint 会让报告分数偏乐观。可以从训练分布另划验证集用于 checkpoint / 超参数选择,再一次性评测 AIME、HMMT,并同时报告最终第 200 步结果。

代价是额外验证数据和评测算力;应比较最佳分数与固定终点分数的差距、独立测试增益和配对 seed 区间。这样才能判断收益是否稳定地迁移到未参与选择的数据。

7.3 我的分析:裁剪信号不再忠实代表原始分歧

数值例子已展示,大 KL 可以因正项封顶而变成低甚至负信号。裁剪还改变梯度,不只是把门的输入压缩。因此“低 \(r\) 更值得向后看”是一种经验规则,不能等同于教师更可靠或学生更正确。

可将门信号与训练损失解耦:门使用未裁剪 KL 的稳健标准化或分位数,局部梯度保留现有裁剪,再和整 token 裁剪比较。代价是新增配置,未裁剪信号也更易受异常值影响;应测门饱和率、负信号比例、目标分歧变化和最终准确率,而非仅看 loss 降得快不快。

7.4 我的分析:不能把分布相似度当作推理正确性

教师拥有参考解答,也可能在学生异常前缀上给出不可靠分布;较小分歧也可能来自两者共同犯错。DASH 不包含对中间数学命题的独立验证。

可在一部分样本上加入符号步骤检查,分析高权重位置是否更常对应可验证的纠正。代价是领域验证器与标注成本;应测局部错误检测、对参考解答扰动的鲁棒性及任务成绩。不能仅以注意力或权重曲线证明因果推理改善。

7.5 我的分析:短 rollout 与长程交互之间仍有距离

训练主要在短数学 rollout 上,推理时允许更长生成,不等于验证了多轮工具调用、记忆或失败恢复。把方法移到 Agent 时,还需要明确环境观察是否参与均值与 mask、各轮长度怎样归一化。

可在固定环境步数预算下比较 token 级、turn 级均值和权重重置策略。代价是环境交互与教师评分成本;指标应包括任务成功、错误恢复和回合数,并检查全序列均值是否稀释了关键回合的分歧。这是研究设想,不是本文已有结果。

7.6 官方代码核对:批内归一化值得额外确认

本文核对了官方提交 412453fd1c6da4ab4c01ee221fd2cc7b55afb0c8opsd_trainer.py。其中先对未归约词表项执行上界裁剪,再沿词表求和;gap 门显式 detach,递推保留局部信号梯度,与前文关键公式一致。

但当前代码的 DASH 分支将整个 micro-batch 的有效 token 加权求和,再除以有效 token 总数;均值门则按每条序列单独计算。批内 token 平均与先逐序列平均再平均 batch 不完全相同:变长序列时,前者让长序列占更多权重。

这不影响单条序列的 \(c_k\) 推导,但复现批间权重时必须核对。不能仅凭当前公开版本断言所有历史实验采用完全相同的归约方式。建议增加两条不同长度序列的单元测试,报告所用代码提交与 batch reduction;代价很小,却能避免把长度权重差异误当成算法收益。

8. 读者应记住的要点

  • 先区分原始 KL \(d_t\) 与逐词表项裁剪后的 \(r_t\);后者可以为负。
  • 反向递推最终等价于 \(c_k\) 加权局部损失,stop-gradient 决定了它不是未来奖励策略梯度。
  • 相对权重分配的价值有尺度控制消融支持,但测试集挑 checkpoint 限制了结果解释。
  • DASH 调整监督权重;SOPD:不接管学生轨迹,如何用完整步骤修复 OPD 的碎片化监督? 则改变教师目标的连续生成单元,两者不是同一个“扩大 horizon”的操作。

原始资料与延伸

  1. 论文与版本记录v2 HTMLv2 PDF。方法见 §3–4、算法 1;梯度边界见附录 A;结果、统计与消融见表 1–9、附录 B–E。
  2. 官方代码仓库本文核对的 trainer 版本。代码核对为静态阅读,没有重新运行论文训练。

站内延伸:OPDVR:用答案正确性过滤蒸馏信号,如何把 OPD 与可验证奖励结合? 讨论用可验证结果控制蒸馏信号;RAGEN:多轮 Agent RL 为什么会崩溃?StarPO、Echo Trap 与推理退化 讨论多轮交互训练的退化与证据边界。


DASH:自蒸馏如何利用分歧序列调整监督权重?从反向递推到真实梯度
https://kissshhot.github.io/2026/09/11/dash-divergence-adaptive-supervision-horizons/
作者
丁一帆
发布于
2026年9月11日
许可协议

点赞与评论

喜欢这篇文章?点个赞,或留下你的想法。登录 GitHub 后即可参与。

如果评论无法加载,请检查网络连接后刷新页面。