DeepSeek-Prover-V2模型原理速览

DeepSeek-Prover-V2-671B 是deepseek在4月30日放出来的一个用于数学推理的模型,模型基于deepseekV3, 在lean4证明框架内做了自动定理证明能力的训练。模型架构如图所示:
在这里插入图片描述
在这里插入图片描述

prerequisite:Lean4

Lean4:Lean 是微软研究院在 2013 年推出的计算机定理证明器。Lean4 于 2021 年发布,为 Lean 定理证明器的重新实现,能够生成 C 代码后进行编译,以便开发高效的特定领域自动化。
Lean作为一门独特的语言,兼具数学和编程两方面的特性。
作为交互式定理证明器,Lean 提供了严格的逻辑框架,数学家可以将数学定理转换成代码,并严格验证这些定理的正确性。
作为通用函数式编程语言,它具有依赖类型的严格的纯函数式语言性质。

研究亮点

  1. DeepSeek-Prover-V2论文提出了一个综合冷启动阶段合成推理数据的pipeline,用于高级形式化定理证明。
  2. DeepSeek-V3 作为作为子目标分解和引理形式化(Lean4证明框架)的统一模型,将高层次的证明草图与形式化步骤相结合,生成一系列可管理的子目标;
  3. 子目标可以利用较小的7B模型高效解决,从而显著降低了计算需求
  4. 开发的课程学习框架利用这些分解后的子目标生成难度逐渐增加的训练任务,从而创建了更有效的学习进程
  5. 通过将完整的正式证明与DeepSeek-V3的思维链推理相结合,建立了宝贵的冷启动推理数据,弥合了非形式化数学思维与形式化证明结构之间的差距。随后的强化学习阶段显著增强了这种联系,从而在形式化定理证明能力上取得了重大进步;

通过子目标分解实现递归证明搜索

将复杂定理的证明分解为一系列较小的引理,利用 DeepSeek-V3作为形式化定理证明中子目标分解的统一工具。

基于V3分解证明步骤:为了证明一个给定的形式化定理陈述,提示 DeepSeek-V3 首先用自然语言分析数学问题,然后将证明分解为更小的步骤,并将每一步翻译为对应的 Lean 形式化陈述。由于通用模型已知在生成完整的 Lean 证明方面存在困难,研究者指导 DeepSeek-V3 仅生成一个省略细节的高层次证明草图。最终的思维链以一个由一系列 “have” 语句组成的 Lean 定理告终,每条语句都以 “sorry” 占位符结束,表示需要解决的子目标。这种方法反映了人类构建证明的风格,即将复杂定理逐步简化为一系列更易于处理的引理序列。

递归求解:借助 DeepSeek-V3 生成的子目标,采用递归求解策略,系统地解决每一个中间证明步骤。从“have”语句中提取子目标表达式,将其替换为原始问题中的目标(见图3(a)),并将前面的子目标作为前提条件纳入(见图3(b))。这种构造使得后续子目标能够利用早期步骤的中间结果来求解,从而促进更局部化的依赖结构,并有助于开发更简单的引理。
为了减少广泛证明搜索的计算开销,使用了一个较小的7B证明模型,该模型专门针对处理分解后的引理进行了优化。在成功解决所有分解步骤后,可以自动生成原始定理的完整证明。
在这里插入图片描述

基于子目标的定理证明中的课程学习

两种类型的子目标定理:利用子目标来扩展用于模型训练的形式化陈述的范围。研究者生成了两种类型的子目标定理:一种将前面的子目标作为前提条件,另一种则不包含,分别对应于图3(b)和图3(a)。这两种类型都被整合到专家迭代阶段(Polu 和 Sutskever,2020),建立了一个逐步引导证明器模型系统地解决一组精选的具有挑战性问题的课程。
这一过程基于与 AlphaProof 的测试时强化学习(DeepMind,2024)相同的底层原理,即通过生成目标问题的变体来增强模型解决具有挑战性的国际数学奥林匹克(IMO)级别问题的能力。在这里插入图片描述

统一非形式化推理和形式化证明

proverV2的算法框架分为两个阶段,利用了两种互补的模型:DeepSeek-V3 用于引理分解,以及一个7B证明模型用于完成相应的形式化证明细节。这种流程提供了一种自然且可扩展的机制,通过结合语言模型的高层次推理与精确的形式化验证,合成形式化推理数据。通过这种方式,在单一模型内统一了非形式化数学推理和证明形式化的能力。

通过合成数据实现冷启动

研究者筛选出一组具有挑战性的问题,这些问题在端到端的处理过程中尚未被7B证明模型解决,但所有分解后的子目标均已成功解决。
通过组合所有子目标的证明,研究者构建了原始问题的完整形式化证明。然后,将这个证明附加到DeepSeek-V3的思维链中,该思维链概述了相应的引理分解,从而产生了一个连贯的非形式化推理与后续形式化证明的综合。这使得研究者能够收集数百个高质量的合成冷启动数据,这些数据成为训练DeepSeek-Prover-V2的基础。

以推理为导向的强化学习

在对证明模型进行合成冷启动数据的微调之后,执行一个强化学习阶段,以进一步增强其将非形式化推理与形式化证明构建相结合的能力。基于RLPAF(基于证明助手反馈的强化学习)方法,使用二元正确与否的反馈作为主要的奖励监督形式。在训练过程中,研究者观察到生成的证明结构经常偏离由思维链指导提供的引理分解。
为解决这一问题,在训练的早期步骤中引入了一致性奖励,惩罚结构上的不一致,明确强制在最终证明中包含所有分解的“have”结构引理。在实践中,强制这种对齐可以提高证明的准确性,尤其是在需要多步推理的复杂定理上。

DeepSeek-Prover-V2 的训练细节

DeepSeek-Prover-V2 是通过一个两阶段训练流程开发的,该流程建立了两种互补的证明生成模式:

  • 高效率非思维链(non-CoT)模式:这种模式专注于快速生成形式化的Lean证明代码,侧重于生成简洁的证明,而不显示明确的中间推理步骤。
  • 高精度思维链(CoT)模式:这种模式系统地阐述中间推理步骤,强调透明性和逻辑连贯性,然后构建最终的形式化证明。
    与DeepSeek-Prover-V1.5(Xin等人,2024b)一致,这两种生成模式由两个不同的引导提示控制(具体示例见附录A)。在第一阶段,在课程学习框架内采用专家迭代方法训练一个非思维链(non-CoT)证明模型,同时通过基于子目标的递归证明为难题合成证明。选择非思维链生成模式是为了加速迭代训练和数据收集过程,因为它提供了显著更快的推理和验证周期。在此基础上,第二阶段利用通过整合DeepSeek-V3的复杂数学推理模式与合成形式化证明生成的冷启动思维链(CoT)数据。思维链(CoT)模式通过进一步的强化学习阶段得到增强,遵循通常用于推理模型的标准训练流程。

专家迭代

DeepSeek-Prover-V2的非思维链(non-CoT)模式的训练过程遵循专家迭代(Polu和Sutskever,2020)的范式,这是开发形式化定理证明器的广泛采用的框架。在每次训练迭代中,当前最佳的证明策略被用于生成对之前迭代中尚未解决的难题的证明尝试。这些由Lean证明助手验证成功的尝试被纳入SFT数据集,用于训练改进的模型。这种迭代循环确保模型不仅从初始演示数据集中学习,还能提炼出自己的成功推理轨迹,逐步提高解决更难问题的能力。整体训练过程与DeepSeek-Prover-V1(Xin等人,2024a)和DeepSeek-Prover-V1.5(Xin等人,2024b)基本保持一致,仅对训练问题的分布进行了两处修改。
首先,纳入了来自自动形式化和各种开源数据集(Ying等人,2024;Dong和Ma,2025;Lin等人,2025)的额外问题,扩大了训练问题领域的覆盖范围。其次,通过子目标分解生成的问题扩充了数据集,旨在解决MiniF2F基准测试(Zheng等人,2022)的验证集中更具挑战性的实例。

监督式微调

在DeepSeek-V3-Base-671B(DeepSeek-AI,2024)上进行监督式微调,使用恒定的学习率5e-6,在16,384个标记的上下文窗口内进行训练。训练语料库由两个互补的来源组成:(1)通过专家迭代收集的非思维链(non-CoT)数据,这些数据生成不含中间推理步骤的Lean代码;(2)在第2.2节中描述的冷启动思维链(CoT)数据,这些数据将DeepSeek-V3的高级数学推理过程提炼成结构化的证明路径。非思维链(non-CoT)部分强调在Lean定理证明器生态系统中的形式化验证技能,而思维链(CoT)示例则明确模拟将数学直觉转化为形式化证明结构的认知过程。
在这里插入图片描述
未来工作将致力于将这一范式扩展到类似AlphaProof的系统,最终目标是攻克代表自动化定理证明前沿挑战的国际数学奥林匹克(IMO)级别的数学问题。


快速使用

DeepSeek-Prover-V2-671B 与DeepSeek-V3使用同样的模型架构。使用transformers库加载Prover-V2-7B模型。

from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
torch.manual_seed(30)

model_id = "DeepSeek-Prover-V2-7B"  # or DeepSeek-Prover-V2-671B
tokenizer = AutoTokenizer.from_pretrained(model_id)

formal_statement = """
import Mathlib
import Aesop

set_option maxHeartbeats 0

open BigOperators Real Nat Topology Rat

/-- What is the positive difference between $120\%$ of 30 and $130\%$ of 20? Show that it is 10.-/
theorem mathd_algebra_10 : abs ((120 : ℝ) / 100 * 30 - 130 / 100 * 20) = 10 := by
  sorry
""".strip()

prompt = """
Complete the following Lean 4 code:

```lean4
{}
Before producing the Lean 4 code to formally prove the given theorem, provide a detailed proof plan outlining the main proof steps and strategies.
The plan should highlight key ideas, intermediate lemmas, and proof structures that will guide the construction of the final formal proof.
""".strip()

chat = [
  {"role": "user", "content": prompt.format(formal_statement)},
]

model = AutoModelForCausalLM.from_pretrained(model_id, device_map="auto", torch_dtype=torch.bfloat16, trust_remote_code=True)
inputs = tokenizer.apply_chat_template(chat, tokenize=True, add_generation_prompt=True, return_tensors="pt").to(model.device)

import time
start = time.time()
outputs = model.generate(inputs, max_new_tokens=8192)
print(tokenizer.batch_decode(outputs))
print(time.time() - start)

REF

https://github.com/deepseek-ai/DeepSeek-Prover-V2
https://deepseeksai.com/prover-v2-671b/
DeepSeek-Prover-V2:AdvancingFormalMathematicalReasoningvia
ReinforcementLearningforSubgoalDecomposition:https://arxiv.org/pdf/2504.21801
https://huggingface.co/deepseek-ai/DeepSeek-Prover-V2-7B/tree/main
https://lean-zh.lookeng.cn/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值