写在前面

事情是这样的,就在五一假期开始前夕,DeepSeek放出了模型DeepSeek-Prover-V2-671B:

这是延续了节假日狂飙的传统?

 

言归正传,我们看看这次放出了哪些核心技术。

最直接的方法是参见技术报告,也在半夜放出来了(真是一群勤奋的家伙啊)。

链接:https://github.com/deepseek-ai/DeepSeek-Prover-V2/blob/main/DeepSeek_Prover_V2.pdf,网络不方便的小伙伴可以关注公众号xiaoxi666后回复“DeepSeek_Prover_V2”获取。

这篇论文到底说了啥呢,先画个大纲总结下:

通篇读下来,印象最深刻的就是”形式化数学推理“和”形式化证明“这两个概念,他们两者的结合也是这个模型最大的创新点。

“非形式数学推理”与“形式化证明”

非形式数学推理的英文名为 informal mathematical reasoning,指使用自然语言和直观的逻辑来理解和解释数学概念或证明定理。它依赖于人类的直觉和经验,通常不涉及严格的符号和规则。

形式化证明的英文名为 formally verified 或者 formal theorem proving,指使用严格的数学符号和逻辑规则来构建和验证数学证明,要求每一步都必须有明确的依据,并且整个证明过程必须是可验证的。现在模型推理引入该方法,称为“形式化数学推理”,英文名为 formal mathematical reasoning。

两者的区别主要在于表达方式的精确性:

特点 非形式化推理 形式化推理
表达方式 自然语言 严格的数学符号和逻辑规则
精确性 较低,可能包含模糊表述 高,每一步都有明确依据
适用范围 日常交流、初步探索 严格证明、软件验证
工具和技术 直觉、经验、自然语言处理 形式化语言、自动定理证明器
示例 因为三角形内角和为180度,所以这个三角形是直角三角形。 根据欧几里得几何公理,若∠A + ∠B + ∠C = 180°,且∠A = 90°,则该三角形为直角三角形。

在深度学习和人工智能领域,非形式化推理和形式化证明的结合变得越来越重要(尤其数学定理证明时):

  • 非形式化推理可以帮助模型理解问题的背景和上下文,生成初步的证明思路。
  • 形式化推理则用于将这些思路转化为严格的数学证明,确保每一步都是正确的。

通过结合这两种方法,可以更有效地解决复杂的数学问题,提高模型的推理能力和证明的准确性。这也是 DeepSeek-Prover-V2 主要发力点。

其实,早在2024年12月20日,就有一篇论文“Formal Mathematical Reasoning: A New Frontier in AI”讨论了形式化数学推理在人工智能领域中的重要性,这篇论文主要围绕4个点进行了研究:

1、形式化数学推理的定义:形式化数学推理基于形式系统,如一阶逻辑、依赖类型理论和带有形式规范的计算机程序。这些系统提供了一个环境,可以验证模型的推理并提供自动反馈。

2、证明工具的使用:同样是引入了Lean这种用于编写形式证明的函数式编程语言。它适用于编写数学定义、定理和证明,其核心特性是能够自动检查证明的 correctness。

3、自动形式化:自动形式化是将非正式数学文本自动转换为形式数学表达式的过程。这可以通过机器学习和深度学习技术实现,如神经机器翻译和自回归语言模型。

4、神经定理证明:神经定理证明是利用深度学习方法在形式系统中寻找定理证明的启发式方法。常用的方法包括专家迭代、从错误中学习和非正式证明草图的利用。

其实,在AIGC时代以前,形式化验证的手段常用于安全关键的系统(例如航空航天、高铁动车、核电等),其系统的行为必须是可以预测的,形式化方法能够确保这些系统的行为符合预期,避免死锁、数据竞争等问题。更为具体的描述可参见往期文章:

可以预见的是,未来的强人工智能,会朝着越来越严谨的推理方向演进(虽然AGENT、RAG等外挂技术还是当下主流)。引入形式化验证的方法,对于迈向强人工智能之路具有极为重要的意义。

Lean4 与 ADT

提到 Lean4,就不得不提一下 ADT,它们有很深的渊源。ADT的全称是 Algebraic Data Types,一般译为“代数数据类型”。ADT 是 Lean4 的核心组成部分,用于定义数据结构、逻辑命题和数学对象,并通过模式匹配和递归机制支持函数定义和证明。

比如,在Lean4中,可以使用inductive关键字来定义 ADT。例如,定义布尔类型 Bool 和自然数类型 Nat

inductive Bool where
| false : Bool
| true : Bool inductive Nat where
| zero : Nat
| succ (x : Nat) : Nat

上述定义分别创建了布尔类型和自然数类型,其中布尔类型有两个构造函数 false 和 true,自然数类型有两个构造函数 zero 和 succ

更为复杂的数学结构和数据模型也可以定义,比如定义一个简单的二叉树结构:

inductive Tree (α : Type) where
| leaf : Tree α
| node : Tree α → α → Tree α → Tree α

上述定义创建了一个参数化的二叉树类型,其中 leaf 表示空树,node 表示一个包含左子树、值和右子树的节点。

模式匹配功能也不在话下,比如定义一个函数来计算二叉树的大小:

def treeSize {α : Type} : Tree α → Nat
| leaf => 0
| node left _ right => 1 + treeSize left + treeSize right

总的来说,Lean4 通过支持 ADT 提供了强大的数据定义和操作能力,这使得它在形式化数学和自动化定理证明中非常有用。另外,Lean4 的强大类型系统和元编程能力进一步巩固了它在这些领域的应用潜力。

最后,可以参考往期文章,其中有一篇推荐文章,结合ADT和代数解空间进行了详细阐述:

DeepSeek又在节前放大招!的更多相关文章

  1. 2013年国庆节前51Aspx源码发布详情

    Sky软件公司网站修正版源码  2013-9-30 [VS2010]源码描述:针对Sky软件公司网站源码进行修正.修改ckeditor引用问题,发布样式错误问题.vs2010直接编译.发布成功. 网站 ...

  2. 50个新的汉化Demo!纯前端 Wijmo 放大招

    Wijmo 是为企业应用程序开发而推出的一系列包含 HTML5 和 JavaScript 的开发控件,包含 Wijmo 5 . Wijmo 3 及面向企业级应用的控件金融图表.FlexSheet 和 ...

  3. 法国总统放大招,用“分身术”竞选总统 全息3d 网

    编辑:大熊 [摘要]法国总统采用全息技术实现"分身"演讲,可谓是一次演讲,全面覆盖! 全息3d网讯:众所周知,欧美国家的总统是通过公开竞选得到的,所以能更直接.更广泛的近距离接触民 ...

  4. 新年放大招:Github 私库免费了!

    据<Github 嫁入豪门>这篇文章刚好半年了,那时候栈长还表示对 Github 的期待,仅仅半年,现在就已经有了巨大改变. 微软果然是豪门,嫁入半年就已经开花结果了,免费私库已全面无限制 ...

  5. 劳动节前得空半天-总结一下最近使用的LINUX命令

    一.搜索文件 1.locate xxx.log   全盘搜索xxx.log文件 2.which java       查找命令 3.ll  xxx.log         在目录下查找文件 二.搜索内 ...

  6. 易观OLAP算法大赛结果揭晓,开源组黑马放大招!

    100+天激烈赛程,40+国内顶级技术豪门对决,历经研发内部测试.正式环境测试和易观数据正式环境跑benchmark三大阶段.10月28日,易观OLAP算法大赛优胜名单出炉! 40+技术门派比武 易观 ...

  7. 春节前“摸鱼”指南——SCA命令行工具助你快速构建FaaS服务

    春节将至,身在公司的你是不是已经完全丧失了工作的斗志? 但俗话说得好:"只要心中有沙,办公室也能是马尔代夫." 职场人如何才能做到最大效能地带薪"摸鱼",成为了 ...

  8. Java字符串到数组的转换--最后放大招

    本文是关于如何在Java中以不同方式将String转换为String Array的几种方法,按照惯例,文末会分享Groovy语言中的实现. split()方法 字符串api是通过split()方法添加 ...

  9. RecyclerView使用大全

    RecylerView介绍 RecylerView是support-v7包中的新组件,是一个强大的滑动组件,与经典的ListView相比,同样拥有item回收复用的功能,这一点从它的名字recyler ...

  10. 首个threejs项目-前端填坑指南

    第一次使用threejs到实际项目中,开始的时候心情有点小激动,毕竟是第一次嘛,然而做着做着就感受到这玩意水好深,满满的都是坑,填都填不过来.经过老板20天惨无人道的摧残,终于小有成就. 因为第一次搞 ...

随机推荐

  1. 4.vue Router路由设置

    router=>index.js 设置路由信息 1.路由文件按分组拆分多个 import analysisRouter from './analysisRouter'; import users ...

  2. flutter-超出部分隐藏

    第一种写法 1 ConstrainedBox( 2 constraints: BoxConstraints( 3 maxHeight: 100 4 ), 5 child: Stack( 6 overf ...

  3. ABB机器人IRB 6700维修保养技巧

    通过与子锐机器人维修保养服务定制合理的机器人保养工作,可以确保ABB机器人IRB 6700的持续稳定运行,延长其使用寿命,为企业的生产提供有力保障. 一.ABB机器人IRB 6700日常检查与维护 外 ...

  4. IAP升级(STM32)

    IAP升级(STM32) IAP作用简述:将要升级的程序bin文件通过串口发送给STM32,STM32接收后存储到FLASH或者SRAM,用户通过事件(按键等)触发(也可延时自动触发)后将升级 文件夹 ...

  5. 替换JSONObject某个对象的值

    有时候我们只想替换JSONObject某个对象的值,不想把所有对象的值都列出来.那就用for循环把所有的值重新赋值一遍.再单独给需要赋值的对象重新赋值 JSONObject itemObject = ...

  6. 当 GPT 告诉我9.11大于9.9的时候:AI 仍需完善的一面

    在当今 AI 技术飞速发展的时代,我们对其能力寄予了厚望,期待它们能够准确无误地处理各种任务.然而,最近发生的一件事情让我们意识到,AI 仍然有需要改进和完善的地方. GPT 作为一款备受瞩目的语言模 ...

  7. Shell - [11] 开源Apache Zookeeper集群启停脚本

    一.集群角色部署 当前有Zookeeper集群如下 主机名 ctos79-01 ctos79-02 ctos79-03 Zookeeper ○ ○ ○ 二.脚本使用 三.脚本内容 #!/bin/bas ...

  8. Arduino LED流水灯·基础实验

    Arduino初学IO控制,流水灯实验是很好的学习对象.分两个进程学习. 一.假流水灯,即基础效果实现 二.真流水灯,即采用PWM模拟真实流水渐变效果 我们设立5盏灯,正极分别连接数字口(Digita ...

  9. 大量小文件不适合存储于HDFS的原因

    1.小文件过多,会过多占用namenode的内存,并浪费block. - 文件的元数据(包括文件被分成了哪些blocks,每个block存储在哪些服务器的哪个block块上),都是存储在namenod ...

  10. SQLSugar 支持 TDengine 超级表的使用指南

    TDengine 是一款高性能.分布式的时序数据库,广泛应用于物联网.工业互联网等领域.其核心概念之一是超级表(Super Table),它类似于传统数据库中的表结构模板,允许用户通过标签(Tag)动 ...