跳到主要内容

能力的天花板 — 计算不可约性

这一章讲三件事: 它做不到什么、为什么是原理上做不到、 以及反过来看能得出什么 —— 那个反向推论是全书最值得带走的一步。 前四章讲「它怎么运转」,这一章是全书的转折点: 理解它之后再回头看,前面所有「它擅长什么、不擅长什么」都能归到同一个原因上。

1. 先看现象:它算错的方式是有规律的

这一节回答:为什么它文章写得好,加减法却会错。

你大概遇到过这种落差:

  • 让它写一篇文章、改一段话、解释一个概念 —— 相当好;
  • 让它算一道多步的数学题、数一长串括号配没配平、把几个数从大到小排 —— 经常错,而且错得理直气壮

这不是「某些地方还没调好」。 这两类任务之间有一条清晰的界线, 而这一章讲的就是那条界线是什么、为什么它挪不动。

2. 先破一个流行的想法

流行的想法是:它已经这么厉害了,再往上堆,训练越来越大的网络,最终将「无所不能」。

作者的回答分两半:

对于那些容易被人类思维理解的事物,这确实很可能是成立的。 但科学在过去几百年里的教训是:有些事物虽然可以通过形式化的过程弄清楚, 但并不容易立即为人类思维所理解。1

第二半就是这一章的主题。

3. 动手之前:先认识元胞自动机

这一节是补课。 这一章绕不开一样东西 —— 元胞自动机。 它是作者做了四十年的研究对象,也是他所有主张的证据来源。 它跟 AI 没关系,但不认识它就看不懂这一章。

它是什么,一张方格纸就能讲完

一行格子,每格只有两种状态:黑 或 白
一条规则:某格下一步是黑是白,只看「它自己 + 左邻居 + 右邻居」现在是什么
所有格子同时按这条规则更新一次 → 画出下一行
再更新一次 → 再画一行
……一直画下去

图说:规则简单到能写在便利贴上,画出来的图案却能复杂到看不出任何规律。

书里反复提到的规则 30,就是编号第 30 号的那条规则 —— 它出名的原因正是: 规则极简,画出来的图案却像电视雪花点一样看不出任何规律。

亲手走三行

这是本章的主走查。 规则 30 那条规则写全了就是八条对照 —— 左邻居、自己、右邻居现在是什么,决定下一步「自己」是什么:

现在这三格下一步中间那格
■■■
■■□
■□■
■□□
□■■
□■□
□□■
□□□

从一个黑格开始,照这张表走三行(这是书里那张图的头三行,可以对着核):

第 1 行 □□□□■□□□□
第 2 行 □□□■■■□□□
第 3 行 □□■■□□■□□

第 2 行是怎么来的? 挑三格看:中间那格的左中右现在是 □■□,查表得 ; 它左边那格的左中右是 □□■,查表得 ;它右边那格是 ■□□,查表得 。 其余格子三格全白,查表得 □。于是第 2 行是三个连着的黑格。

再走一次得第 3 行: 原来中间那格现在的左中右是 ■■■,查表得 □ —— 它熄了; 而最左边那个黑格再往左一格,左中右是 □□■,查表得 —— 它亮了。 才走两步,图案就已经不对称了。

现在那句「没有捷径」有具体形状了: 要知道第 100 行长什么样,你得先有第 99 行; 要有第 99 行,得先有第 98 行 —— 一路退回第 1 行。 没有任何一条式子能让你跳过中间那 98 行直接算出第 100 行。

这是标准术语,不是这本书发明的

元胞自动机(cellular automaton)由冯·诺依曼那一代人在 20 世纪 40 年代提出, 最广为人知的例子是 1970 年的「生命游戏」,计算机科学、物理、生物学都在用2

作者和它的关系: 他 1983 年从纯物理转去研究元胞自动机,由此成为复杂系统领域的开创者之一; 为了做这类计算实验,他开发了 Mathematica,进而创办了自己的软件公司3

这一章后面所有的论断,源头都在这块方格纸上。

4. 计算不可约性是什么

一句话:

有些计算,除了一步步跑完,没有任何办法提前知道结果。

对照着看最清楚:

有捷径(可约)没捷径(不可约)
例子「1 加到 100 等于多少」——有求和公式,一步得出 5050规则 30 的第 100 行长什么样——只能一行一行画 100 遍
有没有捷径没有,而且是原理上没有
能不能被「学会」能:学到那条公式就行不能:根本没有可学的规律

书里的措辞是:有些计算「虽然可能需要很多步才能完成,但实际上可以『简化』为相当直接的东西。 但计算不可约性的发现意味着这并不总是有效的」—— 对某些过程,无论如何都必须回溯每个计算步骤才能弄清楚发生了什么4

先把这个词的分量说清楚

这个词是作者自己造的,不是计算机科学的公认定理。 这件事必须放在这里说,因为这一整章都建立在它上面:

元胞自动机计算不可约性
谁提出的冯·诺依曼等,1940 年代作者本人,2002 年的《一种新科学》
学界地位标准概念,教科书词汇他的主张
有没有严格证明不需要,它是个定义没有

而且《一种新科学》当年受到不少学术批评 —— 这本书自己的导读序就写了: 批评集中在「理论并不是原创的」(图灵关于计算复杂性的工作、康威的生命游戏都与此类似) 以及「缺乏数学严谨性,因此很多结论很难经得住检验」5

判断(我们的,不是书里的): 这个概念有严格的近亲,但它本身不是定理。 严格的那个是停机问题:无法有一个通用方法,提前判定任意程序会不会停下来 —— 那是图灵 1936 年证明过的。「计算不可约性」是朝那个方向的一个非形式化推广, 没有对应的定理。 我们采用它,是因为它作为思考工具很好用:它给出的判据 ——「一眼能看出」还是「必须一步步算」—— 在实践中确实能预测模型会在哪里出错。 不是因为它被证明了。 如果错,会错在: 如果某个任务看起来「必须一步步算」但模型偏偏做得很好, 那说明这个判据只是经验相关,不是原理性的约束 —— 那就该退回去只用停机问题那类严格结论。

这为什么和「学习」天生矛盾

这是本章最关键的一句话,作者写得极简洁:

可学习性和计算不可约性之间存在根本的矛盾。 学习实际上涉及通过利用规律来压缩数据,但计算不可约性意味着最终对可能存在的规律有一个限制。6

拆开看:

学习 = 找规律 = 用一条短的规则替代一大堆数据(第 01 章讲的「模型」)
计算不可约 = 这堆数据里根本没有比它本身更短的规则
⟹ 无论多少数据、多大网络,都学不到不存在的东西

图说:这不是数据不够、算力不够,是「要学的东西不存在」。

5. 终极权衡:能力 vs 好不好训

由上一节直接推出全书最硬的一条结论7:

能力和可训练性之间存在着一个终极权衡: 你越想让一个系统「真正利用」其计算能力,它就越会表现出计算不可约性,从而越不容易被训练; 而它在本质上越易于训练,就越不能进行复杂的计算。

这不是工程上的困难,是结构性的取舍。

ChatGPT 站在这个权衡的哪一端

极端偏向「好训练」那一端。 作者给了具体原因 —— 先交代一个词: 「控制流」就是程序里的「如果……就……」「重复直到……」这类结构, 是「一步步算」最基本的表达手段。

用于生成每个输出标记的神经网络是一路向前、没有循环的, 因此无法使用非平凡的「控制流」进行任何计算8

回想第 04 章:一个标记 = 数据从头到尾流过一次,不回头、不循环、不重算。

一个没有循环的系统,连「一直算到条件满足为止」这种最基本的结构都表达不了。

换句话说:它不是「暂时还算不好」,而是这个结构里没有能承载多步计算的地方。

6. 实证:括号语言实验

这一节是全书最硬的一段实证,值得完整记住。

作者没有停在论证上,他做了一个可复现的小实验9

任务: 造一种最简单的「语言」,只有 () 两个符号,规则只有一条 —— 括号必须配平。这是一条严谨、明确、只能一个一个数的规则。 (把这样按顺序排开的一串符号,下面一律叫序列。)

做法: 用一个和 ChatGPT 同族的小网络来学它。

配置结果
1 个注意力块、8 个头学不会
2 个注意力块学会了 —— 但需要 1000 万个例子,而规则本身只有一句话
再喂更多例子表现反而下降

训练完之后测试,问题出在哪:

  • 给一个「此处不能结束」的序列,网络很确定地知道不能结束 —— ;
  • 给一个「此处可以结束」的序列,网络正确识别 —— ;
  • 但同一处,它还给出 15% 的可能性认为下一个符号是 ) —— ,因为那必然导致不配平。

而且约 40 万个经过反复训练的权重也没能消除这个错误 —— 40 万只有 ChatGPT 那 1750 亿的四十几万分之一, 可对「括号必须配平」这条一句话写得完的规则来说,早就绰绰有余了。

再往下,要求它补全越来越长的 ( 序列,超过某个长度就开始出错

作者的总结,是理解模型能力边界最实用的一句话。先说一个词: 算法就是「一套固定的步骤,照着一步步走就一定得出答案」。

对于人类「一眼就能解决」的问题,神经网络也可以解决。 但对于需要执行「更算法式」操作的问题(例如明确计算括号是否闭合), 神经网络往往会「计算过浅」,难以可靠地解决。

他还补了一句:即使是当时完整的 ChatGPT,在长序列中也很难正确地匹配括号。

把这条判据套回加减法

这一章开头问的是「它文章写得好,为什么加减法会错」,而实验做的是括号。 两者是同一件事,值得把这一步补出来。

三位数乘三位数,必须逐位算,而且要把进位一直拿在手上带到下一位 —— 算个位得到进位 1,这个 1 要留到算十位的时候用;算十位又产生新的进位,留到百位。 这是典型的「必须一步步算」。

而它一路向前、没有循环,没有任何地方可以存那个进位。 算到十位的时候,个位那一步产生的东西早就随着数据往前流走了,回不去也留不住。

所以「括号数不清」和「加减乘除算不对」是同一个原因: 两件事都要求「把一个中间状态一直拿在手上」,而这个结构里根本没有那只手。 这也解释了为什么让它「把每一步写出来」就好很多 —— 写出来的字就是那只手(第 04 章那个外层循环)。

判断(我们的,不是书里的): 这个实验的价值在于, 它把「模型会算错」从一个印象变成了一个可以预先判断的判据: 看这个任务是「一眼能看出」还是「必须一步步算」。 前者交给模型,后者交给工具。今天所有让模型调用计算器、跑一段代码、去查资料的做法, 本质上都是在承认这条边界。 如果错,会错在: 若某种机制(比如让模型把中间步骤写出来, 把第 04 章那个外层循环当草稿纸用)能把「必须一步步算」的任务 拆成「一眼能看出」的很多小步,这条边界就会向外推 —— 但它推的是深度,不是原理:不可约的那部分仍然不可约。

7. 反过来看:全书最有价值的推论

上面说的全是坏消息。但作者紧接着做了一个反向推理, 这是这本书最值得带走的一段思考10:

事实:写文章曾被认为「本质上太难了」,计算机做不到
事实:ChatGPT 做到了,而且它的计算能力极其受限(一路向前、无循环)
⟹ 正确的结论不是「计算机变强了」
⟹ 正确的结论是「写文章这件事,计算起来比我们想象的容易」

图说:同样一件事,换个方向推,结论完全不同。

作者的原话是:

神经网络能够在写文章的任务中获得成功的原因是,写文章实际上是一个 「计算深度较浅」的问题,比我们想象的简单。

他还提醒不要得出错误的结论:计算不可约的过程仍然是计算不可约的, 对计算机来说仍然很难 —— 尽管计算机可以轻松算出其中的每一步11

这一步推理直接通向第 06 章的核心主张:简单的不是模型,是语言。

8. 那出路是什么

作者给的出路只有一条,而且他自己就是这条路的既得利益者:用外部工具。

如果我们想解决数学或计算科学领域的问题,神经网络将无法完成任务, 除非它能有效地使用一个「普通」的计算系统作为「工具」12

他同时否掉了一条看起来更优雅的路:能不能把小型计算装置 (元胞自动机,或者别的能一步步跑完的小机器)直接塞进可训练的网络里? 可以塞,但计算不可约性意味着你不能指望「进入」这些装置并让它们学习 —— 它们只能当工具用,不能当被训练的零件用。

第 07 章整章讲的就是这条出路的一个具体实现。

一个更大的画面

作者最后把这件事放到了文明的尺度上13:

如果有一个足够大的神经网络,你可能能够做到人类可以轻易做到的任何事情。 但是你无法捕捉自然界一般而言可以做到的事情,或者我们用自然界塑造的工具可以做到的事情。 而正是这些工具的使用,近几个世纪以来使我们超越了「纯粹的无辅助的人类思维」的界限。

这句话给「AI 能取代什么」提供了一个比大多数讨论都清晰的分界:

它逼近的是「无辅助的人类」,不是「拿着工具的人类」。

9. 可带走的

  1. 计算不可约性 = 有些计算没有捷径,必须一步步跑完;
  2. 学习是用规律压缩数据,所以学不到「本来就没规律」的东西 —— 这是原理限制,不是数据不够;
  3. 终极权衡:越能发挥计算能力的系统越难训,越好训的系统计算能力越弱;
  4. ChatGPT 站在极端好训那一端:一路向前、无循环,连基本的控制流都表达不了;
  5. 主走查是规则 30 那三行:□□□□■□□□□□□□■■■□□□□□■■□□■□□; 要第 100 行就得先有第 99 行 —— 这就是「没有捷径」长什么样;
  6. 括号实验是硬证据:一条一句话写得完的规则、1000 万例子、40 万权重,仍然给出 15% 的错误可能; 加减乘除算不对是同一个原因 —— 进位没地方存;
  7. 判据很实用:任务是「一眼能看出」还是「必须一步步算」—— 前者交给模型,后者交给工具;
  8. 反向推论才是最有价值的:它能写文章,说明写文章是件「计算深度很浅」的事;
  9. 出路只有外部工具,而且工具只能被调用,不能被训练进去;
  10. 它逼近的是「无辅助的人类」,不是「拿着工具的人类」;
  11. 这个词是作者自造的,没有严格证明 —— 好用,但别当定理引用。

10. 原文地图

主题原书章原文位置
破「足够大就无所不能」“足够大的神经网络当然无所不能!”text/10-fm.txt:16(搜「容易被人类思维理解」) · text/10-fm.txt:19(搜「计算不可约性」)
学习与不可约性的矛盾“足够大的神经网络当然无所不能!”text/10-fm.txt:34(搜「压缩数据」)
终极权衡“足够大的神经网络当然无所不能!”text/10-fm.txt:40(搜「终极权衡」)
一路向前的结构性限制“足够大的神经网络当然无所不能!”text/10-fm.txt:43(搜「前馈」)
计算深度较浅这个反向推论“足够大的神经网络当然无所不能!”text/10-fm.txt:58(搜「计算深度较浅」) · text/10-fm.txt:55(搜「仍然是计算不可约的」)
工具只能调用不能训练进去“足够大的神经网络当然无所不能!”text/10-fm.txt:37(搜「工具」)
无辅助的人类思维“足够大的神经网络当然无所不能!”text/10-fm.txt:61(搜「无辅助的人类思维」)
括号语言实验真正让ChatGPT发挥作用的是什么text/15-fm-chatgpt.txt:42(搜「括号」) · text/15-fm-chatgpt.txt:51(搜「1000万个样例」) · text/15-fm-chatgpt.txt:60(搜「15%」)
规则 30(编者注)真正让ChatGPT发挥作用的是什么text/15-fm-chatgpt.txt:19(搜「规则30」)
作者与元胞自动机的渊源导读序text/01-fm.txt:177(搜「元胞自动机」) · text/01-fm.txt:183(搜「一种新科学」)

Footnotes

  1. 出处:「足够大的神经网络当然无所不能!」第 16 段(text/10-fm.txt:16,搜「容易被人类思维理解」)。

  2. 补充(不在书里,来自通用知识):元胞自动机不是这本书的概念,书里只是拿它当例子用,所以没有解释——这一条是我们补的。它由冯·诺依曼与乌拉姆在 20 世纪 40 年代提出;最广为人知的例子是康威 1970 年的「生命游戏」。规则 30 的说明见中文版编者注(出处:「真正让ChatGPT发挥作用的是什么」第 19 段(text/15-fm-chatgpt.txt:19,搜「规则30」))。

  3. 出处:「导读序」第 177 段(text/01-fm.txt:177,搜「元胞自动机」)。作者 1983 年转去普林斯顿高等研究院研究元胞自动机,由此成为复杂系统学科的开创者之一;Mathematica 最初正是为做这类计算实验而开发的。这段生平出自中文版导读序,不是作者自述。

  4. 出处:「足够大的神经网络当然无所不能!」第 19 段(text/10-fm.txt:19,搜「计算不可约性」)。这个概念出自作者 2002 年的《一种新科学》(A New Kind of Science)。

  5. 出处:「导读序」第 183 段(text/01-fm.txt:183,搜「一种新科学」)。导读序原文的批评是:「这些批评主要集中在书中的理论并不是原创的(图灵关于计算复杂性的工作、康威的生命游戏等都与此类似),而且缺乏数学严谨性,因此很多结论很难经得住检验」。这是导读序作者转述的学界意见,不是作者本人的说法。

  6. 出处:「足够大的神经网络当然无所不能!」第 34 段(text/10-fm.txt:34,搜「压缩数据」)。

  7. 出处:「足够大的神经网络当然无所不能!」第 40 段(text/10-fm.txt:40,搜「终极权衡」)。

  8. 出处:「足够大的神经网络当然无所不能!」第 43 段(text/10-fm.txt:43,搜「前馈」)。补充(不在书里,来自通用知识):「控制流」指程序里的条件分支与循环这类结构,是「一步步算」的基本表达手段。

  9. 出处:「真正让ChatGPT发挥作用的是什么」第 42 段(text/15-fm-chatgpt.txt:42,搜「括号」)、第 51 段(text/15-fm-chatgpt.txt:51,搜「1000万个样例」)、第 60 段(text/15-fm-chatgpt.txt:60,搜「15%」)。这个实验在原书里位于讲「语法」的那一节,但它论证的其实是这一章的命题,所以在这里合并讲。

  10. 出处:「足够大的神经网络当然无所不能!」第 58 段(text/10-fm.txt:58,搜「计算深度较浅」)。

  11. 出处:「足够大的神经网络当然无所不能!」第 55 段(text/10-fm.txt:55,搜「仍然是计算不可约的」)。

  12. 出处:「足够大的神经网络当然无所不能!」第 37 段(text/10-fm.txt:37,搜「工具」)。

  13. 出处:「足够大的神经网络当然无所不能!」第 61 段(text/10-fm.txt:61,搜「无辅助的人类思维」)。