☰
AI数学工作流:从解题工具到形式化验证与猜想生成的工程实践
2026/10/13 7:24:10 网站建设 项目流程

1. 从“AI做数学题”到“AI搞数学”:一个被混淆的边界

很多人第一次听到“AI数学”这个词,脑子里浮现的画面大概是:拍一道微积分题上传,几秒钟后得到完整解答。这确实是当下最火的应用形态之一,但如果把“AI数学”仅仅等同于“解题工具”,那就把这件事想得太窄了。我在过去两年里断断续续关注这个方向,从最初拿各种大模型去跑竞赛题,到后来尝试让它参与一些真正的数学研究工作流,逐渐意识到一个关键分界线:AI辅助解题和AI参与数学发现,是两个完全不同量级的问题。

前者本质上是模式匹配加推理链生成,核心挑战在于如何让模型不跳步、不幻觉、不在最后一步算错符号;后者则涉及猜想生成、反例搜索、证明策略选择、甚至定义重构,核心挑战变成了“如何让机器提出人类没想到的问题”。这两件事对模型能力的要求、对交互方式的设计、对验证机制的需求,几乎没有任何重叠。

我写这篇随笔的动机很简单:网上关于“AI数学”的讨论,九成集中在解题和考试分数上,剩下那一成里又有一大半在争论“AI到底懂不懂数学”。但真正在一线用AI做数学相关事情的人——不管是做形式化验证的、做符号计算的、还是做数学建模的——他们的经验、踩过的坑、总结出的工作流,几乎没有人系统性地讲出来。这篇内容就是想把这块空白填一填,面向的是那些已经不满足于“让AI解个题”,而是想真正把AI嵌入数学工作流的人。

需要提前说明的是,我既不是纯数学研究者,也不是AI算法工程师,我的位置更偏向“工具使用者”和“工作流设计者”。所以这篇随笔不会去推导Transformer的注意力公式,也不会去证明某个定理,而是聚焦在一个非常实际的问题上:当你手头有一个数学问题,不管是求解、验证还是探索,AI能在哪些环节帮上忙,哪些环节会帮倒忙,以及怎么设计流程让整体效率最大化。如果你正在做数学建模、算法设计、形式化验证,或者只是对“AI能不能做真正的数学”这个问题有持续的好奇,下面的内容应该对你有用。

2. 解题工具的幻觉陷阱:为什么AI算错最后一步不是偶然

2.1 符号计算的“最后一公里”问题

先从一个我反复观察到的现象说起。拿一道中等难度的积分题给当前主流的大语言模型,比如∫x²·eˣ dx,模型通常能正确识别出需要用分部积分法,也能正确写出u和dv的选择,甚至中间步骤的推导也基本正确。但到了最后合并项的时候,有相当概率会出现符号错误或者系数错误。更诡异的是,如果你让它重新算一遍,它可能会给出另一个错误答案,而且两次错误的模式还不一样。

这个现象背后有一个结构性原因:大语言模型的生成机制是逐token的概率采样,它没有内置的符号运算引擎。当它在“推导”时,它实际上是在做一种高度复杂的模式补全——根据训练数据中见过的类似推导,生成看起来最合理的下一步。对于短链条的推理,这种模式补全的准确率很高;但当推导链条变长,每一步的“合理”选择空间变大,误差就会累积。到了最后一步,模型可能已经“忘记”了前面的具体系数,只能根据上下文“猜”一个看起来合理的数字。

我试过一个很能说明问题的对比实验:同一道题,分别用纯自然语言推理、带中间步骤检查的推理、以及调用外部符号计算工具的推理来跑。结果纯自然语言推理的最终正确率大概在六成左右,带中间检查的能到八成,而调用符号计算工具的——只要接口设计得当——可以稳定在九成五以上。这个差距说明了一件事:在数学计算这件事上,不要让语言模型去做它不擅长的事。它的强项是理解题意、规划解题路径、解释每一步的理由,而不是执行精确的算术或符号运算。

2.2 证明与计算的本质差异

比计算错误更值得警惕的,是模型在证明题上的表现。计算题至少有一个明确的数值答案可以验证,证明题则不同:模型可以写出一段看起来非常流畅、术语使用完全正确、逻辑连接词一个不差的“证明”,但仔细检查会发现,中间某一步的推理是循环论证,或者引用了一个根本不存在的定理。

我遇到过最典型的一个案例:让模型证明一个关于图论中某类特殊图的着色性质。模型给出的证明里,引用了“根据某某定理,这类图是完美图”,然后基于完美图的性质推出结论。问题在于,那个“某某定理”在文献中确实存在,但它适用的图类比题目中的图类要窄,模型把适用范围悄悄扩大了。这种错误非常隐蔽,因为定理名字是对的,定理内容也是对的,错的是“这个定理适用于当前情况”这个判断。

这暴露了一个更深层的问题:数学证明的核心不是语言的流畅性,而是逻辑的必然性。一个证明之所以成立,不是因为读起来顺,而是因为每一步都可以被独立验证,且验证过程不依赖于证明本身。语言模型擅长生成“读起来像证明”的文本,但它没有内置的逻辑内核来保证每一步的必然性。这就引出了后面要讲的形式化验证——那是目前唯一能从根本上解决这个问题的路径。

2.3 一个实用的中间方案:结构化推理加外部验证

在完全形式化和完全自然语言之间,有一个很实用的中间地带:让模型用结构化格式输出推理过程,每一步都标注依赖关系,然后用一个轻量级的检查器去验证每一步的局部正确性。这个方案不需要完整的定理证明器,只需要一个能检查代数运算、不等式传递、集合包含关系等基本推理步骤的脚本。

我自己的做法是设计一个简单的JSON schema,要求模型每一步输出三个字段:step(这一步做了什么)、result(这一步的结论)、depends_on(这一步依赖前面哪些步骤的结论)。然后写一个Python脚本,对每一步做局部检查——比如如果这一步是“两边同时加x”,那就检查等式两边是否确实同时加了x;如果这一步是“由A⊆B和B⊆C推出A⊆C”,那就检查传递性是否成立。这个检查器不需要理解整个证明,只需要验证每一步的局部合法性。

实测下来,这个方案能把证明题的错误率降低一大半。更重要的是,当检查器报错时,它会指出具体哪一步不合法,这给了模型一个明确的修正信号。我通常会让模型根据报错信息重新生成那一步,而不是整个证明重来。这种“局部修正”的策略比“全局重试”效率高得多,因为大部分步骤其实是对的,只有个别地方出了问题。

3. 形式化证明的工程现实:从Lean到实际工作流

3.1 为什么形式化验证是绕不过去的坎

前面反复提到“验证”这个词。在数学里,验证一个证明是否正确的终极手段,是把它翻译成一种机器可以逐步检查的形式语言,然后让证明助手(proof assistant)去检查。目前在这个领域,Lean、Coq、Isabelle是几个主流的选择,其中Lean因为数学库(mathlib)的快速发展和相对友好的语法,在近几年获得了大量关注。

形式化验证的核心价值在于:它把“这个证明对不对”这个问题,从一个主观判断变成了一个客观计算。一个Lean证明要么通过编译,要么不通过,没有中间地带。这听起来很美好,但实际用起来,门槛高得惊人。我刚开始接触Lean的时候,花了两周才搞明白怎么证明“两个自然数相加等于它们交换顺序后相加”这种在人类看来显然到不需要证明的命题。原因在于,形式化系统要求你把每一个逻辑步骤都显式地写出来,包括那些人类数学家会默认省略的“显然”步骤。

但正是这种“不近人情”的严格,让形式化验证在AI数学中占据了特殊位置。当你让AI生成一个证明,然后把它翻译成Lean代码去检查时,你实际上是在用一个绝对可靠的裁判来过滤AI的幻觉。我见过不少案例,AI生成的证明在自然语言层面看起来天衣无缝,但一翻译成Lean就卡在某个地方过不去,仔细一看,果然是那一步的推理有问题。

3.2 AI辅助形式化的两种模式

目前AI在形式化证明中的角色,大致可以分为两种模式。第一种是证明搜索:给定一个命题,让AI尝试生成Lean证明脚本。这个模式对模型的要求极高,因为Lean的语法非常严格,一个括号放错位置就会导致整个证明失败。我试过用几个主流模型直接生成Lean代码,成功率相当低,尤其是当命题涉及多个引理和复杂类型时。

第二种模式是证明草图加人工补全:让AI生成一个高层次的证明策略,比如“先对n做归纳,基础情况用simp解决,归纳步骤用rw展开定义然后应用归纳假设”,然后由人类把它翻译成具体的Lean代码。这个模式的成功率要高得多,因为AI负责的是策略层面的规划,而人类负责的是语法层面的精确实现。我自己的经验是,对于中等难度的命题,这种分工能把形式化所需的时间缩短一半左右。

还有一个很有前景的方向是自动定理证明器与语言模型的结合。像Lean的aesop、simp这些自动化策略,本质上是一些确定性的搜索算法,它们能在特定类型的命题上自动完成证明。语言模型可以学会什么时候该调用哪个策略,以及如何把复杂命题拆解成自动化策略能处理的小命题。这种“AI规划加自动化执行”的组合,目前在实际使用中效果最好。

3.3 形式化工作的隐性成本

不过,我必须诚实地讲,形式化验证目前还远没有到“开箱即用”的程度。除了学习曲线陡峭之外,还有一个经常被忽视的成本:数学库的覆盖度。mathlib虽然已经非常庞大,但数学分支的发展极不平衡。代数、拓扑、分析这些领域的形式化程度较高,而组合数学、图论、数论中一些较新的结果,往往需要你自己从头定义概念、证明引理。我做过一个统计,在一个中等规模的形式化项目中,真正花在“证明主定理”上的时间可能只占三成,剩下七成都在处理定义、引理和类型转换。

这就引出了一个很实际的问题:什么时候值得形式化,什么时候不值得。我的判断标准是看这个证明的“复用价值”。如果这个证明只是用来验证一个一次性计算的结果,那形式化的投入产出比很低;但如果这个证明是一个更大理论框架的一部分,或者这个命题会被反复引用,那形式化带来的长期收益就很可观。另外,如果证明中涉及大量繁琐的边界情况讨论,形式化也能帮你确保没有遗漏任何情况——这是人类数学家容易出错的地方。

4. 猜想生成与反例搜索:AI在数学发现中的真实角色

4.1 从“证明已知”到“发现未知”的跨越

前面讲的都是AI在“验证已知结论”这个方向上的应用。但数学最迷人的部分,从来都是发现新东西。那么AI能不能帮助数学家发现新的猜想、新的模式、新的反例?这个问题在最近几年有了一些很有意思的进展,但离“AI独立做出数学发现”还有相当距离。

目前比较成功的模式是数据驱动的模式识别。具体来说,就是让AI在一个大规模的数学对象数据库中搜索规律。比如,给定一个整数序列的集合,让AI找出哪些序列满足某种递推关系;或者给定一个图类,让AI猜测哪些图论参数之间存在不等式关系。这种任务本质上是在高维空间中做模式匹配,恰好是机器学习擅长的领域。

我参与过一个小型实验,用图神经网络去预测某个图论参数的上界。做法是:生成大量随机图,计算它们的参数值,然后训练一个模型去预测参数值。训练完成后,用模型去预测一些特殊构造的图,看看模型给出的预测值是否比已知的理论上界更紧。结果发现,在几个特定的图类上,模型确实给出了比现有文献更优的预测。当然,预测不等于证明,但这个预测为后续的理论工作提供了一个明确的方向——你知道该往哪里去找更紧的上界了。

4.2 反例搜索:AI的“找茬”能力

比猜想生成更实用的是反例搜索。数学中有一个常见的困境:你有一个猜想,觉得它应该是对的,但不知道怎么证明;或者你怀疑它是错的,但构造不出反例。这时候AI可以帮上忙。

反例搜索的基本思路是:把猜想转化成一个约束满足问题,然后用搜索算法去找满足约束的实例。如果找到了,那就是反例;如果在一定范围内找不到,虽然不能证明猜想成立,但至少增加了信心。AI在这个过程中的作用是学习“什么样的实例更可能成为反例”,从而把搜索引导到更有希望的区域。

我试过一个具体的例子:有一个关于矩阵秩的不等式猜想,我让模型生成大量随机矩阵,然后检查不等式是否成立。纯随机搜索的效率很低,因为大多数随机矩阵都满足不等式。后来我让模型根据不等式取等号的条件,生成“接近边界”的矩阵——也就是那些让不等式两边差距很小的矩阵。这个策略大大提高了搜索效率,虽然最终没有找到反例,但找到了几个让不等式几乎取等号的极端案例,这对理解这个不等式的紧性很有帮助。

4.3 猜想生成的验证闭环

不管是猜想还是反例,AI给出的结果都必须经过验证才能被信任。这就形成了一个闭环:AI生成候选,人类或自动化工具验证,验证结果反馈给AI用于下一轮生成。这个闭环的设计质量,直接决定了整个系统的有效性。

我自己的做法是,在闭环中设置多个“过滤器”。第一层是快速的一致性检查,比如猜想是否与已知定理矛盾、是否在边界情况下退化。第二层是数值验证,在小规模实例上测试猜想是否成立。第三层才是形式化验证或严格证明。每一层过滤掉一批候选,只有通过所有层的猜想才会进入人类的视野。这个分层过滤的策略,能把人类需要亲自检查的候选数量降低一到两个数量级。

5. 数学建模中的AI:从数据到方程的桥梁

5.1 符号回归与方程发现

数学建模的核心任务之一,是从观测数据中找出变量之间的函数关系。传统做法是假设一个函数形式(比如线性、多项式、指数),然后用最小二乘法拟合参数。但函数形式的选择往往依赖领域知识,如果选错了,拟合得再好也没有预测价值。

符号回归试图解决这个问题:不预设函数形式,而是让算法在函数空间中搜索,同时优化形式和参数。遗传编程是符号回归的经典方法,但它的搜索效率很低,尤其是在变量多、函数形式复杂的时候。最近几年,有一些工作尝试用神经网络来引导符号回归的搜索,效果有所提升。

我试过一个结合了预训练语言模型的符号回归流程:先用模型在大量已知的物理公式、生物模型、经济关系上做预训练,让它学会“什么样的函数形式在什么场景下常见”;然后在具体任务上,用这个预训练模型生成候选函数形式,再用数值优化去拟合参数。实测下来,这个流程比纯遗传编程快不少,而且生成的函数形式往往更“自然”——也就是更接近人类科学家会写出来的形式。

5.2 量纲分析与AI的结合

量纲分析是数学建模中一个非常强大的工具,它能在不知道具体方程的情况下,通过量纲一致性推出变量之间的幂律关系。但传统的量纲分析需要人工列出所有相关变量,并判断哪些是无量纲组合。这个过程在变量多的时候非常繁琐。

我尝试过让AI辅助量纲分析:给定一个物理场景的描述,让模型列出所有可能相关的变量,然后自动生成无量纲组合。模型在这个任务上的表现还不错,尤其是它能根据领域知识排除一些明显不相关的变量。但有一个坑需要注意:模型有时会“发明”一些物理上不存在的变量,或者遗漏一些关键变量。所以最终的变量列表还是需要人工审核。

5.3 模型选择与不确定性量化

在数学建模中,一个经常被忽视的问题是:我们怎么知道选这个模型是对的。传统做法是用交叉验证、AIC、BIC这些指标来比较不同模型,但这些指标只告诉你哪个模型拟合得好,不告诉你哪个模型“更接近真相”。

AI在这个环节可以发挥作用的地方是:学习不同模型在类似问题上的表现模式。比如,如果你有一批历史建模案例,每个案例都知道最终哪个模型被证明是最有效的,那就可以训练一个模型来预测:对于一个新的建模问题,哪种模型类型更可能成功。这个思路本质上是在做“元学习”——学习“如何学习”。

我自己的经验是,这种元学习模型在问题类型比较集中时效果不错,比如都是时间序列预测或者都是分类问题。但如果问题类型跨度很大,预测准确率就会下降。所以更实际的做法是把它当作一个参考信号,而不是决定性的依据。

6. 工作流设计:把AI嵌入数学工作的实际经验

6.1 任务分解的原则

把AI嵌入数学工作流,最关键的一步是任务分解。你不能指望AI一次性完成“理解问题、规划方案、执行计算、验证结果”这一整套流程。更有效的做法是把整个流程拆成若干个子任务,每个子任务分配给最适合的工具。

我的分解原则是:语言理解类任务交给语言模型,精确计算类任务交给符号计算引擎,逻辑验证类任务交给证明助手,模式识别类任务交给机器学习模型。比如,拿到一个应用题,先让语言模型把自然语言描述翻译成数学表达式;然后把表达式输入符号计算引擎去求解;求解结果再让语言模型翻译回自然语言解释;最后如果有必要,把关键步骤翻译成Lean代码去验证。

这个流程听起来很繁琐,但实际跑起来,因为每个环节都在做自己最擅长的事,整体成功率比让一个模型从头做到尾要高得多。而且每个环节的输出都是结构化的,方便调试和替换。

6.2 提示词设计的几个实用技巧

在数学场景下,提示词的设计和通用场景有很大不同。我总结了几条在实际使用中比较有效的技巧。

第一条是强制分步。不要问“这个积分等于多少”,而是问“请分步计算这个积分,每一步只做一个操作,并说明这一步用的是什么规则”。强制分步能显著降低模型跳步和幻觉的概率。

第二条是要求自我检查。在生成解答后,追加一句“请检查你的解答,特别是符号和系数是否正确”。这个简单的追加指令,能让模型重新审视自己的输出,纠正一部分错误。我做过对比,加了这句之后,计算题的正确率能提升十到十五个百分点。

第三条是提供验证工具。如果模型支持调用外部工具,一定要把符号计算引擎接进去。让模型在需要计算时调用工具,而不是自己“心算”。这个改变对正确率的影响是决定性的。

6.3 人机协作的边界

最后想聊一个更宏观的问题:在数学工作中,人和AI的边界应该划在哪里。我的观察是,AI擅长的是“广度搜索”和“快速试错”,人类擅长的是“深度判断”和“方向选择”。AI可以在短时间内生成大量候选猜想、尝试多种证明策略、搜索可能的反例;但判断哪个猜想有价值、哪个证明策略有前途、哪个反例值得深挖,这些仍然需要人类的数学直觉。

所以最有效的工作模式不是“AI替代人类”,也不是“人类指挥AI”,而是一种交替进行的对话:AI生成一批候选,人类筛选出有希望的几个;AI针对这几个深入展开,人类再判断哪些值得继续;如此往复。这个过程中,人类的角色更像是一个“编辑”或“策展人”,而不是“执行者”。

我自己的体会是,这种协作模式能把数学探索的效率提升一个量级,但前提是你自己得有足够的数学判断力来筛选AI的输出。如果完全不懂数学,只是盲目相信AI给出的结果,那不仅效率不会提升,反而可能被误导。AI是一个放大器:它放大你的能力,也放大你的盲区。在数学这个容错率极低的领域,这一点尤其重要。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询