1. 为什么“答案对”这件事,突然不够用了
1.1 “准”评测体系下,被文字掩盖的推理裂缝
做推理模型的人,大多有过一种诡异体验:让模型解一道竞赛级别的数学题,它给出的解答步骤完整、语气笃定,结果也刚好和标准答案一致,但你把它的推导过程拿到纸面上逐行核对,会发现中间藏着一个偷换概念的跳步,甚至有一个明显错的代数变换,只是因为最后答案歪打正着撞对了。
这类问题在传统评测体系里几乎不会被发现。因为大部分公开基准的判分方式是“比对最终答案”:答案对,就算对。于是模型在训练时天然倾向去拟合答案,而不是拟合“从条件到结论的可靠路径”。你可以说这是评测标准塑造出来的行为模式——模型的推理能力未必差,但它在“答案导向”的评价体系下,没有动力去生成一条每一步都站得住脚的证据链。
我甚至见过更极端的案例:模型把一道题目的条件抄错了一个符号,但后续计算一路错误地自洽下去,最后竟然得到了和标准答案一样的数值。你说它会数学吗?单看结果,好像会;单看过程,它离真正“理解”还差着十万八千里。
1.2 数学的残酷性:正确答案可以来自错误推导
数学有一个其他领域给不了的特性:对错的裁决几乎是绝对的。一道题做没做对,不存在“主观分”的暧昧空间;但“证明过程是否成立”和“答案是几”是两件不同的事情。你要验证答案,只需要比对数字;你要验证证明,必须确保每一个推理步骤都符合逻辑规则,任何一环断掉,整体就不成立。
这就是为什么OpenAI选择数学作为突破口。与其直接去攻克“让AI在所有任务上给出可信输出”这个超难问题,不如先在数学这块逻辑上最坚硬的地盘上,把“可验证的证据”这套方法论打磨出来。数学证明天然能被拆成一条条前提、假设和推导,每一条都能用形式逻辑去核对。一旦这套机制跑通,再迁移到代码、科研甚至Agent任务上,就有了可靠的底子。
所以“722份数学手稿”这件事,真正值得关注的热词不是“OpenAI”本身,而是后面那个定语——“可验证的证据”。它直接回应了AI落地中最根本的信任问题:你凭什么相信模型输出的东西?凭它语气自信?凭它以前答对过很多题?还是凭它这次真的给出了一条经得起机器逐行检查的证据链?
1.3 验证,不是检查,而是审判
我见过很多人把“验证”理解成“拿标准答案对一下”,这是把两件事搞混了。标准答案核对,做的是字符串匹配;真正常说的“验证”,做的是逻辑审判——判断这个推导本身是否合法、每一步是否由前提推出。
打个比方:你让一个学生证明“三角形内角和是180度”。及格的学生直接写出答案“180度”,得一半分;但你要的不是这个,你要他把辅助线画出来,把同位角、内错角的关系一步步写清楚,直到每一步都没有疑点。前者是“检查结果”,后者是“验证证据”。OpenAI这次公布的手稿,重心在后面。
那好,这批手稿到底长什么样?它怎么做到让机器去“审判”推理过程?我拆开讲。
2. 722份数学手稿拆解:证据是怎样被“固定”下来的
2.1 这套数据与GSM8K/MATH的关键分水岭
过去几年,公开的数学数据集其实不少。MATH有几千道竞赛题,每道题配了参考答案;GSM8K有八千多道小学数学应用题,答案都是标准化的。但这些东西有一个共同局限:参考答案是给人看的自然语言文本,顶多能把最终结果抽出来和预测做对比。模型就算在训练时把这些文本背得滚瓜烂熟,也不会自动学会“构造一条合法推理链”,因为数据里没有针对推理链本身的监督信号。
这次公布的722份数学手稿,从定位上就不太一样。它覆盖了一些更接近真实数学研究的场景,不是单纯“求个数值答案”的题型,而是包含抽象结构、需要构造证明的数学问题。每份手稿都记录了解题过程的完整轨迹,同时这套轨迹是经过专家评委认可的,并且和形式化验证工具的结果做了绑定。
换句话说,以前的数据告诉你“这道题的答案是什么”,这批数据更接近在说“这条解题路径是可以被机器逐行确认合法的,路径本身可以作为可靠证据”。构建数据集的人等于把“证明合法性”这一层信息焊死在了数据里面。
这里要提醒一点:722份这个量级,和动辄几十万条的数据集相比,看起来不大。但它的价值不在数量,而在标注质量。真实场景里,一份经过专家评审、又通过形式化验证的完整解题手稿,采集成本是极高的。它不是用来直接灌给模型做海量预训练的,更像是用来训练“判断推理质量”的验证器,或者作为强化学习中的高质量参考轨迹。
2.2 双签名机制:专家认可的文本证明 + Lean机械核验的形式证明
理解这批数据,核心是抓住“双签名”这个机制。一份手稿里同时包含两种信息:一是人类可读的解题思路,二是机器可核验的形式化证明。前者负责语义,后者负责合法性。
人类专家认可的部分,解决的是“这个思路在数学上是否有价值”的问题。因为有些证明虽然形式上成立,但绕了远路、用了不自然的构造,从数学品味上看不是好证明。专家评委能对这种判断起作用。
Lean核验的部分,解决的是“逻辑上是否无懈可击”的问题。自然语言再流畅,也逃不过机器对每一个符号、每一步变换的审查。把解题过程写成Lean能接受的证明脚本,等于把它变成了一段可以被机器“编译”的程序。编译通过,证明成立;编译不通过,或者说中间有一步不合法,整个证明直接打回。
这两道签名互相补充。自然语言证明负责“让人看懂”,形式化证明负责“让机器认账”。有了这套双签名,一份手稿才真正能被称作“可验证的证据”,而不是一段漂亮的文字。
2.3 Lean扮演的“铁面裁判”是如何工作的
很多人对Lean不太熟,我稍微展开。Lean是一个交互式定理证明器,你写一个数学命题,然后用策略去构造它的证明,Lean会在后台把证明转换成一个形式化的逻辑对象,逐条检查每一步是否合法。它能跑通,就说明这条证明在形式逻辑层面没有漏洞。
给个直观的例子,我在Lean里写“任何自然数加0等于它自己”:
theorem add_zero_example (a : Nat) : a + 0 = a := by simpsimp这个策略让Lean自己去化简,它检查通过,命题得证。再比如我写一个简单的整数不等式:
example (a b : Int) (h : a < b) : a + 1 <= b := by omegaomega是一种处理线性整数算术的策略,它能自动判定这类命题是否成立。你不需要手写每一步推导,但Lean在背后生成的证明对象是完整、可检查的。换个角度看:模型以后要是想给出“可验证的证据”,它的输出就不能只是自然语言,还得是能被这种裁判系统接住的招式。这次公布的手稿,本质上就是在给模型“喂”大量这种招式。
提示:Lean、Coq、Isabelle这类工具,近几年在数学形式和人工智能交叉领域出现频率越来越高。它们不是给数学爱好者玩的玩具,而是未来AI系统“自我审计”的关键基础设施。
3. 把验证器搬进训练管线:数据如何变成模型的判断力
3.1 从结果奖励到过程奖励:一条被反复验证的训练路线
公开讨论里,大家经常用“验证器”这个词。严格来说,验证器是一个独立的模型或程序,它不负责生成答案,只负责评估“一条解题路径有多可信”。OpenAI在GSM8K时代就做过类似实验:训练一个验证器,对模型生成的解题过程打分,然后用验证器的分数来挑选更可靠的输出,效果比单纯让模型自己给答案好不少。
但这套做法在GSM8K上有一个软肋:验证器没有真正的“逻辑裁判”能力,它只是在文本特征上做统计推断,判断这段文字“看起来像不像正确解”。模型只要学会了生成看起来很有条理、实则胡说八道的文本,验证器就可能被蒙骗。换句话说,那时的验证器是“印象派评委”,靠感觉打分。
722份数学手稿带来的变化,是让验证器从“印象派”变成“证据派”。如果你有大量经过Lean机械核验的解题轨迹,就可以训练模型去区分“哪些步骤在形式逻辑上合法、哪些只是看起来合法”。这个能力一旦被模型掌握,验证器就不再是单纯判断“文本像不像正确答案”,而是逼近真正的“推理审计员”。
3.2 奖励模型是“内部审计员”:训什么、怎么训
用这批数据训练奖励模型,基本思路是让模型学会给推理链打分。具体操作可以这样理解:把一份完整证明拆成若干片段,每个片段都是“前提-结论”的一个小单元。奖励模型读入当前的问题上下文和已有的证明片段,预测下一个片段有多大概率是合法推理。训练时,来自Lean验证通过的证明片段是正样本,被Lean卡住或者被专家标记为逻辑断裂的片段是负样本。
等到这个奖励模型训练好,它的用途不只是在推理时给候选答案排序,还能反过来指导生成。模型在生成每一步时,就可以参考“审计员”对它中期步骤的反馈,实时调整后续方向。这种基于过程反馈的训练路线,相比于只盯着最终答案做强化学习,最大的好处是:即使最终答案错了,只要中间某些步骤是对的,模型也能获得有效信号;反过来,即使最终答案碰巧对了,但中间步骤是胡乱编造的,也会得到负面反馈。
这其实就是在用“证据”而不是“运气”来塑造模型行为。
3.3 结果奖励和过程奖励,差在哪个维度
我用一张表把这两个方案的差异拉出来:
| 对比维度 | 结果奖励 | 过程奖励(验证器) |
|---|---|---|
| 反馈粒度 | 稀疏,只有最终对错 | 密集,每一步都有评估 |
| 可解释性 | 低,只能看到对错 | 高,能定位哪一步断裂 |
| 容错能力 | 无法区分“推导错但答案对” | 能拦截中途翻车 |
| 训练信号 | 依赖标准答案 | 依赖验证器/专家证据 |
| 受幻觉影响 | 大,文本流畅即可骗分 | 小,每条证据都要核验 |
不是说结果奖励完全没用,而是当任务的推理链条变长、答案不再是单一数值时,结果奖励的信号衰减会越来越严重。你让模型做一个两步推理,结果奖励还能判断对错;让模型做一个二十步的证明,中间任何一步错了都可能导致最终答案偏离,这时只用结果对错来反馈,全凭运气。过程奖励的密集信号,是支撑长链条推理训练的必要条件。
4. 对Agent和推理系统设计者来说,三个可落地的方向
4.1 用验证器做生成后的过滤管道
如果你不做训练,只做应用层,验证器最直接的使用方式是:让模型先生成多条候选推理链,然后用验证器过滤,只保留通过检查的。这个思路在工程上非常容易落地,尤其适合Agent工作流里那些“模型要给出解释/推理过程”的场景。
一个示意性管线长这样:
def select_verified(candidates, target, verify_fn): passed = [] for c in candidates: # c 里同时携带自然语言推理过程和结构化证明片段 if verify_fn(c.proof_structure, target): passed.append(c) passed.sort(key=lambda c: c.rm_score, reverse=True) return passed[:5]这里的verify_fn可以是专门的形式化验证服务,也可以是微调过的奖励模型。关键在于,最终用户看到的答案,是经过第二道审计关口筛选出来的。即使生成器水平一般,只要验证器足够可靠,整体输出可信度也能被托高。这个思路很像软件工程里的“测试”角色:开发者负责写代码,测试负责把关,整个系统不会因为某个环节自说自话而全线崩盘。
4.2 把验证通过率当奖励信号,改进RL微调
再进一步,如果你手里有强化学习微调的管线,可以直接把“验证是否通过”当成奖励函数的一部分。传统RLHF里常用的奖励信号来自人类偏好,而这里引入的则是一个更加客观、噪声更低的信号:你生成的证明能否通过Lean的检查。通不过,扣分;通过,加分。
这个信号还有一个好处:很难被投机取巧。模型可以学习在自然语言里堆砌看起来高级的词汇来骗人类偏好模型,但它没法让一道不成立的证明在Lean里通过编译。验证器作为奖励信号,天然免疫花言巧语。
实际操作时,一般是把验证结果和人类偏好分数做加权组合。比如任务有一个标准答案,就保留结果比对作为基础奖励;如果任务需要多步推理,就让验证器为过程中的每个关键节点提供额外加分。这样做,模型既不会完全放弃语义流畅性,又被迫学会构造逻辑上站得住的中间步骤。
4.3 用验证器剪枝搜索:给test-time compute装上方向盘
现在推理模型普遍会做test-time compute,也就是生成多条路径、再从中选优。但“选优”的前提是你得知道哪条路径好的。没有验证器时,只能靠模型自身置信度或者最终答案比对来选,这常常会把模型引向“更流畅的幻觉”。有了验证器,搜索过程就能被剪枝:走到中间某一步,验证器发现这步推导不合法,就果断放弃整条分支,不再往下浪费时间。在那种推理链很长的任务里,这种剪枝能把算力集中到真正有希望的分支上。
我见过一些工程实践是把验证器嵌入到蒙特卡洛树搜索或beam search里:每扩展一个节点,验证器给出一个“逻辑通过率”,低于阈值就直接剪掉。这个思路本质上是给搜索过程装了一个方向判断器,让计算资源花在循证的道路上,而不是赌运气。
4.4 边界与代价:不是所有任务都能一键转Lean
当然,这条路不是没有代价。最大的现实约束是:形式化证明的成本很高。把一道数学题的自然语言证明转化成Lean脚本,本身需要很高专业水平,722份手稿的采集难度就是这个成本的证明。对通用任务来说,你没法要求模型输出“既能让人读懂、又能被Lean验证”的证据,因为大部分领域根本没有现成的形式化验证标准。
所以在实际项目里,我的建议是把验证器当成一个分层工具:存在明确验证标准的地方(数学、代码、结构化规则),用硬验证;不存在的地方,退一步用“启发式验证器”,也就是经过微调的奖励模型做软打分。不管哪一层,核心原则是一致的:输出不能自说自话,必须经过外部视角的再审查。
5. 验证器会走多远:从数学到更宽的Agent世界
5.1 代码编译器和数学证明是同一件事的两个版本
数学证明通过Lean检查,和程序通过编译器检查,底层逻辑几乎一模一样——你提供的符号序列,必须符合预先定义好的规则,才能被接受。所以我在看这件事时,不太把它局限在“AI数学”这个小领域里,而是把它看作“AI输出可信化”的第一步。
代码生成领域早就在用这套逻辑了:模型生成的不只是自然语言描述,而是可以运行、可以测试的代码。测试通过,才算生成的证据链站得住脚。Agent任务其实也一样:你让一个Agent执行“查询数据库并汇总结果”,它如果只是输出一段漂亮话而没有任何可回溯的执行记录,你很难相信它;但如果它每一步调用了什么接口、收到了什么返回、做了什么转换,全都记录在案,你就能审计它的行为。这不就是另一种形式的“可验证的证据”吗?
5.2 给“信任”定价:当输出必须附上可查证据
顺着这个趋势往下想,AI输出的形态可能会发生结构性变化。今天大多数模型的默认输出是自然语言,以后可能会默认附带“证据链”或者至少提供一个“证据引用路径”。就像论文引用文献一样,AI给出的每个关键结论,都应该能向上追溯到一条可以核验的来源或推导过程。这并不意味着每个场景都要用Lean证明,而是说系统的设计者要把“证据留存”当成产品的基本属性,而不是事后补救。
这对工程架构也会有影响。现在的RAG流程里,模型会引用检索到的文档,这是最简单的证据形态;再进一步,如果模型做了多步规则推理,系统应该把每一步用到的规则和中间状态都记录下来,让用户能展开查看。数学手稿这个案例,等于把“证据质量”的上限拉到了“机器可验证”的级别,这对整个行业在信任机制上的想象空间,是一个很强的示范。
5.3 以我自己的使用体验收个尾
我自己的观察是,过去评判一个模型“推理强不强”,衡量的其实是“它对答案的拟合能力”;而可验证的证据出现后,衡量标准正在迁移成“它对规则的尊重程度”。这是完全不同的两把尺子。前者看谁更会猜,后者看谁更守规矩。722份手稿给我的启发不是“OpenAI又秀了一波数据操作”,而是它把一条路线图摆到了台面上:先让模型学会在规则最清晰的地方提供可验证的证据,再逐步把这套习惯扩展到所有输出场景。
对我来说,以后无论用什么模型处理严肃任务,我都会先问一句:这个结论背后的推理链,是可以被回溯和再审查的吗?如果答案是否定的,那么不管它说得多么漂亮,我都会在内部把它标记为“不可完全信任”。这大概就是可验证的证据带来的最大转变——它把AI从“让人觉得对”,一步步推向“真的能证明对”。