ERPO:问题侧参考正则与任务重加权#

进阶7 分钟阅读查看源文件 ↗

TL;DR#

本页内容7 个部分

ERPO:问题似然正则与回答策略更新

1. 问题似然漂移与能力保留#

假设训练始终按同一分布抽取两道题,模型给它们的 log 概率却从 −2-2、−6-6 变为 −1.8-1.8、−6.3-6.3。抽题分布没有变,模型对题目文本的似然却变了。ERPO 要处理的是这种模型似然变化,而不是外部抽题频率的变化。

通常的 reference KL 约束回答分布,但模型对问题文本本身的似然也会随训练变化。ERPO 要约束后一种变化,并调整不同题目的任务权重。外部数据采样分布与模型对问题文本赋予的概率需要区分。

2. 给问题文本计算似然#

ERPO(Environment-Regularized Policy Optimization)包含两项修改:(1)在问题 token 上计算参考惩罚;(2)对各问题的任务项进行重加权。回答仍可由 GRPO、PPO 等更新器训练;改变的是正则的位置和问题间的任务权重。[1]

为复算这两项修改,沿用两道题的 log 概率,并假设每题只有一个有效问题预测位置。问题侧惩罚衡量似然偏移,问题权重则决定两题任务项的相对系数。

设训练集按固定分布 ρtrain(q)\rho_{\mathrm{train}}(q) 抽题,Actor 按 πθ(y∣q)\pi_\theta(y\mid q) 生成回答。即使训练集一直均匀抽样,模型赋给问题文本本身的概率仍可能变化。

若 q=(x1,…,xm)q=(x_1,\ldots,x_m),其模型 log-likelihood 是 ℓθ(q)=∑j=1mlog⁡Pθ(xj∣x<j)\ell_\theta(q)=\sum_{j=1}^{m}\log P_\theta(x_j\mid x_{<j})。它通过 teacher forcing(始终使用原文前缀,计算下一个实际 token 的概率)给已知问题文本打分,不需要模型重新生成一道题。

记模型诱导的问题分布为 ρθ\rho_\theta,用固定的 pre-RL 模型 θ0\theta_0 作 reference。ρθ\rho_\theta 的变化不是外部题目被抽到的次数变化。 ERPO 假设控制这种模型似然漂移有助于保留训练前的能力;已有实验支持这一设计,但它不是由 KL 定义自动推出的结论。[1]

3. 问题侧惩罚、任务权重及其计算#

3.1 在固定问题文本上计算惩罚#

训练仍从固定数据集抽题,使用 k3k_3 式经验替代目标。下面按问题 token 计算惩罚。对问题的第 jj 个有效预测位置,令 dq,j=log⁡Pθ(xj∣x<j)−log⁡Pθ0(xj∣x<j)d_{q,j}=\log P_\theta(x_j\mid x_{<j})-\log P_{\theta_0}(x_j\mid x_{<j}),单项为 单 token 惩罚=e−dq,j+dq,j−1\text{单 token 惩罚}=e^{-d_{q,j}}+d_{q,j}-1。[2]

reference 对问题 token 的 log 概率固定;current 对相同 token 的 log 概率保留梯度。对该项求导,得到 单 token 惩罚梯度=(1−e−dq,j)∇θlog⁡Pθ(xj∣x<j)\text{单 token 惩罚梯度}=(1-e^{-d_{q,j}})\nabla_\theta\log P_\theta(x_j\mid x_{<j})。只对问题 mask 标记的有效 token 惩罚取平均,得到 D^query(q)\widehat D_{\mathrm{query}}(q)。

设 current 对相同问题的 log 概率为 −1.8-1.8、−6.3-6.3,两个位置的 log-ratio 为 0.20.2、−0.3-0.3。经验惩罚分别为 D^query(q1)=e−0.2+0.2−1≈0.0187\widehat D_{\mathrm{query}}(q_1)=e^{-0.2}+0.2-1\approx0.0187、D^query(q2)=e0.3−0.3−1≈0.0499\widehat D_{\mathrm{query}}(q_2)=e^{0.3}-0.3-1\approx0.0499。

第一题的 current 似然高于 reference,惩罚的导数系数为 1−e−0.2>01-e^{-0.2}>0。最小化该惩罚时,梯度下降提供降低第一题 current 似然的更新方向。第二题的 current 似然低于 reference,最小化该惩罚则提供提高其 current 似然的更新方向。两题等权平均后的 Query 惩罚约为 0.03430.0343,尚未乘正则系数。

逐 token 计算 k3k_3 后平均,与先将 log-ratio 求和再计算整题的 k3k_3,一般会得到不同的数值和梯度。每题恰有一个有效预测位置时,两种计算相同。

3.2 按参考模型似然计算静态权重#

ERPO 的第二部分是问题权重。静态配置用 reference 计算每题的负对数似然(negative log-likelihood,NLL) sq=−ℓθ0(q)s_q=-\ell_{\theta_0}(q),再算全数据集的均值 sˉ\bar s,取:

w(q)=clip⁡ ⁣(sˉsq,0,2).w(q)=\operatorname{clip}\!\left(\frac{\bar s}{s_q},0,2\right).

在未触及裁剪上界时,reference 负 log-likelihood 较小的问题获得更大权重;静态权重不超过 2。静态权重预先固定,不随 current 更新,也不对它求导。[1]

在两道题的手算示例中,reference 的负 log-likelihood 分别为 22、66。假设数据集只有这两道题,则全数据集均值为 44,静态权重分别为 22 和 2/32/3。

两题的任务项分别乘以 22 和 2/32/3。若两题原本的任务梯度相同,第一题在任务项中获得三倍系数。问题权重调整任务项的相对系数,问题侧惩罚则约束模型相对 reference 的似然偏移。

若要精确地将抽题分布从 ρtrain\rho_{\mathrm{train}} 换为 ρθ0\rho_{\theta_0},精确 importance weight 应为 ρθ0(q)/ρtrain(q)\rho_{\theta_0}(q)/\rho_{\mathrm{train}}(q)。上面的有界逆负 log-likelihood 只是依据 reference 的问题负 log-likelihood 构造的代理权重,并非精确密度比。各题不同的权重会改变题目间的优化取舍,不能说它完全保留均匀抽题目标。

3.3 将问题权重与参考惩罚合并#

把原更新器在题目 qq 上的经验任务目标记为 Jq(θ)J_q(\theta),用 α≥0\alpha\geq0 控制问题侧正则强度。一批 BB 道题的组合 loss 为:

LERPO(θ)=−1B∑q∈Bw(q)Jq(θ)+αB∑q∈BD^query(q).L_{\mathrm{ERPO}}(\theta)=-\frac1B\sum_{q\in\mathcal B}w(q)J_q(\theta)+\frac\alpha B\sum_{q\in\mathcal B}\widehat D_{\mathrm{query}}(q).

这里要最小化。为展示机制,式中把 Query token 项先在每题内平均,再对题目平均;具体实现还需核对 mask、重复问题和全局计数。JqJ_q 可以采用组内 advantage 和 clipped ratio。问题权重与 Query 惩罚分别改变任务权重和正则对象。

继续两道题的静态权重算例。假设原更新器给出的任务目标为 Jq1=0.3J_{q_1}=0.3、Jq2=0.6J_{q_2}=0.6,取 α=0.1\alpha=0.1。按题目权重聚合,加权任务平均=[2×0.3+(2/3)×0.6]/2=0.5\text{加权任务平均}=[2\times0.3+(2/3)\times0.6]/2=0.5;问题侧惩罚沿用已算出的 0.0187310.018731 和 0.0498590.049859,平均约为 0.0342950.034295。因此:

LERPO=−0.5+0.1×0.034295≈−0.496571.L_{\mathrm{ERPO}}=-0.5+0.1\times0.034295\approx-0.496571.

这里 Jq1J_{q_1}、Jq2J_{q_2} 是用于组合计算的假设输入,不是实验测量。两题的加权任务项分别为 0.60.6 和 0.40.4,对两题平均后各贡献 0.30.3 和 0.20.2。Query 惩罚另加到 loss 上;求导时保留任务项与问题 token 正则项的梯度,静态题目权重固定。

4. 总体 Query-KL 与实际训练的区别#

4.1 总体 Query-KL 的定义#

总体层面的 Query-KL 为:

Dquery(θ)=KL(ρθ∥ρθ0)=Eq∼ρθ ⁣[log⁡ρθ(q)ρθ0(q)].D_{\mathrm{query}}(\theta)=\mathrm{KL}(\rho_\theta\|\rho_{\theta_0})=\mathbb E_{q\sim\rho_\theta}\!\left[\log\frac{\rho_\theta(q)}{\rho_{\theta_0}(q)}\right].

在归一化分布及可交换求导条件下,其梯度是 log-ratio 乘问题 score 的期望。它不直接包含回答的 ∇log⁡πθ(y∣q)\nabla\log\pi_\theta(y\mid q)。

这只是求导路径的区别。模型共享参数,更新问题似然也可能改变回答,因此不能假定两类梯度正交或回答完全不受影响。[1]

4.2 静态与动态配置的训练流程#

公开实现采用动态权重:用 current 的问题负 log-likelihood,在全局更新批次预计算均值,取停止梯度的 sˉθ,B/sθ(q)\bar s_{\theta,\mathcal B}/s_\theta(q)。这项计算不含静态公式的 [0,2][0,2] 裁剪;权重会随 current 改变。[2]

本例采用基于 reference NLL 的静态权重。若改用基于 current NLL 的动态权重,就需要重算 current NLL 和批次均值,再缓存停止梯度的权重。此时不能继续使用静态权重 22 和 2/32/3。

静态配置先缓存 reference 权重;动态配置则在当前全局更新批次预计算问题 NLL。随后都照常生成回答、评分和构造 advantage;更新时加入问题 token 的 Query surrogate,并给任务项乘以停止梯度的问题权重。具体实现必须保留问题 token 的正则梯度,不能仍然屏蔽全部 prompt 项。

5. 正则对象比较与经验惩罚的局限性#

5.1 与回答侧正则比较#

ReCo 调整回答和 token 的梯度权重;ERPO 调整问题权重与正则对象。Query 惩罚替换的是回答侧的 reference KL;内部 PPO clipping 等约束仍可保留。

5.2 固定问题惩罚对总体 KL 的近似限制#

固定训练集上的 Query 惩罚,需要与总体 Query-KL 区分:经验 surrogate 不自动给出总体 reverse KL 的无偏梯度。 它实际约束的是观测问题的相对似然漂移。k3k_3 的数值与梯度为什么要分别分析,见 KL Regularization。[1]

参考资料#

  1. Beyond the Stability–Exploration Dilemma(阿里,2026). §4、附录 F–I:Query-KL、固定数据 surrogate 与有界问题权重。
  2. ERPO 官方实现(commit 8891536). actor_worker.py:动态问题权重;同文件 prepare_backward_batch 与 loss_func 负责预计算和 prompt-mask KL。此版本与论文静态权重不同。