第22章:自指与涌现——当推理系统开始推理关于自身
Curry-Howard 对应告诉我们:证明即程序。那么,程序在证明什么?
第21章的最后一段,把我们带到了这里:一个足够强的推断系统,开始包含关于自身的命题。这个时刻,第15章的哥德尔结构重新出现。
但第22章不是第15章的重复。哥德尔说的是边界——你触及不到的那些真命题。第22章要说的是开口——在这个边界附近,新的东西在涌现。
下卷走到这里,九章的逻辑演绎,可以俯瞰的地方已经足够高。这是最后一章,也是最诚实的一章:有些问题,我们只能陈述,无法解决。
22.1 Curry-Howard:证明即程序
第14章建立了形式系统:命题、推断规则、证明。第19章发现,计算和逻辑在复杂度的层面等价:SAT 是 NP 完全的,命题逻辑的证明发现,在最坏情况下,和 SAT 一样难。
但等价有多深?
Curry-Howard 对应(也叫命题即类型对应)给出了答案:深到不能再深。
精确地说,它建立了以下对应:
| 逻辑 | 类型论 / 程序 |
|---|---|
| 命题 | 类型 |
| 命题 | 类型 |
| 函数类型 | |
| 积类型 | |
| 和类型 | |
| 空类型(无居民类型) | |
| 假言推理 | 函数应用 |
| 演绎定理 | 函数抽象( |
这不是比喻,而是同构:逻辑推导的每一步,对应程序计算的每一步;证明的规范化(化简到最简形式),对应程序的求值(运行到终止)。
兔狲教授评
很多人会在这里点头,然后继续把"逻辑"和"程序"当成两件事。同构的意思是:你在逻辑里证明的每一步,在程序语言里就是一个计算步骤;你写的每一个函数,都在"证明"某个命题。如果你不觉得这很震撼,你还没真正理解这个对应在说什么。
一个命题"有证明",等价于它对应的类型"有程序"——对应类型是"居住的"(inhabited)。证明就是程序,命题就是类型,验证就是运行。
为什么这个对应令人震惊
在 Curry-Howard 对应之前,数学和计算机科学是两个相邻但分离的领域。对应告诉我们:它们是同一件事的两种语言。每一个数学定理,都可以被理解为一个程序;每一个程序,都在"证明"某个命题——证明它的输出类型可以从输入类型构造出来。这不是哲学上的相似性,而是可以用形式化手段精确验证的等价。Lean、Coq、Agda 这些定理证明助手,正是在这个等价上建立起来的:写程序就是写证明,类型检查就是证明验证。
22.2 不动点:自指的代数
第15章的哥德尔句
但自指不只出现在哥德尔定理里。它有一个更一般的代数结构:不动点。
定义(不动点):给定函数
在
对任意函数
这个等式展开来看,
哥德尔的对角化引理,在这个语言里,就是对"可证性谓词"的不动点:存在命题
自指、不动点、对角化,是同一个数学结构在不同语境下的不同名字。
22.3 依赖类型:命题作为对象
Curry-Howard 对应在简单类型论里成立。但如果把类型系统变得足够强——允许类型依赖于值——会发生什么?
依赖类型(dependent types)允许这样的表达:类型
在依赖类型下,Curry-Howard 对应扩展到一阶逻辑:
| 一阶逻辑 | 依赖类型 |
|---|---|
依赖类型系统(如 Martin-Löf 类型论)实现了数学的一个古老梦想:数学对象的构造和数学命题的证明,在同一个语言里统一处理。证明一个命题,就是构造一个具有对应类型的程序;构造一个数学对象,就是写一个对应类型的居住者。
这不是形式技巧,而是一种深刻的统一:数学和计算,命题和数据,证明和程序——在足够精确的语言里,是同一件事。
22.4 推理系统的自我推理:边界再现
现在来到这一章最核心的问题。
一个推理系统——无论是形式逻辑系统、学习算法、还是大型语言模型——当它足够复杂,开始推理关于自身时,第15章的模式不可避免地出现。
在形式系统层面:哥德尔定理说,任何足够强的一致系统,都有它无法证明的真命题(包括关于自身一致性的命题)。把
在学习系统层面:第21章的结论是,学习的归纳偏置无法从数据内部确定——它是外部输入。一个学习系统无法从它自己的训练数据里推断出自己的归纳偏置是否合适,就像一个形式系统无法从自身的公理里证明自身的一致性。
兔狲教授评
把这句话读两遍。这不是说归纳偏置很难选,而是说从原则上,数据无法告诉你你的归纳偏置是否合适——就像形式系统无法从内部证明自身一致性。第21章和第15章的真正联系在这里:学习的盲区和逻辑的不完备性,是同一个结构性限制的两种语言。
在大型语言模型层面:这是当前最前沿、也最不确定的问题。大型语言模型通过训练,获得了对语言结构的某种内部表示。这个表示是否包含了"推理规则"的某种形式近似?当模型对自身的推理过程进行"推理"(比如 chain-of-thought)时,它在做什么?
Transformer 的形式猜想
一个在研究界被讨论的非正式猜想:Transformer 的注意力机制,在足够的规模和训练下,实现了某种隐式因果推断——它通过在上下文中选择相关位置,执行了一种近似的条件独立性测试,这与第18章的 d-分离有着结构上的相似性。这不是被证明的定理,而是一个需要精确数学刻画的猜想。如果它在某种意义上成立,那么大型语言模型不只是模式匹配器,而是在执行某种近似的因果推断——这个结论,会深刻改变我们对 AI 推理能力的理解。但"某种意义上"是一个很大的逃生舱,现有理论工具还无法把这个猜想变成定理。
22.5 涌现:当量变引发质变
自指和不动点解释了"系统推理关于自身"的代数结构。但还有另一个现象,在复杂系统里普遍出现,更难以形式化:涌现。
涌现说的是:当组成部分足够多、相互作用足够丰富,系统展现出任何单个部分都没有、也无法从部分的简单叠加中预测的性质。
在大型语言模型的训练实践里,涌现现象已经被观察到:当模型规模超过某个阈值,某些能力(如算数推理、多步推断)会突然出现,而在规模较小的模型里完全不存在。这种"突然出现"的能力,被称为涌现能力(emergent capabilities)。
但涌现在形式理论里极难处理。它不是一个可以被精确定义的数学概念——至少目前的数学工具还不够。我们有描述,没有解释;有观察,没有预测。
涌现是真实现象,还是测量的幻觉?
有研究者指出:所谓的"涌现",部分可能是测量方式的产物。如果用连续的(而非离散的)性能指标衡量,某些被认为是突然涌现的能力,实际上是平滑增长的——只是在某个阈值处,平滑增长跨越了任务所需的最低能力门槛,被观测者注意到了。这不否定涌现现象的存在,但要求更精确的刻画:是性能曲线真的有不连续点,还是我们的测量工具引入了假的不连续性?这个问题目前没有定论。
22.6 下卷的边界,也是开口
从第14章到第22章,走了这样一条路:
从形式系统的地基,到一致性和完备性的限制,到资源敏感的线性逻辑,到概率对真值的扩张,到因果推断对干预的形式化,到复杂度理论对推理代价的几何刻画,到启发式的形式合同,到学习作为逆推断,最后到自指和涌现。
每一章,都是被前一章的问题逼出来的。每一章的结尾,都留下了一个问题,这个问题让下一章成为必然。
这条路走到这里,触到了几个边界:
- 哥德尔边界:足够强的系统,有无法从内部看见的真命题。
- 图灵边界:某些问题,原则上不可被任何算法回答。
- 复杂度边界:某些问题,原则上无法被高效解决。
- 归纳偏置边界:学习系统无法从内部确定自己的归纳偏置是否合适。
这些边界,不是障碍,而是地图。它们告诉我们:推理这件事,有哪些地方是人类和机器共同触及不到的,有哪些地方是可以到达但代价高昂的,有哪些地方是可以用近似换取可行性的。
最后,有一个问题,这本书没有回答,也无法回答:
AI 系统目前展示的推理能力,在这张地图里处于什么位置?
它已经到达了哪里,它的边界在哪里,它是否在逼近某些形式理论的边界,还是在完全不同的地方工作?这不是可以用现有工具回答的问题——不是因为问题不重要,而是因为我们还没有足够精确的语言来陈述它。
建立这样的语言,是接下来几十年的工作。
悬而未决
Curry-Howard 对应能扩展到哪里? 目前,对应在简单类型论和一阶逻辑层面是精确的。更高阶的逻辑(二阶逻辑、高阶逻辑)、模态逻辑、线性逻辑(第16章)都有不同形式的 Curry-Howard 对应,但精确程度和完整性各不相同。有没有一个统一的框架,把所有形式逻辑系统都纳入"命题即类型"的视角?这是同伦类型论(Homotopy Type Theory,HoTT)尝试回答的问题,但 HoTT 本身还在发展中。
涌现有没有数学理论? 复杂性科学、相变理论、信息论,各自提供了涌现的部分刻画,但没有一个统一的、预测性的涌现理论。大型语言模型的涌现能力,是否可以在某个形式框架里被预测和解释,还是说它本质上是一个实证现象,无法被理论预先捕捉?
自指推理的能力边界:当一个 AI 系统对自身的推理过程进行推理,它能发现什么关于自身的真命题,又必然触及哪些它无法从内部看见的边界?这不只是一个哲学问题,而是一个关于 AI 安全和可解释性的实际问题——一个无法推理自身局限的系统,会在什么情况下以自信的错误替代诚实的不确定性?
思考题
★ 热身
Curry-Howard 对应的核心是:命题对应类型,证明对应程序。对以下逻辑命题,写出它在类型论里对应的类型(用函数类型
(同一律) (弱化) (合取消去) (析取引入)
对第1条,写出一个具体的程序(函数)"居住"在这个类型里,并验证它对应的确实是"证明了
★★ 推导
不动点展开:
组合子满足 。手动展开 的前三步(把这理解为阶乘函数的递归定义)。追踪展开过程,说清楚 是怎么"制造"递归的。 哥德尔句与 Y 组合子的对比:哥德尔句
说"我不可证"; 满足 。两者都是自指构造,但结果不同: 导致不可判定性, 导致无限循环(或递归展开)。列出它们在以下方面的异同:①自指的机制;②自指的后果;③自指被"解决"的方式(如果有的话)。
★★★ 挑战
依赖类型系统(如 Martin-Löf 类型论)把
考虑命题:"对所有自然数
- 在依赖类型论里,这个命题对应什么类型?用
-类型的语言写出来。 - 这个命题的"证明"(即居住在这个类型里的程序)长什么样?它接受什么输入,返回什么?
- 现在考虑:类型检查(验证一个程序是否有给定类型)等价于验证一个证明。这个验证操作是可判定的吗?(提示:依赖类型使类型检查变得更难——和简单类型系统相比,复杂度如何变化?)
第3个问题触及依赖类型系统的实际限制:功能越强大,类型检查的代价越高,有些依赖类型系统的类型检查甚至是不可判定的——这又是"越强大,代价越高"这条贯穿全书的律令的一次重演。
第3个问题没有标准答案。它是这本书提出的最后一个开放问题,也是下卷想留给读者思考的那类问题:精确的形式工具,在边界处,开始触碰那些超出形式化射程的问题。在那个边界上,逻辑和直觉、证明和猜想、形式和意义,以一种我们尚未完全理解的方式彼此纠缠。
