ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

人工智能辅助数学猜想生成:模式挖掘、过滤与人机协作

人工智能辅助数学猜想生成:模式挖掘、过滤与人机协作

1. 从计算验证到猜想生成:AI在数学发现中的角色跃迁

“人工智能应用-和数学家做朋友:06.新数学猜想生成”这个题目,放在五六年前看,大概率会被当成科幻设定。那时候AI在数学圈的主流身份还是“验证者”——你告诉它猜想是什么,它负责帮忙检查证明、跑数值验证、找反例。但最近两年局面明显变了,AI开始从验证端走向发现端,主动提出“这条规律可能成立”的候选猜想,再让数学家去判断、去证明。这个角色转变,本质上把AI从计算器升级成了科研搭档。

我最早关注到这个方向,是因为一个不算太出名的项目:某研究团队用机器学习扫描数论里面的递推序列,预测是否存在某种未记录的模性质。当时论文里列了一大串AI“觉得”可疑但还没被证明的性质,其中有几条后来被数论方向的研究者证实了。这个案例给我的冲击很大——AI没有证明任何东西,它只是发现了“值得证明的东西”,但这恰恰是数学研究里最难、最依赖天赋的环节之一。

现在这类工作已经有了一个约定俗成的叫法:AI辅助猜想生成。它不追求AI独立提出那种惊世骇俗的大猜想,而是做高价值的模式挖掘。具体来说,是把数学对象的大量实例丢给算法,让算法找出人类直觉容易忽略的统计规律,再整理成形式化的猜想描述,交给数学家筛选。这个流程里,人仍然掌握最后裁决权,但AI承担了最耗时间、最容易有偏见的“找规律”阶段。

这篇文章我打算围绕“怎么让AI真正帮上数学家的忙”展开,重点讲清楚三件事:AI生成猜想的底层机制是什么,实际落地要经过哪几步,以及为什么绝大多数AI猜想的归宿是垃圾桶——以及怎么让垃圾桶里的废料也有价值。我假设读者有两类:一是对数学和AI交叉感兴趣的开发者,二是想用工具辅助科研但还没找到切入点的基础数学方向学生。两类人看完应该都能找到自己需要的部分。

2. “AI怎么想出新猜想”:底层机制与算法选型逻辑

想理解AI猜想生成,先得打破一个思维定式:AI所谓的“新猜想”,本质上从来不是凭空创造,而是对已有数据的一种高维压缩和重组。人类数学家提出猜想,依赖的是对大量例子的直觉抽象;AI做同样的事情,依赖的是统计模式识别。区别在于,人类能抽象出“因果”,AI只能捕捉“相关”——但数学猜想本来就不需要立刻有因果,它只需要有强烈的相关性作为起点。

2.1 模式识别驱动的猜想发现:从数据规律到形式化命题

我习惯把AI猜想生成分成三个层次,难度递进。

第一层最基础,叫结构扫描。典型做法是把某个数学对象编码成向量或图结构,比如把正整数序列、格点集合、群作用轨道抽象成特征矩阵,然后聚类、找异常。这个层次几乎不涉及语义理解,纯粹是数据挖掘思维。它能发现的猜想往往形式简单,比如“这类序列的增长率似乎被某个常数约束住”“这类轨道中总有某种对称结构出现”。

第二层叫关系推断。这里要用到更强一点的模型,比如图神经网络、高斯过程回归或者树集成模型。输入是一组数学对象自身的参数,输出是想预测的某种量——比如丢番图方程有没有解、某个模空间维数是不是符合预期、某种代数结构的自同构群阶数是否落在某个范围。模型如果在训练集上拟合得很好,同时在新实例上也表现稳定,那这背后通常存在尚未被写成定理的结构性原因。这时候把模型的决策边界、特征重要性提出来分析,往往就能导出候选猜想。

第三层叫符号重构。这一层已经不满足于“预测数值”了,而是要让AI直接输出符号表达式,类似搜索“a_n = n^2 + 3n + 5”这种闭合形式。常见实现有两类:一类用遗传规划或者符号回归,在表达式空间中搜索能拟合数据的短程序;另一类用基于语言模型的生成方式,把前缀的数学序列作为上下文,让模型续写下一项并归纳规律。这一层最接近人类数学家的工作模式,产出也最有吸引力,因为生成的就是一个待验证的等式或不等式,而不是一个黑盒预测。

2.2 自己造训练集:为什么公开数据集在这里几乎没用

做AI猜想生成,第一个会遇到的专业障碍是数据集。公开的数学数据集并不少,比如整数序列百科、数学命题库、定理证明语料库,但它们的定位是给“验证型AI”用的,拿来训练“发现型AI”会水土不服。

原因在于,公开发布的数据集经过人工筛选,往往是“干净”的、被验证过的、有一定知名度的规律。算法学到的会偏向于复现已知数学,而不是探索未知。更别扭的是,公开数据里噪声结构完全是随机的,而数学数据里的“噪声”其实往往暗示着被忽略的结构。

所以我的做法是:自己合成训练集。用符号计算库批量生成某个数学对象的实例,把已知定理能解释的部分标记为“已知”,把不符合已知规律但可重复出现的模式标记为“可疑”,再把这些“可疑”实例作为正样本交给模型去拟合。这一步听着容易,实际操作起来工作量很大,尤其是要保证生成的数据分布合理、没有程序bug导致的伪规律。

我举一个具体例子。之前我做过一阵子分拆(partition)函数相关的实验,想看看AI能不能发现某种模周期性。人工筛选分拆函数对模数k的周期结论,写进公开文献的只有很小一部分。我于是用程序批量计算前几百项分拆函数的值,对每项取模,再把数论里已经证过的周期规律作为过滤条件,把过滤后剩下的“模值序列里冒出的强重复性”作为候选信号。AI最后还真报了三条可疑模式,其中一条后来对照文献发现已有出处,另外两条至今没人证明也没人推翻,结局很悬。

2.3 为什么我优先选可解释模型而不是深度学习黑盒

模型选型上,我踩过最大的坑是没有一开始就区分“拟合能力”和“可解释性”的优先级。很多团队一看这任务,第一反应是上Transformer,让语言模型在数学序列上继续训练。这思路不是不可以,但如果你的目标不是“生成看起来像数学的文本”,而是“给出值得数学家看的猜想”,那相当一部分深度学习模型反而是负资产。

原因很朴素:数学猜想如果不能被翻译回符号语言,数学家根本无从判断它的价值。一个Transformer可能生成一百段“形式上很数学”的文本,但里面真正包含有效模式、又能被证伪的,可能是零。因为语言模型优化的是“序列概率”,不是“命题真值”。模型擅长的是模仿风格,不是把握数学本质。

所以我更倾向于把可解释性排在第一位。排序上,高斯过程、稀疏线性模型、带特征重要性排序的梯度提升树,都是我优先考虑的。它们的拟合范围不如深度模型广,但胜在输出能直接映射回输入变量的组合关系,谱分析后能直接看到是“哪个参数、哪种取值区间”导致了偏离理论预期的行为。

具体说出来可能有点反直觉:越“笨”的模型,越适合用来发现新猜想。你要的不是它在高维空间里疯狂记忆,而是它在低维空间里老老实实告诉你“x越大,概率越快衰减”这种话。数学猜想在早期阶段往往就是这么朴素。

我在实际项目里用过一个非常简单的基线:直接在预定义的特征集上跑随机森林,然后输出特征重要性top-N。只要特征工程做得精细,这个基线的产出质量可以超过很多复杂模型。后来我把特征工程和模型输出做成一个循环,每次模型汇报可疑特征,我就据此构造新特征,再跑下一轮,几轮迭代下来,产出的候选猜想比一开始用Transformer跑一整天得到的靠谱得多。

3. 一个可复现的落地框架:从环境搭建到出猜想的七个步骤

工具链这部分,是我在实际跑通一个猜想生成流程之后沉淀下来的。说实话,整个流程的门槛不在算法本身,而在如何把“数学对象”变成“模型输入”,再把“模型输出”变成“数学陈述”。这两步转换没做好,后面所有环节都是白费。

3.1 第一步:定义数学对象的范围与编码方式

开始动手之前,先回答一个问题:你要研究哪一类数学对象?这个范围必须足够窄,窄到你能为它设计出稳定的数值化描述。比如“研究素数分布规律”这种范围就太宽了,AI会束手无策。但如果把范围改成“研究形如 n^2 + 1 的素数在固定区间内的分布异常”,那就成了可操作的计划。

接下来要干的是把对象编码成模型看得懂的结构。一般有三类编码方式:数值向量(比如参数值、函数值、增长率)、图结构(比如代数结构的生成元关系图、组合结构的包含关系图)、序列(比如递推序列的前若干项)。我自己的偏好是尽量用多重编码叠加。每一个数学对象,同时用数值向量表达它的宏观参数、用图表达它的元素间互动、用序列表达它的演化路径。这样三种视角互补,模型更容易发现隐藏不深的结构。

3.2 第二步:数据生成与清洗——这里最容易混入“伪规律”

我前面提到自己合成训练集,这里展开讲。批量生成实例这一步,常用工具包括符号计算库和数论函数库。比如研究丢番图方程,就要枚举特定范围的整数组合,用快速求解模板判断每组参数下方程的解集状态;研究格点路径计数,就用动态规划批量算出不同约束下的计数结果。

清洗这一步必须特别小心,因为自动化生成的数学数据里有一个隐雷:程序里的浮点误差和整数溢出。一个求模运算因为溢出产生了边界错误,可能造出一批看似有周期性、实则纯属bug的数据点。AI如果在这样的数据上发现了“规律”,那是在学习程序员的失误,不是在学数学。更麻烦的是,这类伪规律在统计特征上往往特别强,比真实规律还容易被模型抓到。

所以清洗时我会做一次双重校验:对每一条“可疑规律”,至少用两套独立实现的计算代码交叉验证结果。数值上完全一致的才留下,有一丁点差异就剔除,宁可错杀也不留隐患。

3.3 第三步:特征工程作为核心环节——好的特征比模型重要十倍

这一步是整个流程里我最想强调的部分。很多人习惯把数据揉成一个长向量丢给模型,觉得特征工程是上世纪的传统手艺。但在数学猜想生成这个场景里,特征工程恰恰是决定上限的环节。

一个好的特征,必须尽量接近数学家思考时会用的量。举例来说,你怎么描述一个丢番图方程的特征?直接堆参数(系数、次数)当然有用,但那完全是图灵测试意义上的“外行描述”。数学家会先看方程的次数、亏格、奇点数量、有理点密度这些几何和算术不变量。如果你把这些不变量处理成特征,模型就能在接近人类概念空间的地方找规律,产出的候选猜想才可能被数学家看懂。

特征工程里最实用的技巧是把“同一信息的不同视作”同时喂给模型。比如同一个对象,既算一次它的数值函数值,也算一次它取模之后的余数分布,再算一次它的对数增长率。模型如果在其中某一种视角下发现了强信号,往往意味着这个信号在数学上对应某个不变量性质。

3.4 第四步:模型训练和模式筛选

到了模型训练这一步,其实没有太多花哨的。我通常用三类方法交叉验证:

第一类是高斯过程回归。优点是输出自带不确定性估计,可以直接知道模型对某个候选猜想的置信度;缺点是样本量稍大一点就慢得让人想砸电脑,所以只用于小规模高级别验证。

第二类是梯度提升树。这是主力,速度快、处理混合特征方便、特征重要性也相对可解释。缺点是对数据中的平滑趋势不太敏感,但在“可疑区间识别”这个场景上表现极好。

第三类是符号回归。作为产出候选公式的最后一跳,把前两类模型圈出的可疑实例区域用符号回归拟合闭合表达式。这一步生成的公式,就是最终的候选猜想。

通过三类模型交叉打分,我可以给每个候选区域算一个综合分数:稳定性(在不同随机种子下是否反复出现)、偏离度(与已知定理给出的预期相差多少)、简洁度(如果能被符号回归改写为短公式则加分)。按这个分数排序,top10的候选才值得拿给数学家看。

3.5 第五步:质疑优先——让AI自己生成反例搜索器

拿到top10候选之后,我强烈建议不要急着庆祝。更有效的做法是进入“反例搜索”模式:针对每一个候选猜想,专门设计一套穷举和启发式搜索程序,去寻找满足前提条件但违背结论的例子。

这一步和机器学习里的对抗样本有些类似。你要把AI当作一个正在求职的实习生,它提供方案,你负责用最刁钻的方式检验方案有没有漏洞。许多看似漂亮的AI猜想会在这一步快速毙命,因为AI在训练数据覆盖的空间里表现良好,但训练数据覆盖不了的边界区域往往藏着大量反例。

我在自己的流程里,会把反例搜索器也写成一套独立模块。每次出候选猜想,立刻自动启动搜索,给AI候选生成一个反例报告。如果搜索几个小时内找不到反例,这个猜想才会进入下一轮人工评审的排队列表。

3.6 第六步:人工评审——数学家的判断力仍是稀缺资源

到这一步,AI的活儿基本结束了,剩下的就是数学家的时间。但我发现一个现实问题:数学家时间有限,泛泛地把所有候选都丢过来,很容易形成“狼来了”的效应,第二次第三次他们就懒得看了。

所以人工评审前,必须做“可读性包装”。具体包括:把符号回归得到的表达式整理成标准的数学命题格式;附上支持数据表格,怎么采样、范围多大、对哪些边界做过多轮验证;再用一句话说清楚“如果这个猜想成立,它可能的意义是什么”——哪怕这个意义是初步的、猜测性的。

我自己写可读性报告时,会努力控制在A4纸两页以内。业内很少有人能做到,但做得到的时候反馈质量会立竿见影。两页内讲清楚内容,数学家更容易认真当回事,认真看了之后提出的修正意见也更具体。

3.7 第七步:记录、归档、发布——猜想的“耐久度”问题

最后一个步骤容易被忽略,但我认为它决定了整个流程的长期价值:完整的实验记录和归档。

推测猜想和证明定理有个很大的不同。证明定理的产出是确定的——要么对要么错;猜想则可能在完成多年之后才被证实或证伪。如果当时记录不完整,后人很难判断当初这个猜想是在什么样的数据支撑下提出的,也就难以作为引理被后续工作使用。

我的归档习惯是给每个候选猜想分配唯一的ID,记录完整的数据参数、代码版本、模型配置和人工评审意见。以后无论过了多久,只要有人来问“这个猜想当时是怎么来的”,我都能复原整个链路。这个习惯很朴素,但在实际研究中省了非常多的时间。

4. 为什么多数AI猜想会进垃圾桶:失效模式与过滤器设计

AI猜想生成这个方向,最让人产生虚假繁荣感的原因就是:AI出猜想的数量极大,但质量极低。如果一个人只看数量不看质量,很容易得出“AI已经可以当数学家”的错误结论。我的真实经验是,AI产出的候选猜想,最终能通过人工评审的不到百分之一。剩下百分之九十九都会进垃圾桶。

但这不意味着那些被丢弃的猜想没有意义。关键在于,你得知道它们为什么会失效,然后设计一套过滤器去主动识别这种失效模式。否则百分之九十九的废料会消耗掉数学家全部的时间预算,导致那百分之一的珍品被错过。

4.1 伪相关与过拟合:AI看到的是统计幽灵

第一类失效模式最常见:模型在数据里找到了统计相关,但它背后没有任何数学机制支撑。我把这种信号叫作“统计幽灵”。

举个我踩过的坑。有一回我在某个组合计数序列上做模数分析,AI报了一个很强的周期性规律。我起初兴奋得不行,因为模周期性在数论里是个非常受关注的课题。结果复查时才发现,原始数据的生成程序里有一个边界条件设置导致数据被意外截断,截断本身制造了一个虚假的边界效应。AI抓到的就是那个边界效应的影像,不是数学规律。

这类失效模式在特征空间里往往表现为“只在某个特定参数区间内成立”。所以过滤器第一原则就出来了:任何候选猜想,必须验证它在训练数据覆盖范围外的外推表现。如果外推就崩,那大概率是过拟合,立刻毙掉。

4.2 平凡性检测:防止AI重新发明教科书

第二类失效模式是平凡性。AI产出的“新猜想”,大概率只是旧定理的等价变形或者特例。因为数学世界里的规律高度关联,一个不明显的新规律,往往是若干个旧规律在参数空间里交汇产生的影子。

为了拦截这类情况,我建立了一个“平凡性过滤器”。基本做法是:把候选猜想的条件部分和结论部分分别翻译成一套标准形式,然后在本地知识库中检索相同或近似的条目,再对多个旧定理做系统性的数值验证,看候选猜想是否只是旧定理在某个参数取值下的重新表述。

这套过滤器的准确率能做到比较高,但代价是要维护一个结构良好的已知定理库,并且要持续更新。对个人研究者来说前期投入不小,但对团队或长期项目来说绝对值得。我亲眼见过一个AI猜想来来回回“重新发现”了三遍欧拉准则的变体——每次措辞不同,根子上却是同一个定理。

4.3 可证伪性与边界条件的隐形成本

第三类失效模式更有意思:候选猜想虽然有数学意义,但它缺少可证伪性。一个猜想如果没办法被设计出切实可行的检验方案,那它即便看起来再美,也很难被推进。

我之前见过一个AI从几何数据里挖出来的候选猜想,描述某种流形上的曲率积分满足一个漂亮的不等式。数学意义上完全不平凡,但在当时的技术条件下,既没有解析工具能证明,也没有计算工具能在足够大的样本空间里给出强数值验证。它就像一座孤岛,存在但没人能靠近。

我现在会在过滤器里加入“可行性评分”:穷举验证需要的时间预估、所需计算资源与现有能力的匹配度、是否存在已知的反例搜索算法。把这些维度量化后,就可以给每个候选猜想打一个“研究可行性”分,分数太低的直接延期处理,不进入数学家的紧急队列,但留在慢速队列里作为远期储备。

4.4 多层过滤器的实战效果

我这套完整过滤器跑下来,top1000个初始候选里,大约可以筛选出五个“值得数学家花时间看看”的副产品。五个里头最终有一个真正引起数学家的正面反馈。掉率看着吓人,但实际效果已经比完全没有AI辅助时高出几个数量级——因为人工盲扫的初始候选往往连top1000都不到。

这套流程的本质,是用计算力换取数学家的注意力。你投入大量算力去把成千上万个低质量猜想快速淘汰,只把极少数高质量候选送到人类面前。算力便宜,数学家的时间贵,这个交换在经济上是绝对划算的。

5. 让AI猜想的路径与数学家的“为什么”:人机协作的真实模式

跑完整个流程以后,我从一个技术控视角逐渐转变成一个不相信“AI独立发现”的人。准确说,我越来越相信“AI提供线索、人类赋予意义”的协作模式,才是这个领域最健康的状态。

5.1 AI给出线索,数学家负责“为什么”

AI能发现数据里隐藏的强规律,但它永远回答不了“这个规律为什么可以成立”。它能告诉你,在大量数值实验中,某个表达式的值似乎始终落在某个区间;但它没法告诉我,这是因为某个隐藏的代数恒等式,还是两条独立机制偶然交叉。

而数学家的核心能力恰恰在这里。他们看到AI报出的表达式之后,会调动已有的理论框架去问“为什么”——会不会有一个尚未被发现的对称性?是否可能从某个更一般的定理中推出这个特例?这种理论洞察,AI在可预见的将来很难具备。原因很简单:理论洞察意味着在概念空间里做类比、跳跃、抽象,而AI本质上还是在已给数据上做插值。

这解释了一个观察到的悖论:AI在非常窄的数学问题上表现惊艳,但换一个平移到相关的领域,立刻丧失理解力。数学家则可以在两个看起来毫不相关的分支之间建立关联,并且这种关联往往是重大突破的起点。

5.2 可读性是AI猜想的生死线

在实操层面,我越来越意识到“包装”和“可读性”的分量。

试想两个场景。场景A:AI输出一大段向量、号和各种统计量,附带“模型置信度为97%,特征重要性排名前五为sys_x3、sys_x7、sys_y2”。数学家看一眼根本不知道怎么处理。场景B:AI输出一句干净的话:“我们猜测,当 p≡3 mod 4 时,这类曲线的秩存在一个上界,支持数据来自十万个随机实例”。数学家立刻会心一笑,知道这值得进一步验证。

差别不在算法,在于你是否做了最后一公里的翻译。我后来养成了一个习惯:所有AI候选在送给人看之前,必须过一遍自然语言翻译层。可以把这句话理解为一种数学版的“文案编辑”,它不改变内容,但改变了内容被接收的效率。

5.3 案例复盘:一个被采纳的AI猜想是怎么活下来的

最后分享一个具体案例。去年我做了一个和分拆同余相关的实验,目标很简单:用AI批量扫描分拆函数 p(n) 在模数小于20的情况下,有没有未知的同余模式。

流程走完后,AI给了44个候选。第一轮平凡性过滤器毙掉41个,然后我手动复核剩下3个。从这3个里挑了一个看起来相对有前景的发给了某位研究方向相关的学者。

那个候选猜想描述的是:某种带额外参数的分拆函数在模7条件下有一个很短周期的同余性质。此前文献里没有人直接提过。学者看到之后,一开始很怀疑,但数值支撑足够强,他于是花了一个周末试着手动建立这个性质的雏形证明。结果没有完全证明,但确实找到了一个可以解释部分案例的代数变形思路。后来这个例子被写进了一份研究笔记,作为“值得后续深入探索的方向”被保留。

这个案例让我印象最深的,不是“AI发现了新定理”——它没有——而是整个分工非常清晰:AI负责扫描海量数据并给出候选,我的过滤器负责快速淘汰明显无效的选项,数学家的理论直觉负责提供“为什么它可能成立”的路径,以及判断这个方向值不值得继续投入。

没有AI,数学家很难凭直觉在无穷多的同余关系里准确猜到这个特殊位置;没有数学家,AI的这个候选也只会淹没在另外43个废票里。真正让这个项目跑通的,是两套系统的对接,而不是任何单独一方。

5.4 对“AI替代数学家”说法的一个冷静回应

我清楚有一派人热衷讨论“AI是否终将替代人类数学家”。至少从我现在做过的所有实验来看,答案是否定的,甚至这个提法本身就有些背离问题的关键。

现实是,AI远未强大到可以“懂数学”。它擅长的是在不变量构成的高维数据空间里做统计推断,它产出的是“可靠的信息”,不是“可靠的数学命题”。可靠的信息经过数学家的逻辑重构之后才能变成可靠的数学命题。而逻辑重构这个环节,目前还看不到有AI能够胜任的迹象。

另一方面,数学研究里最消耗数学家精力的,往往不是“想出猜想”的那一下灵感,而是“寻找值得投入精力去想的候选”那一大段探索流水线。AI把这段流水线自动化之后,数学家的注意力就能更集中在真正属于人的环节——理论建构、跨域类比和逻辑证明。

我自己在这几年里的具体变化是:花在筛选低质量模式上的时间减少了大约六成,省下来的时间都用在了阅读文献和与同行讨论上。AI没有让我变得更像机器,反而让我有更多时间做更像人做的事情。这个体验,或许是这个领域最值得分享的价值。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进