Policy gradient 通常从当前策略采样,或者像 importance sampling 那样显式处理分布差异。这篇专门讨论 LLM 的 sampler 与 trainer 不一致时,更新中会出现什么偏差,以及 Score Centering 能修正其中哪一部分。阅读时需要熟悉 baseline;涉及 group statistics 的讨论可以对照 GRPO 。
系列导读 · 上一篇
On-policy policy gradient 的无偏性依赖一个条件:产生 action 的 distribution,必须与计算 ∇ 𝜃 l o g 𝜋 𝜃 ∇ θ log π θ 的 distribution 对得上。 对 LLM 来说,rollout engine 和 trainer 即使拿着同一份权重,也可能因为量化、不同的 kernel 或数值计算顺序,给出不同的 next-token probabilities;异步训练还会让 rollout 使用较旧的权重。这些差异通常放在 training-inference mismatch(TIM)这个问题下讨论。
Score Centering (Marek & Ryabinin, 2026 ) 给出了一个值得接着 baseline 和 GRPO 往下想的切入点:如果所有回答的 reward 都一样,policy 理应没有值得优化的方向,但 mismatch 会让朴素的更新仍然移动。我们先把这个现象算清楚,再设计修正,最后比较它与 importance sampling、Bellman Policy Optimization(BPO)的关系。本节依据两篇论文的 September 2026 v1,数值例子是用于核对公式的独立构造。
这一节分四步:先在固定 prefix 下推导 drift 与 SC,再比较 baseline、IS 和 BPO;随后讨论实现,最后回到完整 rollout 与实验结论。
From mismatch to centered scores
A constant reward should not move the policy
先固定一个 prefix 𝑠 = ( 𝑥 , 𝑦 < 𝑡 ) s = ( x , y < t ) ,只看当前位置选择哪个 token。为避免把 state 和 score 都写成 𝑠 s ,这里记
𝑝 𝑎 = 𝜋 𝜃 ( 𝑎 ∣ 𝑠 ) , 𝑞 𝑎 = 𝜋 s a m p l e r ( 𝑎 ∣ 𝑠 ) , 𝑧 𝑎 = ∇ 𝜃 l o g 𝑝 𝑎 . p a = π θ ( a ∣ s ) , q a = π sampler ( a ∣ s ) , z a = ∇ θ log p a .
𝑝 p 是 trainer,𝑞 q 是实际采样分布,𝑧 𝑎 z a 是一个参数空间中的向量,叫作 score;它与 reward 不是同一个「分数」。一次更新中,rollout、𝑞 q 和 reward targets 都固定,不对采样过程反向传播。先假设词表有限、𝑝 𝑎 > 0 p a > 0 ,且 𝑝 p 对参数可微。
如果每个 action 都给常数 reward 𝑐 c ,目标就是 ∑ 𝑎 𝑝 𝑎 𝑐 = 𝑐 ∑ a p a c = c ,梯度应该为零。用基础篇推导的 score identity ,有
𝔼 𝑝 [ 𝑧 ] = ∑ 𝑎 𝑝 𝑎 ∇ 𝜃 l o g 𝑝 𝑎 = ∇ 𝜃 ∑ 𝑎 𝑝 𝑎 = 0 . E p [ z ] = ∑ a p a ∇ θ log p a = ∇ θ ∑ a p a = 0.
但 trainer 实际收到的是 𝑎 ∼ 𝑞 a ∼ q 。直接用 𝑐 𝑧 𝑎 c z a 更新,平均起来得到
𝑐 𝑚 𝑞 , 𝑚 𝑞 : = 𝔼 𝑞 [ 𝑧 ] = ∑ 𝑎 𝑞 𝑎 𝑧 𝑎 . c m q , m q := E q [ z ] = ∑ a q a z a .
这个平均 score 一般不为零。我们甚至不需要长序列就能看到问题:设只有两个 action,𝑝 ( 𝐴 ) = 𝜎 ( 𝜃 ) = 0 . 8 p ( A ) = σ ( θ ) = 0.8 ,𝑝 ( 𝐵 ) = 0 . 2 p ( B ) = 0.2 ,而 sampler 给出 𝑞 ( 𝐴 ) = 0 . 6 q ( A ) = 0.6 、𝑞 ( 𝐵 ) = 0 . 4 q ( B ) = 0.4 。对这个 scalar logit 求导,
𝑧 𝐴 = 1 − 𝑝 ( 𝐴 ) = 0 . 2 , 𝑧 𝐵 = − 𝑝 ( 𝐴 ) = − 0 . 8 . z A = 1 − p ( A ) = 0.2 , z B = − p ( A ) = − 0.8 .
在 𝑝 p 下,它们刚好抵消:0 . 8 × 0 . 2 + 0 . 2 × ( − 0 . 8 ) = 0 0.8 × 0.2 + 0.2 × ( − 0.8 ) = 0 。换成 𝑞 q ,则
𝑚 𝑞 = 0 . 6 × 0 . 2 + 0 . 4 × ( − 0 . 8 ) = − 0 . 2 . m q = 0.6 × 0.2 + 0.4 × ( − 0.8 ) = − 0.2 .
于是即使每个 action 都得到 + 1 + 1 ,gradient ascent 也会减小 𝜃 θ ,降低 trainer 选择 𝐴 A 的概率。这一步在模仿 sampler 的偏好,却没有利用任何 reward 差异。
Separating drift from the reward signal
现在让 action 的好坏不同。记 𝑄 𝑎 Q a 为固定的 action-value signal;此处先在 𝑝 p 、𝑞 q 下比较同一个 𝑄 Q 函数 ,并记
𝑉 𝑞 = 𝔼 𝑞 [ 𝑄 ] , 𝑔 ⋆ = 𝔼 𝑝 [ 𝑄 𝑧 ] . V q = E q [ Q ] , g ⋆ = E p [ Q z ] .
𝑉 𝑞 V q 只是这个 signal 在 𝑞 q 下的平均值;若取 𝑄 = Q 𝑞 ( 𝑠 , ⋅ ) Q = Q q ( s , ⋅ ) ,它就等于该策略的 state value V 𝑞 ( 𝑠 ) V q ( s ) 。我们稍后再把 prefix 的访问分布和后续 rollout 放回来,不能把这个局部比较直接当成整个 RL objective 的梯度。
为了分清更新有没有使用 action 之间的优劣,先把每个 𝑄 𝑎 Q a 拆成「大家共有的平均部分」𝑉 𝑞 V q 和「相对平均值的差异」𝑄 𝑎 − 𝑉 𝑞 Q a − V q :
𝑔 n a i v e = 𝔼 𝑞 [ 𝑄 𝑧 ] = 𝑉 𝑞 𝑚 𝑞 + 𝔼 𝑞 [ ( 𝑄 − 𝑉 𝑞 ) 𝑧 ] = 𝑉 𝑞 𝑚 𝑞 + C o v 𝑞 ( 𝑄 , 𝑧 ) . g naive = E q [ Q z ] = V q m q + E q [ ( Q − V q ) z ] = V q m q + Cov q ( Q , z ) .
这里 scalar 与 vector 的 covariance 定义为
C o v 𝑞 ( 𝑄 , 𝑧 ) = 𝔼 𝑞 [ ( 𝑄 − 𝑉 𝑞 ) ( 𝑧 − 𝑚 𝑞 ) ] . Cov q ( Q , z ) = E q [ ( Q − V q ) ( z − m q ) ] .
最后一步成立,是因为 𝔼 𝑞 [ 𝑄 − 𝑉 𝑞 ] = 0 E q [ Q − V q ] = 0 。第一项 𝑉 𝑞 𝑚 𝑞 V q m q 只知道平均 reward 有多大,不知道哪个 action 更好;第二项才把 reward 的差异与 score 的方向对应起来。我们把第一项称为 mean-score drift 。
这个 drift 还有一个直观的方向:固定 𝑞 q ,𝑚 𝑞 m q 正是 𝔼 𝑞 [ l o g 𝑝 𝑎 ] E q [ log p a ] 的梯度,也就是把 𝑞 q 当 teacher 做 maximum likelihood 的方向。若 𝑉 𝑞 > 0 V q > 0 ,它把 trainer 拉向 sampler;若 𝑉 𝑞 < 0 V q < 0 ,则反向推动。固定 teacher 的拟合与不断从 trainer 同步权重、又持续引入偏差的 sampler,具有不同的反馈结构。后者可能累积误差,不过这段代数本身没有证明任意 mismatch 都一定导致 collapse。
回到两个 action 的例子,令 𝑄 𝐴 = 1 Q A = 1 、𝑄 𝐵 = 0 Q B = 0 。有
𝑔 ⋆ = 0 . 1 6 , 𝑉 𝑞 𝑚 𝑞 = 0 . 6 × ( − 0 . 2 ) = − 0 . 1 2 , C o v 𝑞 ( 𝑄 , 𝑧 ) = 0 . 2 4 . g ⋆ = 0.16 , V q m q = 0.6 × ( − 0.2 ) = − 0.12 , Cov q ( Q , z ) = 0.24 .
所以 naive update 为 − 0 . 1 2 + 0 . 2 4 = 0 . 1 2 − 0.12 + 0.24 = 0.12 。更有意思的是,把所有 reward 加 1 1 ,action 之间的优劣完全没有改变,理想更新仍为 0 . 1 6 0.16 ,但 naive update 变成
0 . 6 × 2 × 0 . 2 + 0 . 4 × 1 × ( − 0 . 8 ) = − 0 . 0 8 . 0.6 × 2 × 0.2 + 0.4 × 1 × ( − 0.8 ) = − 0.08 .
它连方向都反过来了。一般地,𝑄 ↦ 𝑄 + 𝑐 Q ↦ Q + c 会给 naive update 增加 𝑐 𝑚 𝑞 c m q ;这正是我们希望消除的依赖。
Center the score under the sampler
我们想保留不同 action 的 score 差异,同时让常数 reward 不再产生平均更新。最直接的操作,是给所有 action 的 score 减去同一个向量 𝑑 d 。这个操作保留 𝑧 𝑎 − 𝑧 𝑏 z a − z b ,而零均值要求
𝔼 𝑞 [ 𝑧 − 𝑑 ] = 𝑚 𝑞 − 𝑑 = 0 . E q [ z − d ] = m q − d = 0.
因此必须选 𝑑 = 𝑚 𝑞 d = m q ,得到 centered score ̃ 𝑧 𝑎 = 𝑧 𝑎 − 𝑚 𝑞 z ~ a = z a − m q 。这就是 Score Centering(SC)的修正。把它放进更新,
𝑔 S C = 𝔼 𝑞 [ 𝑄 ( 𝑧 − 𝑚 𝑞 ) ] = 𝔼 𝑞 [ 𝑄 𝑧 ] − 𝑉 𝑞 𝑚 𝑞 = C o v 𝑞 ( 𝑄 , 𝑧 ) . g SC = E q [ Q ( z − m q ) ] = E q [ Q z ] − V q m q = Cov q ( Q , z ) .
在两个 action 的例子中,centered scores 是 0 . 4 0.4 和 − 0 . 6 − 0.6 ,在 𝑞 q 下的平均值为零。用 𝑄 = ( 1 , 0 ) Q = ( 1 , 0 ) 或 𝑄 = ( 2 , 1 ) Q = ( 2 , 1 ) ,SC 的平均更新都为 0 . 2 4 0.24 。
两个 action 的解析例子,非模型实验:𝑝 ( 𝐴 ) = 0 . 8 p ( A ) = 0.8 、𝑞 ( 𝐴 ) = 0 . 6 q ( A ) = 0.6 ,初始 rewards 为 ( 1 , 0 ) ( 1 , 0 ) 。 给两者同时加上从 0 到 1 的常数,naive update 从 0.12 变成 −0.08;SC 始终为 0.24,on-policy 始终为 0.16。SC 消除了对 reward 平移的依赖,但保留了与理想更新的差距。
这解决了 reward 平移导致的 drift,但 0 . 2 4 0.24 仍然不等于 on-policy 的 0 . 1 6 0.16 。由于 𝔼 𝑝 [ 𝑧 ] = 0 E p [ z ] = 0 ,理想更新可以写成 𝑔 ⋆ = C o v 𝑝 ( 𝑄 , 𝑧 ) g ⋆ = Cov p ( Q , z ) ,所以
𝑔 S C − 𝑔 ⋆ = C o v 𝑞 ( 𝑄 , 𝑧 ) − C o v 𝑝 ( 𝑄 , 𝑧 ) . g SC − g ⋆ = Cov q ( Q , z ) − Cov p ( Q , z ) .
精确 SC 消掉了 mean-score drift,剩下的 covariance 仍然是在 𝑞 q 下衡量的。 恢复 reward-shift invariance、得到无偏的 on-policy gradient、降低 estimator variance,是三个不同的要求。上面的推导只保证第一个,以及对 drift 的精确消除。
Mean score 为零,是否就说明 sampler 与 trainer 相同? 如果直接把整个 vocabulary 的 logits ℓ ℓ 当独立参数,softmax score 为 ∇ ℓ l o g 𝑝 𝑎 = 𝑒 𝑎 − 𝑝 ∇ ℓ log p a = e a − p ,所以
𝔼 𝑞 [ ∇ ℓ l o g 𝑝 𝑎 ] = 𝑞 − 𝑝 . E q [ ∇ ℓ log p a ] = q − p .
此时平均 score 为零确实等价于 𝑞 = 𝑝 q = p 。但神经网络参数 𝜃 θ 通过 logits 的 Jacobian 𝐽 ℓ = 𝜕 ℓ / 𝜕 𝜃 J ℓ = ∂ ℓ / ∂ θ 影响概率,有
𝑚 𝑞 = 𝐽 ⊤ ℓ ( 𝑞 − 𝑝 ) . m q = J ℓ ⊤ ( q − p ) .
投影后可能出现抵消。因此一般参数化下只能说 𝑝 = 𝑞 p = q 必然使 𝑚 𝑞 = 0 m q = 0 ,不能反过来推断;总 drift 为零还可能只是因为 𝑉 𝑞 = 0 V q = 0 。
Baselines, importance sampling, and BPO
SC 与前面的方法都有关联,但需要分别比较它们的期望更新、逐样本梯度和实际近似。
What a baseline already fixes
基础篇的 baseline 也是从 reward 中减去一个与当前 action 无关的数。那为什么不直接用 𝑄 − 𝑉 Q − V ?
固定 prefix 下的 baseline 𝑉 V ,按照刚才的拆法,
𝑔 𝑉 = 𝔼 𝑞 [ ( 𝑄 − 𝑉 ) 𝑧 ] = ( 𝑉 𝑞 − 𝑉 ) 𝑚 𝑞 + C o v 𝑞 ( 𝑄 , 𝑧 ) . g V = E q [ ( Q − V ) z ] = ( V q − V ) m q + Cov q ( Q , z ) .
所以 exact 𝑞 q -baseline 𝑉 = 𝑉 𝑞 V = V q 与 exact SC 的期望更新相同 。若 baseline 有误差 𝑉 − 𝑉 𝑞 V − V q ,残余 drift 就是 − ( 𝑉 − 𝑉 𝑞 ) 𝑚 𝑞 − ( V − V q ) m q 。一个准确的 V 𝑝 V p 也未必是这里所需的 𝑉 𝑞 V q :评估的策略或 𝑄 Q signal 不同,就不是同一个 target。
不过两种 estimator 并不逐样本相同:
( 𝑄 − 𝑉 𝑞 ) 𝑧 与 𝑄 ( 𝑧 − 𝑚 𝑞 ) ( Q − V q ) z 与 Q ( z − m q )
分别把中心化放在 scalar reward 和 vector score 上。它们的期望相同,variance 不必相同;on-policy 时 SC 原样保留 𝑄 𝑧 Q z ,baseline 仍然可以改变 variance。SC 绕过了对每个 prefix 的 expected return 的估计,转而要求 sampler 的 next-token distribution。这解释了为什么这项操作在 vocabulary 可以求和的 LLM 中有实现价值。
还可以同时使用二者。只要 𝑉 V 在给定 prefix 后不依赖当前 action,
𝔼 𝑞 [ ( 𝑄 − 𝑉 ) ( 𝑧 − 𝑚 𝑞 ) ] = C o v 𝑞 ( 𝑄 , 𝑧 ) . E q [ ( Q − V ) ( z − m q ) ] = Cov q ( Q , z ) .
这里 𝑉 V 的选择不再改变期望,但仍可能影响 variance。
GRPO 的 group mean 为什么没有自动完成这件事?因为它在同一 prompt 的多个完整回答之间 居中,而我们要求在每个具体 prefix 的下一步选择之间 居中。假设一个 prompt 的平均成功率为 0 . 5 0.5 ,某个正确推导的 prefix 之后成功率为 0 . 9 0.9 ,那么减去 prompt baseline 后,这个 prefix 的 expected advantage 仍为 0 . 4 0.4 。Group 中正负 advantage 的总和为零,并不意味着每个 prefix 的条件均值都为零。
这里还沿用GRPO 中的有限 group 提醒 :同一组样本的 mean、standard deviation 是随机变量。把包含当前回答的 group mean 当成独立 baseline,或把 sample standard deviation 当成固定常数,会改变期望计算。以上 baseline 等式针对固定的 state-dependent baseline;GAE 的 bootstrapping、有限 group 的相关性,需要另外分析,不能直接藏进一个精确 𝑉 𝑞 V q 符号中。
Importance sampling and centering can be combined
如果我们希望连 covariance 的采样分布也改回 𝑝 p ,就回到了 importance sampling。假设 𝑝 𝑎 > 0 p a > 0 的 action 都满足 𝑞 𝑎 > 0 q a > 0 ,则
𝔼 𝑞 [ 𝑝 𝑎 𝑞 𝑎 𝑄 𝑎 𝑧 𝑎 ] = 𝔼 𝑝 [ 𝑄 𝑧 ] = 𝑔 ⋆ . E q [ p a q a Q a z a ] = E p [ Q z ] = g ⋆ .
同样,𝔼 𝑞 [ ( 𝑝 𝑎 / 𝑞 𝑎 ) 𝑧 𝑎 ] = 𝔼 𝑝 [ 𝑧 ] = 0 E q [ ( p a / q a ) z a ] = E p [ z ] = 0 ,因此 exact IS 已经消除了 drift。对这个 exact weighted score 再做精确 SC,修正项本来就是零。
困难在于稀有 action 可能带来很大的 ratio。IS 的 variance 并非在每个问题中都必然增大,但当 𝑝 / 𝑞 p / q 有重尾时,少数样本可能主导更新。实践中会用 truncated IS(TIS)限制权重,或用 masked IS(MIS)丢掉 ratio 过于极端的项。例如,
𝑤 T I S 𝑎 = m i n ( 𝑝 𝑎 𝑞 𝑎 , 𝐶 ) , 𝑤 M I S 𝑎 = 𝑝 𝑎 𝑞 𝑎 𝟏 { ℓ ≤ 𝑝 𝑎 𝑞 𝑎 ≤ 𝑢 } . w a TIS = min ( p a q a , C ) , w a MIS = p a q a 1 { ℓ ≤ p a q a ≤ u } .
这些操作改变了重新加权后的分布,𝔼 𝑞 [ 𝑤 𝑧 ] E q [ w z ] 不再保证为零。既然我们实际用来更新的向量已经从 𝑧 z 变成 𝑤 𝑧 w z ,要居中的也应当是整个 weighted score :
𝑚 𝑤 : = 𝔼 𝑞 [ 𝑤 𝑧 ] , 𝑔 𝑤 + S C = 𝔼 𝑞 [ 𝑄 ( 𝑤 𝑧 − 𝑚 𝑤 ) ] = C o v 𝑞 ( 𝑄 , 𝑤 𝑧 ) . m w := E q [ w z ] , g w + SC = E q [ Q ( w z − m w ) ] = Cov q ( Q , w z ) .
它消除了加权后的 𝑉 𝑞 𝑚 𝑤 V q m w ,仍保留裁剪造成的 covariance bias。注意这通常不等于先居中再乘权重:
𝑤 𝑎 ( 𝑧 𝑎 − 𝑚 𝑞 ) ≠ 𝑤 𝑎 𝑧 𝑎 − 𝑚 𝑤 . w a ( z a − m q ) ≠ w a z a − m w .
前一种写法的平均值为 𝑚 𝑤 − 𝔼 𝑞 [ 𝑤 ] 𝑚 𝑞 m w − E q [ w ] m q ,没有理由恰好为零。这个次序区别,也是把 SC 接到已有 TIS/MIS 实现时最容易遗漏的地方。
若 sampler 使用 top-p、top-k 等截断采样,使部分 𝑞 𝑎 = 0 q a = 0 ,而目标 𝑝 𝑎 > 0 p a > 0 ,exact IS 的 support 条件就不成立。SC 也不会凭空补回没有采到的动作。这里的 𝑞 q 必须是温度、截断及重新归一化之后真正产生 action 的概率 ,而不是随手记录的一份截断前 logprob。
The connection to Bellman Policy Optimization
Bellman Policy Optimization (Song et al., 2026 ) 从 Policy Mirror Descent(PMD)出发,通过 Bellman equations 把中间 state 的 value 消去,再逐步近似成可训练的 loss。要理解它与 SC 的联系,关键是区分三个阶段:trajectory residual、保留完整 KL 的线性化更新,以及最终的 binary-KL 实现。
先看为什么完整 KL 会产生同一个修正。固定 𝑞 q ,考虑
𝐾 ( 𝑠 ) = 𝐷 K L ( 𝑞 ( ⋅ ∣ 𝑠 ) ‖ 𝑝 𝜃 ( ⋅ ∣ 𝑠 ) ) . K ( s ) = D KL ( q ( ⋅ ∣ s ) ‖ p θ ( ⋅ ∣ s ) ) .
它把 trainer 的 log probability 对整个 sampler distribution 求了平均,所以
∇ 𝜃 𝐾 ( 𝑠 ) = − ∑ 𝑣 𝑞 𝑣 ∇ 𝜃 l o g 𝑝 𝑣 = − 𝑚 𝑞 . ∇ θ K ( s ) = − ∑ v q v ∇ θ log p v = − m q .
因此,如果一个更新使用 l o g 𝑝 𝑎 + 𝐾 ( 𝑠 ) log p a + K ( s ) 的梯度,自然就会得到 𝑧 𝑎 − 𝑚 𝑞 z a − m q 。这里把 KL 的方向明确写成 𝑞 ‖ 𝑝 q ‖ p ;不同文章的 forward/reverse 命名参照可能不同,只说「加了一个 KL」不足以确定梯度。
BPO 的完整-KL 线性化阶段恰好出现了这个组合。省略固定的 prompt scaling,用 𝐴 A 表示该回答的固定 advantage coefficient,其每个 token 的 ascent update 是
𝐴 ∇ 𝜃 [ l o g 𝑝 𝑎 + 𝐾 ( 𝑠 ) ] = 𝐴 ( 𝑧 𝑎 − 𝑚 𝑞 ) . A ∇ θ [ log p a + K ( s ) ] = A ( z a − m q ) .
在相同的 𝑝 , 𝑞 , 𝐴 p , q , A 和相同聚合权重下,这个阶段与 exact SC 连单个样本的梯度都相同。 若进一步取 𝐴 = 𝑄 − 𝑏 ( 𝑠 ) A = Q − b ( s ) ,其中 𝑏 ( 𝑠 ) b ( s ) 与 action 无关,就回到 C o v 𝑞 ( 𝑄 , 𝑧 ) Cov q ( Q , z ) 。但这不是在说 BPO 的原始平方残差目标、最终 loss,以及所有 SC 实现都等价。
从 PMD 到 trajectory residual:完整 KL 为什么出现在这里? PMD 希望多选择 advantage 高的 action,同时控制相对 rollout policy 𝑞 q 的变化。暂时直接优化每个 state 的 probability distribution,步长为 𝜂 > 0 η > 0 :
𝑝 + ( ⋅ ∣ 𝑠 ) = a r g m a x 𝑝 { 𝔼 𝑎 ∼ 𝑝 [ A 𝑞 ( 𝑠 , 𝑎 ) ] − 1 𝜂 𝐷 K L ( 𝑝 ‖ 𝑞 ) } . p + ( ⋅ ∣ s ) = arg max p { E a ∼ p [ A q ( s , a ) ] − 1 η D KL ( p ‖ q ) } .
在归一化约束下求导,stationarity 条件给出 l o g ( 𝑝 + 𝑎 / 𝑞 𝑎 ) = 𝜂 A 𝑞 ( 𝑠 , 𝑎 ) − l o g 𝑍 ( 𝑠 ) log ( p a + / q a ) = η A q ( s , a ) − log Z ( s ) 。也就是说,先按 e x p ( 𝜂 A 𝑞 ) exp ( η A q ) 增减 𝑞 q 的质量,再归一化。我们不想显式估计每个中间 state 的 advantage,可以尝试反过来从概率比恢复它。
由于 𝔼 𝑞 [ A 𝑞 ] = 0 E q [ A q ] = 0 ,在 𝑞 q 下对这个 log-ratio 关系取平均,得到
l o g 𝑍 ( 𝑠 ) = 𝐷 K L ( 𝑞 ‖ 𝑝 + ) . log Z ( s ) = D KL ( q ‖ p + ) .
因此在最优 policy 处,
𝜂 A 𝑞 ( 𝑠 , 𝑎 ) = l o g 𝑝 + 𝑎 𝑞 𝑎 + 𝐷 K L ( 𝑞 ‖ 𝑝 + ) . η A q ( s , a ) = log p a + q a + D KL ( q ‖ p + ) .
接下来利用 LLM 的结构:state 是完整 prefix,action 是追加一个 token,转移确定,只有末尾给 reward。把终止 reward 放进终止 prefix 的 value 边界条件,则沿一条回答,
A 𝑞 ( 𝑠 𝑡 , 𝑎 𝑡 ) = V 𝑞 ( 𝑠 𝑡 + 1 ) − V 𝑞 ( 𝑠 𝑡 ) , ∑ 𝑡 A 𝑞 ( 𝑠 𝑡 , 𝑎 𝑡 ) = 𝑅 ( 𝑥 , 𝑦 ) − V 𝑞 ( 𝑥 ) . A q ( s t , a t ) = V q ( s t + 1 ) − V q ( s t ) , ∑ t A q ( s t , a t ) = R ( x , y ) − V q ( x ) .
这里使用的是把 terminal reward 吸收到 terminal value 的记账方式;与基础篇 「在最后一次转移支付 reward、终止后 value 为零」的约定等价。中间的 value 两两抵消后,我们可以用整条回答构造 residual:
𝛿 ( 𝑥 , 𝑦 ; 𝑝 , 𝑞 ) = 𝜂 ( 𝑅 ( 𝑥 , 𝑦 ) − V 𝑞 ( 𝑥 ) ) − ∑ 𝑡 [ l o g 𝑝 ( 𝑎 𝑡 ∣ 𝑠 𝑡 ) 𝑞 ( 𝑎 𝑡 ∣ 𝑠 𝑡 ) + 𝐾 ( 𝑠 𝑡 ) ] . δ ( x , y ; p , q ) = η ( R ( x , y ) − V q ( x ) ) − ∑ t [ log p ( a t ∣ s t ) q ( a t ∣ s t ) + K ( s t ) ] .
这给出目标 𝔼 𝑦 ∼ 𝑞 [ 𝛿 2 / ( 2 𝜂 ) ] E y ∼ q [ δ 2 / ( 2 η ) ] ,只需要 prompt 的 initial value 与最终 reward。PMD 解使每条轨迹的 residual 为零;BPO 论文进一步在其有限时域、support 等假设下证明了最优解的等价性。这并不保证一个共享参数的神经网络能精确实现所有 state 的最优 distribution。
对平方残差求导,token 𝑡 t 的 ascent contribution 为
𝛿 𝜂 ( 𝑧 𝑎 𝑡 − 𝑚 𝑞 ( 𝑠 𝑡 ) ) . δ η ( z a t − m q ( s t ) ) .
这个系数依赖整条轨迹与当前 𝑝 p 。BPO 在 𝑝 = 𝑞 p = q 时的 residual 附近线性化,用 𝑅 − V 𝑞 ( 𝑥 ) R − V q ( x ) 替换 𝛿 / 𝜂 δ / η ,再以 group statistics 估计和归一化它,才得到正文中的 𝐴 ( 𝑧 − 𝑚 𝑞 ) A ( z − m q ) 。因此「完整 KL 产生 centered score」是梯度恒等式,而「把 residual 换成 advantage」是另外一次近似。
接下来是实际算法与 exact SC 分开的地方。完整 KL 需要 sampler 的整个 vocabulary distribution,BPO 把词表合并成「当前 token 𝑎 a 」与「其他所有 tokens」两类,只保留两个概率:
𝐾 b i n ( 𝑎 ) = 𝑞 𝑎 l o g 𝑞 𝑎 𝑝 𝑎 + ( 1 − 𝑞 𝑎 ) l o g 1 − 𝑞 𝑎 1 − 𝑝 𝑎 . K bin ( a ) = q a log q a p a + ( 1 − q a ) log 1 − q a 1 − p a .
这个合并丢掉了其他 tokens 之间的概率分配。因为 ∇ 𝑝 𝑎 = 𝑝 𝑎 𝑧 𝑎 ∇ p a = p a z a ,
∇ 𝐾 b i n ( 𝑎 ) = ( − 𝑞 𝑎 𝑝 𝑎 + 1 − 𝑞 𝑎 1 − 𝑝 𝑎 ) 𝑝 𝑎 𝑧 𝑎 = 𝑝 𝑎 − 𝑞 𝑎 1 − 𝑝 𝑎 𝑧 𝑎 , ∇ [ l o g 𝑝 𝑎 + 𝐾 b i n ( 𝑎 ) ] = 1 − 𝑞 𝑎 1 − 𝑝 𝑎 𝑧 𝑎 . ∇ K bin ( a ) = ( − q a p a + 1 − q a 1 − p a ) p a z a = p a − q a 1 − p a z a , ∇ [ log p a + K bin ( a ) ] = 1 − q a 1 − p a z a .
因此出现的是 complementary-probability ratio ( 1 − 𝑞 𝑎 ) / ( 1 − 𝑝 𝑎 ) ( 1 − q a ) / ( 1 − p a ) ,不是 IS ratio 𝑝 𝑎 / 𝑞 𝑎 p a / q a 。前者来自对 binary KL 求导,后者来自变换积分的测度,二者解决问题的途径不同。
当 𝑝 𝑎 p a 接近 1 1 ,这个 complementary ratio 可能很大。Practical BPO 进一步使用 additive smoothing、cap 和依赖 advantage 符号的 clipping mask:
𝜔 𝑎 = 1 + 𝜖 − 𝑞 𝑎 1 + 𝜖 − 𝑝 𝑎 , ―― 𝜔 ( 𝑎 , 𝐴 ) = 𝑀 ( 𝑎 , 𝐴 ) m i n { 𝜔 𝑎 , 𝐶 } , ω a = 1 + ϵ − q a 1 + ϵ − p a , ω ― ( a , A ) = M ( a , A ) min { ω a , C } ,
𝑀 ( 𝑎 , 𝐴 ) = ⎧ {
{ ⎨ {
{ ⎩ 0 , 𝐴 > 0 且 𝜔 𝑎 > 1 + 𝜖 h i g h , 0 , 𝐴 < 0 且 𝜔 𝑎 < 1 − 𝜖 l o w , 1 , 其他情况 . M ( a , A ) = { 0 , A > 0 且 ω a > 1 + ϵ high , 0 , A < 0 且 ω a < 1 − ϵ low , 1 , 其他情况 .
对应的 ascent contribution 为 𝐴 ―― 𝜔 ( 𝑎 , 𝐴 ) 𝑧 𝑎 A ω ― ( a , A ) z a ,实现时对这个 weight stop-gradient。它一般不再具有 𝔼 𝑞 [ ―― 𝜔 𝑧 ] = 0 E q [ ω ― z ] = 0 的性质,不能沿用完整-KL 阶段的 exact-centering 结论。
三个 tokens 的反例:binary KL 已经足以打破精确中心化 令 𝑝 = ( 1 / 2 , 1 / 4 , 1 / 4 ) p = ( 1 / 2 , 1 / 4 , 1 / 4 ) 、𝑞 = ( 1 / 4 , 1 / 2 , 1 / 4 ) q = ( 1 / 4 , 1 / 2 , 1 / 4 ) ,直接对三个 logits 求导,则 𝑧 𝑎 = 𝑒 𝑎 − 𝑝 z a = e a − p 。暂时不加 smoothing、mask、cap,complementary weights 为
𝜔 = ( 3 / 2 , 2 / 3 , 1 ) , 𝑞 ⊙ 𝜔 = ( 3 / 8 , 1 / 3 , 1 / 4 ) , ∑ 𝑎 𝑞 𝑎 𝜔 𝑎 = 2 3 / 2 4 . ω = ( 3 / 2 , 2 / 3 , 1 ) , q ⊙ ω = ( 3 / 8 , 1 / 3 , 1 / 4 ) , ∑ a q a ω a = 23 / 24.
所以
𝔼 𝑞 [ 𝜔 𝑧 ] = 𝑞 ⊙ 𝜔 − 2 3 2 4 𝑝 = 1 9 6 ( − 1 0 , 9 , 1 ) ≠ 0 . E q [ ω z ] = q ⊙ ω − 23 24 p = 1 96 ( − 10 , 9 , 1 ) ≠ 0.
Exact SC 的平均 centered score 则为零。这里只有两个真正的 action 时,binary KL 与完整 KL 相同,所以不能用两动作情形验证它们在大 vocabulary 下是否仍等价。上面的反例检验的是修正向量的零均值性质;实际 BPO 若对常数 reward 做 group centering,会得到零 advantage,整个更新也会为零。
Implementing the correction without storing score vectors
𝑧 𝑎 z a 的维度等于参数量,逐个 token 构造这些向量显然不合适。不过我们只需要一个 scalar loss,让它的梯度恰好产生这些 score 的线性组合。固定一次 rollout 的 advantage 𝐴 A ,完整分布版本可以写成
L S C = − s g [ 𝐴 ] ( l o g 𝑝 𝑎 − ∑ 𝑣 s g [ 𝑞 𝑣 ] l o g 𝑝 𝑣 ) , L SC = − sg [ A ] ( log p a − ∑ v sg [ q v ] log p v ) ,
其中 s g sg 表示 stop-gradient。对括号求导就是 𝑧 𝑎 − 𝑚 𝑞 z a − m q ,于是 − ∇ L S C = 𝐴 ( 𝑧 𝑎 − 𝑚 𝑞 ) − ∇ L SC = A ( z a − m q ) 。不用显式保存任何参数维度的 score;代价转移到了保留 sampler 的 probability information。
一个只演示单个 prefix、完整 vocabulary 的 PyTorch 实现如下。sampler_probs 必须已经是实际采样分布,logits 是 trainer 在这个 prefix 的 logits:
import torch
def full_score_centering_loss ( logits , sampler_probs , action , advantage ):
log_probs = torch . log_softmax ( logits . float (), dim =- 1 )
teacher = sampler_probs . detach (). to ( log_probs )
coefficient = advantage . detach ()
centered_log_prob = log_probs [ action ] - torch . dot ( teacher , log_probs )
return - coefficient * centered_log_prob
这段代码返回单个 token 的 scalar loss;batch 中需要按训练目标聚合,并排除 padding、prompt 等不参与该项训练的位置。它也不是在要求 centered_log_prob 构成一个归一化 log distribution:我们要的是正确的 surrogate gradient。
实际更昂贵的是存储每个生成位置的完整 𝑞 q 。作者公开实现 (Marek & Ryabinin, 2026a ) 保留 sampler 的 top-k probabilities,再用 trainer distribution 的形状补 tail。这个近似可以从两个约束推出:head 上保留真实 𝑞 𝑣 q v ;tail 总质量仍等于 sampler 的剩余质量。设 head 为 𝐻 H 、tail 为 𝑇 T ;当 tail 非空且 trainer 的 tail mass 为正时,
̂ 𝑞 𝑣 = { 𝑞 𝑣 , 𝑣 ∈ 𝐻 , 𝜌 𝑝 𝑣 , 𝑣 ∈ 𝑇 , 𝜌 = 1 − ∑ 𝑣 ∈ 𝐻 𝑞 𝑣 1 − ∑ 𝑣 ∈ 𝐻 𝑝 𝑣 . q ^ v = { q v , v ∈ H , ρ p v , v ∈ T , ρ = 1 − ∑ v ∈ H q v 1 − ∑ v ∈ H p v .
这里的 top-k 是记录概率时的压缩 ,不等于前面讨论的 top-k 截断采样。利用完整 trainer distribution 的 score 均值为零,tail 求和可以被 head 求和替代:
̂ 𝑚 𝑞 = ∑ 𝑣 ∈ 𝐻 𝑞 𝑣 𝑧 𝑣 + 𝜌 ∑ 𝑣 ∈ 𝑇 𝑝 𝑣 𝑧 𝑣 = ∑ 𝑣 ∈ 𝐻 ( 𝑞 𝑣 − 𝜌 𝑝 𝑣 ) 𝑧 𝑣 . m ^ q = ∑ v ∈ H q v z v + ρ ∑ v ∈ T p v z v = ∑ v ∈ H ( q v − ρ p v ) z v .
于是 loss 中只需减去 ∑ 𝑣 ∈ 𝐻 s g [ 𝑞 𝑣 − 𝜌 𝑝 𝑣 ] l o g 𝑝 𝑣 ∑ v ∈ H sg [ q v − ρ p v ] log p v 。要 detach 的是整个系数 :其中的 𝑝 𝑣 p v 和 𝜌 ρ 都依赖 trainer,漏掉它们的 stop-gradient 就会多出不属于上述 score correction 的导数。
代价是 residual drift。真实采样仍然来自 𝑞 q ,因此
𝔼 𝑞 [ 𝑄 ( 𝑧 − ̂ 𝑚 𝑞 ) ] − 𝑔 ⋆ = 𝑉 𝑞 ( 𝑚 𝑞 − ̂ 𝑚 𝑞 ) + C o v 𝑞 ( 𝑄 , 𝑧 ) − C o v 𝑝 ( 𝑄 , 𝑧 ) . E q [ Q ( z − m ^ q ) ] − g ⋆ = V q ( m q − m ^ q ) + Cov q ( Q , z ) − Cov p ( Q , z ) .
「完整词表求和精确消除 drift」与「top-k 工程近似表现接近」必须分开。小 tail mass 也不能单独保证小梯度误差,还要看 tail 上的 score 大小;当 trainer 的 tail mass 接近零时,𝜌 ρ 的计算还会受数值精度影响。实现中的 clamp 是额外近似,不能在代数里当成从未发生。
Top-k 下如何组合 TIS/MIS? 设权重函数为 𝑤 𝑣 = 𝑓 ( 𝑝 𝑣 / 𝑞 𝑣 ) w v = f ( p v / q v ) 。在 head 上可以算真实 ratio;在模型补出的 tail 上,𝑝 𝑣 / ̂ 𝑞 𝑣 = 1 / 𝜌 p v / q ^ v = 1 / ρ 为常数。因此令 𝛼 = 𝜌 𝑓 ( 1 / 𝜌 ) α = ρ f ( 1 / ρ ) ,就有
̂ 𝑚 𝑤 = ∑ 𝑣 ∈ 𝐻 ( 𝑞 𝑣 𝑓 ( 𝑝 𝑣 / 𝑞 𝑣 ) − 𝛼 𝑝 𝑣 ) 𝑧 𝑣 . m ^ w = ∑ v ∈ H ( q v f ( p v / q v ) − α p v ) z v .
实际采到的 token 可以使用它单独记录的真实 𝑞 𝑎 q a 计算权重;centering 项则使用上面的近似求和。相应 loss 是
− s g [ 𝐴 ] [ s g [ 𝑤 𝑎 ] l o g 𝑝 𝑎 − ∑ 𝑣 ∈ 𝐻 s g [ 𝑞 𝑣 𝑓 ( 𝑝 𝑣 / 𝑞 𝑣 ) − 𝛼 𝑝 𝑣 ] l o g 𝑝 𝑣 ] . − sg [ A ] [ sg [ w a ] log p a − ∑ v ∈ H sg [ q v f ( p v / q v ) − α p v ] log p v ] .
这也提供一个方便的检查:取 exact IS 的 𝑓 ( 𝑟 ) = 𝑟 f ( r ) = r ,则 𝛼 = 1 α = 1 ,head 上 𝑞 𝑣 𝑓 ( 𝑝 𝑣 / 𝑞 𝑣 ) = 𝑝 𝑣 q v f ( p v / q v ) = p v ,centering 系数全部为零。只取普通 SC 的 𝑓 = 1 f = 1 ,则 𝛼 = 𝜌 α = ρ ,回到上一式。
Scope and evidence
先在相同的局部假设下汇总各类更新,再逐项放回完整 rollout 中的分布差异,最后看实验实际支持了哪些结论。
Comparing the updates under one set of assumptions
现在可以把关系放在同一张表里。以下均固定 prefix、同一个 𝑄 𝑎 Q a ,baseline 𝑉 V 与 action 无关,所有 correction coefficients 在反向传播中固定。定义
Δ = C o v 𝑞 ( 𝑄 , 𝑧 ) − C o v 𝑝 ( 𝑄 , 𝑧 ) , Δ 𝑤 = C o v 𝑞 ( 𝑄 , 𝑤 𝑧 ) − C o v 𝑝 ( 𝑄 , 𝑧 ) . Δ = Cov q ( Q , z ) − Cov p ( Q , z ) , Δ w = Cov q ( Q , w z ) − Cov p ( Q , z ) .
表中的 bias 指期望更新减去局部目标 𝑔 ⋆ = 𝔼 𝑝 [ 𝑄 𝑧 ] g ⋆ = E p [ Q z ] 。为便于阅读,先看不带乘法权重的情况:
更新方式 期望 ascent update 相对 𝑔 ⋆ g ⋆ 的 bias On-policy PG 𝔼 𝑝 [ 𝑄 𝑧 ] E p [ Q z ] 0 0 Naive off-policy PG 𝔼 𝑞 [ 𝑄 𝑧 ] E q [ Q z ] 𝑉 𝑞 𝑚 𝑞 + Δ V q m q + Δ 固定 baseline 𝑉 V 𝔼 𝑞 [ ( 𝑄 − 𝑉 ) 𝑧 ] E q [ ( Q − V ) z ] ( 𝑉 𝑞 − 𝑉 ) 𝑚 𝑞 + Δ ( V q − V ) m q + Δ Exact 𝑞 q -baseline 𝔼 𝑞 [ ( 𝑄 − 𝑉 𝑞 ) 𝑧 ] E q [ ( Q − V q ) z ] Δ Δ Exact SC 𝔼 𝑞 [ 𝑄 ( 𝑧 − 𝑚 𝑞 ) ] E q [ Q ( z − m q ) ] Δ Δ BPO 线性化、完整 KL,𝐴 = 𝑄 − 𝑏 ( 𝑠 ) A = Q − b ( s ) 𝔼 𝑞 [ 𝐴 ( 𝑧 − 𝑚 𝑞 ) ] E q [ A ( z − m q ) ] Δ Δ Top-k approximate SC 𝔼 𝑞 [ 𝑄 ( 𝑧 − ̂ 𝑚 𝑞 ) ] E q [ Q ( z − m ^ q ) ] 𝑉 𝑞 ( 𝑚 𝑞 − ̂ 𝑚 𝑞 ) + Δ V q ( m q − m ^ q ) + Δ
对于带权重的更新,仍记 𝑚 𝑤 = 𝔼 𝑞 [ 𝑤 𝑧 ] m w = E q [ w z ] :
更新方式 期望 ascent update 相对 𝑔 ⋆ g ⋆ 的 bias Exact IS,support 覆盖 𝔼 𝑞 [ ( 𝑝 / 𝑞 ) 𝑄 𝑧 ] E q [ ( p / q ) Q z ] 0 0 TIS / MIS 𝔼 𝑞 [ 𝑄 𝑤 𝑧 ] E q [ Q w z ] 𝑉 𝑞 𝑚 𝑤 + Δ 𝑤 V q m w + Δ w TIS / MIS + exact SC 𝔼 𝑞 [ 𝑄 ( 𝑤 𝑧 − 𝑚 𝑤 ) ] E q [ Q ( w z − m w ) ] Δ 𝑤 Δ w Exact IS + exact SC 𝔼 𝑞 [ 𝑄 ( ( 𝑝 / 𝑞 ) 𝑧 − 𝑚 𝑝 / 𝑞 ) ] E q [ Q ( ( p / q ) z − m p / q ) ] 0 0 ,因为 𝑚 𝑝 / 𝑞 = 0 m p / q = 0 Practical BPO,固定 𝐴 𝑎 = 𝑄 𝑎 − 𝑉 A a = Q a − V 𝔼 𝑞 [ ( 𝑄 − 𝑉 ) ―― 𝜔 𝑧 ] E q [ ( Q − V ) ω ― z ] ( 𝑉 𝑞 − 𝑉 ) 𝑚 ―― 𝜔 + Δ ―― 𝜔 ( V q − V ) m ω ― + Δ ω ―
最后一行有一个额外条件:这里用的是确定的 𝐴 𝑎 = 𝑄 𝑎 − 𝑉 A a = Q a − V ,所以可以把包含 mask 的 ―― 𝜔 ω ― 当成 action 的函数。真实 BPO 的 mask 依赖采到的 advantage 的符号 ;当后续 reward 或 group statistics 随机时,不能先把它们替换成 𝑄 𝑎 Q a ,再声称这张表已经精确描述了实现。
更一般地,要在 action、后续 rollout 和 group 的联合分布下计算
𝔼 [ 𝐴 ―― 𝜔 ( 𝑎 , 𝐴 ) 𝑧 𝑎 ] = 𝔼 [ 𝐴 ] 𝔼 [ ―― 𝜔 ( 𝑎 , 𝐴 ) 𝑧 𝑎 ] + C o v ( 𝐴 , ―― 𝜔 ( 𝑎 , 𝐴 ) 𝑧 𝑎 ) . E [ A ω ― ( a , A ) z a ] = E [ A ] E [ ω ― ( a , A ) z a ] + Cov ( A , ω ― ( a , A ) z a ) .
由于 mask 是非线性的,𝔼 [ 𝐴 ―― 𝜔 ( 𝑎 , 𝐴 ) ∣ 𝑎 ] E [ A ω ― ( a , A ) ∣ a ] 通常不等于 𝔼 [ 𝐴 ∣ 𝑎 ] ―― 𝜔 ( 𝑎 , 𝔼 [ 𝐴 ∣ 𝑎 ] ) E [ A ∣ a ] ω ― ( a , E [ A ∣ a ] ) 。因此,对实际训练配方比较时,还要对齐 advantage estimator、mask、group normalization、token/sequence averaging 和 optimizer;局部均值相同并不能推出学习曲线相同。
Returning to the full rollout
前面的共同 𝑄 Q 假设让我们能准确比较各种 correction,但实际 rollout 中还存在两层分布差异。令 𝑑 𝑝 , 𝑡 d p , t 为第 𝑡 t 步在 policy 𝑝 p 下的 state 分布,原始目标的梯度是
∇ 𝜃 J ( 𝑝 ) = ∑ 𝑡 𝔼 𝑠 ∼ 𝑑 𝑝 , 𝑡 [ ∑ 𝑎 𝑝 ( 𝑎 ∣ 𝑠 ) Q 𝑝 ( 𝑠 , 𝑎 ) 𝑧 ( 𝑠 , 𝑎 ) ] . ∇ θ J ( p ) = ∑ t E s ∼ d p , t [ ∑ a p ( a ∣ s ) Q p ( s , a ) z ( s , a ) ] .
而从 𝑞 q 生成的完整回答,用 terminal reward 乘 exact centered scores,在没有额外 normalization 的情况下,其期望为
∑ 𝑡 𝔼 𝑠 ∼ 𝑑 𝑞 , 𝑡 [ C o v 𝑎 ∼ 𝑞 ( ⋅ ∣ 𝑠 ) ( Q 𝑞 ( 𝑠 , 𝑎 ) , 𝑧 ( 𝑠 , 𝑎 ) ) ] . ∑ t E s ∼ d q , t [ Cov a ∼ q ( ⋅ ∣ s ) ( Q q ( s , a ) , z ( s , a ) ) ] .
除了当前 action 的 sampling distribution,还改变了 prefix 的访问分布 𝑑 𝑞 d q ,以及 action 之后如何继续生成 所决定的 Q 𝑞 Q q 。只给当前 token 乘 𝑝 𝑎 / 𝑞 𝑎 p a / q a ,也不会自动把这两者变成 𝑑 𝑝 d p 和 Q 𝑝 Q p 。
策略更新篇的 Off-Policy Policy Gradients 中的完整 trajectory IS 则使用
𝑊 ( 𝜏 ) = ∏ 𝑡 𝑝 ( 𝑎 𝑡 ∣ 𝑠 𝑡 ) 𝑞 ( 𝑎 𝑡 ∣ 𝑠 𝑡 ) , ∇ 𝜃 J ( 𝑝 ) = 𝔼 𝜏 ∼ 𝑞 [ 𝑊 ( 𝜏 ) 𝑅 ( 𝜏 ) ∑ 𝑡 𝑧 ( 𝑠 𝑡 , 𝑎 𝑡 ) ] , W ( τ ) = ∏ t p ( a t ∣ s t ) q ( a t ∣ s t ) , ∇ θ J ( p ) = E τ ∼ q [ W ( τ ) R ( τ ) ∑ t z ( s t , a t ) ] ,
在环境相同、support 覆盖等条件下,才确实把整个轨迹的分布换回去。长序列的乘积权重也解释了为什么实际方法愿意接受一定 bias,换取更可用的 estimator。比较表中的「Exact IS 无偏」,应当连同它指定的采样空间一起读。
Reading the experimental evidence
SC 论文的主要对照,是在相同的 group-centered REINFORCE objective 上替换 correction rule,每个 batch 做一次 SGD update。它有意放大 weight noise、量化差异与 staleness,以便在较短训练内区分方法。在 Qwen3-30B-A3B-Base 的 INT8 weights/activations、INT4 KV 设置下,报告的训练准确率约为 SC 3 0 % 30 % 、TIS 1 2 % 12 % ;在每 6 4 64 步才同步 sampler 的实验中,SC 与 TIS/MIS 的组合优于单独 SC。(Marek & Ryabinin, 2026b )
这些结果支持把 drift 看作一个有用的诊断与修正对象。它们没有建立 SC 在所有 RL 配方上的排序,也没有给出 SC 与 practical BPO 的直接对照;训练准确率更不能自动替换成 held-out reasoning benchmark 的结论。把短程、强 mismatch 的表现外推到长期、弱 mismatch 的生产训练,仍然需要实验验证。
如果要在自己的训练系统里验证这个机制,可以按推导设置三个小检查:常数 reward 下比较修正前后的期望更新;给 reward 加同一个常数,检查更新是否发生不应有的变化;在可枚举的小 vocabulary 上,比较完整求和、top-k 近似和 exact IS。然后再观察真实训练的稳定性、评测表现与成本。这样,数学上声称消掉的项与工程上真正获得的收益,才对应到同一件事。
系列导读 · 上一篇
References
Marek, M., & Ryabinin, M. (2026a).
Score Centering: Reference Implementation .
github.com
Marek, M., & Ryabinin, M. (2026b). Score Centering Stabilizes Off-policy Reinforcement Learning.
arXiv Preprint arXiv:2609.20807 .
arxiv.org
Song, Z., Xu, H., Zhang, X., & Bing, L. (2026). Bellman Policy Optimization.
arXiv Preprint arXiv:2609.15987 .
arxiv.org