想象一座由符号与逻辑砌成的巨大迷宫,深处藏着名为“定理”的宝石。过去,自动定理证明器像不知疲倦却死板的机器人,把每条岔路都硬闯一遍,很快被指数膨胀的路径拖垮。GPT-f 登场后,局面被改写:它是一个通读过成千上万张前辈攻略图的老探险队长,拥有 Transformer 赋予的数学直觉,每到一个岔路口能快速判断哪几条路最有希望,然后派出 K 支小分队(束搜索)分头探索;而每一步落脚是否合法,要交给迷宫规则手册 Lean 来严格检查。训练这位队长靠三步曲:读万卷攻略(预训练)、反复走迷宫(强化学习)、赛后复盘(自我博弈)。最终,它在名为 miniF2F 的标准迷宫图上,证明了许多此前机器无法企及的高难度数学命题。

岗位关联

学懂 GPT-f 与证明搜索,等于掌握“语言模型 + 形式验证”这一 AI4Math 核心范式——无论是自动化数学竞赛解题、软件形式化验证,还是在交互式证明器中做 AI 副驾驶,这套方法都是绕不开的技术底座。

目录
  1. 可视化演示
  2. 背景与目标
  3. 核心架构
  4. 证明搜索
  5. 训练方法
  6. 性能评估
  7. 局限与优化
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示GPT-f最佳优先搜索证明树(目标→策略→QED)、decoder-only Transformer架构将证明状态编码为文本序列生成下一步策略、以及在Metamath上56%证明成功率的性能对比。

本节配有交互动效(进入视口后自动加载,约 3KB)。

最佳优先证明搜索树 从goal节点出发,GPT-f为每个候选策略打分(对数概率),优先扩展得分最高的节点 绿色路径为最优证明路径:goal→t2→t6→QED,对数概率累计最高 priority=log P(tactic|state) 最佳优先搜索在指数级证明空间中高效找到证明路径

背景与目标

想象你在探索一座巨大的数学迷宫,迷宫尽头藏着定理这颗宝石。以前,自动定理证明器像一位只会按固定规则走路的机器人,遇到岔路要么一条道走到黑,要么把所有岔路都试一遍,结果常常困在指数级的死路里。GPT-f 的出现,就像给这座迷宫请来了一位读过成千上万张前人攻略地图的老探险队长。这位队长不是神,但他知道什么样的路更有可能通向宝藏。

GPT-f 是一个用 Transformer 训练出的“证明步骤建议器”。它不直接判定一个命题真假,而是针对当前证明状态,建议下一步该用哪个 tactic(证明策略)。但光有建议远远不够——每一步建议都必须交给 Lean 这个“迷宫规则手册”来验证:这一步走得不合法,立刻打回。所以 GPT-f 的真实定位是“建议者 + 验证者”的组合:模型负责出主意,Lean 负责把质量关。

形式化地,一个证明就是一个让证明状态不断收缩的 tactic 序列。给定初始目标 $\Gamma$,我们希望找到一个 tactic 序列 $\mathbf{t}$,让它把待证目标全部消解——这就是证明搜索的本质目标。

所以,探险队长负责在大脑里翻阅攻略、给出路线建议,而每一次落脚是否踩进陷阱,必须由迷宫的规则手册 Lean 说了算。这就是 GPT-f 的基本分工——它管“怎么想”,Lean 管“能不能走”。

∃ t∈T∗:  goals(Γ,t)=∅\displaystyle \exists\, \mathbf{t} \in \mathcal{T}^{*}:\; \text{goals}(\Gamma, \mathbf{t}) = \varnothing
公式说的是:存在一个由证明策略拼成的有限序列,把它从头到尾执行一遍,初始的待证目标就会被全部清空。
  1. 存在一个策略序列开头的 $\exists$ 表明“在茫茫证明空间里,有一条 tactic 序列 t 等着被找到”。
    ∃ t\exists\, \mathbf{t}
  2. 策略序列属于所有有限序列$\mathbf{t} \in \mathcal{T}^{*}$ 表示 t 是由基础 tactic 拼接而成的有限序列,不是任意乱写的符号。
    t∈T∗\mathbf{t} \in \mathcal{T}^{*}
  3. 作用后目标清空$\text{goals}(\Gamma, \mathbf{t}) = \varnothing$ 表示从初始目标 Γ 出发,依次执行这些 tactic 后,待证目标全部解决,证明完成。
    goals(Γ,t)=∅\text{goals}(\Gamma, \mathbf{t}) = \varnothing

核心架构

探险队长的“经验直觉”并非天生,而是来自一个训练有素的“大脑”——GPT-f 底层的 Transformer 语言模型。这个大脑的日常工作是:看一段文字,预测下一个词。在证明场景里,“文字”就是证明状态,“下一个词”就是下一个 tactic。

Transformer 把证明过程当成一个 token 序列来建模。当前目标、可用的前提、已经执行的 tactic,都被编码成一个上下文向量;模型在这个上下文上做注意力计算,推断出下一步最该用什么 tactic。这种“看完前文再落笔”的方式,非常像一个时刻记着当前处境的经验丰富的探险者——他不会忘记自己走过的路,也不会忽略墙上新出现的线索。

技术的核心是条件生成概率:给定上下文 $c$(证明状态与历史),模型为候选 tactic 序列 $\mathbf{t}$ 分配概率。整个序列的概率被拆解成每一步的乘积,这正是语言模型自回归生成的方式。

简而言之,队长的“眼力”就是一组条件概率分布——它能大致估算每条路有多大的成功希望,并据此给后面的搜索算法提供“该押哪几条路”的线索。

P(t∣c)=∏i=1nP(ti∣t<i,c)\displaystyle P(\mathbf{t} \mid c) = \prod_{i=1}^{n} P(t_i \mid t_{<i}, c)
公式的意思是:整个证明序列出现的概率,等于“第一步选对”的概率乘“第二步选对”的概率……一直乘到最后一步。
  1. 整体概率$P(\mathbf{t} \mid c)$ 表示给定当前证明状态与历史,模型认为整段 tactic 序列 t 有多靠谱。
    P(t∣c)P(\mathbf{t} \mid c)
  2. 连乘展开$\prod_{i=1}^{n}$ 把联合概率拆成每一步的逐步条件概率,模型每生成一个 tactic 只往前看一小步。
    ∏i=1n\prod_{i=1}^{n}
  3. 单步条件概率$P(t_i \mid t_{<i}, c)$ 表示生成第 i 个 tactic 时,只依赖已经生成的前缀和初始上下文——探险队长的每一步决策都基于当前的路况。
    P(ti∣t<i,c)P(t_i \mid t_{<i}, c)

证明搜索

有了会出主意的队长,还得有一套不放弃、会调度的搜索策略,那就是“同时派出 K 支小分队走 K 条最有希望的路”——这就是束搜索(beam search)的思想。

束搜索每层保留评分最高的 K 条路径(束宽 K),从这 K 条路径继续扩展,再评分、再保留。相比穷举所有候选,束搜索牺牲少量完备性,换取了计算量的大幅下降。在证明搜索中,模型的 log 概率就是评分函数:概率越高,说明队长越看好这条路。

还需要认识“分支因子”这个概念:每个状态下可选的 tactic 种类越多,分支因子就越大,候选集膨胀得越快,束宽就成了控制资源的关键旋钮。探险队一次只派 K 支小分队而不是走遍所有岔路,本质是“聪明地赌”;虽然可能错过宝藏,但换来的是在有限预算里走得更深。

log⁡P(a)=∑t=1Tlog⁡P(at∣a<t,c)\displaystyle \log P(\mathbf{a}) = \sum_{t=1}^{T} \log P(a_t \mid a_{<t}, c)
公式说明:一条候选证明路径的总分,等于每一步“这一步走得好不好”的分数的累加。取对数是为了防止一堆小数连乘后小到计算机无法表示。
  1. 对数概率$\log P(\mathbf{a})$ 把相乘变成相加,避免小数连乘导致的下溢,方便计算机稳定地打分排序。
    log⁡P(a)\log P(\mathbf{a})
  2. 求和展开$\sum_{t=1}^{T}$ 遍历路径上的每个位置,让每一步的贡献都能被单独累加。
    ∑t=1T\sum_{t=1}^{T}
  3. 单步对数概率$\log P(a_t \mid a_{<t}, c)$ 是模型对第 t 步动作的置信度(对数域),置信度越高,这一步越值得保留。
    log⁡P(at∣a<t,c)\log P(a_t \mid a_{<t}, c)

训练方法

探险队长是怎么“读万卷书”的?GPT-f 先在大规模数学语料上预训练——这相当于让队长通读几千本数学题解与攻略,学会数学符号的语法和常见证明套路。没有这一步,模型连“像样的 tactic”都写不出来。

预训练给了“语感”,但“能不能真的走出迷宫”要用强化学习来调优。GPT-f 让当前模型反复尝试解题,成功得到一个奖励,失败没有;然后根据奖励更新参数,让“能成功的动作”在未来更容易被选中。这正是策略梯度的思想。

更妙的是自我博弈迭代:用当前模型去搜集新的成功/失败证明,拿这些新数据继续训练,得到更聪明的模型,如此循环往复。为了让信号更丰富,还可以设计各类奖励——证明完成给高分、步骤合法给基础分、步数太长给惩罚。读万卷书 + 行万里路 + 赛后复盘,这正是探险队长的成长闭环。

∇θJ(θ)=Eτ∼πθ[∑t=0T∇θlog⁡πθ(at∣st) R(τ)]\displaystyle \nabla_\theta J(\theta) = \mathbb{E}_{\tau \sim \pi_\theta} \left[ \sum_{t=0}^{T} \nabla_\theta \log \pi_\theta(a_t \mid s_t)\, R(\tau) \right]
公式的意思是:先让模型按当前策略走完整条证明轨迹,如果最终证明成功,就上调这条轨迹上所有动作的概率;如果失败,就下调。
  1. 策略梯度$\nabla_\theta J(\theta)$ 表示证明成功率目标对模型参数 θ 的梯度,指导参数朝“更可能成功”的方向更新。
    ∇θJ(θ)\nabla_\theta J(\theta)
  2. 轨迹期望$\mathbb{E}_{\tau \sim \pi_\theta}$ 表示对所有可能的证明轨迹 τ(状态—动作序列)按当前策略的概率取平均,相当于反复走迷宫后统计经验。
    Eτ∼πθ\mathbb{E}_{\tau \sim \pi_\theta}
  3. 对数概率梯度$\nabla_\theta \log \pi_\theta(a_t \mid s_t)$ 衡量在状态 $s_t$ 下选择动作 $a_t$ 的对数概率对参数的敏感度,告诉模型“该往哪个方向拧参数”。
    ∇θlog⁡πθ(at∣st)\nabla_\theta \log \pi_\theta(a_t \mid s_t)
  4. 奖励加权$R(\tau)$ 是整条轨迹最终得到的奖励,它给梯度加权:奖励越高,这条轨迹上的动作被强化得越厉害。
    R(τ)R(\tau)

性能评估

怎么衡量这位探险队长到底厉不厉害?光靠嘴上说没用,得放到标准迷宫里比赛。对 GPT-f 来说,这个标准迷宫叫 miniF2F——一个包含大量数学竞赛难度题目的形式化题库,覆盖代数、数论、不等式等多个领域,用来公平对比各种自动证明器与人类水平。

核心指标是成功率(Accuracy):在给定题目中,模型成功找到证明的比例。论文里 GPT-f 在 miniF2F 上超过了当时的基线和多个传统自动证明系统,在与人类选手的同台对比中也表现出竞争力。

除了成功率,研究者还关注证明效率——找到证明所需的搜索节点数或计算时间。少而快才是好队长:同样走进迷宫,别人绕了十万步,你一千步就找到宝藏,这就是效率优势。

Acc=NsolvedNtotal×100%\displaystyle \text{Acc} = \frac{N_{\text{solved}}}{N_{\text{total}}} \times 100\%
公式很直白:成功率等于“成功证明的题数”除以“总题数”,再乘以 100% 变成百分制,方便与人类和其他机器对比。
  1. 已解决题目数$N_{\text{solved}}$ 表示在基准测试中,模型成功构造出完整证明的题目数量。
    NsolvedN_{\text{solved}}
  2. 总题数$N_{\text{total}}$ 表示基准测试的全部题目数量,是成功率的基数。
    NtotalN_{\text{total}}
  3. 百分比缩放$\times 100\%$ 把比值映射到百分制,让"60%"这样的数字更直观,也便于和人类选手的得分直接比较。
    ×100%\times 100\%

局限与优化

即便聪明如队长,迷宫也不会轻易认输。证明搜索最大的敌人是组合爆炸——每个岔路口再分岔,候选路线数目呈指数级膨胀。分支因子 $b$(每步可选的 tactic 种类)越大,搜索深度 $d$(证明步数)越深,搜索树的节点数就越惊人。

GPT-f 的局限也与此相关:一是搜索瓶颈——束宽不够大可能错过唯一证明;二是数据依赖——预训练语料的质量直接影响模型直觉;三是长证明难题——证明一长,深度就深,树就失控。优化的方向包括:更好的搜索启发式(利用模型的不确定性做主动采样)、更紧凑的证明压缩、与环境交互中的课程学习,以及把大语言模型的常识与符号验证器深度绑定。探险不会停止:承认局限,研究对策,这位队长正和数学家一起,把更多迷宫里的宝藏一一取回。

O(bd)\displaystyle O(b^{d})
公式揭示了一个残酷事实:哪怕 $b$ 只有 4、$d$ 只有 10,搜索空间也有百万量级;深度再翻一倍,机器直接算不过来。
  1. 大O记号$O(\cdot)$ 描述搜索开销的渐进增长量级,忽略常数只看趋势。
    O(⋅)O(\cdot)
  2. 分支因子作底数$b$ 是每个状态下可选的 tactic 种类,它决定搜索树每一层“长多胖”。
    bb
  3. 深度作指数$d$ 是证明步数,它决定搜索树“长多高”;指数增长让节点数瞬间失控,这就是组合爆炸。
    dd

AI 应用场景

数学竞赛题的自动求解

阶段:证明搜索与模型推理

解决的问题:传统自动定理证明器面对竞赛题时,搜索空间过大,人工设计启发式规则成本极高。GPT-f 用预训练 + 束搜索,把“经验”注入搜索过程,使机器能够挑战 miniF2F 中的国际数学奥林匹克风格难题。

具体案例:研究者把 miniF2F 题库输入 GPT-f,模型在 Lean 中逐条尝试,成功证明了一部分此前自动证明器无法处理的题目,并与人类基线对照。这套流程也可以作为数学竞赛辅导工具的原型,帮助学生快速验证思路。

软件与协议的形式化验证

阶段:策略生成与验证

解决的问题:安全关键的智能合约和通信协议需要形式化验证,但人工编写证明枯燥且容易出错。GPT-f 能把“程序性质证明”拆解成一段段 tactic 序列,大幅降低验证门槛。

具体案例:开发者在 Lean 中定义智能合约的“余额不变”性质,GPT-f 给出初始可证步骤,验证工程师补全剩余细节,再配合代码评审完成对合约的安全审计。

辅助数学家探索新定理

阶段:交互式定理证明辅助

解决的问题:数学家探索新定理时,常被繁琐的子目标卡住。GPT-f 作为“证明副驾驶”,可实时在 Lean 中提议下一步 tactic,再由数学家决定采纳还是修正。

具体案例:在数论研究中,GPT-f 针对某个关键引理建议了一条快捷证明路径,数学家通过交互式界面逐步确认,把精力集中在真正的创造性工作上,而不是机械的步骤推导。

Python 演示

python42 行
"""束搜索演示:用最少的交换操作把 'abc' 变成 'cba'."""from heapq import heappush, heappop  def apply_swap(state, i):    """在位置 i 交换相邻字符,相当于一步 tactic."""    if i < 0 or i >= len(state) - 1:        return None    s = list(state)    s[i], s[i + 1] = s[i + 1], s[i]    return "".join(s)  def neighbors(state):    """返回全部可能的下一步."""    return [n for n in (apply_swap(state, i) for i in range(len(state) - 1)) if n is not None]  def beam_search(start, goal, beam_width=3, max_steps=8):    """束搜索:每轮保留评分最高的 beam_width 条路径."""    beam = [(0.0, start, [start])]    for depth in range(max_steps):        candidates = []        for _, state, path in beam:            for nxt in neighbors(state):                if nxt == goal:                    return path + [nxt], depth + 1                score = -sum(a == b for a, b in zip(nxt, goal)) - (depth + 1) * 0.1                heappush(candidates, (score, nxt, path + [nxt]))        beam = []        for _ in range(beam_width):            if not candidates:                break            beam.append(heappop(candidates))    return None, max_steps  if __name__ == "__main__":    path, steps = beam_search("abc", "cba", beam_width=3)    print("找到证明,共用", steps, "步:")    for i, s in enumerate(path):        print("  step", i, ":", s)
目的:用一个小型束搜索模拟 GPT-f 的证明搜索过程——每轮只保留评分最高的 K 条路径,直到找到从初始状态到目标状态的“证明路径”。
  1. from heapq import heappush, heappop用堆维护候选路径集合,保证高效取出评分最高的路径。
  2. def neighbors(state)生成当前状态所有可用的"tactic",相当于 Lean 中合法的证明步骤。
  3. beam = [(0.0, start, [start])]束的初始化:只有起点一条路,路径记录为 [start]。
  4. score = -sum(a == b for a, b in zip(nxt, goal)) - (depth + 1) * 0.1打分函数:与目标越接近分数越高,同时惩罚步数,逼模型走捷径。
  5. heappush(candidates, (score, nxt, path + [nxt]))把新扩展的候选路径放入堆中,等待筛选。
  6. beam.append(heappop(candidates))只保留分数最高的 K 条路径,这就是“束宽”的体现。
  7. return path + [nxt], depth + 1找到目标立即返回,证明完成。

常见误区

误区

正解

误区

正解

误区

正解

误区

正解

面试题

Q1. GPT-f 在定理证明中的角色是?

单选题 · easy

  • A.生成待验证的证明步骤← 正确答案
  • B.直接判定命题的真假
  • C.自动消除所有人工环节
  • D.完全取代 Lean 验证器

答案:A。GPT-f 向 Lean 环境输出 tactic 建议,每个建议都要被验证,因此它的角色是“生成待验证的证明步骤”。B 是自动定理证明的终极目标但 GPT-f 不直接判定真假;C 夸大其词;D 方向反了,GPT-f 依赖 Lean 而非取代它。

Q2. GPT-f 依赖哪个工具完成形式化验证?

单选题 · easy

  • A.依托 Lean 框架验证每步证明← 正确答案
  • B.依靠 Coq 框架检查全部证明
  • C.使用 Isabelle 开展形式化验证
  • D.借助 Metamath 实现自动排版

答案:A。GPT-f 论文基于 Lean 证明助手,它生成的就是 Lean 的 tactic 序列。B、C、D 都是其他证明工具或用途描述,不是 GPT-f 的选择。记住:模型建议,Lean 验证,两者是配套关系。

Q3. 束搜索的核心策略是?

单选题 · mid

  • A.每层仅保留评分最高的候选← 正确答案
  • B.对所有分支做穷举式搜索
  • C.随机选择多条路径交替前进
  • D.深度优先直到找到证明为止

答案:A。束搜索每层展开后按评分排序,只保留最高的 K 条路径继续扩展,这是答案 A。B 是穷举搜索,不是束搜索;D 是深度优先策略;随机交替(C)缺少“保留最优”的核心思想。

Q4. 分支因子过高会给搜索带来?

单选题 · mid

  • A.候选状态数量指数级膨胀← 正确答案
  • B.每步验证速度变得更快
  • C.证明序列长度大幅缩短
  • D.训练数据规模自动扩大

答案:A。分支因子等于每个状态下可选的 tactic 数量,它作为搜索树的“底数”,越大节点增长越快,所以 A“候选状态数量指数级膨胀”正确。B、C、D 都与分支因子的直接后果无关。

Q5. GPT-f 的预训练主要基于?

单选题 · easy

  • A.大规模数学语料库← 正确答案
  • B.随机生成的噪声文本
  • C.未经筛选的网页内容
  • D.无需任何外部数据

答案:A。GPT-f 在大规模数学语料(数学文本与形式化证明)上预训练,这让模型学会数学符号与常见推理模式,因此 A 正确。B、C 语料质量不对,D“无需数据”是错的,RL 之前仍需预训练打底。

Q6. 强化学习在 GPT-f 训练中的作用是?

单选题 · mid

  • A.按证明成功率迭代优化策略← 正确答案
  • B.彻底移除预训练数据依赖
  • C.直接手动构造所有验证规则
  • D.随机扰动所有网络权重取值

答案:A。强化学习在固定验证环境中,以证明成功为奖励,用策略梯度优化模型参数,让高奖励动作概率上升,对应 A。B 说移除预训练依赖不实;C 是验证器的职责;D 是随机搜索的做法,不是 RL 的机制。

Q7. miniF2F 基准主要用于?

单选题 · mid

  • A.衡量模型对数学难题的解决能力← 正确答案
  • B.提供更快更稳的模型推理速度
  • C.替代 Lean 内核完成所有形式验证
  • D.将数学语料库自动扩增为翻倍

答案:A。miniF2F 是一组包含竞赛难度的形式化数学题库,用来评估自动证明系统的“解决能力”,因此 A 正确。B、C、D 分别描述推理速度、替代内核、语料扩增,都不是 miniF2F 的目标。

Q8. GPT-f 系统中包含哪些关键部件?

多选题 · hard

  • A.Transformer 语言模型负责生成建议← 正确答案
  • B.束搜索负责在状态空间引导导航← 正确答案
  • C.用户手工逐个标注每步操作
  • D.Lean 内核负责验证每步的合法性← 正确答案

答案:ABD。GPT-f 系统 = Transformer 生成 tactic 建议(A)+ 束搜索在状态空间导航(B)+ Lean 内核验证每步(D)。C 错误,系统自动搜索,不需要用户手工逐步骤标注;人类主要负责设定目标和评估最终结果。

Q9. 证明搜索中组合爆炸的来源有?

多选题 · extreme

  • A.分支因子随着状态快速增长← 正确答案
  • B.搜索深度增加导致路径爆炸← 正确答案
  • C.预训练数据规模不足而受限
  • D.随机策略使探索空间失控← 正确答案

答案:ABD。组合爆炸是搜索空间结构的固有特性:A 分支因子越大每层候选越多,B 深度越深树越高,D 随机策略无法有效剪枝会加剧爆炸。C“预训练数据规模不足”影响模型质量,但不是搜索空间爆炸的结构性来源,因此不选。

Q10. 关于 GPT-f,以下哪个说法是正确的?

单选题 · hard

  • A.它在 Lean 框架内生成候选证明← 正确答案
  • B.每个证明步骤经内核严格校验
  • C.模型输出免验证即为真理
  • D.预训练帮助模型习得数学模式

答案:A。GPT-f 在 Lean 框架内生成候选证明(A),每个步骤由 Lean 内核验证(B),预训练帮它学到数学模式(D),这三个都是正确的关键认知。C“免验证即为真理”是典型的误区:模型建议必须经过验证才能算数。综合理解:AI 是建议器,Lean 是裁判。