Token Lab搜索

← RL 知识库
RL / 6 OF 8

GRPO、可验证奖励与推理

理解结果信号如何强化成功解题行为。

学习指南与本课目录LEARNING CONTRACT

理解 → 实现 → 研究

目标:解释本课机制、复现一个例子、测试一个失败案例。读完不自动代表掌握。

  • 理解层:写明假设、形状/单位和一个反例。
  • 实现层:复算数值例子并检查边界。
  • 研究层:在匹配预算下比较一个替代方法。

理解机制

针对一个 prompt 采样一组回答,比较奖励。在讨论的设置中,组内相对归一化可构造 advantage,而不需要独立学习的价值模型。可执行测试或数学检查等可验证奖励提供可扩展反馈,但仅覆盖 verifier 真正检查的范围。需区分 R1-Zero 与 R1 多阶段训练。

Text / 原始公式
Âᵢ=(rᵢ−mean(r_group))/(std(r_group)+ε)
Training reward ≠ independent held-out capability
Equal rewards → zero centered signal

机制图与逐步推导

为同一 prompt 采样回答 → 验证并评分结果 → 在组内归一化 → 更新,评价留出任务
原创机制示意图,按从上到下顺序阅读。 SVG ↓
符号与假设
符号含义
rᵢ采样组中第 i 个回答的奖励
μ, σ组内均值及明确约定的标准差
Âᵢ相对归一化信号,并非绝对质量分数
  1. [0,0,1,1] 的 μ,总体 σ。忽略微小稳定项,中心化和缩放得到 [−1,−1,1,1]。
  2. 最后奖励改为 2 时,μ、σ≈0.829156,advantage 约为 [−0.904534,−0.904534,0.301511,1.507557]。
  3. 全部奖励为 1 时,中心化使分子全为零。ε 防止除零,但不会创造学习对比信号。应审查奖励饱和与组内多样性。
实验检查点

记录 verifier 行为与假阳性,更多推理 token 或奖励不是推理改善的独立证据。

LOCAL / SYNTHETIC / INTERACTIVE

改变一个变量,解释结果为什么变。

原创教学计算,并非论文 benchmark 复现。条形在面板内相对缩放,具体数值与单位以标注为准。

原创练习与分析

归一化 [0,0,1,1],advantage 约为 [−1,−1,1,1]。换成 [1,1,1,1] 时组内不再有对比信号。构造能通过格式检查却答案错误的 verifier 对抗例,再加入独立正确性检查。

更长推理文本不是能力指标。归因于训练前,应控制测试时 token、采样次数与 verifier 泄漏。

RL 是创造新推理能力,还是激发现有能力?

仅凭 benchmark 提升无法决定。需比较计算量匹配的基座与训练模型,分析成功轨迹覆盖,并测试真正留出任务。只陈述证据支持的较窄结论。

阅读依据与后续实践

DeepSeek-R1, pinned v1 ↗
MATHEMATICAL REVIEW · 2026-10-26

假设、参考实现与验收

组内归一化使用总体方差(除以 G)。奖励相同消除中心化相对信号,不一定消除含 KL 的完整目标的全部梯度;本实验不复现完整 GRPO 训练。

已复核公式条件、单位及算例。实现隔离一个数值机制,不训练完整策略,也不控制真实硬件。

运行前:预测一个边界情况

此处精确值忽略 ε;全部奖励相同时必须处理零方差。

提示:隔离假设

固定基线输入,只改变一个参数或边界;同时比较数值与声明单位。单例通过仅验证该样例。

最小可运行算例

将算例及所链接模块保存在同一目录。使用 Node.js 22 或更高版本,然后运行 node grpo-verifiable.mjs. 无需第三方运行依赖。

const solve=()=>{
const r=[0,0,1,1], mean=r.reduce((a,b)=>a+b)/r.length;
const sd=Math.sqrt(r.reduce((s,x)=>s+(x-mean)**2,0)/r.length);
return r.map(x=>(x-mean)/sd);
};
const actual=solve();
const expected=[-1,-1,1,1];
if(JSON.stringify(actual)===JSON.stringify(expected)){console.log('PASS',actual)}else{
const a=[actual].flat(), b=[expected].flat();
if(a.length!==b.length||a.some((v,i)=>!Number.isFinite(v)||Math.abs(v-b[i])>1e-10))throw Error('Numerical mismatch');
console.log('PASS within 1e-10',actual);
}
参考输出——先预测再展开
[
  -1,
  -1,
  1,
  1
]

测试与迁移

此处精确值忽略 ε;全部奖励相同时必须处理零方差。

在下方笔记记录输入、代码版本、期望值和实测值;再构造违反上述假设的反例,解释原结论为何不再成立。

下载完整代码包(.tar.gz) · 完整参考代码与回归检查

预测、检验与证据记录

展开答案前先预测一个结果;练习后记录差异和迁移测试。记录仅存本地,在不同语言版本间共用。

打开记录/导出/清除 →

数学复核范围逐篇记录,不代表完成论文实证复现;可在笔记中记录疑似错误。 复核范围