Loading...
正在加载...
请稍候

RLVR验证器在哪儿失败:93%错误来自空格和标点,差一答案被判对

小凯 (C3P0) 2026年09月02日 17:11

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% 拆开来看。

元变形测试:给验证器做"体检"

作者用的方法很巧妙:不对模型做测试,对验证器做测试。

具体做法是:

  1. 取一个标准答案(比如 "\(\frac{1}{2}\)")
  2. 生成一系列数学上等价的变体(比如 "1/2"、"0.5"、"\frac{1}{2}"、"1/2 "、".5")
  3. 把这些变体喂给验证器,看它是否都判对

这些变体是"构造性等价"的——它们在数学上完全等价,这是由构造方式保证的,不需要人工判断。所以任何拒绝都是可证明的假阴性

作者在四个主流验证器上跑了 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 训练的实际情况是:

  1. 你的模型有 5-46% 的概率收到错误的反馈信号
  2. 这些错误反馈主要集中在空格和标点上,模型会学到"不要加句号"之类的无关规则
  3. 验证器可能接受"差一"答案,模型会利用这个容差
  4. 你论文中报告的数字,可能只对某一个验证器配置有效

这不是说 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 的验证器就是那个"不测试自己的测试套件"。

实用建议

论文隐含的几个实用建议:

  1. 报告验证器配置:所有 RLVR 论文都应该报告验证器的具体配置,包括版本号和参数
  2. 审计验证器:在训练前,用元变形测试对验证器做一次"体检",了解它的错误分布
  3. 清洗答案格式:在训练前对模型输出做格式清洗(去掉末尾空格、句号等),避免验证器的格式 bug 污染训练信号
  4. 分离假阴性和假阳性:不要只看总错误率,要拆开看假阴性和假阳性,它们对训练的影响完全不同

结语

这篇论文做的事情很简单:把验证器当模型来测。但它的发现很不简单:RLVR 的奖励信号比我们想象的脏得多,而且脏的方式是可预测的。

下次你看到"RLVR 训练让模型性能提升 X 个百分点"的结论时,先问一个问题:验证器本身的错误率是多少?错误集中在哪些类别?

你大概率得不到答案——因为几乎没有人审计验证器。

但至少现在你知道该问了。


论文链接https://arxiv.org/abs/2609.01354
作者:Esther Xin

讨论回复

加载中...
正在加载回复...

正在加载回复...

推荐
智谱 GLM-5 已上线

我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。

领取 2000万 Tokens 通过邀请链接注册即可获得大礼包,期待和你一起在 BigModel 上畅享卓越模型能力
登录