大语言模型在数学推理上的表现持续改进——AIME 满分、GSM8K 接近完美……但有一个根本性的问题始终没有解决:你怎么知道模型的答案是真的对了,而不是恰好猜中了?
这个问题在高风险场景(教育评估、工程计算、科学研究)中至关重要。一个”看起来很有信心”但实际上在胡说的数学推理系统,比没有这个系统更危险。
2026 年 6 月,来自 cs.AI 的 arXiv:2606.00671 提出了 AXIOM(A Trust-First Neuro-Symbolic Execution Architecture for Verifiable Mathematical Reasoning),试图从架构层面解决这个问题:不是让 LLM 变得更准确,而是让系统能够知道自己什么时候是可信的。
核心思路:重新定位 LLM 的角色
AXIOM 的出发点是一个看似简单但影响深远的观察:
LLM 擅长的是语言理解和形式转换——把”二次方程 x^2 - 5x + 6 = 0 的两个根相加等于多少”这样的自然语言问题,转换成精确的符号表达式。
LLM 不擅长的是确定性计算——“2 的 127 次方是多少”,LLM 可能给出接近但不精确的答案。
而 CAS(Computer Algebra System,计算机代数系统)正好相反:它完全无法理解自然语言,但对于被正确表达的数学问题,它的求解结果是确定性正确的——没有概率,没有幻觉。
AXIOM 的架构就是把这两种能力拼在一起:
自然语言问题
↓
LLM(规范化器)
↓
符号表达式
↓
CAS(确定性求解器)
↓
验证结果 → 输出答案 或 abstain
论文把这种设计称为 “Trust-First”——不是先假设系统是对的,而是只有在能被验证的情况下才给出答案。
四条设计承诺
AXIOM 的论文明确列出了四条设计承诺(design commitments),理解这四条是理解整个系统的关键。
承诺一:LLM 作规范化器(不是求解器)
这是最重要的一条。LLM 的任务是把问题”翻译”成 CAS 能理解的精确符号表达式,不负责计算最终答案。
# AXIOM 风格的规范化示例(概念演示)
import sympy as sp
def canonicalize(problem: str, llm_client) -> str:
"""LLM 把自然语言问题转换为 SymPy 表达式"""
prompt = f"""
将以下数学问题转换为 Python SymPy 代码,只输出代码,不做解释。
代码必须:
1. 定义所有符号变量(sp.Symbol)
2. 建立方程或表达式
3. 把求解目标存入变量 result = sp.solve(...)
问题:{problem}
"""
response = llm_client.complete(prompt)
return response.text
# LLM 的输出(规范化结果,不是答案):
# x = sp.Symbol('x')
# eq = sp.Eq(x**2 - 5*x + 6, 0)
# roots = sp.solve(eq, x)
# result = sum(roots)
LLM 只负责写这段 SymPy 代码,不负责执行或计算结果。
承诺二:CAS 确定性验证
规范化得到的符号代码由 CAS 执行,结果是确定性的。
import sympy as sp
import ast
import sys
from io import StringIO
def cas_verify(sympy_code: str) -> dict:
"""用 CAS 执行并验证规范化代码"""
# 创建安全执行环境
safe_globals = {"sp": sp, "__builtins__": {}}
local_vars = {}
try:
exec(sympy_code, safe_globals, local_vars)
result = local_vars.get("result")
if result is None:
return {"success": False, "reason": "代码未定义 result 变量"}
# 检查结果是否为有限值
if hasattr(result, "is_finite") and not result.is_finite:
return {"success": False, "reason": "结果为无穷或未定义"}
return {
"success": True,
"result": str(result),
"result_simplified": str(sp.simplify(result))
}
except Exception as e:
return {"success": False, "reason": f"CAS 执行错误: {e}"}
关键点:CAS 的执行不依赖概率。如果 SymPy 能求解,结果是数学上精确的;如果不能(方程无解、代码有语法错误),它会明确报错而不是猜一个答案。
承诺三:1:1:1 任务路由
每道题走一条严格的流水线:一个 LLM 调用 → 一次 CAS 执行 → 一次验证,不重试,不投票,不集成多次结果。
这条承诺看起来是”效率优化”,但背后是更深的设计哲学:让每道题的推理路径清晰可追溯。如果重试三次取最优结果,当答案错误时你不知道问题出在第几次;而 1:1:1 路由让每道题都有唯一的”推理记录”可审计。
承诺四:abstain 作为一等公民
这是 AXIOM 最反传统的设计。
当 CAS 执行失败(规范化代码有错误或问题超出 CAS 能力范围),AXIOM 输出的不是”我猜答案是 X”,而是 abstain(明确拒绝作答)。
论文把 abstain 和”答对”放在同等重要的位置,设计了专门的评估指标来衡量系统的”合理拒绝率”——在该拒绝时拒绝,和在该作答时答对,都是好的系统行为。
class AxiomResult:
"""AXIOM 系统的输出类型"""
def __init__(self, answer: str | None, confidence: str, reasoning_trace: str):
self.answer = answer # None 表示 abstain
self.confidence = confidence # "verified" | "abstained"
self.reasoning_trace = reasoning_trace
@property
def abstained(self) -> bool:
return self.answer is None
def axiom_solve(problem: str, llm_client) -> AxiomResult:
"""完整的 AXIOM 推理流程"""
# Step 1: LLM 规范化
sympy_code = canonicalize(problem, llm_client)
trace = f"[规范化]\n{sympy_code}\n"
# Step 2: CAS 验证
cas_result = cas_verify(sympy_code)
trace += f"[CAS 执行] {'成功' if cas_result['success'] else '失败'}\n"
if not cas_result["success"]:
# 验证失败 → abstain
trace += f"[Abstain] 原因: {cas_result['reason']}\n"
return AxiomResult(None, "abstained", trace)
# Step 3: 输出验证结果
trace += f"[结果] {cas_result['result_simplified']}\n"
return AxiomResult(cas_result["result_simplified"], "verified", trace)
实验结果
论文在多个数学推理基准上评测了 AXIOM,核心发现:
AXIOM 在可验证问题上准确率显著超过单纯 LLM 方法。在代数和微积分子集上,AXIOM 的”答对率”(在它选择作答的题目中)超过 95%,而对应的 LLM 单独作答准确率约 82-87%。
代价是 abstain 率。AXIOM 对约 25-35% 的问题选择 abstain(取决于问题集难度)。换句话说,它放弃了 1/4 到 1/3 的问题覆盖率,换取了剩余问题的高可信度。
论文强调这个权衡本身就是设计目标,而不是缺陷。用论文的表达:“今日的 abstain,是明日的正确”(today’s abstain, tomorrow’s correct)——随着 LLM 规范化能力提升,abstain 率会降低,而可信度保持不变。
与其他路线的对比
vs 端到端 LLM(Chain-of-Thought)
最常见的数学推理做法:让 LLM 生成推理链,最后给出答案。
AXIOM 的优势:结果可验证,不是概率猜测。对于 CAS 能求解的问题,AXIOM 的准确率上界由 LLM 规范化质量决定,而 CoT 的准确率上界由整个 LLM 的数学能力决定。
AXIOM 的劣势:只适合能被符号化的问题,无法处理需要几何直觉或证明创造力的题目。
vs 工具增强 LLM(Code Interpreter)
让 LLM 生成 Python 代码然后执行,类似 GPT-4 的 Code Interpreter 功能。
这和 AXIOM 在表面上很像,但关键差异是:Code Interpreter 中 LLM 既是规范化器也是求解器(它生成的代码可能包含算法错误),而 AXIOM 严格要求 LLM 只做规范化(把问题转成 CAS 调用),求解完全由 CAS 负责。
AXIOM 的优势:CAS 的求解是符号精确的,而 Code Interpreter 生成的数值算法可能有精度损失。对于 sqrt(2) 这样的无理数,1.41421356... 和 sqrt(2) 是本质不同的两种答案。
vs 形式化证明系统(Lean/Coq)
形式化证明器(Lean 4, Coq)能提供最强的数学可信度,但需要把整个证明写成形式语言,对自然语言问题的转化要求极高。
AXIOM 的定位:比 Code Interpreter 更可信,比 Lean 等形式化系统更实用。是介于两者之间的工程可行方案。
实践意义:什么场景应该考虑 AXIOM 风格的架构?
教育系统的数学辅导:当学生的作业评分依赖 AI 时,false positive(把错的说成对的)是严重问题。AXIOM 风格的架构在 CAS 可验证范围内能提供可信评分,并通过 abstain 标记需要人工复核的问题。
科学计算辅助:工程和科学中的数值计算本就是 CAS 的传统地盘。AXIOM 增加了自然语言接口层,让研究者可以用自然语言描述计算任务,而不用手写 SymPy/MATLAB 代码。
数学考试题目生成与验证:生成大量数学题时,需要验证题目有唯一解且答案正确。AXIOM 的 CAS 验证层可以自动完成这个检查。
构建可审计的 AI 计算记录:监管场景(金融计算、合规审查)需要对每个计算结论都能追溯到原始推理。AXIOM 的 1:1:1 路由和明确的推理轨迹(reasoning_trace)提供了这个可审计性。
局限与开放问题
问题覆盖率权衡:25-35% 的 abstain 率在实际产品中可能无法接受。如果用户提出的问题有 1/3 得到”我不确定,拒绝作答”的回答,用户体验会很差。论文承认这是当前阶段的权衡,但没有提供降低 abstain 率的具体路径。
规范化的鲁棒性:LLM 把自然语言问题转换为 SymPy 代码的过程本身不是无误的。如果规范化引入了微妙的语义错误(如把”不等于”误理解为”等于”),CAS 会得出一个”正确验证”的错误答案——这比 abstain 更危险。
CAS 的能力边界:SymPy 对常规代数和微积分很强,但对某些数论问题(大数分解)、拓扑问题或组合优化问题无能为力。这些场景下 abstain 率会急剧升高。
交互式场景的适配:1:1:1 的严格路由不支持多轮对话中的”我理解错了,让我重新分析”。论文专注于单问题求解,多轮对话场景的扩展是未来工作。
结语
AXIOM 的核心贡献不是在某个基准上刷了高分,而是提出了一种设计理念:在数学推理这个需要精确性的领域,与其追求 LLM 在更多题目上猜对,不如在系统能确认对的题目上做到可信。
这个理念背后有一个深层洞察:LLM 的价值不在于它能直接解决问题,而在于它能弥合自然语言和形式系统之间的鸿沟。CAS、定理证明器、数值求解器,这些工具几十年来积累了极强的确定性计算能力,但无法和人类自然对话。AXIOM 让 LLM 做这个翻译层,把两个世界连起来。
如果说 2025 年的 LLM 数学推理研究是”让模型在数学上更聪明”,AXIOM 代表的是另一个方向:让数学推理系统更可信。这两个方向并不互斥,但后者在实际部署中往往更重要。
论文:arXiv:2606.00671(cs.AI, cs.CL, cs.SC)
互动演示:论文附带 live demo,见论文内 URL
代码和数据集:已在 Zenodo 上开放(概念 DOI 见论文)