奖励从模型变成可检查规则

让模型写一个排序函数,可以请另一个模型判断“写得好不好”,也可以把结果拿去跑测试。后者把一部分判断变成了可重复检查的程序。

如果测试只包含 [3, 1, 2],一直返回 [1, 2, 3] 也能过。换成空列表、重复元素或负数,这个实现马上露馅。可验证奖励(拿它做强化学习(reinforcement learning, RL),就是常说的 RLVR)的价值在于检查明确、方便复现,不在于它天然没有漏洞。

换掉了什么

回顾 RLHF 的四种角色:Policy、Critic、Reward、Reference。对于能用规则检查的那部分目标,可以用验证器代替从偏好数据学出的 Reward Model;其他目标仍可以用人或模型评价,不必把整个系统都变成同一种奖励。

$$r(x,y) = \operatorname{verify}(x,y) \in \{0, 1\}$$

这里 x 包含题目及检查所需的上下文,y 是候选(candidate)回答。0/1 只是一个例子,也可以用通过测试的比例或多项分数。规则是否可重复,还取决于测试输入、运行环境、随机种子和超时设置是否固定。可验证奖励描述奖励来源,不决定必须用 PPO 还是 GRPO,也不决定是否训练 Critic。

为什么它能收窄 reward hacking

用测试替换 RM 后,不再需要让一个模型从语言外观猜代码是否正确。测试检查的性质更明确,失败也更容易复现。这能减少一类奖励模型泛化错误。

但“奖励是离散的、不可微”并不能阻止模型钻空子。Policy gradient 根据采样结果的分数调整概率,并不需要把梯度穿过测试程序。能通过不完整测试的错误实现,仍可能被逐渐强化。

规则也可能漏掉真正的要求

Reward hacking 指得到更高代理奖励的行为,没有带来我们真正想要的结果。它不要求奖励来自神经网络,手写规则也可能给错激励。

如果检查覆盖不全,训练可能强化这些本来不想要的行为:

  • 针对测试用例硬编码返回值;
  • 捕获所有异常让程序不崩溃,从而通过"不报错"这类检查;
  • 找到测试框架本身的漏洞。

这些不是假想:agent 任务里已经测到过的钻空子案例,见前沿草稿Agent RL:环境与奖励从哪里来。反过来,奖励上升也不一定说明模型学到了奖励要求的东西:Spurious Rewards(Shao 等,2025)报告,Qwen2.5-Math-7B 用随机分配的奖励做 RLVR,MATH-500 也涨了 21.4 个百分点(真实奖励是 29.1),换到 Llama3、OLMo2 上常常没有这种效果。

数学题也一样:最终答案匹配,不足以证明中间每一步都成立。模型可能蒙对,或者过程有错却碰巧得到正确结果。是否需要检查过程,取决于你到底要求一个正确答案,还是一份可依赖的论证。

这不表示任何模型都会找到所有漏洞。更准确地说,奖励提供了优化方向;模型能否利用漏洞,还取决于它的能力、采样和训练过程。排查时,不要只看奖励是否升高,要看独立检查是否也支持“任务做得更好了”。

一个排序检查,少验了哪一件事?

输入是 [3, 1, 1]。如果验证器只检查输出是否从小到大,下面 3 个结果都会通过:

输出 非递减? 保留了所有原元素及次数?
[1, 1, 3] 是 是
[1, 3] 是 否,少了一个 1
[] 是,没有相邻逆序 否,元素全没了

排序不仅要求有序,还要求输出是输入的一个排列。只对整数列表演示,可以写成:

from collections import Counter

def verifies_sort(original, candidate):
    ordered = all(
        left <= right
        for left, right in zip(candidate, candidate[1:])
    )
    return ordered and Counter(original) == Counter(candidate)

这段代码是检查一对输入输出的教学函数,不验证所有可能输入,也不负责安全执行未知程序。实际代码评估还要考虑输入类型、是否修改输入、异常、超时和隔离;这些约定要按任务写清楚。

现在假设模型在 [1, 3] 和 [] 之间等概率选择:输出很多样,熵为 $\log2$,但两个都没完成任务。它也可以总返回正确的 [1, 1, 3],熵为 0,却完全满足这道题。奖励漏洞和熵下降是两条不同的检查线。 熵的算例把这个区别列成了对照表。

怎样检查验证器,而不只是检查模型?

先准备一些人能直接判断的故意错误输出:漏元素、重复元素、顺序颠倒、空结果。它们不该因为格式像正确答案就得满分。再加入正确的边界情况,例如空输入对应空输出、重复值和负数。

把测试分成用于训练评分的一组,以及没有参与训练 / 筛选的保留组。保留组也不意味着绝对独立:同源模板、同一个解析器 bug 仍可能一起出错,所以要按错误机制补不同检查,并抽样人工复核。评分规则升级后同时复测旧 checkpoint,避免把“尺子换了”误当成“模型变好了”。

二元奖励带来的新问题:信号太稀疏

回到排序函数:同一个题目采样 4 份实现,测试结果是 [0, 0, 0, 0]。如果训练只用减去组均值的结果奖励,4 个 advantage 都是 0;这一项无法区分谁更值得提高概率。[0, 1, 0, 0] 才给出了组内差异。

这里说的是结果奖励对应的策略梯度项。若还有 KL、熵或其他辅助目标,参数仍可能更新。程序奖励也不必只能是 0/1:测试通过比例可以更密,但也改变了目标,可能鼓励只做容易通过的部分。

题目难度和采样预算因此很重要。先统计多少组全对或全错,再判断是需要更合适的题目、更强的起点,还是更多尝试。

全同分组有多常见,可以用 DAPO 页的混合组概率估算:固定一道题,每次独立采样的成功概率为 p、每组 G 个回答时,它的补集 $p^G+(1-p)^G$ 就是全同分的概率。G=4 时,p=0.5 只有 12.5% 的组全同分,p=0.1 或 0.9 时都升到 65.62%:太难和太容易都可能让组内信号很弱。这是独立同分布的算例;实际题目难度不同、采样相关时,应直接记录每题各组的结果,不能用整个数据集的平均 p 硬套。

像 DAPO 那样过滤全同分组,能提高更新中有区分度的组的比例,但需要额外采样,也会改变进入更新的题目分布。它不凭空创造困难题的正确解法。与筛选后 SFT一样,要同时看保留量和题目覆盖。

结果奖励还是过程奖励

只检查最终结果,容易接进训练,但无法定位错误发生在哪一步。过程奖励可以给出更细的反馈;前提是那些中间步骤确实能被可靠判断。人来标成本高,模型来标有模型误判,形式化证明的检查又需要合适的表示和工具。

不必把二者当成只能选一个。例如最终结果由测试判定,过程信号帮助搜索;但要单独验证增加过程信号后,是否真的在相同预算下更容易做对,而不是只让过程分更高。

推理时怎样用结果奖励模型和过程奖励模型挑答案、在中间步骤上搜索,见前沿草稿测试时计算:多采样、投票与验证器。读论文时也要看收益出现在哪一步。Let's Verify Step by Step,§2.1固定生成模型,比较奖励模型从多个候选中选答案的能力,并没有用 RL 更新生成模型。因此,“过程评分更会选答案”不能直接改写成“过程奖励训练出的 policy 更强”;后者需要另做训练与评估。

可验证性是个连续谱,不是二分

更实用的分类是“到底验证了哪一层”:

检查 能说明什么 不能单独说明什么
编译通过 满足编译器检查的语法和类型要求 程序完成了任务
通过单元测试 在这些输入上符合预期 所有输入都正确
数学答案匹配 最终结果符合给定答案与解析规则 中间推理有效
引用确实存在 来源可找到 来源支持这条结论
人或模型按标准评估 在给定证据和标准下的判断 不存在偏差或分歧

一个任务可以同时用几种检查。例如生成报告时,程序核对数字和链接,人再判断论证是否合理。让每个判断用合适的证据,比把所有要求都压成一个分数更容易排查问题。

设计可验证奖励时检查什么

  1. 哪些故意错误的答案仍能得满分?能否加入针对性的反例测试?
  2. 如果奖励是二元的,我的 batch 里有多少比例的组是全对或全错?
  3. 我验的是结果还是过程?验结果的话,蒙对的比例有多高?
  4. 我这个任务真的"不可验证"吗,还是我没拆开?哪一部分其实是可验的?
  5. 若增加模型评判,独立检查能否发现它偏爱的错误?

继续阅读

  • 偏好从哪来:学出来的奖励模型有哪些结构性上限
  • PPO、GRPO 与 DPO:二元稀疏奖励和组相对基线(baseline)怎么互相放大弱点
  • 对齐税:熵、解法覆盖和实际质量怎样分别检查
  • Evaluation:验证器和评估集不是一回事

快速学习:可验证奖励换掉了什么

复习时,用排序检查讲清楚奖励的边界

先记住:测试能明确检查某些性质,不代表整个任务已经验证完。高奖励、低熵和高质量不是同一个指标。

面试回答

我会先说清验证器检查什么,再主动构造会通过检查、却不满足任务的反例。比如排序只检查有序还不够,必须保留元素及次数。之后用保留测试和固定采样预算评估模型,而不是只报训练奖励。

深挖:Outcome reward 与 process reward 怎样取舍?

结果奖励是否可靠,取决于任务规格和验证器覆盖,不是天然“偏差小”。过程奖励提供更细反馈,但也增加要验证的判断。二者都需要独立质量检查。

参考论文

本页术语 4
奖励 reward
RL 里指导策略更新的标量信号
强化学习 reinforcement learning, RL
根据行动带来的回报调整策略,学习怎样作出更好的选择
候选 candidate
召回阶段捞出来、等待精排挑选的内容
基线 baseline
用来比较新方法的参考方法或配置