强化学习 / LLM 后训练 Recipe实践方案

LLM RLVR 组合方案#

研究9 分钟阅读查看源文件 ↗

TL;DR#

本页内容8 个部分

RLVR 组合方案:从验证反馈到可检验的更新

1. 实践目标与证据状态#

假设要用自动验证结果训练数学、代码或形式证明模型。已有方法分别调整有效组采样、留一参照、回答级裁剪和长度权重;把这些组件组合后,能否在相同预算下提高独立验证集通过率?本页给出候选配置与验证设计。RLVR(可验证奖励强化学习)用自动验证结果提供奖励;组合能否奏效,仍须实验检验。

来源工作分别报告了相关组件的实验结果,本页的组合尚未验证。

以同题成组采样的 GRPO 为起点,只考察三个问题:

  1. 数据是否提供比较信号:全对或全错的二值评分组,中心化后任务权重全为零。
  2. 每条回答的梯度权重是多少:组内标准差、回答长度和裁剪单位分别改变权重。
  3. 反馈是否足够可靠:终局分数评价最终结果,却未必能识别各推理步骤对该结果的贡献。

2. 候选配置与评分约定#

候选流程是:生成并验证 → 计算组内参考值 → 回答级裁剪 → 汇总有效 token → 更新策略。探索控制与 reference KL 作为单独的消融项,不预先假定它们必须开启。

组件 候选配置 相对来源方法新增了什么
采样 DAPO 式补齐有效组 小组探测与自适应 KK 单独测试
奖励 验证器为主,单独设系数的超长或评分规避惩罚 每个附加项单独消融
任务权重 LOO,不除组内标准差 改变原始 GSPO 的组内标准化
更新 GSPO 几何平均 ratio 非对称阈值需重新校准
聚合 复制回答 loss 后按全局 token 平均 改变原始 GSPO 的回答等权目标
控制 熵反馈、外层保护、reference KL 逐项加入,不默认全部有效

具体实验还需登记基座模型、任务与数据切分、验证器版本、上下文及生成上限、优化器和训练预算。单个组件的实验结果,不能证明这一候选组合在相同预算下也能提高验证集通过率。

2.1 以验证结果定义奖励#

先定义验证器分数 Rverifier(q,y)R_{\mathrm{verifier}}(q,y)。数学可检查最终答案,代码可运行测试,形式证明可交给证明内核。验证强度随任务不同:编译通过不等于程序正确,有限测试通过也不等于满足完整规格。

若要约束超长回答或已识别的评分规避行为,再分别定义惩罚 PoverlongP_{\mathrm{overlong}}、PhackP_{\mathrm{hack}},取非负系数:

R(q,y)=Rverifier(q,y)−λlenPoverlong(q,y)−λhackPhack(q,y).R(q,y)=R_{\mathrm{verifier}}(q,y)-\lambda_{\mathrm{len}}P_{\mathrm{overlong}}(q,y)-\lambda_{\mathrm{hack}}P_{\mathrm{hack}}(q,y).

这些附加项会改变目标,必须分别消融。长度处理可从 DAPO 的软超长惩罚开始,而不是把“达到上限”直接解释成“推理已被证明错误”。证明任务则需明确允许的公理与检查规则,避免奖励占位证明或规格规避。[1]

2.2 定义保留原尺度的 LOO 权重#

固定问题 qq,用旧策略 πold\pi_{\mathrm{old}} 独立采样 K>1K>1 条回答 yiy_i,评分为 RiR_i,均值为 Rˉ\bar R。比较两种不除组内标准差的权重:(1)分数减去包含自身的组均值;(2)分数减去其他回答的均值,即 LOO。对应表达式为:

A^imean=Ri−Rˉ,A^iLOO=Ri−1K−1∑j≠iRj.\hat A_i^{\mathrm{mean}}=R_i-\bar R,\qquad \hat A_i^{\mathrm{LOO}}=R_i-\frac1{K-1}\sum_{j\ne i}R_j.

两者满足 A^iLOO=KA^imean/(K−1)\hat A_i^{\mathrm{LOO}}=K\hat A_i^{\mathrm{mean}}/(K-1)。固定任务评分、同策略独立采样时,LOO 的参考值与当前回答独立;自包含组均值则把原始序列级策略梯度缩小为 (K−1)/K(K-1)/K。权重在更新时停止梯度。[2]

这里选择 LOO 作为候选配置,保留奖励的题间尺度。它不是梯度方差最优的保证。若 KK 随题目改变,上述缩放也随题目改变;筛选、clipping 和长度权重还需分别分析,不能把整个组合称为无偏 RLOO。

候选数据的留一权重。 以下只核对候选配置的计算,不是训练实验。固定一道题,四条完整回答的验证分数为 [1,1,0,0][1,1,0,0],有效长度为 [2,4,2,4][2,4,2,4]。先不加入长度奖励或 reference KL。

组内均值为 1/21/2。留一参照给出 A^LOO=[2/3,2/3,−2/3,−2/3]\hat A^{\mathrm{LOO}}=[2/3,2/3,-2/3,-2/3],四条回答都保留。

3. 采样、更新与聚合选择#

3.1 筛选有比较信号的组#

DAPO 固定每题回答数 KK,过滤当前全对、全错的组,再补采样填满训练 batch。它改变的是进入更新的题目分布。[1]

可以先用 4 或 8 条回答探测通过率,再决定是否继续生成。这不是 DAPO 的原始流程;MAI 的两阶段采样也先用小组筛选,再完整生成。[3]

小组通过率记为 p^(q)\hat p(q),它只是估计。真实成功率为 0.20.2 时,4 次全错的概率仍有 Pr⁡(4 次全错)=0.84=0.4096\Pr(\text{4 次全错})=0.8^4=0.4096。因此要限制重采样预算、定期复查被过滤题目,并记录筛选后的题目分布。

进一步让 KK 随题目改变,例如给小组探测通过率介于预设上下限之间的题分配更多回答,是另一个待验证设想。它同时改变计算分配与统计误差;是否具有更高的采样效率,应在相同生成预算下比较。

3.2 用回答级 ratio 决定裁剪#

记更新中的策略为 πθ\pi_\theta,第 ii 条回答的有效生成长度为 TiT_i。相同前缀下的 token ratio 为 ri,t=πθ(yi,t∣q,yi,<t)/πold(yi,t∣q,yi,<t)r_{i,t}=\pi_\theta(y_{i,t}\mid q,y_{i,<t})/\pi_{\mathrm{old}}(y_{i,t}\mid q,y_{i,<t})。采用 GSPO 的几何平均:

si(θ)=exp⁡ ⁣(1Ti∑t=1Tilog⁡ri,t).s_i(\theta)=\exp\!\left(\frac1{T_i}\sum_{t=1}^{T_i}\log r_{i,t}\right).

完整回答的精确 importance weight 是 siTis_i^{T_i},不是 sis_i。这里用后者构造长度归一化的替代目标,不声称恢复了 current 下的完整回答期望。原始 GSPO 仍除组内标准差;本页换成 LOO 是额外改动。[4]

令 A^i=A^iLOO\hat A_i=\hat A_i^{\mathrm{LOO}},用 0<ϵlow<10<\epsilon_{\mathrm{low}}<1、ϵhigh>0\epsilon_{\mathrm{high}}>0 控制裁剪宽度,定义要最小化的回答 loss:

ℓi(θ)=−min⁡ ⁣(siA^i,clip⁡(si,1−ϵlow,1+ϵhigh)A^i).\ell_i(\theta)=-\min\!\left(s_i\hat A_i,\operatorname{clip}(s_i,1-\epsilon_{\mathrm{low}},1+\epsilon_{\mathrm{high}})\hat A_i\right).

整条回答共享裁剪条件。裁剪使有利方向越过阈值后的任务项保持常数,不对 ratio 或 KL 提供硬边界。

3.3 用 token 总数聚合回答 loss#

原始 GSPO 对回答目标等权平均。本页提出另一种待验证配置:把同一个 ℓi\ell_i 放到该回答的全部有效位置,再对整批 token 平均。若本批共有 NN 条回答:

L(θ)=∑i=1NTiℓi(θ)∑i=1NTi.L(\theta)=\frac{\sum_{i=1}^{N}T_i\ell_i(\theta)}{\sum_{i=1}^{N}T_i}.

分母只计有效生成 token,排除 prompt、padding 和被 mask 的位置。跨设备与梯度累积也要使用同一个全局计数。

这借用了 DAPO 的 token 聚合方式,却改变了 GSPO 的回答等权目标。在未进入裁剪常数分支时,TiT_i 与 ∇log⁡si=(1/Ti)∑t∇log⁡πθ\nabla\log s_i=(1/T_i)\sum_t\nabla\log\pi_\theta 中的长度因子抵消;裁剪判断仍由 sis_i 决定。因此这是一项明确的组合修改,不是原始 GSPO 的等价写法。不同分母的计算见 Loss 平均。

4. 候选配置的目标计算#

沿用四条回答的验证分数、长度和 LOO 权重,单独计算回答级裁剪与聚合。

假设每条回答内的 token ratio 分别恒为 1.11.1、1.31.3、0.90.9、0.70.7,那么几何平均 sis_i 也分别为这四个值。手算取 ϵlow=0.2\epsilon_{\mathrm{low}}=0.2、ϵhigh=0.3\epsilon_{\mathrm{high}}=0.3:

回答 验证分数 长度 TiT_i LOO 权重 sis_i 回答 loss ℓi\ell_i
y1y_1 1 2 2/32/3 1.1 −11/15-11/15
y2y_2 1 4 2/32/3 1.3 −13/15-13/15
y3y_3 0 2 −2/3-2/3 0.9 3/53/5
y4y_4 0 4 −2/3-2/3 0.7 8/158/15

第四条的原始任务项为 原始任务项4=0.7×(−2/3)=−7/15\text{原始任务项}_4=0.7\times(-2/3)=-7/15,裁剪项为 裁剪任务项4=0.8×(−2/3)=−8/15\text{裁剪任务项}_4=0.8\times(-2/3)=-8/15。取较小值后再取负,得到 ℓ4=8/15\ell_4=8/15,继续降低该回答的概率不再使这一任务项的 loss 减小。

把同一回答的 loss 复制到各有效 token,再除以总长度 1212:

L=2(−11/15)+4(−13/15)+2(3/5)+4(8/15)12=−215≈−0.1333.L=\frac{2(-11/15)+4(-13/15)+2(3/5)+4(8/15)}{12}=-\frac{2}{15}\approx-0.1333.

这个数值只表示当前样本上的目标取值。更新时固定验证分数、LOO 权重与 old 概率,梯度通过 current 传播;完成本批优化后重新生成并验证。若改为原始 GSPO 的回答平均,必须去掉这里按 TiT_i 加权的聚合,不能沿用同一个 loss。

5. 验证设计与逐项消融#

5.1 裁剪阈值、熵反馈与参考正则的消融#

非对称裁剪。 DAPO 用更大的上界给正权重项留下更多提高概率的空间。本页可测试 ϵhigh>ϵlow\epsilon_{\mathrm{high}}>\epsilon_{\mathrm{low}},但 sequence ratio 与 token ratio 尺度不同,需要重新选择阈值。放宽上界允许正权重任务项在更大的 ratio 范围内继续提供梯度,不保证探索必然改善。

熵反馈。 MAI 的熵控制器用有界状态调节上界:估计熵低于目标时逐步放宽,高于目标时收紧。它用于 token 级目标;移植到本页的回答级目标时,熵估计、阈值和响应速度都是待检验配置。[3]

外层保护。 MAI 还在普通 clipping 外增加 ratio 硬截断,限制尚未被普通 clipping 置为常数的极端 ratio 分支。若移植到本页,可先将 sis_i 截到另设的宽区间,再代入 ℓi\ell_i。这会新增零梯度区域;直接丢弃样本又是另一种更新。应在 log-ratio 域先处理数值极值,并记录触发比例。[3]

Reference KL。 若任务要求保留参考行为,单独测试相应正则及强度 β\beta;β=0\beta=0 只是一个对照配置。是否需要它,要同时看任务收益和独立能力评测。KL 不能修复验证器漏洞,具体求导方式见 KL Regularization。

5.2 在相同预算下验证组合#

先复现一个定义清楚的基线,再逐项加入候选组件。比较时固定 rollout token 与计算预算;不能用更多采样带来的收益替代算法比较。

主要验收指标是独立验证集通过率,同时记录熵、reference KL、裁剪比例、截断率、有效组比例与验证异常。最后再测试组合效果,判断组件之间是否冲突。本页没有训练结果,表中的选择都仍是候选方案。

以下是拟采用的实验对照,不是已有结果表:

对照 固定什么 改变什么 要判断什么
参照与尺度 模型、数据、采样与更新目标 组内标准化/减组均值/LOO 收益来自尺度还是参照构造
聚合方式 相同回答、权重和裁剪配置 回答平均/全局 token 平均 长度权重是否影响结果
有效组筛选 总生成预算与评分规则 保留全部题组/补采有效组 筛选收益能否补偿补采成本
探索与正则 已选定的基础配置 分别加入熵反馈、外层保护或 KL 是否有独立增益以及组件冲突

同时报告生成 token、有效训练 token 和端到端耗时;固定总预算不意味着每种配置的有效更新量相同。训练筛选不用于删除验证集的困难题。若独立验证集收益不能在同预算比较中保留,或仅来自更多生成、评分规避、评测题目筛选,就不能据此接受组合有效的假设。

6. 过程反馈的扩展与验证#

上面的任务权重仍由最终得分决定。同一条成功回答中的正确推导、失败尝试与后续修正共用一个 A^i\hat A_i;回答级裁剪没有进一步定位各步的作用。

代码和形式证明提供了一些候选中间信号:编译或类型检查、测试通过比例、反例消除、证明状态变化。可以研究怎样把它们转成 step 或 span 的更新权重,减少对大型 Critic 的依赖。

但中间进展不等于最终正确:子目标变少可能因为引入了错误假设,测试通过率上升也可能掩盖未覆盖的失败。任何过程奖励都需检查它与最终验证结果的关系,并测试是否出现新的评分规避行为。

参考资料#

  1. DAPO(2025). §3、算法 1:有效组采样、token 聚合与长度反馈。
  2. Back to Basics(2024,v2). §2.3:留一 baseline 与序列级梯度。
  3. MAI-Thinking-1 技术报告(2026). §3.1:两阶段采样、熵反馈与外层裁剪。
  4. Group Sequence Policy Optimization(2025). §4:几何平均 ratio 与回答级裁剪。