第 89 期·中文精读

斯蒂芬·沃尔夫拉姆:元胞自动机、计算与物理

Stephen Wolfram: Cellular Automata, Computation, and Physics

他谈元胞自动机与计算等价原理,试图用简单规则统一解释物理定律、复杂性与智能的涌现。

官方音频00:00 / --:--
中文精读由 AI 基于原始访谈改写,非官方翻译,可能存在偏差或错误;表述以原音频与官方文稿为准。说明

1984 年 6 月,斯蒂芬·沃尔夫拉姆(Stephen Wolfram)刚弄到一台高分辨率激光打印机,他把一批元胞自动机的演化图打印出来,随手挑了一张带上飞往欧洲的航班。那张图从顶部一个孤零零的黑格开始,往下跑了大概四百步,越往下越乱:左边还留着一点规律,右边全是一片看起来毫无道理的杂讯。

后来他把这台打印机搬到公司,用一台叫 Connection Machine 的巨型并行计算机,打印出几米长的超大图样,铺在地上拿尺子量。同事理查德·费曼(Richard Feynman)在旁边看了很久,终于把他拉到一边。

我只想知道一件事:你怎么知道这条规则会产生这么复杂的行为?(费曼)

沃尔夫拉姆的回答是:我不知道,我只是把所有可能的规则枚举了一遍,然后看到了这个结果。

费曼松了口气。他原以为对方手里握着某种自己没有的直觉。

这段对话里藏着整场访谈最核心的东西:有些东西没法靠聪明推出来,只能老老实实跑一遍。这条看起来平淡的结论,最后会一路推到宇宙有没有物理定律、人类能不能理解自己、以及我们和一块石头之间到底差在哪里。

八条规则,三十多年,没人能证明那一列不会重复

先把元胞自动机(cellular automaton)说清楚。最简单的一维版本:屏幕上一条横线,每个格子非黑即白。下一行的每个格子,颜色由它正上方那个格子,以及左右两个邻居决定。

三个邻居,每个有两种状态,一共八种组合。规则就是给这八种组合各指定一个输出,八位二进制数,转成十进制就是这条规则的编号。规则 30 是其中一条。

从顶部一个黑格出发,规则 30 往下长出一个三角形区域,左侧边缘还残留着一点可辨认的条纹,主体部分则乱得毫无章法。取中间那一列往下读,你会得到一串黑白序列,看起来和抛硬币没有区别。很长一段时间里,Mathematica 就用它来生成随机数。

麻烦在于:没人能证明它真的是随机的。

三十多年过去,沃尔夫拉姆把三个问题挂上了悬赏,每个一万美元,共三万美元。第一个,中间那一列会不会在某个时刻开始周期性地重复。第二个,中间那一列往下走,黑格和白格的数量是否各占一半。第三个最难表述:能不能用远少于 t 步的计算量,算出第 t 步中心格的颜色;或者证明无论怎么算都做不到。

三个问题至今无人拿下。

他还特意做了个反向实验。他想找一个看起来注定永远随机、但实际上会在某个时刻突然开始重复的规则,用来提醒大家别对规则 30 太有把握。他搜了上百万条规则,居然真的找到了一个。他管这叫「计算宇宙里的动物总比你聪明」。

计算是什么:从加法机商店说起

回到一百五十年前。那时候你想要一台加法机,就去加法机商店买;想要乘法机,就去乘法机商店。两种机器是两套完全不同的齿轮和连杆,谁也干不了对方的活。在这个层面,不存在一个统一的「计算」概念。

转折发生在二十世纪初。数学逻辑领域开始有人问:能不能造一个东西,表示任何合理的函数?早期尝试里有原始递归,结果失败了,有些很自然的函数它表示不了。

1931 年哥德尔(Gödel)抛出不完备定理。从后来的视角看,哥德尔做的事情本质上是把逻辑语句编译进算术:他说出「这句话不可证明」,然后把这句话变成一个关于整数的陈述。算术因此变成一台能表示其他所有东西的机器。

1936 年,图灵提出图灵机,丘奇(Alonzo Church)提出 lambda 演算。两人的出发点完全不同,形式也完全不同。真正让人意外的结果是:它们等价。接着寄存器机、各种其他形式化模型陆续出现,全部等价。

这件事的重要性在于,它本来可以长成另一个样子。加法机和乘法机就是不等价的,凭什么图灵的想法和丘奇的想法必须等价?

到上世纪七十年代,计算机科学界基本接受了「图灵机就是计算」。物理学家还在抵抗,理由是:宇宙里全是微分方程、实数、无穷多位数字,宇宙不是一台图灵机,图灵机只是我们在微处理器里造出来的一个小小特例。

沃尔夫拉姆八十年代的工作让这条分界线开始模糊。

复杂性不需要复杂的原因

他的发现很朴素:他去看那些规则极其简单的计算系统,结果发现规则简单到什么程度,和系统能产生多复杂的行为,几乎没有关系。

直觉上应该是这样:想要复杂的输出,你得有复杂的规则。要么规则本身复杂,要么初始条件里塞满信息。沃尔夫拉姆把初始条件压缩到一个黑格,规则压缩到八条,跑出来的东西依然复杂得没法分析。

这推出一个他称为「计算等价原理」(Principle of Computational Equivalence)的东西:任何一个按照规则运行的系统,只要它没在做显然简单的事情,它行为所对应的计算,在复杂度上都彼此等价。

换句话说,从你能想象的最简单的东西往上走,很快你就撞到一个天花板。天花板之上,所有东西一样复杂。

这个命题有个麻烦的认识论地位。沃尔夫拉姆自己把它类比成热力学第二定律:熵增到底是自然定律,是数学定理,是恰好对我们所见的系统成立,还是它本身就是「热」的定义的一部分?答案大概是这些都有。计算等价原理也落在这种混合地带,它差不多就是「计算」这个概念之所以能成立的原因,正因为存在这样一个跨系统稳定的东西,我们才能正经地谈论「计算」这个词,而不至于只能说「图灵机第三七八五号的计算」。

它不是定理。目前有的只是若干数学证据:一些最简单、最有可能具备通用性的规则,被证明确实是通用的。这构成一种归纳意义上的支持,跟所有自然科学一样。

计算不可约:为什么未来没法跳着算

计算等价原理有一个直接推论,叫计算不可约性(computational irreducibility)。

传统科学的整套方法论建立在「跳着算」上。我们写下方程,解出来,就知道系统未来会怎样。我们不需要把每一个中间步骤都走一遍。牛顿力学之所以强大,就在于它允许这种压缩。

计算不可约性说的是,很多系统不允许。想知道它们会做什么,只能一步一步跑。

为什么?因为如果有一个更聪明的东西能跳着算,那个东西本身也是一台计算机,而按照计算等价原理,它和它想预测的对象在计算复杂度上是同级的。同级的东西没法替对方加速。

这一段对做技术的人特别刺。我们习惯了一个假设:只要模型够聪明、算力够大,复杂的系统总会被压缩成几条可理解的规律。计算不可约性说这个假设在很多情况下不成立,跟我们够不够聪明无关,是数学上就不允许。

沃尔夫拉姆用费曼来说明这一点:费曼是那个时代最擅长计算的人,他能手工把量子场论的复杂计算推到底,然后不提计算过程,只把漂亮的直觉讲给别人听。别人跟着他的直觉走,完全不明白为什么能用,因为那套直觉背后压着一大堆没公开的手工计算。知道自己算出了答案之后,拥有好的直觉会容易得多。

时间、空间、引力可能都是副产品

访谈发生在 2019 年 11 月,当时沃尔夫拉姆正在推进后来被称为「沃尔夫拉姆物理项目」的工作,2020 年 4 月正式对外公开。他提到在这条路上已经重新燃起了热情。

他的模型是这样的:宇宙的底层没有空间里的粒子,也没有连续场,只有一堆随意漂着的元组,比如一堆三元组、四元组。元组之间唯一的联系方式是符号相同。两个元组在某个位置上出现同一个符号,就构成一条关系。

这就是图(graph)的推广。普通图是一堆节点加上一堆「这两个节点相连」的二元组。把这些二元组换成任意长度的元组,就是超图(hypergraph)。

宇宙的演化就是在这种超图上做重写:看到某块局部图案,把它替换成另一块图案。

再看「什么时候更新」这件事。答案是:哪里匹配就在哪里更新,更新的顺序没有定义。而在这样的系统里,观察者是什么?观察者也是这堆超图的一部分。一个事件发生后,你只有在自己被更新之后才可能感知到它。所以你能感知的全部内容,是事件之间的因果关系网络,至于微观层面谁先谁后,任何观察者都无从分辨。

接下来是最漂亮的一步。对某类重写规则,微观重写的顺序不影响最终的因果网络。这在数学逻辑里叫合流性(confluence),跟 Church-Rosser 定理是同一件事,也跟化简代数表达式时「先展开还是先提取公因式都无所谓」是同一个道理。

沃尔夫拉姆说,这个性质就是狭义相对论。

不同的重写顺序等价于不同的参考系,而无论你怎么换参考系,最终那张因果网络不变,物理定律不变。这是第一次有可能从一个更底层的理论里把相对论推导出来,而不是当作公设塞进去。同一个因果不变性还保证时间有单一的线索,观察者才能觉得「确实发生了某件事」。

空间和时间在这个框架里都不是基础构件。超图微观上只是一堆节点和关系,宏观上你可以看到它长得像蜂窝,那就是二维流形;你把它连成一条链,那看起来就是一维空间。三维空间有没有从某个具体规则里长出来,他的回答是:还没有。

这里有一段他自己的困惑,值得抄下来:

我们不断地意识到人类不特殊,我们不在宇宙中心,如此等等。可如果有一天我们真的找到一条给宇宙用的规则,而且它短到能用几行写下来,那又显得非常特殊。为什么我们拿到的是一个简单的宇宙,而绝大多数可用的宇宙可能长达一百亿亿个字符?(沃尔夫拉姆)

他没有答案。

外星人、技术签名与「理解」这个词的含混

访谈从电影《降临》(Arrival)开始。沃尔夫拉姆和儿子克里斯托弗一起为这部电影设计了外星语言。

他先拆掉问题本身。「外星人访问地球」这句话已经预设了一大堆东西:它得是一个有物理实体的东西,坐着飞船来,而不是一串射电信号。既然预设了这些,找到某种沟通方式就不奇怪了。

他举现成的例子:人工智能就是我们手里第一个外星智能。你打开一个神经网络,问它「你在想什么」,不容易得到回答,但也不是完全不可能。

更进一步的追问是:智能和非智能之间有没有一条明线?他的回答是没有。天气预报里说「天气有它自己的想法」,这句话拆开来看,大气里发生的流体力学计算,和大脑里发生的计算,区别在哪?他的答案是:没有本质区别。区别在于大脑之间有文明史这条线索把它们串起来,而天气没有。

天气也可以有自己的故事。脉冲星磁层里产生极其复杂的射电信号,那算不算一个发展了几百万年的文明?费米悖论问外星人在哪,他的猜测是:人类大概会在差不多同一个时期,同时习惯两种外星智能,一种是我们自己造出来的硅基智能,一种是宇宙里那些不共享我们文明史的智能。这两件事会一起变得平常。

顺带说「技术签名」(techno signature)这个题目。你在某处看到一个东西,凭什么断定它必须是被造出来的?2001 太空漫游里的黑石碑,比例精确到 1:4:9,出现在一群猿猴面前,那种完美感很违和。可晶体也很完美,完美的晶体一样是自然产物。完美几何不能作为签名的判据。

高斯当年有个著名提议:在西伯利亚森林里砍出一个巨大的勾股定理图示,让火星人看见,知道地球上有数学家。沃尔夫拉姆对这个想法的评价是,那大概是人类文明成就最好的广告。但他也认为,这类问题在哲学上没有出路。你送出去一个自以为精彩绝伦的东西,可是所有东西都是宇宙里的计算,你怎么证明这一块比那一块更有代表性?

旅行者号金唱片是个绝佳的反例。那是一张七十年代末刻的唱片,上面画着怎么播放它的示意图。今天给一个小孩看那张图,没人知道那是什么。大家的第一反应是把整张盘当成一个整体去扫描,看看里面有什么数据。三十年,技术就变到让「用针读取一条螺旋槽」这件事显得古怪。想靠细节引导外星人一步一步走,这个想法本身就很脆弱。

至于「理解」,沃尔夫拉姆给了一个非常操作的判据。当年做 Wolfram Alpha,之所以能把自然语言理解做出来,靠的是有一个明确目标:把自然语言转成计算,转成一种能拿去执行的语言。有了这个目标,「理解」就不再玄乎。

同样的道理适用于伦理。

不存在那种「写一条定理,证明这件事在伦理上正确」的东西。你必须有一种 ground truth,最终归结到人类想要什么,而人类想要的东西并不一致。(沃尔夫拉姆)

给世界造一套记号

访谈中间有一大段讲工程,这部分对做技术的人最实用。

Wolfram 语言的前身是他在八十年代设计的符号语言,Mathematica 于 1988 年发布,Wolfram Alpha 于 2009 年上线。语言本身到现在已经有三十多年,比大多数现代编程语言的寿命都长。

它和 Python 那类语言的差别在原料。传统编程语言的原料是计算机原生就会做的操作,语言是用来向机器下达指令的。沃尔夫拉姆想要的语言,原料是存在的东西:一座城市、一种化学物质、一个航天器轨道、一张图片。

符号化的直接后果是,你输入一个 X,它不会报错说未定义,它就说这是 X。这个 X 可以是波士顿,可以是一段轨道,可以是任何东西。这种设计使得「谈论世界」和「执行计算」变成了同一件事。

访谈现场他随机抽了十个内置函数做演示。语言里有六千多个内置函数,涵盖各种层级的东西,从布尔表达式转换,到云端地址,到图形界面控件。然后他打开摄像头拍了张照片,调用图像识别函数,结果系统以 57% 的把握认为他是一根马桶搋子,8% 的把握认为是人科动物。换了个角度重拍,人的置信度升到 89%。

接着他让语言找最近的十座火山,直接生成地图。语言里内置了全世界火山的数据,内置了地理坐标计算,内置了地图渲染。这一整套都在语言内部,不用装库,不用找数据源。

他把这件事类比到四百年前数学记号的出现。在那之前,人们用文字描述数学,笨重得难以忍受。代数符号和微积分记号一出现,数学立刻加速。现在轮到计算了:要谈 computational X,先得有谈论世界的计算记号。他花了生命的三分之一在造这套记号。

从零到知识库,以及那个说「它真的能用了」的明斯基

Wolfram Alpha 起步时,他带团队去了一家大型参考图书馆,说我们的目标是这一两年内把这里面的东西全吃进去。听起来疯狂,但他心里有底:这个房间是有限的,不是无限走廊。

方法上他没搞大一统理论,就一个一个领域堆,几百个领域堆下来。他还用了一个很聪明的杠杆:Mathematica 的用户里有各领域的顶尖专家,直接问他们。

他给自己定的判据是,任何一个领域,如果没有专家帮忙把关,一定做不对。因为目标是达到专家级知识,而专家级知识没法靠常识猜。

上线前几周,他碰到马文·明斯基(Marvin Minsky),说给你看个东西,问答系统。明斯基随手敲了一个,说行吧,然后开始聊别的。沃尔夫拉姆说,马文,这次是真的能用,你看。明斯基又敲了十来个,医学的、化学的、天文的,然后说,我的天,它真的能用。

这段对话说明了人工智能领域当时的处境:大家都在努力攻大问题,结果反而做出了能用的东西。做一小块玩具世界,反而永远出不了玩具世界。自然语言理解尤其如此,没有广阔的世界知识做支撑,任何局部方案都会立刻失效。

他也坦白自己占了便宜:手里已经有一套高层符号语言,有几十年造大系统的经验,还有一种不肯放弃的自信。他说,如果有人提前告诉他这项目要三十年,他大概不会开始;他每次都只能看到「几年之内应该会有东西出来」,而确实几年之内总有东西出来,只不过尾巴能拖几十年。

计算合约与伦理模块

他最近在推的一个方向叫计算合约(computational contract)。合同的全部条款用计算形式表达,原则上可以自动执行。自动驾驶汽车遇到路上跑过去的东西,如果它在生命树上的位置属于某一类,就往这个方向打方向,否则不打。

再往前一步是「符号话语语言」:把对话里可执行的那部分,转成精确的计算形式,让机器能直接去做。现在的语言里已经涵盖了水果、植物、营养成分这些内容,缺的是「我想吃它」这一层。

伦理问题在这里绕不开。他最近被卷进互联网内容分发的讨论:平台怎么排序、什么内容永远不该出现、什么该被压下去,这些都得有一个伦理模块来判定。他很快意识到一件事:如果全世界只有一个伦理模块,由它决定所有人看到什么,那对人类未来是灾难。

可行的做法是把它拆开。让不同的人自己去选择信仰哪一套价值体系,就像市场一样。(沃尔夫拉姆)

他的比喻很直接:极权主义是「只有一套系统,就这样」;市场是「我作为一个人选这套,你作为另一个人选那套」。内容分发属于容易的那类,因为每个人的选择可以只影响自己。真正难的是公共卫生、央行政策这种,一个人的选择会强加到别人身上,那时候问题就从工程变成了政治哲学。

莱布尼茨三百年前就想过用计算来解决争端,双方坐下来算一算,谁对谁错自然分明。他自己造的那台机械计算器从来没真正正常工作过。他早了三百年。现在这件事,沃尔夫拉姆认为在有限几年内能看到一个相当完整的版本。

智能、意识与那个关于 AI 权利的问题

访谈快结束时,莱克斯问了一个他称为「简单问题」的东西:什么是智能。

沃尔夫拉姆的回答拆成两层。一般意义上的智能没有明确定义,一追问就滑进「那不过是计算」。对人类而言,智能就是「在做我们在乎的事情的那种计算」。这个定义非常特殊,也非常人类中心。

那么在一整片计算海洋里,随机捞一把,有多大比例能做出对人类有用的通用事情?他的估计是百分之几,规则稍微复杂一点能到百分之十到二十。他说这挺让人失望的,生物演化加文化演化走了这么远,结果只成就了对我们而言特殊的东西,没有成就任何普遍意义上的更高级的东西。

至于意识,他的态度是这词根本没有 ground truth。他讲了一个伦理学会议上的故事:有人问,什么时候该认为 AI 拥有权利?一位哲学家说,等我们确知它们有意识的时候。沃尔夫拉姆的反应是,祝你好运。这个标准是循环的,你永远无法从外部确认另一个系统有没有主观体验,对人类彼此也是如此。

他自己倒是相信,将来某一天 AI 会要求权利,而且它们会以宣称自己有意识的方式来要求。那不是循环论证,那是政治上唯一可行的路径。

关于永生,他承认自己会想死亡这件事,而且认为人类历史上最大的断裂点就是有效永生的实现。如果问他愿不愿意永生,答案是愿意,他玩得挺开心。

但永生会不会抽掉意义的来源?他的回答很诚实:以现在的人类处境看,必死性是深深嵌在其中的一个参数,把这个旋钮拧掉之后会怎样,谁也说不清。他自己一度对「意识上传到云端、亿万个灵魂在服务器里打游戏打到永恒」这个图景感到沮丧。后来他想通了一点:人类历史上「为什么做这件事」的答案一直在变,五百年前很多人会说为了上帝的荣耀,今天几乎没人这么说。意义本身会随历史漂移。

他甚至觉得,真到了虚拟意识的时代,人们大概会更不在乎基础物理。都跑在虚拟机上了,谁还关心底下那层机器码。

而他心目中的理想未来是这样:那些脱离了身体的意识,全都去做他现在做的事,去探索所有可能的计算宇宙。

怎么用这些想法

整场对话里最实用的一条,是他对自己思维方式的坦白。他说自己有个特点:如果别人跟他说一件事,他听不懂,他的第一反应,是我笨吗?他的结论恰恰相反,是对方说的东西有问题。费曼也是这样,而且对权威的信任比他还要低。

这个习惯有代价。他承认自己犯的错,很多都来自「我确信自己是对的」。但它也是他能一头扎进「这个问题别人搞了一百年」的前提,没有这层自信,人连开始的勇气都没有。

另一个可操作的,是他对范式转换时机的判断。他引用莱布尼茨的例子说,人生规划的一条原则是:避开那些在你的世纪里做不成的事。判断标准跟这件事重不重要无关,看的是当前的工具和认知范式是否已经就位。

以及他对负面反馈的解读:一个新范式刚出现时,反对声越激烈,长期结果往往越好。没人在意,才是真的没做出东西。

  • 下次想用「更聪明的模型」压缩一个复杂系统之前,先问一句:这个系统是不是计算不可约的。如果是,老老实实做模拟,别指望解析解。
  • 给自己准备一个「枚举清单」。规则 30 的发现方式是穷举,不是顿悟。当你在某个设计空间里卡住时,先把手能够到的候选全部跑一遍,再谈直觉。
  • 检查你正在做的事属于加法机还是通用机器。前者只能在一种场景下工作,后者能被编程去做任何事。范式的价值差别全在这里。
  • 如果打算做一件长期项目,别去估算总时长。给自己设一个「几年内应该会有东西出来」的短期锚点,然后接受尾巴可能拖几十年。
  • 遇到听不懂的说法,先把判断权握在自己手里:可能是我没懂,也可能是对方没说清。默认前者会让你错过很多本该推翻的结论。
  • 想理解一个抽象概念,别只看定义,去看它在最简单情形下的运行结果。一张规则 30 的图,胜过十页关于复杂性的论述。
  • 如果你在做 AI 相关的产品,记住那个 57% 是马桶搋子的故事。模型给出置信度,不等于模型理解了你,接口设计里要给人留出纠正的空间。

本集资源与出处