关于进化的一个思想实验
我已给出的图景是想象出来的,它是一个关于技术进化的机制如何运作的思想实验。6假如我们能以某种方式在实验室中或者计算机上实现这些步骤的话就更好了——比弄出某些技术进化模型来要好。这样一来,我们就可以在现实中观察这种进化了。
但要实现这种设想很困难。技术在形态上大相径庭,而且识别某些组合(例如,造纸和哈伯制氨法)是否有用或有什么用,对计算机来说非常困难。但是我们可以把自己限定在某个技术世界之内,它可以在计算机上发生进化,这样一来,我们就可以对其进行研究了。
最近我和我的同事沃尔夫冈·波拉克(Wolfgang Polak)建立了一个在计算机上展现的人工世界。在我们的模型世界中,技术是逻辑电路。某些读者可能不熟悉这些,那就让我先解释一下。
我们把逻辑电路看作带有输入和输出针的微电子芯片。输入给定电路是二进制形式的数字1或者0,或者也可能是真和假的某种组合,代表那些目前实现的情形。这样输入到一个飞机里的逻辑电路中的输入信号可以检查该引擎在A、C、D、H、K哪种情况下为真或为假,以此表明某种状态,比如说燃料条件、温度或压力;输出针则发出信号,指示开关Z、T、W和R应该“开”(真)或“关”(假),以此来控制发动机。电路会因目的不同而不同,但对于每一组输入值,给定电路会在输出针安排一套特殊的输出值。有趣的是,计算电路和运算法则中的操作是相符合的,例如和:输出值是所有输入值的加和;或者它们是符合逻辑操作的,例如, 3-bit AND(即如果所有输入针1、2和3,都为真,那么输出针信号则为真,否则则为假)。
研究逻辑电路的工作对我和波拉克有两个好处。我们始终知道逻辑电路的准确功能。如果我们知道一个逻辑电路是如何连接的,我们(或计算机)就可以准确找出它究竟做了什么。如果计算机将两个逻辑电路组合在一起,这样一个电路的输出就成为另一个电路的输入——这就给了我们另一个逻辑电路,而我们依然知道它明确的功能。因而,我们总是知道组合的功能以及它们的有效性。
我和波拉克将想象我们的人工世界住满了人,有小逻辑学家和小会计师,他们在这个逻辑的世界里急于统计、比较事物。一开始,他们没有工具或手段,但是他们有长长的需要某些特定逻辑功能的需求清单。他们可能需要能运行AND,Exclusive-ORs,3-bit addition,4-bit EQUALS等指令的电路。(为了简单起见,我们假定这个需求清单或者机会利基清单是不变的。)我们计算机实验的目的是要知道技术系统(逻辑电路)能否进化,即能否通过组合已有的元素去填充清单上的机会利基,并在进化发生时对它进行研究。
正如我所说的那样,在实验开始的时候,没有机会利基得到满足。所有可用的技术只有NAND(不是AND)电路(可将此看作是原始的电路元素,一个不会比几个晶体管更复杂的电脑芯片)。接着在实验的每个步骤中,新的电路会通过组合(随机地连接电线)被创造出来。(开始的时候,它们依旧只是NAND电路)。当然大多数新的随机组合都将和需求失之交臂,但是总会有一次组合可能偶然地与清单上的需求相匹配。这种组合一旦出现,计算机马上得到指令将此作为一个新技术或新的模块元素纳入其中。此后它就成为进一步连接和组合电路的有效模块元素了。
波拉克计算机里的这个技术进化实验是自主运行的存在,一旦我们按回车键启动实验后就没有任何人为介入了。当然它可以被一遍一遍地重新启动,以此来比较每一次重启之后有什么不同。
我们发现了什么呢?开始时,只有NAND技术存在,但是在成百上千步组合之后,满足简单需求的逻辑电路开始出现了,并且成为进行进一步组合的建构模块元素。在应用这些模块进行组合之后,能满足比较复杂的需求的技术出现了。在大约25万步组合(20个小时的电脑运行时间)之后,我们停止了它的进化并开始检查结果。
我们发现,在足够长的时间之后,系统已经进化成极为复杂的电路:在其他一堆方程式中,还有8-way-Exclusive OR,8-way AND,4-bit Equals。在运行几轮后,系统进化出一个8-bit加法器,这是一个简易计算器的基础组成部分。这看起来好像没什么特别了不起的,但实际上它是惊人的。一个8-bit加法器拥有16个输入针和9个输出针。如果你再次运行一些简单的组合数学,结果是超过10的177 554次方的可能性会产生16输入针和9输出针的电路,但是其中只有一个可以正确运算。10的177 554次方是一个非常巨大的数字。它远远大于宇宙中基本粒子的数量。事实上,如果我想把这些数字写下来,它可能会占去这本书一半的页数。因此,这样一个电路被250 000步随机组合发现的机会是可以忽略不计的。如果不知道这种进化的运行过程,在实验结束打开计算机屏幕时,当你发现电路已经克服那么长时间的试错从而进化出一个能正确运算的8-bit加法器,你一定会惊讶于出现了这么复杂的东西。你可能会猜想机器里住着一位天才的设计师。
我们这个过程之所以可以产生这样复杂程度的电路,是因为它首先创造了一系列“垫脚石技术”(stepping-stone technology)。它能够创造满足简单需求的电路,以这些电路为模块,再创造中等复杂程度的电路。然后再用它们创造出更复杂的电路,以自展的方式解决复杂需求。更复杂的电路只有在那些简单电路就位之后才能被创造出来。因为我们发现,当我们取消聚集了垫脚石技术的中等复杂的需求后,复杂需求将无法得到满足。
这表明,在现实世界中,如果没有无线电或对无线通讯的需求,雷达可能不会得到发展。生物界也是如此。7如果没有中间层级的机构(例如,从黑暗中辨别光的能力)以及相应的“需求”(从黑暗中辨别光的能力的有用性),诸如人眼等复杂的生物特性是不会出现的。
此外,我们还另有斩获。当我们检视进化的历史细节时,我们发现了一个巨大的时间缺口,在这个缺口里几乎什么都没有发生。然后我们发现一个关键电路(一个新技术)会突然出现,并且迅速将它用于更进一步的技术。一个完整的加法器电路可能需要32 000步才能出现;而之后2-bit、3-bit、4-bit加法器的出现则迅速得多了。换句话说,我们发现了休眠周期,以及随后的缩微版“寒武纪大爆炸”式的快速进化。
我们发现,进化是具有历史依赖性的。实验中每次运行都会出现相同的简单技术,但是出现的顺序则不同。因为更复杂的技术是从简单技术中建构出来的,所以它们常常组合于不同的模块。(如果铜在铁之前出现,许多人工物就会用铜制造;如果铁比铜早出现,则同样的人工物会用铁来制造。)我们还发现,某些对电路的复杂需求则根本得不到满足,比如带有许多输入针(每次都不一样)的加法器或者比较器便是如此。
此外,我们还发现了崩溃式破坏,即高一级技术代替之前的功能执行者。这意味着那些仅用于过时技术的电路不再被需要了,因此它们自己也被替代了,于是便产生了崩塌——我们可以对此加以研究和测算。8
我们可以以这种方式检视运动中的技术进化,它证实了我之前在本章得出的结论。