OPD 在优化什么
OPD 的轨迹来自学生当前策略 $\pi_\theta$。老师只在学生已经生成的前缀上给下一步的分布监督:
\[c_{t}=(x,y_{<t})\]和 SFT 的差别是数据从哪来:SFT 的序列是老师写的。和常见 outcome RL 的差别是监督有多密:那里整条轨迹只有一个对错标。
基本损失是 per-token reverse KL:
\[\mathrm{KL}\bigl(\pi_\theta \Vert \pi_{\mathrm{teacher}}\bigr) = \mathbb{E}_{x\sim\pi_\theta} \Bigl[ \log\pi_\theta(x_{t+1}\mid x_{1:t}) - \log\pi_{\mathrm{teacher}}(x_{t+1}\mid x_{1:t}) \Bigr]\]reverse KL
reverse KL 是 mode-seeking:只在学生 rollout 里实际出现的前缀上,匹配老师下一步分布的众数。学生 support 里没有的 token 没有有效梯度,所以常见做法是先 SFT、再 OPD。折扣取 0,只看当前下一步。
PG-Style v.s. GKD-Style
OPD 要用两个正交轴定位。第一个轴是每个学生前缀上 teacher 信号的支持集:只取 sampled token、取 top-k,或取 full-vocab。第二个轴是梯度路径:PG-Style 把 teacher 信号当作停止梯度的 advantage,经 sampled token 的 score function 更新;GKD-Style 把 rollout 当作固定 minibatch,直接对可微的局部分布距离反传。sampled-token / top-k / full-vocab 不等同于 PG / GKD。
PG-Style sampled-token 的逐 token advantage 是
\[A_t=\log\pi_{\mathrm{teacher}}(y_t\mid c_t)-\log\pi_\theta(y_t\mid c_t).\]单个 $A_t$ 可以为正或为负:teacher 对 $y_t$ 的概率高于学生时为正,低于学生时为负。只有对 $y_t\sim\pi_\theta(\cdot\mid c_t)$ 取期望,才有
\[\mathbb{E}[A_t] = -\mathrm{KL}\bigl(\pi_\theta(\cdot\mid c_t)\Vert \pi_{\mathrm{teacher}}(\cdot\mid c_t)\bigr) \le 0.\]因此「negative reverse KL」描述的是采样期望,不要求每个 token 的 advantage 都为负;advantage 本来就可以取正值或负值。
给定固定前缀、相同的局部 reverse KL,并令 $y_t$ 从学生分布采样时,PG sampled-token 是 direct distribution gradient 的 Monte Carlo score-function 估计。GKD 若在 top-k 或 full-vocab 上显式求和,会用更多 teacher 分布信息减少单 token 采样方差。两个轴仍然独立:PG 的 reward 可以使用更宽的支持集,GKD 也可以使用 sampled-token 的可微估计器。
PG-Style 只需要 teacher 对 sampled token 的 logprob,容易复用 PPO/GRPO 管线,也容易和 outcome reward 组合;代价是方差更高,通常更依赖 clip、baseline、mask 等稳定化。GKD-Style 更接近监督训练;现有材料支持它通常方差更小、训练更稳定,但不足以证明在同算力、同支持集、同 KL 方向下,最终 benchmark 必然更高。把 sampled-token PG 与 top-k 或 full-vocab GKD 直接比较时,性能差异同时包含梯度路径和 teacher 信号支持集的变化,不能全部归因于 loss 风格。
一种 PG-Style 实现会对同一 prompt 做组采样,但不启用组内 advantage normalization。它把 discount factor 设为 0,所以每个 token 只使用当前位置的信号,不是带完整 reward-to-go 的 sequence-level reverse-KL policy gradient。
RKL v.s. FKL
KL 方向与监督支持集是两个正交轴。给定同一个学生前缀,reverse KL
\[\mathrm{KL}(\pi_\theta\Vert\pi_{\mathrm{teacher}})\]按 student 概率加权,主要惩罚 student 分配了概率、但 teacher 不认可的候选;它允许 student 只保留 teacher 的主要模式。forward KL
\[\mathrm{KL}(\pi_{\mathrm{teacher}}\Vert\pi_\theta)\]按 teacher 概率加权,主要惩罚 teacher 分配了概率、但 student 遗漏的候选;它要求 student 覆盖 teacher 支持的多个模式。
sampled-token RKL 从 $y_t\sim\pi_\theta(\cdot\mid c_t)$ 取得单个 Monte Carlo 信号,成本低但方差高,而且没有采到的 teacher 合理候选不会在这一步得到监督。不存在直接对应的「student sampled-token FKL」:FKL 的期望按 teacher 概率加权,若只保留一个样本,需要从 teacher 采样;工程上更常见的是在 teacher top-k 或 full-vocab 上直接求和。top-k 与 full-vocab 都属于分布级监督,KL 方向可以相同;区别主要是 top-k 截断尾部并使用 $[B,T,K]$ 信号,而 full-vocab 保留整个词表并承担 $[B,T,V]$ 的存储与访存成本。
因此 EOPD 不是同一支持集上的纯 RKL / FKL 对照。它的 baseline 是 sampled-token clipped PG RKL,EOPD 在此基础上增加 entropy-gated teacher top-k direct FKL,同时改变了 KL 方向、支持集大小、梯度路径和 FKL 的位置选择。现有增益不能严格归因于 FKL 方向;干净比较还需要 teacher top-k direct RKL 对 teacher top-k direct FKL,以及 full-vocab direct RKL 对 full-vocab direct FKL 等控制。当前可靠结论只是:在 sampled-token PG RKL 上,对 teacher 高熵位置增加 top-k FKL,改善了该设定的多样性和 Pass@$k$。
FKL / RKL / JSD 的 logits 梯度
固定一个 student-generated prefix,记 teacher 分布为 $T$,student logits 为 $z$,$S=\operatorname{softmax}(z)$。teacher 在以下推导中是固定监督信号,不参与求导。由
\[\frac{\partial S_i}{\partial z_j}=S_i(\delta_{ij}-S_j)\]可得任意概率损失的通用换元。若 $g_i=\partial L/\partial S_i$,则
\[\frac{\partial L}{\partial z_j} = S_j\left(g_j-\sum_i S_i g_i\right).\]对 FKL,$L_{\mathrm{FKL}}=\mathrm{KL}(T\Vert S)$,因此
\[\frac{\partial L_{\mathrm{FKL}}}{\partial z_j}=S_j-T_j.\]当 teacher 对 token $j$ 分配非零概率、student 对它的概率接近零时,梯度仍趋近 $-T_j$。所以 FKL 能直接恢复 student 遗漏的 teacher 模式;在 student-generated prefix 上直接反传 soft-label FKL,可以理解为 on-policy soft-label SFT,也是 GKD-Style 的分布匹配。
对 RKL,$L_{\mathrm{RKL}}=\mathrm{KL}(S\Vert T)$,其 logits 梯度是
\[\frac{\partial L_{\mathrm{RKL}}}{\partial z_j} = S_j\left[ \log\frac{S_j}{T_j} - \mathrm{KL}(S\Vert T) \right].\]当 $S_j\to0$ 时,$S_j\log S_j\to0$,teacher-high / student-low token 的梯度也趋近零。这里不是 teacher 参数参与了求导,而是 student 概率既是 RKL 的加权分布,也是被优化对象。direct RKL 仍是 GKD-Style 分布损失,不等同于 RL;只有 sampled-token PG RKL 通过 student action、停止梯度的 advantage 和 importance ratio 更新时,优化路径才更接近 RL。
标准 JSD 令 $M=(T+S)/2$:
\[L_{\mathrm{JSD}} = \frac{1}{2}\mathrm{KL}(T\Vert M) + \frac{1}{2}\mathrm{KL}(S\Vert M).\]它对 student 概率的导数为 $\frac{1}{2}\log(S_i/M_i)$,所以
\[\frac{\partial L_{\mathrm{JSD}}}{\partial z_j} = \frac{1}{2}S_j\left[ \log\frac{S_j}{M_j} - \mathrm{KL}(S\Vert M) \right].\]JSD 同样在 $S_j\to0$ 时给出趋零的 logits 梯度,因此不能像 FKL 一样强力恢复 student 遗漏的 teacher 模式。它的作用是损失有界,并且对支持集不匹配更温和,不是同时取得 FKL 和 RKL 的全部优点。
例如 $T=(0.5,0.5)$、$S=(0.99,0.01)$ 时,代入上式可见三种损失的两维 logits 梯度方向相同,但 FKL 的绝对值明显最大,RKL 小一个数量级,JSD 还要更小。这个例子说明的是梯度结构,不是经验结果。
loss coefficient 可以改变整体尺度,但不能改变低 student 概率模式的渐近梯度结构。若 teacher 与 student 已经接近,并且都在同一个 top-k 支持集内重归一化,三种损失的局部差异可能主要表现为尺度;此时支持集如何选择,以及采用 sampled-token PG 还是 direct backprop,可能比散度名称更重要。
K1 / K2 / K3
令 $y\sim q=\pi_\theta$,$p$ 是 teacher 或 reference,$r=p(y)/q(y)$。目标 reverse KL 为
\[\mathrm{KL}(q\Vert p)=\mathbb{E}_{y\sim q}[-\log r].\]K1、K2、K3 是 sampled-token 上三种不同的数值量:
\[K1=-\log r,\qquad K2=\frac{1}{2}(\log r)^2,\qquad K3=r-1-\log r.\]K1 的数值期望严格等于目标 KL,但单样本可以为正或为负,方差通常较高,因而最自然地用于 PG-Style 的 sampled-token advantage。K2 始终非负且平滑,通常方差较低,但它对 KL 有偏;它只在 $p$ 与 $q$ 接近时是 KL 的局部二阶 surrogate,不是逐点近似 $-\log r$。
K3 利用 $\mathbb{E}_{q}[r-1]=0$ 作为 control variate,因此数值期望也严格等于目标 KL,并且逐样本非负。策略接近参考模型时,它通常比 K1 方差低;这不是普适保证,极端 probability ratio 仍可能造成高方差,计算 exp 时也可能需要 FP32 或 clamp。因为 $r=e^{\log r}$,在 $\log r\approx0$ 时 Taylor 展开得到 $K3\approx K2$,但两者不是同一个 estimator。原始 GRPO 的 KL 项是 K3,不是 K2。
这三种 estimator 早于 OPD。把 $p/q$ 换成 teacher/student ratio 只改变比较的模型,不构成新的估计理论;OPD 的实质差异仍是学生实时生成 prefix、teacher 在这些 prefix 上提供信号,以及信号通过 PG surrogate 还是 direct loss 回传。数值估计无偏也不等于优化梯度无偏:直接反传 estimator,或先 detach 再把它作为 PG reward,会形成不同的梯度估计器,不能仅凭 K1/K3 的数值无偏就无害互换。
拿到两组 sampled-token logprob 后,三者都只需对 $[B,T]$ 张量做逐元素运算:K1 是减法,K2 多一次平方,K3 多一次 exp 和加减;这些差异相对模型 forward/backward 可以忽略。主要成本来自额外的 teacher/reference forward,以及把信号从 sampled-token 的 $[B,T]$ 扩到 top-k 的 $[B,T,K]$ 或 full-vocab 的 $[B,T,V]$。K3 和 forward 用 K3、backward 用 K2 的 straight-through 变体会多一两个 $[B,T]$ 临时张量,但通常不是显存主项。
sampled-token v.s. GRPO 训练框架
sampled-token
本节比较的是 teacher 信号支持集及其框架成本,不是 PG/GKD 梯度路径。sampled-token 不是最早的 OPD 方案;在这种实现出现前,已经有工作用学生自生成轨迹做语言模型蒸馏。它更准确的定位是实现最简单、最接近现有 RL 训练管线的一档:每个位置只比较学生实际采到的那个 token 的 logprob。老师对这条轨迹做 compute_logprobs,取出已采 token 上的 teacher logprob,不需要词表上的完整分布。这是 reverse KL 的单样本估计,不是对两侧 logits 做 full-vocab 求和。
在已经具备学生 rollout、sampled-token student logprob、teacher sampled-token logprob、per-token advantage 和 importance-sampling 更新接口的 RL/GRPO 类框架里,训练骨架可以快速复用。老师提供的逐 token 信号是
\[A_t=\log\pi_{\mathrm{teacher}}(y_t\mid c_t)-\log\pi_\theta(y_t\mid c_t)\]它是主监督,不是按组归一化的 sequence-level verifier advantage。已有实现明确展示的是:在带 KL 正则的 RL 脚本里把 regularizer 模型换成 teacher,再把 per-token advantage 设为负的 reverse KL,调用现成的 importance-sampling loss。这个结论不能直接扩成任意 GRPO trainer 都只需一两行修改;能否快速改出取决于上述逐 token 接口是否已经存在。
计算路径和原来的 KL 正则相同。角色不同:原来把学生约束在参考策略附近;这里这项是主监督,目标是 teacher。
top-k
top-k 由谁选与 KL 方向是两个独立选择,但有一个自然起点:
- student top-k RKL 最符合原始 RKL:检查 student 当前主要概率质量是否得到 teacher 支持。
- teacher top-k FKL 最符合原始 FKL:补齐 student 遗漏的 teacher 高概率候选。
- teacher top-k RKL 已经不是 full-vocab RKL 的自然截断,而是一个局部 surrogate;它可以直接传递 teacher 认为重要的候选,而且 teacher server 通常天然返回 top-logprobs。
- student top-k FKL 通常不理想,因为它可能完全看不到 teacher 有概率、student 已经遗漏的模式。
这不是硬规则。支持集由谁选择、师生是否在集合内重归一化,以及 top-k 外的概率质量如何处理,都是独立设计选择;它们会改变实际优化目标。
full-vocab
对整个词表做 KL。支持集变大,并不等于前面层反传变重。三者 backbone FLOPs 几乎一样。sampled-token 的
\[\partial\log\pi(y)/\partial z\]和 full-vocab reverse KL 的
\[\partial\mathrm{KL}/\partial z\]都是 $V$ 维,再乘同一个
\[W_{\mathrm{lm}}\]前面层看到的上游梯度一直是 $[B,T,d]$。多出来的算术几乎只在最后一层附近对 $\pi_T$ 做一次 $V$ 维计算,相对 LM head GEMM 约是 $1/d$。
真正增加的是显存和访存:要不要把完整 $V$ 维老师分布写到显存、按位置对齐后算 loss。可以不缓存完整 logits,只留 last-layer hidden,算 loss 时再乘 head。
sampled-token / top-k / full-vocab 训练上怎么选
没有统一配方。现有结论在「sampled-token 够不够」上不一致。
观点不一致。一种结论是:师生 top-k 高度重合、共享 token 已占绝大部分概率质量时,sampled-token 与 $k\in{4,16,64}$ 的 top-k 下游接近;明显更差的是 Top-1,不是「只看一个按 $\pi_\theta$ 抽出的 token」。再加大 $k$ 收益很小。
另一种结论是:轨迹较长、前缀容易离开老师 support、tokenizer 或特殊 token 干扰单点比较时,sampled-token 监督偏斜、不稳定。改成 top-$K$ 截断 reverse KL,再加上 top-p rollout,梯度 norm 更低。其中不少增益来自 special-token mask,不完全是 estimator 本身。截断 reverse KL 是 surrogate,不等于 full-vocab。
可以先按设定选:
- 师生同族、学生轨迹已经在老师 support 里、top-k 重合高:默认 sampled-token。不要用 Top-1。
- 轨迹变长、agent、tokenizer 切分不一致或特殊 token 多:top-k 截断 KL + 集合内重归一化 + top-p rollout,必要时再 mask 特殊 token。$K$ 不用很大。
- full-vocab:显存、通信和 kernel 都准备好、又在意方差时才值得。同一设定下三档还没有头对头比较。
EOPD 的熵门控混合
EOPD 把前述两个正交选择组合起来:外层始终使用 student rollout,并在固定学生前缀上同时使用 RKL 与 FKL。因此学生生成轨迹并不排斥在这些前缀上计算 FKL。
每个 token 都保留 sampled-token clipped RKL 的 PG-Style 项。只有 teacher 的 token-level entropy 满足 $H_T(c_t)>\tau$ 时,才额外加入可直接反传的 teacher top-$k$ FKL:
\[\mathcal{L}_t^{\mathrm{EOPD}} = \mathcal{L}_t^{\mathrm{OPD}} + \mathbb{I}[H_T(c_t)>\tau]\mathcal{L}_t^{\mathrm{FKL}}.\]因此低熵位置是纯 PG-Style;高熵位置是 PG-Style RKL 加 GKD-Style direct FKL。EOPD 整体是混合方法,不是纯 PG-Style。等价的批量实现可以先取得各位置的 teacher top-$k$,再把 $H_T(c_t)\le\tau$ 位置的 FKL mask 掉。
这里的 top-$k$ 明确来自 teacher。teacher 概率在这个集合内重归一化,student 则在同一批 teacher token IDs 上提供概率;该 FKL 公式没有再把 student 概率在集合内重归一化。主实验取 $k=16$。精确计算 teacher entropy 仍需要对 teacher full-vocab 分布做 reduction,但训练不必跨设备缓存或传输整个 $[B,T,V]$ 张量;只保留 top-$k$ 概率和 token IDs 时,额外存储约为 144 MiB。
门控依据是 teacher 在当前位置是否同时支持多个候选。低熵时,单个 student sampled token 提供的 RKL 信号更集中;高熵时,单点 RKL 的噪声更大,也容易只保留少数候选,额外 FKL 会同时提高 student 遗漏但 teacher 支持的候选,并降低 student 赋值过高的候选。它保护的是 teacher 表达的不确定性,不是原样保护 student 已有分布。
和 baseline 的差别也不是在同一支持集上做纯 FKL / RKL 对照:baseline 是 sampled-token clipped RKL PG,EOPD 是该项加 entropy-gated teacher top-$k$ direct FKL。收敛后约 15%–20% 的 token 触发 FKL。三组 Qwen3 主实验相对 baseline 的 Avg@8 提升分别为 $+1.16/+0.99/+1.80$,Pass@8 提升为 $+1.37/+2.39/+5.05$,收益更集中在多样性和 Pass@$k$。随机选择 20% 位置加入 FKL 更差;所有位置都加入 FKL 与熵门控大致相当,并非每个任务都落后于门控。
这些结果只来自一套数学任务与 Qwen 主设置,部分提升较小,主结果也缺少充分的多 seed 验证。它支持「在该设置中按 teacher 熵选择 direct FKL 位置有效」,不能推出 EOPD 在所有模型、任务或预算下都优于其他 OPD 配方。
Open Questions
- sampled-token 何时会不稳定:是师生 top-k overlap 起不来,还是 tokenizer / 特殊 token 把单点 KL 比较扭曲了。
- 同一设定下 full-vocab 是否稳定地优于 top-k。