第一推动丛书·综合系列(套装共8册)
上QQ阅读APP看书,第一时间看更新

指令从何而来?

如果仅从化学和物理的角度来看,一些事物几乎没有存在的可能性,理解其存在的关键在于认识到可以利用信息来说明和组织本来毫无可能性的结构。通过利用信息,能将不可能变成可能。因此我们必须知道拥有这神奇特性的有组织信息从何而来。“写1000个H”这样的指令使得本来不可能通过随机抛硬币产生的对象得以实现。第4章探讨了一些只有利用指令才能形成的结构。许多指令都是人类天才的产物,但人的大脑虽然很特别,却也不能无中生有产生目的性信息。

计算提供了一个机会,一个计算的输出可以作为另一个计算的输入。这样就有可能建立计算的链条,其中每个计算的输出都是下一个计算的输入。甚至可以让计算的输出作为其自身(相同的规则集)的输入。这个过程可以表示成一个环(图5.1)。我们称之为迭代(不断地重复)。

图5.1 迭代计算的概念图

大部分计算都无法迭代,因为它们的输出与输入的结构不同;但对于程序员来说设计迭代计算并不难。如果迭代计算是确定性的,会有3种可能的结局:收敛到某个最终的输出/输入不再变化;进入循环,相同的输出/输入以规则的间隔反复出现;或者形成混沌。如果计算是概率性的,则还有第4种可能:输出可能不断随机变化。

迭代复制是最基于的迭代计算。如果某个结构可以被复制,显然其复制品也可以被复制。这种输入→复制→输入→复制……形式的迭代计算说不上很有趣,但是不难做到,将复印机的输出再放到输入板上就能实现迭代复制。如果复印效果不是很好,输出会逐渐退化,变得越来越无序。无序是因为复制时产生了错误,损失了有意义的信息。迭代复制很难做到完美,因此很容易损失信息。但如果在迭代复制中加入选择,一切都会不一样。

设计迭代程序的程序员通常将输入分成不变部分和可变部分。如果规则或算法不允许改变,只有数据变化,事情会容易很多。以不完美的复印机为例,只有拷贝变化,机器本身并不变化。如果程序的规则或算法部分也随意变化,则有很高的风险产生出非法程序,导致循环停止(改变的机器不再工作)。有这种特性的系统很难用电子计算机实现,但也不是不可能。对于生命系统,程序、机器和数据相互关联,全都随时间变化。只有进化过程的逻辑保持不变,甚至执行进化的方式也会演变。

存在一个普适性的策略,允许算法和数据都随机变化,同时还能确保循环的继续。如果迭代计算中加入了程序变化的可能性,通常会有3个特点:

·程序必须实现某种复制机制,并且这种机制要允许发生错误或其他变化。

·每次循环中的错误(变化)必须很小。

·每次循环必须有足够多的输出,这样至少有一个输出相对当前循环的输入没有显著变化。

如果具备这3个特点,迭代计算就能长期进行,程序(规则和输入数据)改变但计算不会停止。由于每次循环有多个输出,所以必须有某种选择机制,因为没有哪个系统能让输入/输出的数量无限增长。我们可以将具有这些特性的通用计算策略称为“选择性迭代概率计算”(IPCS)。这种系统会表现出渐进式变化。图5.2绘制了其基本特性。内环是所有进化过程的定义性特征,也是我所说的复杂引擎。这个引擎就是IPCS,是有多重输入和输出的并行计算。

具有复杂引擎的循环系统一般都会以输入/输出结构的形式累积信息,改进的个体被再次复制的机会更高。这个循环在随机的变化中保留更符合选择标准的变化,从而提炼信息。我称这种累积的信息具有“目的性,”因为它符合选择标准的要求。一旦出现随机变化,就会根据选择规则对产生的输出进行评估。如果变化是好的,就会成为下一轮循环的输入,如果不好,就会被淘汰。生物的选择过程混乱而随机。一些好的变化没有传递给下一代,一些不好的却留下了,但总体上个体组成的群体会加入许多更好的变化,而大多数不好的都被去掉了。IPCS计算很像一个嘈杂的机械齿轮,大部分时候都在前进。根据前面的第3条要求,至少有一个输出没有显著变化,这确保了系统在整体上不会滑坡。生命系统通常满足这个要求,突变率足够小,使得每一代的大多数个体的适应性不会比父母差太多。如果环境的辐射水平高,或者大剂量接触化学突变剂,会导致突变率过高,从而不符合要求。这样的群体会螺旋下降,每一代的适应性都不如前一代。

图5.2中标有“投射”的方框不是引擎的基本组成部分,但为了清晰起见也画了出来,因为大部分进化系统都有这个特性。在这样的系统中,选择作用于产物,而不是直接作用于输出。对于生物,输出是DNA序列,产物是生物体。对于人类活动,输出是人们遵循的指令,产物是这些指令说明的人造物或社会组织。

每次循环引入的变化必须很小,这个要求有必要反复强调。相对于输入的变化越大,得到的输出和产物的差别就越大,也意味着符合选择标准的可能性越小。大的变化导致可能性空间中的大跳跃,从而面临低概率问题。在自然界,可能性空间中“接近的”结构通常比离得远的结构要更相似;因此,与当前结构临近的结构有合理的概率得到改善。而在可能性空间中“离得远的”结构总是差别很大。而这种差别通常都是不好的,因为离得远的结构几乎肯定更加无序,无论哪种特性都会更差。为了阐明这一点,想象一架飞机。小的变化可能是将机翼的长度增加一尺。大的变化则可能是改变机翼的数量。更大的变化可能是将外形变得像一艘船或一个大金属卵石。只有小变化可能适于飞行,也只有在这其中才能找到对原设计的适应性改进。因此,找到好方案的唯一可行路径就是一小步一小步地逐渐变化。就好像在黑暗中没有扶手的舞台上之字形前进。只有步伐很小才能避免掉下去。步伐太大会有不良后果。

概率计算会引入随机变化。每当执行概率计算,就会以一定的概率产生变化。在许多系统中,这种机制就是简单的错误。生物和一些计算机程序利用更复杂的变化机制,包括对之前成功的序列进行重排、混合和匹配。无论细节如何,对于受复杂引擎驱动的计算,每一轮n个输出中(图5.2)必须至少有一个适合作为下一轮循环的输入。如果不是这样,计算就会终止。对于生物就是没有个体能够繁殖,种群灭绝。

图5.2 选择性迭代概率计算(IPCS)图。这种计算策略是推动所有进化过程的引擎。上标t和t+1表示循环次数,m平均必须小于n(必须发生选择)。输入和输出都编码信息

可以非随机地选择输出作为下一轮循环的输入。本质上选择涉及产物(生物体)与环境的互动。有时候选择规则很明确,例如“死去的动物没有后代。”有时候又是间接的和概率性的,例如“可能有捕食者躲在那块岩石后面。无论怎样,具有复杂引擎的系统在非随机选择规则的作用下都会逐渐演变。在改变的过程中,系统自然而然会累积符合选择规则的信息。如果施加新的选择规则,系统又会马上开始累积符合新规则的信息。新信息的来源是被选择的随机变化。产生和保留的最简单的可能变化构成了最基本的信息单元。通过反复的选择和保存记录,系统就能逐渐累积相关的信息。如果选择是非随机的,累积的信息也会是非随机的。

需要澄清的是随机变化对于复杂引擎并不是必需的。图5.2中所展示的基本循环适用于任何变化来源。如果可能变化的范围是有限的,可能产物的谱系就是有限的,过程的创造性受限于可能的变化。随机变化提供最大的机会,如果期望的产物是已知的,指定特定的变化就能急剧加速过程。IPCS策略的力量和美在于其能在没有预先计划的情况下表现出最大的创造性。