No. 003确定性2 分钟阅读

自信地给出错误收入数字:为何大语言模型不会算术

模型递给你一个收入数字,姿态完美,背后却毫无算术可言。研究表明,这一失败是结构性的——解决之道亦然。

2025 年 10 月,德勤向澳大利亚政府退还了款项。该公司曾向就业与劳动关系部交付一份价值 44 万澳元的审查报告;已发布的报告中包含一段捏造的联邦法院判决引文,以及数篇并不存在的学术论文引用(《卫报》,2025)。修订版披露,GPT-4o 曾参与起草。后续报道显示退款金额约为 9.7 万澳元——即合同的最后一期款项。

有一个细节比金额更值得关注。这些捏造内容并非由公司内部审查或客户审查发现,而是由一位核查参考文献的外部学者发现的。这份交付物通过了所有为其设计的审查层级,因为其中没有任何内容看起来有误。

这正是问题所在:不是失败的模型,而是返回答案的模型。让语言模型对两百行数据求收入总和,你会得到一个量级正确、货币符号正确、措辞自信的答案。但你未必能得到正确的总和。一个缺失的答案会被发现;一个姿态完美的错误答案,则会被转发给董事会。

而这种姿态从不动摇,因为自信本身也是生成的文本。模型不知道自己错了;没有内部警报需要压制。断言数字的句子与数字本身来自同一个地方——下一个最可能的词元。

似乎合理,并非计算所得

直觉上,人们倾向于将错误数字归咎于模型成熟度:下一个版本肯定能正确相加。研究表明,这一失败是结构性的,且对原因的判断异常一致。

GPT-4 在零样本条件下将两个三位数相乘,正确率为 59%;ChatGPT 为 55%(arXiv,2023)。到四位数,GPT-4 降至 3%;五位数时,降至 0%。Faith and Fate 的作者追溯了其机制:Transformer 通过匹配其所见内容的线性化片段来处理组合问题——这是模式查找,而非程序执行。悬崖恰好出现在模式耗尽之处。

加法同样不安全。2025 年的一项分析发现,大语言模型使用单位前瞻启发式方法进行加法,而非算法:无论如何提示或分词,精度在进位超过一位时精确崩溃,且失败可仅从进位结构预测(arXiv,2025)。这是系统性的,而非随机的。模型并非在近似计算,而是在做另一件事——只是这件事经常与计算结果吻合。

苹果的 GSM-Symbolic 封堵了最后一个漏洞——也许这只影响困难的算术(Apple,2024)。取小学数学应用题,只改变数字,不改变其他任何内容:所有被测试的最先进模型表现均有所下降。加入一个听起来合理但无关的从句:准确率最多下降 65%。而且,同一问题模板的不同实例之间,准确率存在明显差异——同一道题,换一种表述,返回不同的答案分布。最后这一发现解释了演示中的问题。演示是从分布中抽取的一次样本;审计才是整个分布。

作者的结论——"当前大语言模型不具备真正的逻辑推理能力"——对于一篇研究论文而言措辞异常直白。至今无人推翻这一结论。

100 50 0 accuracy, % zero-shot scratchpad 59 92 3×3-digit 4 4×4-digit 0 5×5-digit
GPT-4 在 n 位 × n 位乘法上的准确率,零样本 vs 逐步草稿提示。Faith and Fate,NeurIPS 2023。

常见修复方案的实测结果

每个遭遇这一失败的团队都会伸手去拿同样的四种修复方案。每一种都已被实测。

检索。 FinanceBench 让 GPT-4-Turbo 回答 150 道关于公开财务文件的问题,并配备了检索系统提供文档。其中 81% 的问题被错误回答或拒绝回答(Patronus AI,2023)。十六种配置——GPT-4-Turbo、Llama 2、Claude 2、向量存储、长上下文——在 2,400 条人工审查的答案中均暴露出弱点,且每当证据页面未被完整提供时,模型就会捏造数字。检索能取回文档,但模型仍会搞错数字。

数据接地。 BBC 让 ChatGPT、Copilot、Gemini 和 Perplexity 直接访问其自有文章,并就新闻内容进行提问。51% 的答案存在重大问题;91% 的答案至少存在一些问题。19% 引用了 BBC 内容的答案引入了事实错误——错误的陈述、错误的数字、错误的日期——13% 归属于 BBC 文章的引文被篡改或根本不存在(BBC,2025)。来源就在手边,数字依然失真。

更强的模型。 OpenAI 自己的系统卡报告显示,o3 在 33% 的 PersonQA 提示上产生幻觉,o4-mini 为 48%——而较旧的 o1 仅为 16%(OpenAI,2025)。按供应商自己的测量,更新的推理模型产生幻觉的频率是其前代的两到三倍。o3 只是做出了更多断言——更多正确的,也更多捏造的,以同样的确定性语气呈现。

更好的提示。 逐步草稿提示将 GPT-4 的三位数乘法准确率从 59% 提升至 92%(arXiv,2023)。有所改善——但每十二道题中仍有一道乘积错误。即便对 GPT-3 进行四位数乘法的穷举微调,在未见过的四位数问题上也只能达到约 40%,五位数时为 0%。上限来自机制本身,而非提示。

每种修复方案都能改变概率,但没有一种能改变谁在做算术。答案仍然是从似乎合理的数字分布中采样得到的,而该分布中恰好只有一个成员是正确的总和。

0 50 100 % RETRIEVAL · FINANCEBENCH 2023 wrong or refused 81% GROUNDING · BBC 2025 significant issues 51% factual errors introduced 19% REASONING · PERSONQA, OPENAI 2025 o1 (predecessor) 16% o3 33% o4-mini 48%
修复方案后的失败率。FinanceBench 2023 · BBC 2025 · OpenAI o3 / o4-mini 系统卡 2025。

改变谁来做算术

结构性的答案是一种严格沿能力边界划分的分工。语言模型擅长语言,不擅长账目,因此模型永远不应成为执行计算的那一方。

SQAI 正是建立在这一分工之上。模型负责编写一个类型化意图——region = "east"amount 求和——由确定性引擎将其作为编译代码执行:针对哈希锁定的契约进行验证,经过策略检查,在单线程上以 float64 精度计算,并附带溯源信息返回。

{
  "status": "ok",
  "value": 2130.5,
  "rows_matched": 5
}

这个 2130.5 不是一个可能的词元,而是总和——由确定性内核从 445 个模块中 4,574 个只读能力(其中 4,564 个完全确定性)的表面上产生,热启动响应时间为 0.83–0.93 毫秒。

确定性意味着可验证。finance.npv(0.1, [-1000, 300, 420, 560, 680]) 在计算哈希 b74f67d0… 下返回 505.020148896933——无论从 TypeScript 还是 Python 调用,值和哈希均相同,因为结果是对同一规范 JSON 形式进行哈希计算的。这一声明诚实地界定了范围:在声明的执行范围内具有确定性,并以一个信封记录运行时版本、平台、精度模式和线程数,而非过度承诺。模型对同一提示的答案无法保证下次运行时与自身一致;而这里的结果,数月后在任一语言中均可逐字节重放。

还有第二个漏洞,大多数技术栈对此视而不见。接入计算引擎后,再将原始查询行"用于摘要"倒入上下文——模型便会悄悄地从这些行中重新推导、重新发明数字。SQAI 将上下文视为受治理的边界:最多 25 行、250 个单元格和 32,000 字节到达模型,默认上限为 100 行,硬性执行上限为 1,000 行。截断始终被声明,因此模型无法诚实地声称已对其所见内容求和。不显示部分行,以免半条记录诱使模型凭想象补全。聚合在边界之前完成。模型收到的是答案,而非作业。

策略也不是提示。允许的数据源、字段和函数在 createSQAI() 时固定于代码中,并在执行前进行进程内检查;模型的工具输入完全不携带策略字段,因此没有任何可供其扩展的空间。请求策略范围之外的能力,不会产生创造性的变通方案——只会产生 policy_denied_function。这与不让智能体编写 SQL 背后的论点相同:不要用尽力而为的指令来治理生成的文本;要用文本无法触及的允许列表来治理执行。

GOVERNED BOUNDARY MODEL language in, language out sum(amount) · region = "east" typed intent — never a SQL string ENGINE contract → policy → execute float64 · 1 thread · sub-ms warm value 2130.5 · rows 5 plan_hash f87610d8afeb… byte-identical replay · TS ≡ PY answer, not rows ≤ 25 rows · ≤ 250 cells · ≤ 32,000 B truncation always declared
分工示意:模型编写类型化意图;float64 内核执行计算;行数上限将原始数据隔离在上下文之外。

谁做了算术?

下次 AI 系统递给你一个收入数字时,有一个问题可以甄别市场上的每一种架构:谁做了算术?

如果答案是"模型",你手中持有的是一个姿态完美、来源不明的数字,唯一的验证路径是人工重做——而这正是你试图自动化的事情。德勤的捏造内容之所以被发现,是因为一位流程之外的学者决定去核查。这不是一种控制机制,这是运气。

如果答案是"确定性引擎,这是哈希值",验证就是重放:相同的意图,相同的引擎,相同的字节。当错误数字来自扇出连接而非错误加法时,失败会变得更隐蔽——那是另一个故事。但这一原则可以用一句话概括:模型写问题,永远不写答案。

错误的收入数字不会自我宣告。它格式规整、引用齐全、措辞自信地到来——而在五位数乘法上,永远不会正确。构建流水线,让它无从混入。