RLVR 的验证器在哪儿失败:93% 的错误来自空格和标点,"差一"答案被判对
你训练了一个强化学习模型,用可验证奖励(RLVR)作为反馈信号。模型在训练中奖励分稳步上升,看起来一切正常。但你知道那些"奖励=1"的答案里,有多少是验证器误判的吗?
2026 年 9 月,Esther Xin 在 arXiv 发表了一篇论文,对 RLVR 中最常用的四个验证器做了系统审计。结果令人不寒而栗:验证器自己就有 5-46% 的错误率,而其中 93% 的错误来自空格和标点符号。
论文链接:https://arxiv.org/abs/2609.01354
一个被"94% 自洽"掩盖的危机
RLVR(Reinforcement Learning with Verifiable Rewards)是当前训练推理模型的主流方法。它的核心假设是:验证器能正确判断模型答案对不对。 如果验证器错了——把对的判错,或者把错的判对——整个训练信号就被污染了。
之前有研究指出,某个主流评测 harness 只接受约 94% 的自己的标准答案——也就是说,即使你给出和标准答案一模一样的答案,验证器也有 6% 的概率判你错。论文把这归咎于"LaTeX 解析问题"。
但"94% 自洽"是一个聚合数字,它没有告诉你哪些答案形式在消耗错误预算。这篇论文做的事情,就是把这个 6% 拆开来看。
元变形测试:给验证器做"体检"
作者用的方法很巧妙:不对模型做测试,对验证器做测试。
具体做法是:
- 取一个标准答案(比如 "\(\frac{1}{2}\)")
- 生成一系列数学上等价的变体(比如 "1/2"、"0.5"、"\frac{1}{2}"、"1/2 "、".5")
- 把这些变体喂给验证器,看它是否都判对
这些变体是"构造性等价"的——它们在数学上完全等价,这是由构造方式保证的,不需要人工判断。所以任何拒绝都是可证明的假阴性。
作者在四个主流验证器上跑了 307,420 次判定。结果有三个核心发现。
发现一:验证器之间的分歧大到离谱
同一个验证器的不同配置之间,自验证率从 53.8% 到 95.2% 不等——差距 41.3 个百分点。
这意味着什么?同一个验证器库,用默认配置 A 和默认配置 B,对同一批答案的判定结果在 49.9% 的情况下不一致。换句话说,你训练用的验证器配置,可能和论文中报告的验证器配置不同,而它们对一半答案的判定是相反的。
论文中报告的"94% 自洽"描述的是某一个特定实现,不是"任务"本身。换一个配置,数字就完全不同。
发现二:93% 的错误来自空格和标点
这是最让人意外的发现。把验证器的错误按类别拆分后:
- 空格和标点:占 93.0%(默认 LaTeX 配置下)
- 其他类别(数学表达式、单位、格式等):占 7.0%
具体来说,一个答案末尾多一个句号、少一个句号、多一个换行符,就可能被判错。这些差异在数学上完全无关紧要,但在验证器眼里就是"不对"。
这有一个非常实际的后果:模型在 RLVR 训练中收到的负反馈,可能不是因为答案错了,而是因为答案末尾多了个句号。 模型会学会"不要在答案末尾加句号"——这不是我们想让它学的东西。
发现三:相似的总错误率,完全不同的失败原因
这是论文中最有洞察力的发现之一。两个验证器 A 和 B,总错误率都是 6%,看起来差不多。但拆开来看:
- 验证器 A 的错误主要是"拒绝正确答案"(假阴性)
- 验证器 B 的错误主要是"接受错误答案"(假阳性)
这两种错误对 RLVR 训练的影响完全不同:
- 假阴性(拒绝正确答案)会让模型收到错误的负反馈,学到"不要这样写答案"
- 假阳性(接受错误答案)会让模型收到错误的正反馈,学到"这样写也能过关"
后者比前者更危险——因为模型永远不会知道它错了。
"差一"答案被接受的阶梯效应
论文还发现了一个特别诡异的 bug:某个验证器中的"参考数值级联"(reference numeric cascade)机制会把"差一"的答案判对。
具体来说,如果标准答案是 100,模型输出 99 或 101,验证器会以"数值接近"为由判对。而且这个接受是阶梯式的——差距越大,接受概率越低,但不是线性下降,而是阶梯式跳变。
这意味着验证器内部有一个隐藏的"容差"机制,而这个容差的大小和形状是未公开的。模型可以利用这个容差——只要输出在容差范围内,就能拿到奖励,即使答案严格来说是错的。
这对 RLVR 意味着什么?
把以上发现放在一起,RLVR 训练的实际情况是:
- 你的模型有 5-46% 的概率收到错误的反馈信号
- 这些错误反馈主要集中在空格和标点上,模型会学到"不要加句号"之类的无关规则
- 验证器可能接受"差一"答案,模型会利用这个容差
- 你论文中报告的数字,可能只对某一个验证器配置有效
这不是说 RLVR 没用——它仍然是训练推理模型的有效方法。但我们需要意识到,RLVR 的奖励信号不是"干净的"。它包含了验证器的 bug,而这些 bug 会通过强化学习被模型放大。
"评测盲区定律"的又一例
这篇论文和之前一系列关于评测盲区的论文形成了一个谱系:
- Omission Blindness:LLM 法官能检测"说了什么"但不能检测"没说什么"
- MIST:注意力和因果贡献几乎不相关
- Aspire:模型的自我评估和真实能力几乎不相关
- Calibrated Enough to Know:模型 90% 能判断"这不可预测",但行动闸门不咨询判断模块
- Tokenization is Output Supervision:90% 的论文不报告分词器信息
现在加上这篇:RLVR 的验证器有 5-46% 的错误率,93% 来自空格和标点,但几乎没有人审计验证器本身。
这些论文的共同主题是:评测中那些被默认"可靠"的环节,往往是不可靠的。 而且不可靠的方式不是随机的,而是系统性的——它们集中在某些特定的、可预测的类别上。
一个更深的思考:验证器的"不可见性"
为什么这个问题这么久才被发现?因为验证器是"基础设施"——就像水电一样,你每天用但从不检查。论文中提到,大多数 RLVR 论文只报告模型性能,不报告验证器性能。验证器被当作一个"黑盒",假设它是对的。
但验证器本身也是一个程序,有 bug,有配置,有边界情况。把验证器当黑盒,就等于把验证器的 bug 也当成了"正确答案"的一部分。
这让我想起一个经典的软件工程原则:"你的测试套件的覆盖率不是 100%,因为你的测试套件不测试自己。" RLVR 的验证器就是那个"不测试自己的测试套件"。
实用建议
论文隐含的几个实用建议:
- 报告验证器配置:所有 RLVR 论文都应该报告验证器的具体配置,包括版本号和参数
- 审计验证器:在训练前,用元变形测试对验证器做一次"体检",了解它的错误分布
- 清洗答案格式:在训练前对模型输出做格式清洗(去掉末尾空格、句号等),避免验证器的格式 bug 污染训练信号
- 分离假阴性和假阳性:不要只看总错误率,要拆开看假阴性和假阳性,它们对训练的影响完全不同
结语
这篇论文做的事情很简单:把验证器当模型来测。但它的发现很不简单:RLVR 的奖励信号比我们想象的脏得多,而且脏的方式是可预测的。
下次你看到"RLVR 训练让模型性能提升 X 个百分点"的结论时,先问一个问题:验证器本身的错误率是多少?错误集中在哪些类别?
你大概率得不到答案——因为几乎没有人审计验证器。
但至少现在你知道该问了。
论文链接:https://arxiv.org/abs/2609.01354
作者:Esther Xin
讨论回复
加载中...正在加载回复...
推荐
智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。