引言

自 GPT3.5 引爆大模型概念以来,大家都期盼着 AGI1 的到来。但与此同时,当下各类大模型虽然依据 Scaling Law2,不断提升各方面的性能,但是关于模型的推理能力,总显得不足。

甚至科研界针对大模型究竟是否可能具有推理能力,也争论不休。例如下列近期比较热烈的讨论:

虽然笔者之前的文章已经用比较直观的方式证明了 LLM 的基本范式 N-GRAM 是一个有穷自动机,无法像通用图灵机一样完成各种任务,甚至简单的四则运算也做不到,从而侧面证明了 LLM 不可能具有推理能力。但是“究竟什么是推理能力?”这个话题,之前并没有进行过完整的阐述。

本文将对什么是推理能力这个话题进行深入的说明,进而将 LLM 未来如何能实现 AGI 的路线图进行一个完整而具体的展现。

推理、逻辑、算法、图灵机

推理和数理逻辑

研究推理能力,那首先需要有一个“推理”的明确的说明或定义。推理这个概念来自于逻辑学,古早的逻辑学更偏向于哲学,但现代的逻辑学已经是数理逻辑的一部分了。

数理逻辑(Mathematical logic)是用数学方法研究诸如推理的有效性、证明的真实性、数学的真理性和计算的可行性等这类现象中的逻辑问题的一门学问。现在公认的数理逻辑创始人是莱布尼兹。他的目的是选出一种“通用代数”,其中把一切推理都化归为计算。

提示

更为具体的解释:我们希望研究的是“正确的推理过程”,而数理逻辑的目标是将推理过程变成一种计算过程(算法),进而通过计算的结果来判断推理的正确性。

这个愿望被布尔代数基本实现了——我们可以将任何数学语句或自然语言的命题翻译为为布尔代数的逻辑表达式,然后对表达式进行判定是否为真。当然,这个实现是不完美的,罗素在数理逻辑中发现了悖论;而哥德尔证明了悖论是一切逻辑体系中必然存在的命题——也就是说,一定存在我们无法判定是否为真的逻辑表达式。

计算和图灵机

有了数理逻辑这种工具,推理能力被转化为了计算能力。可计算能力又如何衡量呢?在另一条时间线上,一个叫图灵的“年轻人”在研究“算法”的能力,而这条线恰好将计算能力的清晰的描述了出来。

图灵提出了一种通用图灵机,并证明了当前人类能想象到的一切算法,都可以用通用图灵机实现。

备忘

当然,他的副产物:有穷自动机、上下文无关文法等算法模式,能力是弱于图灵机的。这也是笔者用于证明当前的 LLM 不具有推理能力的重要工具。

于此同时,图灵还深入研究了图灵机进行计算的可判定性,也就是停机定理:存在这样的图灵机,我们无法判断它是否陷入了无限循环,能否停机。

非常有趣的是,停机定理的证明和歌德尔不完备定理的证明思路很类似,都是将一切命题(算法)转化为一串数字,然后再证明这其中的不合理性。

备忘

甚至,我们可以直接通过停机定理来证明歌德尔不完备定理:

我们将数理逻辑体系下的逻辑命题转化为一个计算问题,然后通过算法对这个问题计算。于是逻辑命题能否判定就变成了判断这个算法的结果或者判定这个算法无法停机(也就是这是个逻辑悖论)。

但由于停机定理的存在,我们并不能对一切逻辑命题给出上面的判定,从而,一定有逻辑命题是我们无法给出任何判定的。

计算机和可编译

上面的论述是理论层面的描述,我们需要一个针对真实“推理”问题的可操作的工具。幸好还有一个人,跟图灵所处同一时代,用另一种方式真实实现了“通用图灵机”,并且它还成为了人类进步的重要工具:计算机之父——冯·诺依曼。

我们今天的手机、电脑等等各种电子产品,基本都是冯·诺依曼架构下实现的。而今天的程序员,则不断将图灵理论中的概念算法,转换成真实世界中不断运行中的程序。

而这其中,刨除停机定理中描述的无法判定的算法问题,绝大部分算法能否执行的重要判定标准是:可编译 3

从而最终,我们有了关于推理的全部知识:一个正确的推理,是将其所有逻辑过程通过数理逻辑相容的编码进行描述,然后看该编码能否通过其对应的编译器的编译

提升推理能力

上一节中,我们有了清晰的定义,知道了什么叫做“推理”以及“可验证的正确推理”。那么什么是推理能力呢?

推理过程的数学描述

针对真实世界的推理问题,其基本范式都符合如下的描述:

  1. 我们有一些已知条件或者背景信息(知识);
  2. 我们有一个预期的结果:
    • 可能是类似数学证明题,我们有一个命题,希望知道其是否正确;
    • 可能是类似规划问题,虽然我们不知道最终的答案,但我们可以验证怎样的答案符合我们的预期;
    • 也可能是类似计算机竞赛的算法问题,我们不仅仅要求答案符合预期,还期望计算的过程更快,使用更少的资源等等;
  3. 我们的推理过程其实可以看作是一个检索过程——在已知信息和目标结果之间寻找并补充适合的逻辑代码,让其可通过我们所需要的推理编译器。

推理能力

当前大模型欠缺的,正是上面描述的推理过程的能力 4

笔者以前文章中给出过结论:通过强化学习的 Agent 模式可以实现通用图灵机,进而实现 AGI。今天用新的关于推理的数学定义,再次推演出这个结论:

想法

强化学习(Reinforcement learning,RL)讨论的问题是一个智能体 (agent) 怎么在一个复杂不确定的 环境 (environment) 里面去极大化它能获得的奖励。通过感知所处环境的 状态 (state) 对 动作 (action) 的 反应 (reward), 来指导更好的动作,从而获得最大的 收益 (return),这被称为在交互中学习,这样的学习方法就被称作强化学习。

它的一个巨大优势,就是可以将多步之后的奖励,拆解反馈到很多步以前的状态中,从而可以更快的学习到重要的经验。

这一点和我们进行推理过程时所需要的能力是完全一致的:因为我们的推理过程的最终结果是可验证(可编译)的,通过时可以给予一个巨大的奖励。而强化学习的过程就是不断通过后验的奖励,让系统在下一次时更快更好的找到适合的推理过程。

甚至可以给出结论:推理能力提升的过程,就是一个标准的强化学习过程 5

技术瓶颈

从过去一年里 LLM 的发展来看,推理能力的进展无疑是缓慢的。甚至应该也有其他的研究者摸到了所谓“推理为何物”的基本认知,但依然在解决这个课题的方面,没看到什么显著突破。

核心的技术瓶颈,在于两个方面:

  1. 对推理过程的符号化描述 6
  2. 强化学习中对非确定型状态空间 7 的描述和建模。

推理的符号化描述

如果是从数学角度来看,推理的符号化描述的工具已经是完备的了。但从真实应用出发,却没那么容易将我们人类知识中的大量推理过程进行符号化表达。

这里的最核心的难点,不在于符号体系本身,而是人类有大量蕴含推理知识的表达,还没有用符号体系进行描述,于是很多人类的推理过程在转译成符号化描述时,是不完备甚至缺失的。

示例

这一点在 Lean4 语言中非常明显。理论上,Lean4 是完备的,可以进行各种数学推理。但是真正用起来的时候,却会发现基本没法用——因为人类的大量证明过程中,会用到很多理所应当的定理,比如理所应当的加法交换率,分配率,可被整除等等。但这些概念在数学中其实并不是公理,也不是基础概念,是需要从集合论一直证明到自然数是一个阿贝尔环,才能使用的逻辑前提。

所以 Lean4 中缺失的不是逻辑,而是很多基础推导过程的证明。而这种问题存在于所有的逻辑符号化编码中。

人类的知识蕴含在语言中,而语言的进化又蕴含了非常多的逻辑知识。在这些基本的知识没有被全面的符号化描述前,任何符号化描述的推导过程都是不完备的。

而另一方面,我们无论是尝试用 LLM 来学习这种 符号化描述的表达,还是用强化学习,都需要大量的数据作为食材。而更不幸的时,我们连推理的符号化描述体系都还没统一和建立起来,更不用提所需要的大量学习样本了。

所以短期内快速的提升人工智能的推理能力,从数据和表达的层面来看,都是基本不可能的。

强化学习方面的瓶颈

强化学习方面,我们的工具库也是不足的。

例如针对下面的命题,我们是有能力构建完善的符号化描述和样本库的:

  • 自然数(实数)加法的运算规则。

我们希望用强化学习的方式,从足够多的样本中学习出加法的运算规则。但面对这个命题时,就会发现,如何在强化学习中表达这种非确定型的命题的状态空间和动作空间是一个巨大的难题。

如果单说解决这个问题,给出一些例如操作存储、按位移动等操作类型,或许也可以表达动作空间和状态空间,但是这种方式基本上是对着答案设计动作空间。针对更广泛的各种符号化描述的真实问题,如何描述状态空间和动作空间,并能进行有效的计算?是一个实打实的难题。

甚至相比于强化学习模型,LLM 模型可以在更长的序列中进行 token 的概率预测,甚至状态空间和动作空间都是 token 表达的泛化类型,这也使得 LLM 在统计已有的数据的奖励权重方面,其泛化性和易用性都是强于当下的强化学习模型的。

那有没有办法让强化学习也可以利用长序列编码的方式表达状态和动作空间,并用类似于 LLM 模型的方式来计算激励函数呢?看起来是个可行的路线,但似乎依然需要先有更适合的关于状态空间的符号化表达,以及全新的一套强化学习机制,来更通用的适应各种不同的非确定型的真实问题。

结论

短期内 AGI 不可实现。而 LLM 的能力基本已到瓶颈,一段时间内大家的竞争将更聚焦在应用层面。

如果想尝试探索提升 LLM 的推理能力,那最重要的两个方向:

  1. 推理的符号化表达,以及构建更多的符号化表达的数据(这里或许可以用 LLM 来帮忙生成或转译);
  2. 更强大的强化学习范式。

  1. 通用人工智能 ↩︎

  2. 大模型的尺度规则:随着参数规模的扩大,模型能力更强 ↩︎

  3. 甚至如果将回归测试也看作是编译的规则,那么对算法进行一定程度的准确性判断也可以通过编译的方式来实现。 ↩︎

  4. 甚至“能力”一词表达的,都不是推理过程的效率高低,而是推理过程能成功的概率。 ↩︎

  5. 这也是现在包括 o1 在内的各种推理模型背后的核心原理。当然,经验不沉淀在强化学习模型中,而是沉淀在基座模型中,无疑会损失很多推理的能力。 ↩︎

  6. 其实叫做编码也可以,但容易跟传统的编码概念混淆,毕竟推理所要求的编码是可编译的;而 LLM 要求的编码只要有可预测性即可。 ↩︎

  7. 这种表述也许有更专业的表达。笔者想说的是,强化学习中动作空间当下是未知的,只有动作出现后,我们才会知道原来还有这样的动作;但是理论上最终的动作空间总是有办法可以被全部表达出来的,也许表达的方式是某个动作编码的判别器。所以这里或许需要有新的对动作空间的数学描述方式,才有可能用传统的强化学习的方式来枚举所有的动作空间。 ↩︎