RLVR 把奖励简化成 0/1,看起来最干净,实际埋了四个反直觉的坑: verifier 的盲点可以用 Youden's J 量化验收、 pass@8 的标准误会随 k 变化(k=4 时 p̂=0.5 的置信区间几乎等于没测)、 GRPO 在全对 / 全错组上 advantage 恒为 0、 稀有的正确解法反而拿不到训练信号。 四个 Tab 各对应一条,J、CI、advantage、credit 分配全部在浏览器里真算; 算不了的明确标出是文献值还是教学模型。

✅verifier 的四条硬要求(§21.2.2)

📖 §21.2.2
正确性
真的能判断对错
§21.2.2 —— 判断本身必须对,否则整个 RLVR 建立在错误的地基上
鲁棒性
不能被 reward hacking 骗过
§21.2.2 —— 模型的梯度下降最擅长钻 reward 与真实能力之间的缝
效率
单个验证 < 1 秒
§21.2.2 —— rollout 时调用频繁,慢一点整条流水线就堵住
可扩展
能批量验证 N=16-64 个 rollout
§21.2.2 —— 一次 GRPO step 要判一整组,不是一条
状态灯按当前选择的 verifier 实现实时判定:字符串类实现天然满足效率与可扩展,但正确性不过关; 符号类实现正确性过关,但要盯住单条验证耗时与批量吞吐。

🧩五类可验证任务 · 共享「抽取 → 判定 → 打分」骨架(§21.2.3-21.2.8)

📖 §21.2.8 原表
抽取
最终答案表达式
判定
sympy 符号等价
打分
二值
§21.2.3 · GSM8K / MATH / NuminaMath / AMC-AIME
设共 x 个。列方程 3x + 5 = 20,得 x = 5。答案:51.00
标准:5 · 抽取干净,直接判对
……因此答案是 5.01.00
标准:5 · §21.4.1 —— 2 vs 2.0 类型不同但数值相同,字符串匹配会误杀
答案是 1/21.00
标准:0.5 · §21.4.1 —— 真等价,纯字符串匹配必挂
答案是 \frac{\sqrt{2}}{2}1.00
标准:\frac{1}{\sqrt{2}} · §21.4.1 点名边界:连默认化简路径都可能误判,需要显式有理化
答案是 -2 或 21.00
标准:{2, -2} · §21.4.3 多解坑 —— 集合与枚举是同一个语义
答案是 60.00
标准:5 · 真错,判 0

⚖⭐ Youden's J 实算台 —— verifier 质量的单标量验收

🧮 TPR/FPR/J 真算📖 J > 0.5 合格线
📖§21.2.2:用 Youden's J = TPR − FPR 作为 verifier 质量的单标量指标。 J > 0 时 GRPO 学习成功(噪声只影响收敛速率,不改变最终命运),J < 0 时学习退化; 「足够好」的 verifier 至少需要 J > 0.5(本章要点回顾第 4 条)。
探针集:gold = √2/2(数值 0.70710678) · 20 条「正确但表述不同」+ 20 条「错误但表述接近」。练习 1 的规格照 §21 动手环节原样实现。
归一化(去空格 / 大小写 / \dfrac→\frac)后要求字面全等。
§21.4.1 —— 1/2 ≠ 0.5
数值容差(影响 numeric / hybrid 两条路线)1e-3
容差越松,TPR 越高但 FPR 也越高;越紧则两头一起掉。只有 numeric / hybrid 会读这个值。
TPR(正确解的召回)
0.10
2 / 20
FPR(错误解的误收)
0.00
0 / 20
J = TPR − FPR
0.10
🟡 能学习但偏弱(0 < J ≤ 0.5)
六条实现横向对照(当前容差 1e-3)
实现TPRFPRJ判定
有理化 + 数值兜底0.950.000.95🟢
数值容差1.000.100.90🟢
sympy + 显式有理化0.700.000.70🟢
sympy simplify(默认路径)0.500.000.50🟡
字符串精确匹配0.100.000.10🟡
子串包含0.150.20−0.05🔴
🧮把实现从「子串包含 / 字符串精确」切到「sympy + 显式有理化」,可以亲眼看到 J 从 负值 翻到 0.7 上下 —— 这正是 §21.4.1 说的「连标准库都会错」的边界。
⚠ 范围限定:本探针集的 gold 是不含变量的常数,因此「数值容差」表现偏强。 一旦 gold 含变量(如 (x+1)² 与 x²+2x+1),数值路线无法求值、J 会直接塌到 0 —— 本工具未覆盖该情形。
20 条「正确但表述不同」
判1√2/2最简根式形式
判0\frac{\sqrt{2}}{2}LaTeX 分数
判01/√2分母带根号 —— 未有理化时与 gold 不同键
判0\frac{1}{\sqrt{2}}LaTeX 版 1/√2
判01/sqrt(2)ASCII 版 1/√2
判00.7071四位小数(误差 6.8e-6)
判00.707三位小数(误差 1.07e-4)
判00.70711五位小数
判00.707107六位小数
判00.70710678八位小数
判02√2/4需约分 2/4 → 1/2
判04√2/8需约分 4/8 → 1/2
判0√8/4√8 = 2√2,需提平方因子
判0sqrt(2)/2ASCII 根式
判1√2 / 2带空格
判0(√2)/2多余括号
判0\dfrac{\sqrt{2}}{2}\dfrac 与 \frac 需归一
判01.41421356/2小数商 —— 符号路径在这里失效
判0√2/2.0分母 2.0(§21.4.1 的 2 vs 2.0)
判02/(2√2)2/(2√2) = 1/√2,需有理化
20 条「错误但表述接近」
判0√2/4差一半
判02/√2= √2,翻倍
判0√2忘了除以 2
判00.71两位小数(误差 2.9e-3)
判00.700误差 7.1e-4
判00.72误差 1.3e-2
判01/2经典漏掉根号
判0√2/3分母错
判02√2多乘 2
判00.7一位小数(误差 7.1e-4)
判01.414/2误差仅 1.07e-4 —— 松容差会放过它
判0√2/2 + 1/2含 gold 子串 —— 子串包含匹配会误收
判03/40.75
判0√3/2根号里错
判00.75误差 4.3e-2
判0√2/2.5分母 2.5
判0√8/2= √2
判0√2/2 + √2/2= √2,且含 gold 子串
判02·√2/2= √2,且含 gold 子串
判00.7075误差 3.9e-4 —— 容差松于 5e-4 就漏

🕳八类 verifier 坑:表现 → 后果 → 修法(§21.4)

📖 §21.4
表现
√2/2 与 1/√2、1/2 与 0.5 被判为不等
后果
正确解被静默判错,模型学会输出 verifier 偏好的表述形式 —— 一种隐蔽的 reward hacking
修法
sympy 的 simplify(a−b)==0,并对分母显式有理化(radsimp)预处理
⏱沙箱坑挂原文硬约束:沙箱必须有超时(10 秒)—— 死循环会卡死 rollout;另两条是限内存 512MB、无网络(§21.4.2)。

🔀Cross-Verifier 面板(§21.4.4)

🧮 不一致率真算📖 1% 分歧需人审
样本数
12
关键 prompt 抽验
不一致样本
10
主副 verifier 结论不同
不一致率
83.3%
原文经验值:约 1%
rollout主 verifier副 verifier分歧对应坑
答案 \frac{1}{\sqrt{2}}红绿⚠数学等价坑
def f(x): return x # 未覆盖负输入绿红⚠边界与退化输入
import requests; requests.get(...)绿红⚠沙箱隔离坑
x = ±2(标准答案只列了 2)红绿⚠多解坑
随机种子未固定,二次验证结果不同绿红⚠随机性与精度
直接用 prompt 里泄漏的答案作答绿红⚠答案泄漏
推理 5 步全对,结论抄成邻题答案绿红⚠推理与答案不一致
import pandas(沙箱无此包)红红—依赖未声明第三方包
答案 0.7071红绿⚠数学等价坑
assert True 通过全部测试绿红⚠沙箱隔离坑
答案 5.0(标准答案 5)红绿⚠数学等价坑
空输入触发 IndexError红红—边界与退化输入
⚠本面板的不一致率(12 条里 10 条)远高于原文的 1%, 因为样本是刻意挑出来的分歧案例,用来暴露八类坑 —— 不是对真实分布的估计。 §21.4.4 的 1% 才是工程上的经验值。
内容参考 《AI 数据全书》第 21 章 §21.2 / §21.4

这个工具里哪些数字是真的

📖 文献值(引自原书,非本工具实算)
  • · Youden's J > 0.5 合格线、J > 0 / J < 0 的学习命运判据
  • · verifier 四条硬要求(含「单个验证 < 1 秒」「批量 N=16-64」)
  • · pass@8 分桶表 10 / 20 / 40 / 20 / 10 与 solve rate 20-50% 最佳区
  • · 关键参数表全部取值:N=16、temperature 0.7、β 0.001-0.01、max_tokens 8192-32768、lr 1e-6~1e-5
  • · VIGOR 2.3× / 1.49× / +3.4pp(arXiv:2607.22002,2026-07-24)、省 30-57% 预算
  • · Cue-GRPO 的 Qwen2.5-Math-7B 与 Llama-3.1-8B-Instruct 验证(arXiv:2608.03467,2026-08-04)
  • · HarmRLVR 64 条 prompt / 96.01% / 4.94 分(arXiv:2510.15499,2025-10-17,ACL 2026)
  • · Spurious Rewards +27 / +25 / +21 / +18%(arXiv:2506.10947)
  • · 人审 < 80% 停止训练、沙箱超时 10 秒 / 限内存 512MB / 无网络
  • · 4-gram 去重阈值 ≥ 0.6;Cross-Verifier 约 1% 分歧需人审
🧮 浏览器内真算
  • · 二项采样与 p̂、方差、标准误、95% Wald 区间
  • · Youden's J:TPR / FPR 逐条探针判定(含最小化根式规范化引擎)
  • · GRPO 组内 mean / std / z-score advantage 与退化检测
  • · 分桶直方图、TVD 总变差距离、黄金三问判定
  • · 4-gram 多样性(按字切)、簇占比、等权 vs 稀有度加权的 credit 分配
  • · 突增检测的 z-score 与命中 / 漏报 / 误报计数
  • · 熵坍缩每一轮的 reward 采样(仅 p 轨迹是教学模型)
  • · VIGOR 自适应预算分配的方差贪心过程与估计误差
⚠ 教学模型 / 示意值
  • · 60 道题的隐含真实通过率 p(默认隐藏,可揭示)
  • · reward 突增序列、解法簇频次与标签、reward 序列的突增段位置
  • · 熵坍缩的 p 轨迹与坍缩速率、VIGOR 的 prompt 通过率分布
  • · Cross-Verifier 样本集是刻意挑出的分歧案例,不一致率不代表真实分布
  • · On-policy「可容忍 staleness」随 β 的映射为教学拟合函数
⚠ 本工具不调用任何 sympy / LLM / 后端服务:Tab ① 的符号判定是一个自实现的最小根式规范化引擎 (把表达式化到 Q[√r] 上做既约键比较),用来忠实复现 §21.4.1 描述的「默认化简路径会漏判 1/√2、 显式有理化之后才判对」这一边界,不等于真实 sympy 的行为。 Tab ① 的探针集 gold 是不含变量的常数,所以「数值容差」路线表现偏强;含变量的 gold 会让数值路线直接失效,本工具未覆盖。