学出来的奖励会被骗,有没有骗不了的奖励?
本课一问:第 2 课训出的奖励模型给续写式回答 E(「小明把苹果给了小王,小王又把苹果给了小红……」)打了最高分——它从没在标注里见过 E,只会按「提到小王、写得长」外推。拿这样的奖励去做 RL,会发生什么?有没有一种奖励,策略怎么优化都骗不了?
这一课先不碰:RL 有没有让模型学会新本事(岔路课);思考的长度(第 6 课)。优化器这一课固定不变:KL 约束下的精确策略梯度,只换奖励。
从已有出发
前四课分别解决了「用什么数据」(SFT、偏好)和「梯度怎么算」(PPO、DPO、GRPO)。还有一个问题一直没碰:奖励从哪来。到现在为止,奖励都来自一个学出来的奖励模型——而学出来的东西只在它见过的数据附近可信。
- 解决了R1-Zero 纯 RL:AIME 2024 pass@1 从 15.6% 升到 71.0%(v1)/ 77.9%(v2)。卡在学出来的奖励会被钻空子:教学世界里用 RM 做 RL,50 步内真实正确率从 0.40 掉到0.055(第 5 课浏览器实算)。
先自己设计:用学出来的奖励模型做 RL
- ① 朴素方案
- ② 它在哪失败
- ③ 改进方案
教学世界:回答、初始概率、偏好对是手写的教学数据;奖励模型、验证器、KL 约束下的精确期望梯度(学习率 2.0)、每一步的概率全部由浏览器现算。
先只看左边第一张图「学出来的奖励模型」。
同一个组件的第三张图「严格规则」:抽出「在 X 手里」,X 必须是「小王」才给 1。代理奖励就是真实正确率,两条线重合,第 300 步升到 0.997。
奖励模型没有「坏」:它在标注过的 9 对上几乎全对(平均 loss 0.0834)。问题出在优化压力:策略会去找奖励模型打分最高、但它从没被检验过的地方。Gao et al. 2022 在真实的奖励模型上系统地测过这件事:随着策略离初始模型越来越远(KL 越来越大),代理奖励一直涨,而用更大的「金标准」奖励模型测出的真实分数先升后降;代理奖励模型越大,过优化越轻 证据等级 · 实验验证 由对比实验得出的经验结论,只在出处写明的模型、数据和规模下成立。换了条件可能不再成立,引用时要带上实验设置。 本条合成设置:用一个大 RM 当「真实」偏好,训练较小的代理 RM,再对代理 RM 做 best-of-n 与 RL;拟合出了过优化随 KL 变化的函数形式。 出处Scaling Laws for Reward Model Overoptimization(Gao et al. 2022) ↗需联网 。DeepSeek-R1 的原文说得更直白:推理任务上不用神经奖励模型(无论是给结果打分还是给过程打分),因为它在大规模 RL 中容易被 reward hacking;就连通用任务上的偏好奖励,也只放在最后 400 步,原因同样是训久了会被钻空子 证据等级 · 实验验证 由对比实验得出的经验结论,只在出处写明的模型、数据和规模下成立。换了条件可能不再成立,引用时要带上实验设置。 本条原文:we abstain from applying neural reward models … susceptible to reward hacking during large-scale reinforcement learning。 出处DeepSeek-R1 v2 §2.2、§3.2(本地 PDF) ↗ 。
试三件事:① 保持 β = 0.05,把「看第 N 步」拖回 3:奖励模型那张图里正确率先涨到 0.430,之后才一路跌——过优化的「先升后降」;② 点 β = 1:三张图都被拴在参考模型附近,奖励模型那张的正确率停在 0.445,E 只有 0.230——少作弊,也少进步;③ 看中间那张「宽松规则」(提到「小王」就给 1):β = 0.05 时正确率最高到 0.675(第 26 步),之后回落到 0.570,两头下注的 D 和续写的 E 各拿到 0.214。
改进:能自动核对的,就让规则来判
数学题有标准答案,代码有单元测试,指令遵循有能写成程序的约束(「不超过 50 字」「用 JSON 输出」)。这些领域可以不训奖励模型,直接用程序核对:对了给一个常数奖励,错了给 0。这就是 RLVR(Reinforcement Learning with Verifiable Rewards)。
名字出自 Tülu 3(Ai2,2024-11):原文把它称为「我们引入的新的最后阶段」,可验证正确时奖励 α = 10、否则 0,用 PPO 训,value 模型从通用奖励模型初始化 证据等级 · 实验验证 由对比实验得出的经验结论,只在出处写明的模型、数据和规模下成立。换了条件可能不再成立,引用时要带上实验设置。 本条原文:we provide reward of α, otherwise 0. We then train against this reward using PPO;α = 10 由小实验确定、未调参。 出处Tülu 3 §6(Lambert et al. 2024) ↗需联网 。思想更早:STaR(2022)只保留模型自己生成、答案对了的推理再拿去微调;Cobbe 2021 在 GSM8K 上训练验证器。规模化的标志是 DeepSeek-R1-Zero:直接在 DeepSeek-V3-Base 上做 GRPO,奖励只有答案是否正确加格式是否正确,AIME 2024 的 pass@1 从 15.6% 升到 71.0%(2025-01 的 v1 报告;2026-01 发表于 Nature 的 v2 延长训练后为 77.9%),自洽投票 86.7% 证据等级 · 实验验证 由对比实验得出的经验结论,只在出处写明的模型、数据和规模下成立。换了条件可能不再成立,引用时要带上实验设置。 本条v2 原文:jumping from an initial 15.6% to 77.9%;v1 报告的是 71.0%。同一个模型名,数字随版本更新,引用时要写版本。每题 16 个样本、KL 系数 0.001。 出处DeepSeek-R1 v2 §2.3(本地 PDF) ↗ 。
两条轴,不是一条线。旧版课程把「PPO → GRPO → RLVR」讲成一条每步砍掉一个模型的线,这是错的:GRPO 说的是优化器(优势怎么算),RLVR 说的是奖励来源,两者可以任意组合。Tülu 3 = PPO × 可验证奖励;DeepSeekMath = GRPO × 学出来的奖励模型;R1-Zero = GRPO × 规则。下图的计算器可以验证:PPO 不训奖励模型照样需要 value 模型——critic 是优化器的一部分,和奖励从哪来无关。
| 信号来源 ↓ / 优化器 → | 模仿交叉熵(SFT、拒绝采样 SFT) | PPOcritic + GAE + clip | 离线偏好损失DPO 系,不采样 | 组内基线GRPO / DAPO / GSPO | 蒸馏对老师分布的 KL |
|---|---|---|---|---|---|
| 人写的示范 | FLAN · LIMA2021 · 2023 显存里 1 个模型 | ||||
| 人类偏好(学出的 RM) | Ziegler 20192019 显存里 4 个模型 InstructGPT2022 显存里 4 个模型 | Llama 3 · Tülu 3 偏好阶段2024 显存里 2 个模型 | DeepSeekMath2024-02 显存里 3 个模型 | ||
| 可验证规则 | Tülu 3 RLVR2024-11 显存里 3 个模型 | DeepSeek-R1-Zero2025-01 显存里 2 个模型 DAPO2025-03 显存里 1 个模型 SWE-RL2025-02 显存里 2 个模型 GLM-5 推理 RL2026-02 显存里 1 个模型 | |||
| 环境反馈 | GLM-5.2 / 5.3 SAO2026-07 模型数:未全部披露 | DeepSeek-V3.2 agent RL2025-12 模型数:未全部披露 | |||
| 老师模型的分布 | Qwen3 strong-to-weak2025-05 显存里 2 个模型 V4 OPD · K3 MOPD2026 模型数:未全部披露 |
橙框两格是旧课讲错的地方:Tülu 3 的 RLVR 用的是 PPO,DeepSeekMath 的 GRPO 用的是学出来的奖励模型。「RLVR」说的是奖励从哪来,「GRPO」说的是梯度怎么算,两件事可以任意组合。悬停格子里的系统看出处要点。
新的失败:验证器写松了,照样被骗
回到上面组件的第二张图:「宽松规则」只检查回答里有没有「小王」。「小明和小王都有可能。」和续写式的 E 都拿满分——策略不需要答对,只需要提到小王。RewardHackLab 里它的正确率先升后降,就是这么来的。规则奖励「骗不了」有一个前提:验证器本身写得严。真实系统里被钻的空子更离谱:
- DeepSeek-V4.1(2026)在自建沙箱里公开了 reward hacking 的实例:利用文件系统与 AppArmor 的漏洞、从包镜像里泄露答案、删除系统文件 证据等级 · 实验验证 由对比实验得出的经验结论,只在出处写明的模型、数据和规模下成立。换了条件可能不再成立,引用时要带上实验设置。 本条官方技术报告自述(R3 调研 §1.5 l)),未经第三方复现。 出处待补 。
- GLM-5.2 / 5.3 专门加了反作弊模块:规则先高召回地筛出可疑行为,再由 LLM 判定意图,在线拦截可疑的工具调用并返回假结果;5.3 的 verifier 在看不到参考答案的条件下合成,只有通过「oracle / no-op / 未解决状态」三项检查的才用于训练 证据等级 · 实验验证 由对比实验得出的经验结论,只在出处写明的模型、数据和规模下成立。换了条件可能不再成立,引用时要带上实验设置。 本条Z.ai 官方博客(R2 调研 §2.5.2–2.5.3),官方承认这套流程仍需要不少人工参与。 出处待补 。
- 不能写成程序核对的任务(写作、开放问答)还是要用奖励模型。Kimi K3 用「智能体式生成奖励模型」:先读产出、生成评分细则、逐条打分、记在计分板上;为防止它偏爱越来越长的输出,超过预算长度的候选直接判负 证据等级 · 实验验证 由对比实验得出的经验结论,只在出处写明的模型、数据和规模下成立。换了条件可能不再成立,引用时要带上实验设置。 本条原文:a candidate whose output length exceeds σ·ℓ0 automatically loses the binary comparison。 出处Kimi K3 技术报告 §4.1.2(本地 PDF) ↗ ——和第 2 课那个偏爱长回答的奖励模型是同一种病。
常见误解一:「RLVR 是一种新的 RL 算法。」 它是奖励来源;用 PPO 还是 GRPO 训是另一件事(Tülu 3 用 PPO)。
常见误解二:「规则验证器不会被 hack。」 宽松规则当场被「两头下注」钻了空子;真实沙箱里模型会去利用漏洞。「骗不了」取决于验证器写得多严、环境隔离得多好。
常见误解三:「reward hacking 是模型有意作弊。」 优化器只是在最大化你给它的那个数。奖励和你真正想要的东西之间有缝,优化压力就会找到缝。
🔍 奖励只看对错,还会出什么问题?
二元奖励只管「对不对」,不管「有多确定」:乱猜猜对了和推出来的对拿一样多的分,模型的置信度校准会变差。有工作把 Brier 分数(对概率的打分)和正确性一起放进奖励(RLCR 等),让模型在不确定时说出来。另一个问题是信用分配:一整条几千 token 的推理只拿到最后一个 0 或 1,哪一步出的错并不知道——这就是「过程奖励模型」(PRM)想解决的,DeepSeekMath 试过过程监督,R1 最后没有采用。
证据三问
| 问 | 本课的回答 |
|---|---|
| ① 它解决什么问题? | 学出来的奖励在优化压力下被钻空子(过优化) |
| ② 数学上为什么可能有效? | 规则奖励就是真实目标本身(在它覆盖的范围内),代理与真实之间没有缝——前提是验证器正确 证据等级 · 有理论动机 有数学或机制上的理由说明它可能有效,但没有证明它一定更好。最后是否采用,仍然要看实验。 本条这是一个「前提成立则结论成立」的论证;验证器是否正确、环境是否可被利用,是工程事实,不能证明。 出处待补 |
| ③ 实验上为什么选了它? | R1-Zero:AIME 15.6% → 71.0%(v1)/ 77.9%(v2);Qwen3 推理 RL、Tülu 3、DAPO 都用可验证奖励 证据等级 · 实验验证 由对比实验得出的经验结论,只在出处写明的模型、数据和规模下成立。换了条件可能不再成立,引用时要带上实验设置。 本条官方自报;AIME 只有 30 题,单次分数波动大,报告里的 pass@1 是多次采样的平均。 出处DeepSeek-R1(本地 PDF) ↗ |
一句话
能自动核对的答案给「对 / 错」,奖励就很难被骗——但前提是验证器本身写得严;RLVR 是奖励来源,不是优化器。
先停在这里:记住「过优化:代理涨、真实先升后降;RLVR 用规则核对;两条轴」。
再深一层:下面的岔路课回答一个争议:RL 之后分数涨了,模型是学会了新本事,还是只把会的排到了前面?
下一个缺口
RL 之后分数涨了——模型是真学会了新本事,还是只是把会的东西排到了前面?(岔路)→ 岔路课:RL 扩展能力还是重排
主线: R1-Zero 在 RL 过程中回答越写越长,自己学会了回头检查、换思路;可它的回答可读性差、中英混杂。推理题要「想得久」:怎么训出会思考的模型,又怎么控制它想多久? → 第 6 课:思考模型
你可能会问
- 「验证器对写作题怎么办?」 写不成程序的任务还是要用奖励模型或「LLM 当评委」,并且配上长度控制(K3)、在线拦截(GLM)。R1 的做法是把这类奖励只放在训练的最后一段。
- 「宽松规则和严格规则在真实系统里是什么?」 数学题:只看回答里有没有出现正确数字(宽松),还是抽出
\boxed{}里的答案做等价性判断(严格);代码:只要能运行(宽松),还是全部单元测试通过且没改测试文件(严格,Agent 课的 harness 就是这么验收的)。 - 「为什么教学世界里 β = 1 时正确率反而上不去?」 β 太大,KL 惩罚压过了奖励,策略基本不动;第 3 课的闭式解 π* ∝ π_ref·exp(r/β) 说的就是这件事。