← 返回文章

Why Does Biological Evolution Work?

为什么生物演化过程会有效?为什么机器学习也有效?这两者都是适应性过程的例子,让我们惊讶于它们产生的结果。那么,究竟发生了什么?我在这里将集中讨论生物进化,尽管我讨论的许多内容同样适用于机器学习——但我计划在其他地方更详细地探讨这个话题。

Why Does Biological Evolution Work?

原文: https://writings.stephenwolfram.com/2024/05/why-does-biological-evolution-work-a-minimal-model-for-biological-evolution-and-other-adaptive-processes/

God2-Sistine_Chapel.png

生命模型

为什么生物演化过程会有效?为什么机器学习也有效?这两者都是适应性过程的例子,让我们惊讶于它们产生的结果。那么,究竟发生了什么?我在这里将集中讨论生物进化,尽管我讨论的许多内容同样适用于机器学习——但我计划在其他地方更详细地探讨这个话题。

生物学合理的最简模型是怎样的?我的核心观点是将生物体视为通过遵循简单的基础规则而发展的计算系统。这些基础规则实际上对应于生物体的基因型;执行这些规则的结果实际上就是它的表现型。元胞自动机提供了这种设计的简单例子。有一个包含三种可能颜色的细胞示例;规则显示在左侧,生成的行为显示在右侧: Why-Does-Biological-Evolution-Work-A-Minimal-Model-for-Biological-Evolution-and-Other-Adaptive-Processes_file-241207232337037.png 我们从一个单一的细胞(红色方块)开始,可以看到,从这个“种子”开始,生长出一个结构——在这个例子中,它在 51 步之后消失。从某种意义上说,能生成一个既不会永远持续下去,也不会迅速消失的结构已经是值得注意的——而是恰好能在 51 步之后生存(在这个例子中)。

但是,假设我们从一个简单的(“空”)规则开始,该规则使得任何模式立即消失。我们能否通过“适应性进化”最终演化出上面的规则?想象一下,做一系列随机选择的“点突变”——每次改变规则中的一个结果,就像这样: Why-Does-Biological-Evolution-Work_file-241207232603211.png 然后假设在每一步——一个最简化的自然选择类比中——我们“接受”任何能够使生命周期变长(但不是无限长)的突变,或者至少保持不变的突变,而拒绝任何使生命周期变短或变为无限长的突变。事实证明,通过这个过程,我们确实能够“适应性进化”到上述规则(在这里,我们只展示生命周期逐渐变长的“中途点”): Why-Does-Biological-Evolution-Work_file-241207232633856.png不同的随机突变序列会产生不同的规则序列。但令人惊讶的是,在几乎所有情况下,都能“取得进展”——并且经常能够达到能够生成长时间生存模式的规则(这里的生命周期分别为 107、162 和 723),并且这些模式具有复杂的形态结构: 【配图暂缺:原始图片文件已丢失。】 我们的简单适应性进化过程能够成功地“控制”局面,取得这样的成果,是否“显而易见”?并不是。但它能够实现这一点,似乎正是生物进化能够成功运作的核心所在。

从上面的图片序列来看,我们可以看到,实际上常常有“不同的机制”在不同的规则序列中出现,用于产生长时间的生命周期。通常我们首先看到该机制的简单形式,然后随着适应性过程的继续,机制逐渐得到发展、阐述和构建——这与我们在生物进化的化石记录中常常看到的情况不无相似。

但是,让我们深入探讨,稍微详细地看看我们使用的简单模型中发生了什么。在我们考虑的三色邻近(k = 3,r = 1)细胞自动机中,规则中有 26(= 33 – 1)个相关的情况(如果我们不坚持条件,那么会有 27 个)。 “点突变”影响单个情况,将其改变为两个(= 3 – 1)可能的替代结果之一——因此,给定规则的可能“点突变”总共有 52(= 26 × 2)种不同的变化方式。

比如,从以下规则起始 Why-Does-Biological-Evolution-Work_file-241207232752048.png 可能的单点突变有: Why-Does-Biological-Evolution-Work_file-241207232842938.png 即使是这样的点突变,其产生的行为通常也有相当大的多样性

【配图暂缺:原始图片文件已丢失。】 在许多情况下,生成的模式与原始规则的模式完全相同。除此之外,模式会更快消亡——或者根本不会消亡(要么变成周期性模式,要么无限增长)。而在这个特定的例子中,仅有一种情况下达到了“更高的适应度”,即存活时间更长。

如果我们进行一系列随机变异,许多变异会产生寿命更短或无限存活(“肿瘤”)的模式,而这些模式会被我们淘汰(或者用生物学术语来说,可以认为它们被“选择性淘汰”)。 Why-Does-Biological-Evolution-Work_file-241207233102136.png 但仍然会存在许多“中性突变”,它们不会改变最终的模式(或者至少会生成长度相同的模式)。起初我们可能会认为这些突变没有任何作用。但实际上,它们对于单点突变积累为更大的突变至关重要,这些更大的突变最终可能产生存活时间更长的模式。 【配图暂缺:原始图片文件已丢失。】 回顾我们上述整个适应性进化过程,从一个(逐渐存活更久的)“适应度节点”到下一个节点所涉及的点突变总数是: Why-Does-Biological-Evolution-Work_file-241207233139062.png 以下是与这些适应度节点相关的基本规则(其中数字表示“存留的突变”数量,不包括那些“来回反复”的突变): 【配图暂缺:原始图片文件已丢失。】 一种理解这一过程的方法是将适应性进化过程中整个序列的(“被接受的”)规则提取出来,并将它们绘制在一个降维后的(27维)规则空间的渲染图中: Why-Does-Biological-Evolution-Work_file-241207233237368.png有些阶段会出现大量的“游走”,需要许多突变才能“取得进展”。而在另一些阶段,过程会快得多,需要的突变较少。

为了从另一种角度理解这一过程,我们可以将目前为止达到的最大寿命与总突变数绘制在一张图上: 【配图暂缺:原始图片文件已丢失。】我们可以观察到一些平台期(包括一个非常长的平台期),在这些期间“没有进展”,但偶尔会被一些相当大的突然变化打破,这些变化通常仅由一个突变引起。

如果我们将“被拒绝的突变”也包括在内,可以看到即使在平台期,也有大量活动在进行;只是这些活动未能带来进展(可以将每个位于平台下方的红点视为一个“未成功”的突变,或一个“未存活”的生物体,它被选择性淘汰了): 【配图暂缺:原始图片文件已丢失。】值得注意的是,在一个平台期内可能会出现多种不同的(“表型”)模式。以下是我们在当前这个具体示例中观察到的情况: 【配图暂缺:原始图片文件已丢失。】但即使在这些“表型不同”的情况下,也可能存在许多“基因型不同”的规则。从某种意义上来说,这并不令人惊讶,因为通常只有规则中的一部分是“编码”的;其他部分是“非编码”的,即在从该规则生成模式的过程中没有被采样。

例如,这可以突出显示每个“适应度节点规则”中哪些单元使用了规则中此前未被采样的“新鲜”情况: Why-Does-Biological-Evolution-Work_file-241207233407556.png我们发现,即使是在这里显示的最后一个规则中,在模式生成过程中(基于特定的单红细胞初始条件),规则中相关的26种情况中实际上只有18种被采样。这意味着规则中有8种情况是从表型中“未确定”的,这表明可能存在 38=65613^8 = 656138=6561 种基因型(即规则)会产生相同的结果。

到目前为止,我们主要讨论了一个特定的随机突变序列。但如果我们观察多个这样的突变序列,会发生什么呢?以下是100个不同的随机突变序列中,最长存活时间(或实际上“适应度”)的增长情况: 【配图暂缺:原始图片文件已丢失。】或许最值得注意的是,这些适应性过程似乎确实不会“卡住”。虽然可能需要一段时间(因此会出现较长的平台期),但这些图表表明,最终“适应性进化会找到出路”。随着存活时间分布的逐步发展,规则最终会趋向于显示更长的存活时间: 【配图暂缺:原始图片文件已丢失。】

The Multiway Graph of All Possible Mutation Histories

到目前为止,我们一直在讨论特定随机突变序列决定的适应性进化路径。然而,为了更全面地了解适应性进化的过程,可以采用一种更强大的方法——不仅关注个别的适应性进化路径,而是借鉴我们的物理项目、ruliad等的理念,研究所有可能路径的多路图(在与生物学对应时,多路图为我们提供了一种方法,不仅可以讨论单个生物序列的适应性进化,还可以讨论种群的适应性进化) 让我们从一个新的讨论开始,这次不考虑上一节中的三色元胞自动机,而是改为考虑(最近邻)双色元胞自动机——其中仅存在128个可能的相关规则。这些规则之间如何通过点突变相互关联?我们可以构建一个图,表示从这个规则集中,一个规则通过单个点突变转换为另一个规则的每种可能方式: 【配图暂缺:原始图片文件已丢失。】 如果我们考虑 5 位规则而非 7 位规则,那么只有 16 个相关规则,我们可以清楚地看到,可能的突变图具有布尔超立方体的形式: 【配图暂缺:原始图片文件已丢失。】 假设我们从“空规则”(null rule 【配图暂缺:原始图片文件已丢失。】)开始。接着,我们列举通过单个点突变获得的规则(因此在上述图中直接与空规则相连的规则),然后观察这些规则从某个初始条件(例如Why-Does-Biological-Evolution-Work_file-241207233911720.png)产生的行为: Why-Does-Biological-Evolution-Work_file-241207233947428.png 其中一些规则可以被视为“取得了进展”,因为它们生成的模式具有更长的存活时间(虽然并不显著增加,仅从1延长到2)。但其他规则“没有进展”或生成“永存”的模式。通过仅保留不会导致更短或无限存活时间的突变,我们可以构建一个多路图,展示所有可能的突变路径: 【配图暂缺:原始图片文件已丢失。】 尽管这个图非常小(仅包含15个规则),但我们已经可以看到一些重要现象的端倪。存在“适应度中性”的突变,它们可以“双向”发生。但也有许多突变只能“单向”进行,因为逆向突变会降低适应度。图的一个显著特征是,一旦“投入”到图的某个特定部分,通常无法到达其他部分——这暗示了与生命树中存在不同分支的类比。

超越双色、最近邻(k=2,r=1k=2, r=1)元胞自动机,我们可以进一步考虑 k=2,r=32k=2, r=\frac{3}{2} 的情况。一个典型的这种元胞自动机是: Why-Does-Biological-Evolution-Work_file-241207234156512.png对于 k=2,r=1k=2,r=1 总共有 128 个(即 223−12^{{2^3}−1})相关规则。而对于 k=2,r=32k=2, r=\frac{3}{2} ,总共有 32,768 个(即 224−12^{{2^4}−1})。从空规则(null rule)开始,再次使用相同的初始条件,这里是一些此类元胞自动机适应性进化路径的具体示例: Why-Does-Biological-Evolution-Work_file-241207234211031.png 以下是k=2,r=32k=2, r=\frac{3}{2}的多路图开端——展示了从空规则(null rule)开始,通过最多两次突变能够到达的规则: Why-Does-Biological-Evolution-Work_file-241207234631836.png 该图包含许多“适应度中性集合”的例子——这些集合中的规则具有相同的适应度,并且可以通过突变相互转换。以下是一些适应度中性集合的示例: 【配图暂缺:原始图片文件已丢失。】在第一个例子中,适应度中性集合中的所有“基因型规则”都生成相同的“表型模式形态”。但在其他例子中,一个适应度中性集合内可以存在多种形态。

如果包含所有单个规则,我们将得到一个完整的 k=2,r=32k=2, r=\frac{3}{2}多路图,总共有 1884 个节点。但如果仅从每个适应度中性集合中选取一个代表规则,则会得到一个更易管理的多路图,总共有 86 个节点: 【配图暂缺:原始图片文件已丢失。】如果仅保留那些通过左右对称关系相关的模式对中的一个代表规则,则可以得到一个更简化的图,现在总共有 49 个节点: Why-Does-Biological-Evolution-Work_file-241207234811778.png 这个图中存在相当多的结构,包括可能路径的分叉和汇合。但总体而言,可以感受到图的不同部分分离成了独立的分支,这些分支中的适应性进化实际上“探索了不同的途径”来提高适应度(即模式的存活时间)。

我们可以将适应度中性集合视为某种规则等价类的表示。这些集合可能具有多种结构形式——从仅包含一个元素的集合,到包含许多元素但只有少数不同形态的集合,再到每个元素都对应不同形态的集合: Why-Does-Biological-Evolution-Work_file-241207234827913.png 那么更大的规则空间呢?对于 k=2,r=2,总共有大约 20 亿个(225− 1225−112^{2^5} - 1)相关规则。但如果我们只考虑左右对称的规则,这个数量将减少到 524,288 个(即 225− 1225−112^{2^5 - 1})。以下是一些在这种情况下通过适应性进化产生的规则序列示例,这些规则从空规则(null rule)开始,并且仅允许保留对称性的突变(此时使用一个单独的黑色单元作为初始条件): Why-Does-Biological-Evolution-Work_file-241207234859886.png 同样,我们可以识别适应度中性集合——但这次,在绝大多数情况下,一个集合内所有成员生成的模式是相同的: Why-Does-Biological-Evolution-Work_file-241207234924519.png 将适应度中性集合归约后,我们可以计算对称的 k=2,r=2k规则的完整(传递性归约的)多路图,该图总共包含 60 个节点: Why-Does-Biological-Evolution-Work_file-241207235005969.png 通过归约适应度中性集合,我们构建了一个多路图,其中每条边都代表一个在提高适应度方面“取得进展”的突变。但基于随机突变序列的实际适应性进化路径,可能在适应度中性集合内进行任意数量的“反复震荡”——更不用说尝试那些降低适应度的突变——然后才会到达“取得进展”的突变。因此,尽管我们绘制的归约多路图表明,从空规则到任意其他规则的适应性进化最多需要 9 步(即突变),但实际上可能需要任意数量的步骤,因为适应度中性集合内的“反复震荡”。

以下是一个特定适应性进化过程中被接受突变的序列示例,其中“取得进展”的突变被高亮显示,并用数字标记出被拒绝的突变: 【配图暂缺:原始图片文件已丢失。】我们可以观察到在适应度中性集合内的“反复震荡”,其间生成了一系列循环的形态。这种方式代表了达到最终模式的一种途径,但实际上还存在许多其他可能的路径,其中一些可能涉及更少的突变。

事实上,可以从多路图中确定一条绝对最短路径为: 【配图暂缺:原始图片文件已丢失。】 这条路径涉及的规则序列为: 【配图暂缺:原始图片文件已丢失。】 我们从空规则(null rule)开始,每一步进行一次单点突变(但由于对称性,有时会同时改变两个比特)。最初的几次突变并没有改变“表型行为”。但经过一段时间后,足够多的突变(在这里是6次)累积起来,产生了形态学上不同的行为。而再进行仅3次突变后,我们便得到了最终的模式。

我们最初的随机突变序列也达到了相同的结果,但路径要曲折得多,总共进行了169次突变,其中许多突变相互抵消: 【配图暂缺:原始图片文件已丢失。】 在绘制多路图时,我们定义了哪些进化路径是可能的。但概率如何呢?如果假设每次点突变的发生概率相等,我们实际上可以“分析”多路图中的流动,确定最终到达每个规则的概率(这里用更红的颜色表示更高的概率): 【配图暂缺:原始图片文件已丢失。】

拟合景观(The Fitness Landscape)

多路图提供了一种全局视角,然而,考虑更局部的细节对理解适应性演化过程更有用. 多路图提供了一个关于适应性进化的全局视角然而, 考虑更局部的细节对理解适应性演化过程更有用. 我们可以设想所有可能的规则都在一个特定的空间中排列,适应性进化则在这个空间中寻找合适的路径。我们还可以假设,在这个空间中定义了一个“适应度景观”,而适应性进化则试图沿着一条不断上升到更高适应度峰值的路径前进。

让我们再次考虑上面第一个例子——3色元胞自动机空间中的适应性进化。在适应性进化的每一步中,都有52种可能的点突变可以对规则进行修改。我们可以把每一个突变看作是在(26维)规则空间中朝着不同方向进行的“一步操作”。

下面是根据我们上面第一个例子中的特定适应性进化路径所做的视觉表示: Why-Does-Biological-Evolution-Work_file-241209231556973.png 我们在这里展示的实际上是从一个“适应度中途点”到另一个“适应度中途点”的一系列“决策”。不同的可能突变通过不同的径向方向来表示,每条线的长度与通过执行该突变所获得的适应度成正比。在每一步中,灰色圆盘表示前一个适应度。而我们看到的是,许多可能的突变导致较低的适应度结果,这些突变显示在“圆盘内”。但是至少有一些突变会产生更高的适应度,显示为“逃离圆盘”。

在多路图中,我们会追踪所有导致适应度提升的突变。但对于我们目前讨论的特定适应性进化路径,我们假设每次都从这个突变集合中随机选择一个突变——这里用红色线条表示。(稍后我们会讨论不同的策略。)

我们的径向图标可以被视为在规则空间中每个点的“局部导数”表示,较长的线条对应于“适应度景观”中具有较大斜率的方向。

但是,如果我们想要“将这些局部导数联系起来”,从而形成整个空间的图像,会发生什么呢?不言而喻,这是一个复杂的问题。作为第一个例子,考虑 k = 2,r = 1 的元胞自动机规则。

总共有128条相关的规则,(正如我们上面讨论的)这些规则可以通过点突变连接在一起,形成一个7维的布尔超立方体。正如上面讨论的,在这128条相关规则中,只有15条出现在适应性进化过程中(其余的规则实际上从未被选择,因为它们代表较低的适应度)。但是现在我们可以问,这些规则在整个超立方体中位于何处: 【配图暂缺:原始图片文件已丢失。】 这里的每个节点代表一个规则,突出显示的节点的大小表示其对应的适应度(根据初始条件下的生命周期计算得出 【配图暂缺:原始图片文件已丢失。】)。绿色显示的节点对应于空规则(null rule)。

将其以3D方式呈现,其中适应度以高度表示,我们得到的就是我们可以称之为“适应度景观”的图像: 【配图暂缺:原始图片文件已丢失。】 现在我们可以将适应性进化视为沿着路径前进,这些路径从不会到达该景观上较低高度的节点。

当我们研究 k=2,r=32k=2, r=\frac{3}{2} 的规则(这里初始条件为 Why-Does-Biological-Evolution-Work_file-241209233952771.png)时,我们会得到一个更为完整的“适应性景观”: Why-Does-Biological-Evolution-Work_file-241209234007441.png 适应性进化应该在这一景观上描绘出一条“永不下坡”的路径: 【配图暂缺:原始图片文件已丢失。】 沿着这条路径,我们可以制作类似上方所示的“导数”图,以表示每个点周围的“局部地形”——指示在可能的向上方向中实际选择了哪一个: 【配图暂缺:原始图片文件已丢失。】 我们的“适应性景观”所定义的规则空间本质上是离散的,并且实际上具有非常高的维度(对于 k=2, r=2 的规则,维度为 15)。在三维空间中生成其可解释的可视化非常具有挑战性。我们希望能够布置规则空间的渲染,使得仅通过一次突变不同的规则之间具有固定的(“基本的”)二维距离。尽管一般情况下这不可能完全实现,但我们试图通过为底层的“突变图”找到一个合适的布局来至少接近这一目标。

基于这一布局,原则上我们可以通过在离散点之间插值来创建“适应性景观表面”。尽管目前尚不清楚这种方法的意义有多大,但它或许有助于激发我们对空间直觉的理解: 【配图暂缺:原始图片文件已丢失。】

我们可以尝试使用机器学习和降维方法,作用于一组“规则向量”(即不会在适应性进化过程中被淘汰的结果列表)。通过这些方法,得到的结果或许会稍微好一些: 【配图暂缺:原始图片文件已丢失。】

顺便说一下,如果我们对规则空间使用这种降维方法,那么规则的行为分布如下: Why-Does-Biological-Evolution-Work_file-241209234318068.png

以下是基于这些模式的视觉特征生成的特征空间分布图,用于比较: 【配图暂缺:原始图片文件已丢失。】

The Whole Space: Exhaustive Search vs. Adaptive Evolution

在适应性进化中,我们可以从一个初始规则(比如“空规则”)出发,通过随机突变尝试逐步达到具有更高适应度的规则。但如果我们试图穷举搜索所有可能规则的完整空间呢?尽管规则的数量会迅速增长到难以处理的规模,但某些情况显然是可以探索的: Why-Does-Biological-Evolution-Work_file-241209234501886.png 例如,对于 k= 2, r = 2 的对称规则,总共有 524,288 个可能的规则——其中有 77,624 个规则会生成具有有限生命周期的模式。然而,最终只会出现 77 种不同的表型模式,这些模式具有不同的生命周期和不同的多重性(至少在这种情况下,多重性始终与规则中的“未使用位”相关联):

Why-Does-Biological-Evolution-Work_file-241209234530347.png 这些穷举结果与适应性进化的多向图中生成的结果相比如何呢?它们几乎相同,但增加了两个额外的情况: 【配图暂缺:原始图片文件已丢失。】 这些额外的情况是由以下形式的规则生成的(其中灰色条目无关紧要): 【配图暂缺:原始图片文件已丢失。】 为什么这些规则不会出现在我们的适应性进化中呢?原因是,从“空规则”出发,并没有一条可以到达这些规则的点突变链,而无需经过在适应性进化过程中会被拒绝的规则。如果我们绘制一个包含每个可能“可接受”规则的多向图,那么我们会在图中看到一个独立的部分,它有自己的根节点,其中包含那些无法通过适应性进化从“空规则”到达的规则: 【配图暂缺:原始图片文件已丢失。】 现在,如果我们查看所有(对称 k=2,r=2k=2,r=2)规则,可以得到以下生命周期分布:

【配图暂缺:原始图片文件已丢失。】 如上所示,最大值为 65。总体分布大致呈幂律分布,指数约为 -3:

【配图暂缺:原始图片文件已丢失。】 如上所述,并非所有规则在生成表型模式时都会使用其所有的位(即结果)。然而,我们观察到,规则产生的生命周期越长,通常需要使用的位数就越多: Why-Does-Biological-Evolution-Work_file-241209234835572.png 同样,这种关系大致遵循幂律分布,但指数约为 -3.5: Why-Does-Biological-Evolution-Work_file-241209234940302.png 以下是实际生成的 100 种具有最长生命周期的模式(在所有不对称情况下,还存在生成左右翻转模式的规则):’

图!图!图!

在这里可以看到,不同规则利用了各种“本质上不同的理念”来生成这些模式。一些规则(如生命周期为 151 的规则)似乎是专门为了实现其特定的长生命周期而“被构造”的。但另一些规则(如生命周期为 308 的规则)则更像是“偶然的”——表现出一种显然随机的行为模式,然后仅仅在某些步骤之后“碰巧消失”。

由于这些规则是通过穷举搜索找到的,我们知道它们是唯一可能具有如此长生命周期的规则(至少对于 k=2,r=2k=2, r=2)。因此,我们可以推断,为了实现例如生命周期超过 100 步这一目标,我们所看到的复杂结构在某种意义上是必要的。这意味着,当我们通过适应性进化过程获得超过 100 步的生命周期时,所看到的复杂行为模式并不是因为“适应性进化过程中的复杂选择”,而是因为为了达到这样的生命周期,别无选择,只能使用这种复杂的模式。换句话说,我们观察到的复杂性反映了“计算上的必然性”,而不是适应性进化的历史偶然性。

此外(如我们将在下文更详细讨论),某些行为是可以实现的,而另一些则不可能。例如,有一个规则可以实现生命周期 308,但没有规则可以实现生命周期 300。(不过,如果我们使用更复杂的初始条件或更复杂的规则族,可能可以找到这样的规则。)

正如我们在前文讨论的对称 k=2,r=2k=2,r=2 情况中看到的,几乎所有较长的生命周期都需要使用规则中的所有可用位: Why-Does-Biological-Evolution-Work_file-241209235057658.png 但不用说,也有一个例外——一对生命周期为 84 的规则,其中 Why-Does-Biological-Evolution-Work_file-241209235251681.png 情况下的结果并不重要: Why-Does-Biological-Evolution-Work_file-241209235305798.png 那么,这些具有长生命周期的规则是否可以通过从“空规则”出发的单点突变适应性进化达到呢?与其尝试从“空规则”出发为一般 k=2,r=2k = 2, r = 2 情况构建完整的多向图,我们可以构建一个“反向多向图”。在这个图中,我们从一个给定的规则出发,然后连续进行所有单点突变,以到达生命周期逐步缩短的规则: 【配图暂缺:原始图片文件已丢失。】 我们发现,至少在这种情况下,这种过程从未到达“空规则”。它所能到达的“最远”是生命周期为 2 的规则,而在这些规则中,距离“空规则”最近的是: 【配图暂缺:原始图片文件已丢失。】 然而,事实证明,从我们适应性进化过程中未被拒绝的 26 个 1 位规则中的任何一个出发,通过单点突变并不能到达这些 2 位规则。而且,这不仅是针对某个特定长生命周期规则的问题,而是 k=2k=2 规则中的一个普遍现象。事实上,当我们从“空规则”出发构建“正向”多向图时,我们发现只能到达生命周期为 1 的规则。

这一现象最终是仅有两种颜色规则的一个特定特性,并且特定于从生命周期为 1 的“空规则”开始的情况。但它说明了一个事实,即在规则空间中可能存在大范围的区域,这些区域无法通过单点突变的适应性进化到达。

那么,对于对称的 k=2,r=2k=2, r=2 规则呢?为了保持对称性,必须处理不仅改变一个位而是改变两个位的突变。这意味着(除了上文发现的特殊情况),从长生命周期规则出发的反向多向系统总能成功到达“空规则”: 【配图暂缺:原始图片文件已丢失。】

然而,这里还有一个值得注意的现象。观察这张图,我们发现通过仅一次 2 位突变,可以从一个生命周期为 1 的规则直接到达一个生命周期为 65 的规则: Why-Does-Biological-Evolution-Work_file-241209235611434.png 我们在上面的多向图中没有观察到这一点,因为我们对其应用了传递化简。但是如果不进行化简,我们会发现确实存在一些较大的生命周期跳跃——正如我们在单次点突变前后可能的生命周期分布图中所看到的那样: Why-Does-Biological-Evolution-Work_file-241209235627294.png 我们在上面的多向图中没有观察到这一点,因为我们对其应用了传递化简。但是如果不进行化简,我们会发现确实存在一些较大的生命周期跳跃——正如我们在单次点突变前后可能的生命周期分布图中所看到的那样: 【配图暂缺:原始图片文件已丢失。】 这种分布同样大致符合幂律分布,指数约为 -3.5: Why-Does-Biological-Evolution-Work_file-241209235722953.png 但现在发现的最大生命周期不仅是 308,而是达到了 2194:

图!图!图!

再次,我们看到了一些不同的“理念”展示,并出现了一些有趣的趋同例子——例如生命周期为 989 和 990 的规则(以及 1068 和 1069 的规则),它们通过简单地交换颜色并添加一步“前置”步骤后,实际上生成了相同的模式。

那么,对于一般的 k=3,r=1k = 3, r = 1 规则呢?由于规则数量过多,无法轻松地进行穷举搜索。但通过有针对性的随机采样,我们仍能发现许多具有长生命周期的例子,例如:

图!图!图!

现在,极长生命周期的尾部进一步延伸,例如:

图!图!图!

如果将生命周期为 10863 的规则分段可视化(并调整颜色以增强对比度),会更容易观察其行为模式:

每隔 2000 步采样 100 步(以及最后一步),我们可以观察到模式在复杂的周期性行为和看似随机的行为之间交替——但这些现象中没有任何明显的线索能揭示这样一个惊人的事实:在 10863 步之后,整个模式将完全消失:

Why-Does-Biological-Evolution-Work_file-241209235929563.png

The Issue of Undecidability

在我们对元胞自动机规则的“适应度”评估中,采用了它们生成的模式的生命周期作为标准——始终假设如果模式永远不会终止,其适应度应被视为零。

但是,我们如何判断一个模式是否会终止呢?例如,在前一节中,我们观察到了一些存活时间非常长但最终仍会终止的模式。

以下是由一些 k=3,r=1k=3, r=1 对称规则生成的模式的前 100 步示例: Why-Does-Biological-Evolution-Work_file-241210000051280.png 这些模式会发生什么呢?从当前的观察来看,我们可以确定它们的生命周期不会少于 100 步。但要进一步推测它们的行为,我们需要更多的信息。在某些情况下,我们可以观察到模式是周期性的,或者具有明显的重复结构,这意味着它们永远不会终止。然而,对于其他情况,没有明显的方法来预测接下来的变化。

通过显式运行规则再模拟 100 步,我们可以发现更多的结果: Why-Does-Biological-Evolution-Work_file-241210000124504.png 走到500步会有一些惊喜。规则(a)在388步后变为周期性;规则(o)和(v)分别在265步和377步后终止。 Why-Does-Biological-Evolution-Work_file-241210000445138.png 但是,有没有办法系统地说出所有剩余规则“最终”会发生什么?答案是一般来说没有;这是一个必须被认为是不可判定的问题,无法通过任何有限的计算来解决。

考虑到我们所讨论的细胞自动机规则相对简单,我们可能会假设,凭借我们所有的精密数学和计算方法,我们总能“超越”它们——并在不显式运行每一步的计算努力下,弄清楚它们的结果。

然而,计算等价原理表明,每当这些规则的行为不是显而易见的简单时,它们的计算复杂度将与任何其他系统相当,特别是与我们可能用来预测它的任何方法相当。结果就是计算不可简化性现象,这意味着在许多系统中——大概包括这里的大部分细胞自动机——没有办法比逐步跟踪每个步骤更高效地弄清楚它们的结果。因此,这意味着要知道“最终”会发生什么——在无限步之后——可能需要无限的计算努力。换句话说,它必须被视为任何有限计算下的“不可判定”。

在实际操作中,我们可能会观察到某种类型细胞自动机的寿命分布,并相当确信这种类型的细胞自动机不会有更长的有限寿命。但是,对于前一节中的 k=3,r=1k = 3, r = 1 规则,我们可能曾相当确信,几千步是这种规则可能出现的最长寿命——直到我们发现了一个10,863步的例子。

所以假设我们运行某个特定规则10,000步,它没有消失。我们如何判断它是否永远不会消失呢?嗯,我们需要构造某种证明。而如果我们能看到该模式变得完全周期性,那就很容易做到。但通常,计算不可简化性意味着我们无法做到这一点。不过,是否可能存在某些特殊情况,我们能够做到呢?实际上,这些情况必须对应于“计算简化的空隙”,即我们设法找到细胞自动机行为的压缩描述。

确实有这样的情况,虽然没有严格的周期性,但最终行为基本上是重复的(这里的周期是480): 【配图暂缺:原始图片文件已丢失。】 还有一些嵌套行为的情况,虽然从不周期性,但却足够简单,可以被预测: 【配图暂缺:原始图片文件已丢失。】 但总是会有惊喜。比如这个例子——最终会归结为周期6,但只是在7129步之后: Why-Does-Biological-Evolution-Work_file-241210000625303.png 那么,这一切对我们的适应性进化过程意味着什么呢?它意味着,原则上我们可能会错过某个特定规则的一个非常长的有限寿命,假设它是无限的。在生物学类比中,我们可能会遇到一个基因组,表面上看似导致无限制的、类似肿瘤的生长——但实际上,最终这种生长会“出乎意料”地停止。

Computation Theoretic Perspectives and Busy Beavers

我们所探讨的细胞自动机模式的消亡问题,直接类似于经典的图灵机停机问题,或者是项式重写的终止问题、Post标签系统等问题。在寻找具有最长寿命模式的细胞自动机时,我们实际上是在研究图灵机的所谓“忙碌海狸”问题的细胞自动机类比。

我们可以总结一下迄今为止发现的结果(所有结果都是针对单元格初始条件): Why-Does-Biological-Evolution-Work_file-241210000832849.png 这些规则生成的模式的轮廓(即非零单元格的宽度)是: Why-Does-Biological-Evolution-Work_file-241210000908121.png

这些曲线的“积分”就是给出上述表格中的“面积”。

正如前一节所描述的那样,我们只能确定我们已经找到了实际最大寿命的下界——尽管除了表中列出的最后几个案例之外,看起来非常可能我们实际上已经找到了最大寿命。

然而,将其与已知的图灵机最大(“忙碌海狸”)寿命结果进行比较,多少有些令人深思(其中 ss 是图灵机的状态数,图灵机从空白磁带开始,并且当它们达到特定的停机状态时,就被认为“停机”): Why-Does-Biological-Evolution-Work_file-241210000931401.png 足够小的图灵机可能只有适中的寿命。但即使是稍微大一点的图灵机,它们的寿命也可能大大增加。实际上,图灵机停机问题的不可判定性导致了最大寿命随着图灵机大小的增加,增长速度超过任何可计算函数(即,任何可以在有限时间内由图灵机计算出来的函数,或者其值可以通过有限公理系统中的有限证明来证明)。

不过,好的,最大寿命随着图灵机或细胞自动机的“规则大小”增加。但什么定义了“规则的大小”呢?可以推测,它应该大致是指定规则所需的独立位数(我们也可以将其看作是“信息内容”的近似度量)——或者是其类型的可能规则数量的对数(log2)。

一开始,我们可能会想象所有 2322^{32} 的 k=2,r=2k = 2, r = 2 规则需要32位来指定它们。但正如我们上面讨论的,在某些情况下,规则中的一些位在确定它们产生的模式时并不重要。我们看到的是,越多的位是重要的(因此必须被指定),就能产生越长的寿命: Why-Does-Biological-Evolution-Work_file-241210000957799.png 到目前为止,我们只讨论了具有单元格初始条件的细胞自动机。但如果我们使用更复杂的初始条件,实际上我们是在向系统中添加更多的信息内容——结果是最大寿命可能会更大。作为一个例子,以下是对于 k=2,r=32k=2, r=\frac{3}{2} 规则,使用一系列可能初始条件时可能出现的寿命: 【配图暂缺:原始图片文件已丢失。】

Probabilistic Approximations?

细胞自动机本质上是确定性系统:给定一个特定的细胞自动机规则和特定的初始条件,生成的行为的每个方面都是完全确定的。但是否有任何方法可以通过某种概率模型来逼近这种行为?或者我们是否至少可以在观察大量不同规则的整体属性时,有效地使用这种模型?

一个可能的线索来自我们在上面发现的功率律分布,这些分布描述了给定类型的细胞自动机不同可能寿命的频率。我们可能会想知道,这些分布——甚至可能是它们的指数——是否可以通过某种概率模型来推导。

一种可能的方法是通过概率过程来近似细胞自动机——比如说,一个细胞在某一时刻有概率 pp 变为黑色,如果它或它的任一邻居在前一步时是黑色的。以下是使用这种“定向渗流”设置时可能发生的一些示例: Why-Does-Biological-Evolution-Work_file-241210001140951.png 行为随着 pp 的变化而大不相同;对于小的 pp ,一切都会消失,而对于较大的 pp,则会填充整个空间: Why-Does-Biological-Evolution-Work_file-241210001155719.png 事实上,最终的密度——从随机初始条件开始——随着 pp 的变化,在 p=0.54p=0.54 附近有一个明显的(相)转变:

Why-Does-Biological-Evolution-Work_file-241210001211343.png 如果改为从一个初始的单一黑色细胞开始,则会看到稍有不同的转变: 【配图暂缺:原始图片文件已丢失。】 还可以绘制不同“生存时间”或“寿命”模式的概率分布: 【配图暂缺:原始图片文件已丢失。】 在过渡点附近,寿命的分布遵循一个幂律——大致为 τ−1\tau ^{-1}(这恰好是通过平均场理论估计得到的结果)。

那么,这与细胞自动机有什么关系呢?假设我们有一个 k=2k=2 规则,并且假设细胞的颜色可以被近似为某种随机的方式。我们可能假设,我们得到的模式可能类似于我们的概率模型。而一个潜在的来源来确定 pp 的值,就是规则中给出黑色细胞作为输出的情况所占的比例。

将 k=2,r=2k=2, r=2 规则的寿命与这些比例进行绘制,我们发现,最长的寿命确实出现在大约一半的输出为黑色时(尽管请注意,这也是二项分布暗示最大数量规则集中的地方): 【配图暂缺:原始图片文件已丢失。】 如果我们不试图深入思考细胞自动机演化的细节,而只是考虑我们生成的有限寿命模式的边界,我们可以想象将这些模式(比如对称规则的模式)近似为随机行走——当它们碰撞时,意味着模式会消失。 Why-Does-Biological-Evolution-Work_file-241210001559788.png

随机行走的标准理论告诉我们,对于大 τ\tau,生存 τ\tau 步的概率与 τ−32\tau^{-\frac{3}{2}} 成正比——这是一种幂律,尽管它并不是我们在细胞自动机寿命中观察到的那种幂律。

Other Adaptive Evolution Strategies

在我们到目前为止所做的过程中,我们总是要求在每一步适应性进化的过程中选择一个具有相等或更高适应度的结果。但如果我们采用一种“更急功近”的程序,在每一步中都坚持要求有严格更高适应度的结果,会发生什么呢?

对于 k=2,这种程序下(至少从零初始条件出发)根本不可能“逃脱”零规则;通过一次突变可以到达的任何模式,其寿命仍然是1。而对于 k=3,虽然可以进行一步突变,但只能进行一次,这可以通过这个多路径图来表示: Why-Does-Biological-Evolution-Work_file-241210001820014.png 但我们在这里假设必须通过一次突变就达到更高的适应度。如果我们允许同时进行两个突变呢?那么,我们就可以“取得进展”。以下是这种情况下,对于对称 k=2,r=2k=2, r=2 规则的多路径图: 【配图暂缺:原始图片文件已丢失。】 我们不会像使用单个突变并允许“适应度中性移动”时那样达到更多的表型模式,但在我们能达到的模式上,我们能够更快地到达,并且没有在适应度中性空间中的“来回”移动。

如果我们允许最多进行3次突变,我们会进一步扩展: Why-Does-Biological-Evolution-Work_file-241210001925350.png 实际上,我们似乎在这个规则空间中得到了相当不错的代表性样本,即使我们只达到了37个规则,相比之下,标准方法允许中性移动时能够达到77,624个规则(尽管有许多重复的表型模式)。

对于 k=3,r=1k = 3, r = 1 对称规则,单个突变可以达到2步: 【配图暂缺:原始图片文件已丢失。】 但是现在,如果我们允许最多进行2次突变,我们可以走得更远——而且由于我们不再需要处理中性移动,这意味着我们可以明确地构造出至少是这个多路径图的前几步: Why-Does-Biological-Evolution-Work_file-241210002020893.png

但是现在,如果我们允许最多进行2次突变,我们可以走得更远——而且由于我们不再需要处理中性移动,这意味着我们可以明确地构造出至少是这个多路径图的前几步: Why-Does-Biological-Evolution-Work_file-241210002043503.png

我们刚刚展示的适应性进化历史,实际上可以通过在每一步随机尝试一系列可能性,然后选择第一个表现出适应度提升的结果来生成。另一种方法是使用类似于“局部穷举搜索”的方式:在每一步,查看所有可能突变的结果,并选择给出最大适应度的那个结果。至少在较小的规则空间中,通常会有多个结果具有相同的适应度,作为一个例子,我们可以在这些结果中随机选择一个: 【配图暂缺:原始图片文件已丢失。】 有人可能认为,这种方法实际上会始终优化适应性进化过程。但实际上,它的系统性特征可能最终会导致它陷入困境,从某种意义上说,即使它“不起作用”,也会不断地“试图做同样的事情”。

一种相对对立的方法是放宽我们选择路径的标准——例如,允许那些暂时降低适应度的路径,比如通过减少一步寿命: Why-Does-Biological-Evolution-Work_file-241210002245235.png 实际上,在这里我们允许适应度不完全最大化的个体存活。我们可以通过一个多路径图来表示发生的整体结构——这个图现在包括了“回溯”到较低适应度的情况: 【配图暂缺:原始图片文件已丢失。】 但是,尽管细节有所不同,最终似乎允许这种回溯并不会产生任何戏剧性的效果。某种程度上,适应性进化过程中的基本现象足够强大,以至于大多数关于适应性进化执行方式的细节最终并不重要。

An Aside: Sexual Reproduction

在我们到目前为止所做的所有工作中,我们只对单个规则进行突变。但在许多生物体中,实际上存在另一种机制:有性繁殖,在这种机制下,一对规则(即基因组)被混合以生成新的规则。作为实际基因组中通常发生的交叉的简单模型,我们可以取两个规则,并将其中一个的开头与另一个的结尾拼接在一起: Why-Does-Biological-Evolution-Work_file-241210002352139.png 通常,组合一对规则的方法有很多种。直接类比于我们的物理项目,我们可以将这种“重组”表示为“事件”,即将两个规则组合并产生一个新规则: Why-Does-Biological-Evolution-Work_file-241210002424108.png 我们适应性进化过程中所有可能路径的多路径图的类比,现在就是我们在物理项目中所称的标记事件图(token-event graph): Why-Does-Biological-Evolution-Work_file-241210002510398.png 在仅处理突变的情况下,我们能够从单个规则出发,逐步修改它。现在,我们总是需要处理一个“规则群体”,每次将它们两两组合生成新的规则。我们可以如下表示一组规则之间可能的组合: Why-Does-Biological-Evolution-Work_file-241210002604175.png 此时,我们可以做出许多不同的选择来设定我们的模型。我们将使用的特定方法选择了 nn 个可能的组合,其中有 n(n−1)2n(n−1)2n(n−1)2\frac{n(n-1)}{2} 种组合方式: 【配图暂缺:原始图片文件已丢失。】 然后,对于每一个选定的组合,我们尝试进行交叉,保留那些由于适应度较低而未被拒绝的“后代”(这里通过其父母之间的连线表示): 【配图暂缺:原始图片文件已丢失。】 最后,为了“维持我们的基因池”,我们随机选择一些父母并将其带入下一代,这样我们最终仍然会得到 nn 个规则。(是的,尽管我们尝试让整个过程尽可能简洁,它仍然有点混乱——这似乎是不可避免的,正如我们下面将讨论的,它也曾困扰着过去的进化计算研究。)

好的,那么当我们将这个程序应用到 k=3,r=1 规则时会发生什么呢?我们将随机选择4个规则作为我们的初始种群(是的,恰好有两个规则会产生相同的模式): 【配图暂缺:原始图片文件已丢失。】 然后,在一系列步骤中,我们将依次选择不同的组合: Why-Does-Biological-Evolution-Work_file-241210002850731.png 以下是该过程中产生的不同“表型模式”(请注意,尽管可能会有多个相同的表型模式副本,但底层的基因型规则始终是不同的): 【配图暂缺:原始图片文件已丢失。】 作为最终的总结形式,我们可以绘制我们生成的模式的连续适应度(每个点的大小表示某个特定适应度出现的次数): Why-Does-Biological-Evolution-Work_file-241210002945859.png 在这种情况下,我们在9步后达到了稳态。通常情况下,种群越大,适应性进化持续的时间就越长。以下是两个种群为10的例子,显示了获得的所有模式: Why-Does-Biological-Evolution-Work_file-241210003023191.png 在每种情况下仅显示到目前为止找到的最长寿命规则,我们得到: 【配图暂缺:原始图片文件已丢失。】 结果与我们仅使用突变时找到的并没有明显不同——即使现在我们有了一个更复杂的模型,处理的是一个包含多个规则的种群,而不是单个规则。(不过,有一个显而易见的区别是,在这种情况下,我们可能会得到规则种群的整体循环,而在纯突变的情况下,这种情况只能发生在适应度中性规则之间。)

以下是一些额外的例子——这些是在种群为25的情况下,经过500步获得的结果: 【配图暂缺:原始图片文件已丢失。】 在种群为 50 的情况下,有: Why-Does-Biological-Evolution-Work_file-241210003158281.png 从目前来看,即使在这里,也没有发现与我们使用突变时观察到的结果有显著不同。尽管有性繁殖和交叉确实引入了一些细节特征,但就我们理解适应性进化过程中发生的大致情况而言,似乎只考虑突变,像我们迄今为止所做的那样,已经足够了。

An Even More Minimal Model

通过研究细胞自动机中的适应性进化,我们已经相较于实际生物学做出了戏剧性的简化。但为了理解我们所观察到现象的本质,进一步简化是有帮助的——与其考虑计算规则及其行为,不如直接思考“突变图”上的顶点,每个顶点都分配有一个特定的适应度。

作为一个例子,我们可以设置一个二维网格,为每个点分配一个随机的适应度: 【配图暂缺:原始图片文件已丢失。】 然后,从一个最低适应度的点出发,我们可以遵循与之前相同的适应性进化过程,每一步都前往一个具有相等或更高适应度的邻近点: 【配图暂缺:原始图片文件已丢失。】 通常情况下,我们在走得不远之前就会被卡住,尽管在这里使用的适应度值的均匀分布下,我们通常还是会以相对较大的适应度值结束。

我们可以通过多路径图来总结我们可能走过的路径: 【配图暂缺:原始图片文件已丢失。】 在我们的细胞自动机规则空间中——更广泛地说,在生物学中——相邻的点并非具有独立的随机适应度;相反,适应度是由一个确定的计算过程决定的。因此,作为一个简单的近似,我们可以将每个点的适应度设为其图坐标的特定函数。如果这个函数形成类似于“均匀山丘”的形状,那么适应性进化过程就会沿着这座山丘攀爬: Why-Does-Biological-Evolution-Work_file-241210003436520.png 但一旦这个函数具有“系统性的起伏”,就会有强烈的倾向让进化过程很快陷入困境: Why-Does-Biological-Evolution-Work_file-241210003459024.png 如果存在某个“意外的高适应度点”,适应性进化通常无法找到它(如果它被低适应度的“护城河”包围,进化过程肯定无法到达): Why-Does-Biological-Evolution-Work_file-241210003518526.png 那么,如果我们增加我们操作的“突变空间”的维度,会发生什么呢?基本上,找到一条可以提高适应度的路径就变得更加容易: Why-Does-Biological-Evolution-Work_file-241210003535869.png 我们可以通过观察布尔超立方体在增加维度时的表现来看到这一点: Why-Does-Biological-Evolution-Work_file-241210003557022.png 但最终,这依赖于这样一个事实:在从某个给定点通过突变可以到达的邻域中,适应度值会有一个“足够随机”的集合,使得(很可能)能够找到一个“向上”的方向,即适应度提升的方向。然而,仅仅这一点通常还不够,因为我们还需要确保适应度景观中有足够的规律性,使得我们能够系统地在其中导航,找到其最大值——并且这个最大值不会以某种方式是“意外且孤立的”。

What Can Adaptive Evolution Achieve?

我们已经看到,适应性进化在发现生成具有长但有限生命周期的模式的细胞自动机方面可能出奇地成功。但是,其他类型的“特征”呢?适应性进化最终能够(和不能)做些什么?

例如,如果我们试图找到那些模式不仅仅是“活得尽可能久”的细胞自动机,而是在特定步数后死亡呢?显然,在任何有限规则集合中(例如具有特定 kk 和 rr 的规则),只会有有限的可能生命周期。例如,对于对称的 k=2,r=2k=2, r=2 规则,可能的生命周期是: Why-Does-Biological-Evolution-Work_file-241210003728774.png

但一旦我们处理的是 k=3,r=1 对称规则,从原则上讲,已经有可能获得最多到100步的任何生命周期。那么,适应性进化呢?它在达到所有这些生命周期的规则方面表现如何?假设我们像之前一样做单点突变,但现在我们“接受”突变,不是仅仅因为它导致更长的有限生命周期,而是因为它使生命周期在绝对大小上更接近某个期望的生命周期。(严格来说,并且很重要的是,在这两种情况下,我们也允许“适应度中性”的突变,使得生命周期保持不变。)

以下是如果我们试图适应性进化以获得恰好50步生命周期的 k=3,r=1 规则时发生的例子: Why-Does-Biological-Evolution-Work_file-241210003714373.png 它接近目标——有时会超出目标——但至少在这些特定的例子中,它从未完全达到目标。如果我们查看100个不同随机突变序列所达到的生命周期,结果如下所示: 【配图暂缺:原始图片文件已丢失。】 基本上,它们大多停留在接近50的生命周期上,但并没有恰好达到50。这并不是说 k=3,r=1k = 3, r = 1 规则无法产生50步的生命周期;全面搜索表明,甚至许多对称的这类规则也能做到: 【配图暂缺:原始图片文件已丢失。】 只是我们的适应性进化过程通常在达到像这样的规则之前就卡住了。尽管在 k=3,r=1k = 3, r = 1 规则空间中,通常有足够的“空间进行操作”,以达到通常较长的生命周期,但没有足够的空间专门达到生命周期50。

那么,k=4,r=1规则空间呢?现在不是有 10121012101210^{12} 个规则,而是大约 10381038103810^{38} 个可能的规则。在这个规则空间中,通过适应性进化达到生命周期50变得相当常见: Why-Does-Biological-Evolution-Work_file-241210003911128.png 有时可能需要一些时间,但在这个规则空间中,大多数情况下能够精确地达到生命周期50: Why-Does-Biological-Evolution-Work_file-241210003953519.png 其他“生命周期目标”会怎么样呢?即使是对称的 k=3,r=1 规则,也能够达到许多不同的生命周期值: 【配图暂缺:原始图片文件已丢失。】 确实,第一个“缺失”的生命周期值是129、132、139等等。例如,许多50的倍数都可以实现: 【配图暂缺:原始图片文件已丢失。】

但要让适应性进化达到这些特定的目标变得越来越困难。增加规则空间的大小似乎总是有所帮助;例如,对于 k=4,r=1,如果目标是生命周期100,那么实际达到的生命周期分布是: 【配图暂缺:原始图片文件已丢失。】 通常情况下,当目标生命周期变大时,分布会变得更宽广: Why-Does-Biological-Evolution-Work_file-241210004137590.png

我们之前看到,在例如 k=4,r=1规则空间中,生命周期逐渐增大的频率大致遵循幂律分布。这意味着,规则空间中实现给定生命周期的区域逐渐变小——结果是,适应性进化通常在到达目标之前会越来越容易卡住。

好吧,那么其他类型的目标呢?比如与模式形态学更相关的目标?作为一个简单的例子,我们考虑最大化有限生命周期模式的“宽度”的目标。我们可以通过适应性进化来实现这一目标,方法是拒绝任何导致宽度减小的突变(其中“宽度”定义为模式的最大水平扩展)。再一次,这个过程成功地“发现”了各种各样的“机制”来实现更大的宽度(在这里,每个模式按其高度(即生命周期)和宽度进行标记):

图!图!图!

在这里有一些结构性约束。例如,宽度不能相对于高度过大——因为如果宽度太大,模式往往会永远增长。

但是,如果我们专门尝试选择最大化“模式纵横比”(即宽度与高度的比率)呢?到目前为止,在几乎所有的情况下,适应性进化实际上都“发明了许多不同的机制”来实现我们定义的任何目标。但在这里,事实证明,我们实际上看到的是“同一个想法”一遍又一遍地被使用——这大概是因为这是在给定我们所使用的规则的整体结构下实现我们目标的唯一方式: Why-Does-Biological-Evolution-Work_file-241210004233260.png 如果我们提出更具体的要求呢?比如,要求纵横比尽可能接近3。那么,大多数时候,适应性进化找到的“解决方案”是正确的,但却是显而易见的: Why-Does-Biological-Evolution-Work_file-241210004254211.png 但有时它会找到另一个解决方案——而且通常是一个出乎意料的、复杂精巧的方案: Why-Does-Biological-Evolution-Work_file-241210004319862.png 如果我们的目标是纵横比接近π ≈ 3.14呢?事实证明,即使仅使用我们所用的对称 k=4,r=1规则,适应性进化仍然能够做得相当好: 【配图暂缺:原始图片文件已丢失。】 我们也可以询问模式“内部”的性质。例如,我们可以要求最大化模式中心列中非白色单元格的连续相同颜色的长度。同样,适应性进化能够成功地引导我们找到规则(比如这些随机的例子),使得这一长度变得很大: 【配图暂缺:原始图片文件已丢失。】 我们可以继续探讨更细致的目标,比如要求特定长度的连续单元格,或要求特定子模式的存在或数量。最终——就像我们要求过长的生命周期时一样——我们会发现我们寻找的目标“过于稀疏”,适应性进化(至少在给定的规则空间中)将无法找到它们,即使穷举搜索仍然能够识别出一些例子。

但究竟是什么样的目标(或适应度函数)可以被适应性进化处理得比较好,比如在“原材料”——细胞自动机的规则空间——上运作?这是一个重要的问题——它的类比问题在机器学习的研究中也至关重要。但截至目前,我们并没有真正的工具来解答这个问题。这有点像是在问不同方法或基函数可以近似哪些类型的函数,以及它们的近似程度。但它更复杂。解决这个问题将告诉我们很多关于适应性进化过程的“覆盖范围”,不仅对生物学,也对机器学习而言,都具有深远的意义。

生物学现象意味着什么

生物体如何能够以它们现在的形式存在,解决如此广泛的挑战,且这些解决方案看似复杂且聪明?是自然选择完成了这一切,还是实际上有更多的因素在起作用?如果“自然选择完成了这一切”,那它究竟是如何做到的?

从传统工程学的角度来看,我们在生物学中看到的往往是非常令人惊讶的,远比我们想象的更复杂、更“聪明”,甚至可能是我们自己无法创造出的。但从某种意义上说,生物学的秘密是否仅仅是自然选择?实际上,即使在工程学中,也经常存在类似自然选择的过程,因为不同的设计被尝试,最终只有一些被选中。但至少在传统工程学中,一个关键特点是人们总是试图设计出能够预见其后果的方案。

但生物学是不同的。基因组的突变是随机发生的,完全没有预示其后果的方式。然而,即便如此,人们仍然可能会假设——在自然选择的引导下,结果不会与传统工程学中得到的结果有太大不同。

但这里有一个关键的直觉缺失。这与随机选择的程序如何表现有关。我们可能曾假设(基于我们通常在为特定目的明确构建程序的经验)至少简单的随机程序永远不会做出什么特别有趣或复杂的事情。

然而,我在1980年代早期发现了一个令人惊讶的事实,那就是这种假设不成立。事实上,在可能的程序的计算宇宙中,即使是非常简单的程序也能产生巨大的复杂性。因此,这意味着当突变作用于基因组时,最终它会不可避免地采样到展示高度复杂行为的程序。起初,人们可能会认为这样的复杂性只能通过精心设计才能实现,而且在最佳情况下也只会是稀有的。但令人惊讶的事实是——因为计算宇宙的基本运作方式——获得复杂性是相对容易的。

但复杂性与创造“成功的有机体”之间有什么关系?为了创造一个能在特定环境中繁荣生长的“成功有机体”,必须有某种方法能够产生一个能够“解决必要问题”的基因组。此时,自然选择就发挥了作用。然而,它能够有效运作这一点是非常不明显的。

这里实际上有两个问题。第一个问题是是否存在一个程序(即基因组),能够“解决必要的问题”。第二个问题是,是否能够通过“适应性进化的路径”找到这样一个程序,该路径只经过那些“足够适应”生存的中间状态。事实证明,这两个问题与计算的基本特性密切相关,而这些特性也是复杂性普遍出现的原因。

在某些基本框架下——例如细胞自动机或生命的基本结构——是否存在可以在该框架内实现的规则,能够达成某种特定的(计算)目标?计算等效性原理表示,通常答案是肯定的。实际上,几乎任何“底层硬件”都能最终设计出“软件”(即规则),实现几乎任何(“物理上可能的”)目标——例如,培育出一种能够在特定环境中存活的有机体。那么,我们如何找到能够实现这一目标的规则呢?

原则上,我们可以进行穷举搜索。但那将是指数级的困难——在除去玩具模型之外,几乎在实际操作中无法实现。那么,适应性进化呢?这就是大问题。而我们在这里看到的是——出乎意料的是——简单的突变和选择(即自然选择机制)往往提供了寻找满足我们需求的规则的巨大捷径。

那么为什么会这样?实际上,适应性进化正在寻找一条通过规则空间的路径,最终到达我们想去的地方。但令人惊讶的是,它是一步步地做到这一点的。它只是尝试随机的变异(即突变),一旦发现一个“不降低适应度”的变异,它就会“接受”它,并继续前进。起初,显然不能预见这种方法是否能够奏效。特别是,可能某个时刻所有的“方向”都会导致适应度降低,从而适应性进化会陷入困境。

但从我们在简单模型中的实验中得到的关键观察结果来看,这种情况通常不会发生。基本上似乎有两件事在发生。第一,规则空间实际上是非常高维的。这意味着在寻找能够“迈进一步”的方向时,“有很多方向可以选择”。但仅凭这一点还不够。因为这些方向之间可能存在相关性,这意味着如果某个方向被阻塞,其他所有方向也会不可避免地被阻塞。

那么为什么这种情况不会发生?看起来,这是计算不可约性这一基本计算现象的结果。基于数学科学经验的传统观点是,如果知道一个系统的基本规则,就能够立即预测该系统将如何表现。然而,从我在1980年代和1990年代的探索中,得出的结论是,在计算宇宙中,这种情况通常并不成立。相反,唯一能系统地找出大多数计算系统行为的方式,就是一步步地运行它们的规则,进行相同数量的计算工作。

因此,如果我们仅仅看到了一个系统的行为,我们将无法“解码”它并“看到其简单的起源”。除非我们能进行与系统本身相同数量的计算工作,否则我们只能将它的行为视作(或多或少)“随机的”。事实上,这似乎是许多重要现象的根本原因,比如热力学第二定律。我也怀疑这与适应性进化,特别是在生物学中的有效性息息相关。

因为计算不可约性意味着,在规则空间的每一个点周围,都会有某种“有效的随机性”影响我们所看到的适应度。而如果规则空间有许多维度,那么从该点出发,成功的路径会有很高的概率存在。

但适应性进化能够找到这些路径吗?我们假设规则的突变是随机进行的。关键在于,如果规则中有n个元素,那么在进行某些比例的n次突变后,我们应该能够找到“成功的方向”。(如果我们进行穷举搜索,我们则需要尝试约kn个可能的规则。)

起初,似乎有可能假设这些突变序列能够“巧妙地探测”规则空间的结构,知道哪些方向会成功,哪些方向不会成功。但关键是,从一个规则(即基因型)到它的行为(即表现型)的过程,通常是一个计算不可约的过程。因此,如果突变是通过计算受限的方式生成的,那么它们必然无法“打破计算不可约性”,从而会“经历”规则空间中的适应度景观,表现为“有效的随机性”。

那么,关于“实现有机体所需特征”呢?似乎至关重要的是,这些特征从某种意义上是计算上简单的。我们希望有机体能够活得足够长,或者足够高,或者其他什么。并不是说我们需要有机体执行某个特定的计算不可约的任务。是的,确实有各种计算不可约的过程发生在有机体的实际发展和行为中。但就生物进化而言,最终重要的是某种计算上简单的适应度衡量标准。就好像生物进化是——在我最近的观察者理论意义上——一个计算受限的观察者,观察那些计算不可约的基础过程。

对于观察者来说,所呈现的是生物进化的“简单法则”,以及通过自然选择,确实能够成功地生成各种特征的想法。

这对生物学的思考有各种各样的影响。例如,在思考生物学中复杂性“从哪里来”的问题时。它是“由自然选择产生的吗”,也许反映了特定的突变序列所经历的历史偶然性的复杂过程?还是来源于别的地方?

在我们所建立的图景中,答案基本上是来自别的地方——因为它本质上是计算不可约性的反映。话虽如此,我们应该记住,能够拥有如此广泛不同形态和功能的有机体的可能性,正是其基础结构的普遍计算性质的结果,而这与计算不可约性密切相关。

而正因为自然选择的操作是如此粗略,它并未避免规则空间中普遍存在的计算不可约性,结果就是,当我们“深入”观察生物系统时,我们倾向于看到计算不可约性以及与之相关的复杂性。

我们在这里反复看到的一个事实是,是的,适应性进化确实“解决了一个问题”。但它的解决方案对我们来说看起来非常复杂。也许有某种“简单的工程解决方案”——例如,涉及非常规则的行为模式。但这不是适应性进化所找到的;相反,它找到的通常是对我们来说非常令人惊讶的东西。 【配图暂缺:原始图片文件已丢失。】 换句话说,适应性进化可能将我们引导到规则空间中“具有特征性特殊性”的地方——这或许表明,在生物系统中产生的结构类型具有某种“特征性特殊性”。如果我们能够找到一种方法,对这种“特征性特殊性”做出一般性的陈述,那么这可能会为我们构建一个全新的广泛形式的生物学理论提供框架。

与生物现象的对应

我们在这里研究的模型在基本构建上极为简单。从某种程度上说,令人惊讶的是——即便没有包括任何生物物理学或生物化学——这些模型仍然能够在捕捉生物系统和生物进化的特征方面取得一定成果。

从某种意义上说,这最终反映了生物学的根本计算特性——以及计算现象的普遍性。然而,值得注意的是,即使是我们在细胞自动机中看到的行为模式,也显得非常“像生命和有机体”。

在实际生物学中,即使是最短的基因组,也远远长于我们所考虑的那些小型细胞自动机规则。但即使我们只看长度为27的“基因组序列”——例如在k = 3, r = 1的细胞自动机中——也已经有30万亿种可能的序列,而这些序列似乎足够展示许多核心的“组合驱动”的生物学现象。

细胞自动机规则的运行乍一看可能与创造生物体的实际过程相距甚远——这些过程涉及构建蛋白质和形成复杂的功能性和空间结构。但实际上一些比我们想象的更多的类比是存在的。例如,在细胞自动机规则中,通常只有特定的情况会在形成的某个区域使用,就像在生物体中,特定的基因通常在不同的组织中被激活。

例如,“几何限制”将其限制为简单的1D“细胞”数组,在有了复杂计算的情况下似乎不再那么重要;我们依然会得到很多实际在生物体生长过程中非常相似的结构。

生物体的一个定义性特征是它们的自我复制能力。事实上,如果没有这种“复制”,就不会有像适应性进化这样的讨论。我们的模型并不试图推导自我复制;它们只是将其作为模型中内建的一部分。

尽管我们考虑了几种变体,但基本上我们在模型中也只是构建了突变的概念。我们发现,单点突变逐个发生,似乎足以捕捉适应性进化的基本特征。

我们也主要考虑了相当于单一谱系的情况——其中每个步骤只有一个规则(或基因组)。我们做突变,并且主要通过保留那些带来更好适应性模式的规则来“实施自然选择”。

如果我们有整个规则群体,可能并不那么重要,但在我们使用的简单设置中,重要的是我们不排除“适应性中性突变”。事实上,我们已经看到许多例子,其中系统在规则空间中的适应性中性区域漫游,最终“发现”某种“创新”,从而使适应性提高。根据我们模型的设置,这种“漫游”总是涉及“基因型”的变化——但通常仅仅是表型的微小变化。因此,我们很典型地看到长时间的“表面平衡”阶段,其中表型几乎没有变化,然后是一个“跳跃”,达到一个新的适应性水平并产生一个完全不同的表型。

这一观察似乎与实际生物进化的化石记录中经常报告的“间断平衡”现象高度一致。

生物体和生物进化的另一个关键特征是不同物种的形成,以及不同的门类等。事实上,在我们所有可能的适应性进化路径的多向图中,我们普遍看到的现象似乎直接类比于此。通常,我们会看到基于似乎是“不同机制”的适应性路径形成不同的分支,从而实现适应性。

无疑,在实际生物学中,有许多与繁殖隔离或空间隔离相关的详细现象。但在我们的模型中,似乎引起“生命之树分支”的核心现象是规则空间中“不同部分的不同计算机制”的存在。值得注意的是,至少在我们有限的规则空间中,分支可能会灭绝,没有“后续物种”出现在多向图中。

事实上,观察多向图中不同部分规则产生的实际模式时,很容易想象基于形态学的分类学——这些分类与实际规则突变所定义的系统发育树有一定的相似性(虽然并不完全一致)。在形态学层面上,我们在多向图中经常看到一定程度的“趋同进化”;在小型示例中,我们有时也会看到实际的“基因组趋同”——尽管在实际生物系统中这种情况通常是天文数字般的罕见。

我们的模型的一个显著特征是,它们允许对适应性进化的“整体历史”进行相当全面的调查。在我们讨论的许多简单案例中,我们使用的规则空间足够小,以至于在相对较少的突变步骤后,我们就能达到“我们能够达到的最高适应性”。但(正如图灵机的示例所示)即使仅仅稍微扩大我们使用的规则的大小,也足以使我们能够走得远得多。

随着我们走得更远,“机制”将会“发明”更多。涉及计算不可简化性的系统不可避免地会出现新的和不可预测的现象——同时也会不断涌现出新的计算简化区域。因此,即使经过几十亿年的进化——以及曾经生活过的万亿个世代和大约10^40个生物体——生物进化仍然有无尽的空间可以继续前进,生命之树中会不断有新的分支被激发出来,涉及越来越多的“新机制”。

我猜想,人们可能会想象,生物体在某些时刻会达到“最大适应性”,然后不再发展下去。但即便是在我们简单的模型中,适应性是通过模式寿命来衡量的,也没有适应性的上限;给定某个特定的寿命,计算理论的基本特性意味着总会有一个程序能够达到更长的寿命。当然,人们可能会认为,到了某个时刻足够就好:长颈鹿的脖子已经够长了,等等。但即便如此,生物体之间的竞争将始终推动事物向前发展:是的,一个特定谱系的生物体达到了某个适应性水平,但随后另一个谱系也能达到这一水平,迫使第一个谱系继续进化,以免落后。

当然,在我们的简单模型中,我们并没有明确考虑生物体之间的相互作用——也没有考虑环境的详细特性以及无数其他影响。无疑,很多生物学现象都依赖于这些因素。但关键点是,即使没有明确考虑这些因素,我们的简单模型仍然似乎能够捕捉到许多生物进化的核心特征。生物进化——实际上,适应性进化一般来说——似乎本质上是一种计算现象,它能够稳健地独立于系统的细节而产生。

在过去几年里,我们的物理学项目提供了强有力的证据,证明物理学的基础本质上是计算的——物理学的核心定律是我们这样的观察者“解析”所有可能计算过程的规则宇宙的必然结果。现在我们看到的表明,物理学和生物学的基础之间存在着惊人的共性。两者都根植于计算不可简化性,并且两者都采样计算简化性。物理学因为那是我们作为观察者在有限思维下获取世界描述所做的事情。生物学因为那是生物进化为了实现自然选择设定的“粗略目标”所做的事情。

物理学的直觉倾向于认为,最终对于事物是存在简单模型的,而生物学则有一种感觉,认为一切都是几乎无限复杂的,每一转弯都有新的效果需要考虑。但大概这在很大程度上是因为生物学中的研究对象往往很快就会与计算不可简化性正面交锋——而在物理学中,我们能够找到那些避免这种情况的研究对象。但现在,物理学和生物学基础的共性表明,在生物学中也应该有我们在物理学中所具有的那种结构——完全配有一般定律,允许我们做出有用且广泛的陈述。也许我在这里提出的简单模型可以帮助我们走向那里——最终帮助我们建立一个从根本上理论化地思考生物学的新范式。

历史背景

我在这里讨论的内容有着悠久且曲折的历史。人类对遗传的基本概念早在古代就已经有了广泛的认识。植物育种从农业最初的时期就已开始实践,但直到18世纪末,动物的系统性选择性育种才变得普遍。然后在1859年,查尔斯·达尔文描述了“自然选择”的概念,认为生物在自然环境中的竞争可以像人工选择一样起作用,他认为,经过长期的演化,这种过程最终会导致新物种的发展。他在《物种起源》一书的结尾声称:

……自然之战……高等动物的产生,直接随之而来……当这颗星球在固定的引力法则下旋转时,从如此简单的开始,无尽的、最美丽和最奇妙的形态已经并且正在被进化出来。

他似乎认为,自然选择会以某种方式带来一个普遍的法则——类似于引力法则——并推动生物逐渐进化成更为复杂的有机体,最终形成“高等动物”。但在没有我这里讨论的那种模型的情况下,后来的传统进化论发展并没有成功地支持这一观点,或者能够对其进行深入分析。

就在达尔文《物种起源》问世的同时,格雷戈尔·孟德尔开始识别简单的遗传概率法则——而当他的工作在20世纪初被重新发现时,它被用来发展种群遗传特征频率的数学模型,1920和1930年代,由J.B.S.哈尔丹、R.A.费舍尔和塞沃尔·赖特等人做出了关键性贡献,并提出了“适应度景观”的概念。

在一个完全不同的方向上,自古以来就有人努力通过类比物理学或数学思想来分类和理解生物有机体的生长与形态——到1930年代,化学信号分子似乎在生长过程的调控中发挥了作用。但例如在种群遗传学中使用的数学方法基本上只处理离散性状(或通过生物计量学可以访问的简单数值),并没有真正对生物有机体形态复杂性的形成进行探讨。

1940年代,受到电气工程学启发的生物学方法开始出现,通常以控制论的名义进行。沃伦·麦卡洛克和沃尔特·皮茨于1943年引入了理想化的神经网络,不久后(特别是在唐纳德·赫布1949年的工作中)出现了这样一种观点:此类系统中的学习可以通过一种适应性演化过程来发生。到了1950年代,随着电子计算的实用化,普遍认为生物学的思想——包括进化——将为人类的工作提供灵感。通常现在我们称之为自适应算法的东西,曾经以生物进化的术语来描述。即便在工业生产或工程设计中使用迭代方法进行优化时,也常常被描述为基于生物进化。

与此同时,到1960年代,开始出现类似蒙特卡罗模拟的种群遗传学式进化过程。一个特别复杂的例子是尼尔斯·巴里切利的研究,他所称的“数值进化”展示了一个相当复杂的数值细胞自动机式的“有机体之间的竞争”程序,其中注入了来自计算机内存数据布局细节的“随机性”,并声称其表现出类似生物进化的现象(如共生和寄生)。

在一个不同的方向上,约翰·冯·诺依曼尝试“数学化生物学基础”,并在1950年代末期,通过复杂设计的二维细胞自动机展示了类似自我复制的现象。对此的后续研究大多属于早期的理论计算机科学工作,与生物学没有太多关联,也没有认真提及适应性进化。当1970年《生命游戏》推出时,它被广泛认为在“做类似生命的事情”,但本质上在这一方向上并没有进行很多科学工作。然而到了1970年代,L系统和分形引入了递归树状或嵌套结构的概念,这些结构可以通过简单的算法生成,并通过计算机图形呈现出来,看起来与生物中某些形式相似。我在1981年开始的关于一维细胞自动机的研究,专注于对简单程序及其行为的系统性科学研究,得出的惊人结论是,即使是非常简单的程序,也能产生高度复杂的行为。但当时虽然我认为这一点有助于理解生物有机体生长中的复杂性生成,我并没有认真探讨任何适应性进化的角度(正如我接下来将描述的那样)。

另一个发展方向则是将生物学式的进化应用到程序中的参数和操作上。例如,1958年,理查德·弗里德伯格在IBM尝试对机器码程序中的指令进行随机变化,但未能取得什么成果。(二十年后,实用编译器中的超级优化器开始成功使用这种技术。)然后在1960年代,约翰·霍兰德(他最初研究神经网络中的学习,之后受亚瑟·伯克斯的影响,后者曾与冯·诺依曼一起研究细胞自动机)提出,将程序表示为简单的符号字符串,这些字符串可以像基因组序列一样容易地被修改。典型的做法是将这些符号解释为计算操作,并根据这些操作的结果赋予“适应度”。然后,可以通过对这些字符串的种群进行适应性演化来设置“遗传算法”。在1970年代和1980年代,使用这种方法在优化和数据分类领域报告了偶尔的成功,特别是强调性别生殖启发的交叉操作的重要性。(在1980年代,另一种简单的方法——模拟退火——开始被使用,这种方法通过随机变化数值而不是程序来优化。)

到了1980年代,适应性地修改数学表达式结构的想法也逐渐浮现出来——以及表示程序的符号表达式。计算机图形学(例如卡尔·辛姆斯的工作)和类似1984年《核心战争》“游戏”中虚拟机中程序之间的竞争等领域都出现了显著应用。1990年代,约翰·科扎在“遗传编程”领域发挥了重要作用,特别是作为“自动创造发明”的一种方式,例如在电路和天线设计等领域。至今,这些方法的零星应用依然在几何和机械设计等领域不断出现。

达尔文的进化思想从一开始就存在争议。首先是与宗教创造论的冲突问题。但在科学界内部,也有许多关于化石记录的解读以及大规模进化如何运作的激烈分歧。一个显著的问题——直到1980年代依然非常活跃——是“进化的自由”与有机体生长动态(以及有机体间相互作用)所施加的约束之间的关系。尽管有很多人坚持认为,唯一合理的“科学”观点是“自然选择就是一切”,但依然有许多困扰性谜题,暗示着其他力量的存在。

在计算机实验的可能性(以及像我在细胞自动机领域的工作)基础上,1980年代中期,特别是在克里斯·兰顿的努力下,出现了对“人工生命”计算模型的研究。这导致了各种生态系统等的模拟,确实产生了许多从田野生物学中得来的与进化相关的现象——但这些模型通常过于复杂,难以从中提炼出基本结论。尽管如此,仍然有一些特定的、更简单的实验。例如,在1986年,理查德·道金斯为了他的著作《盲眼钟表匠》制作了“生物形态”图片,通过适应性地调整基于简单树木生长算法的参数来生成这些形状。

1980年代,受到我工作的启发,关于细胞自动机规则“进化”的一些孤立研究开始出现(以及基于此的艺术和博物馆展览),而在1990年代,吉姆·克鲁奇菲尔德和梅拉尼·米切尔等人展开了更系统的研究,尝试使用遗传算法来进化细胞自动机规则,以解决像密度分类这样的任务。(大约在这个时候,“进化计算”作为一个术语开始出现,涵盖了遗传算法和其他通常受生物学启发的自适应计算方法。)

与此同时,1990年代,生物学中实际分子机制的理解大大进展,并且对遗传和发育过程的工作逐渐深入。但即便数据积累如山,对大型“生物学理论”(

例如可能解释生物进化中复杂性生成的理论)似乎兴趣减弱了。(系统生物学领域尝试为生物系统发展具体的、通常是数学模型——但除非在免疫学和神经科学等特定领域,否则并未出现什么宏观的理论原则。)

在基础理论方面的一个重要例外是格雷戈里·蔡廷(Greg Chaitin)2010年左右提出的“超生物学”概念:即利用计算理论的思想来理解程序的进化,并将其与生物进化联系起来。

从1950年代开始,另一条发展思路(有时被视为人工智能的一个实际分支)涉及“机器学习”概念。遗传算法是其中常见的六种方法之一。另一种则基于人工神经网络。几十年来,机器学习一直处于一个较为冷僻的领域,主要由偶尔能提供具体应用成果的工程性解决方案主导。但到2011年,神经网络在图像识别中的意外成功,随后的几年里,在其他领域也取得了成功,并在2022年迎来了大型语言模型和ChatGPT的诞生。

然而,谁也没有预见到的是,神经网络的行为会因为接受足够大量的训练而发生很大的变化。但目前并没有很好地理解为什么会这样,也没有明确知道神经网络在什么任务上能够取得多大的成功。自1940年代以来,已经认识到生物进化与神经网络学习之间的关系。现在看到了神经网络的令人印象深刻的表现,似乎很值得重新审视生物进化中发生了什么——并尝试理解它为何能工作,尤其是在理解神经网络和机器学习之前,这可能是一个很好的开端。

个人笔记

说起来有些奇怪,但我在这里所做的大部分工作,其实四十年前就应该做了。而且我差一点就做了。只是我当时没有进行完全正确的实验,而且也没有直觉意识到值得再尝试更多。

四十年后的今天,我拥有了新的直觉,特别是受现代机器学习经验的启发。但即便如此,真正促成我所做的这一切的,还是一项偶然的实验,这个实验本是为一个稍微不同的目的而进行的。

回到1981年,我对自然界中复杂性是如何产生的这个问题产生了浓厚的兴趣,我试图构建一些可能捕捉到这一现象的模型。与此同时,我刚刚完成了SMP 1.0版本,这是Mathematica和Wolfram语言的前身——我当时也在思考如何将其模式匹配范式推广到“通用人工智能”领域。

巧合的是,就在那个时候,神经网络开始获得一些(暂时的)关注。由于我认为它们可能与我的研究方向相关,我开始模拟神经网络,尝试看看我能从中发展出什么样的通用理论。然而,我发现它们让我感到很沮丧。似乎有太多的参数和细节,难以得出任何明确的结论。而且从实践的角度看,我根本无法让它们做出什么特别有用的事情。

我决定,对于我的科学问题,我需要想出一些更简单的东西。于是,在融合自旋系统和神经网络的基础上,我最终发明了细胞自动机(直到后来我才发现,它们的某些版本早在之前就已经被多次发明过了)。

一开始,我对细胞自动机进行实验时,发现它们是通往一个令人惊叹的新科学世界的窗口——自那时以来,我一直在以某种方式继续探索这个世界。我最初的关键方法论,至少是在开始时,就是列举出最简单的细胞自动机规则,看看它们会有什么样的表现。它们行为的多样性——以及复杂性——令人惊讶。但这些规则的简单性意味着“连续规则”的细节通常差异很大——尽管它们的整体行为中有共同的主题,但“规则空间”似乎并没有任何特定的结构。(不过偶尔,在为展示寻找示例时,我会看一些稍微复杂一点的“多彩”规则,确实也注意到,规则编号接近的规则,它们的行为往往有显著的相似性。)

恰巧的是,在1983年我开始发表关于细胞自动机的研究时,理论生物学领域引起了相当大的兴趣。(也许部分原因在于“细胞”这一词与“细胞自动机”中的“细胞”相呼应)于是,我经常被邀请参加理论生物学的会议。人们有时会询问细胞自动机中的适应性问题,而我通常会强调单个细胞自动机能够做什么,而不涉及适应性,以及这对于有机体发展的潜在意义。

但到了1985年,我参加了一次在洛斯阿拉莫斯举办的“进化、博弈与学习”会议,我决定看看这些话题与细胞自动机之间的关系。但很快,我便从研究适应性转移到了试图看看细胞自动机是否能够被明确设置成执行某些模式匹配和其他操作上: 【配图暂缺:原始图片文件已丢失。】 这篇论文的许多方面看起来依然非常现代(事实上,现在可能应该进一步研究这些内容!)。但即便我当时完全具备进行这项研究的工具——我却在那个时候没有去探索我现在所探索的内容。

回到1984年,在我撰写的《细胞自动机理论中的二十个问题》一文中,第七个问题是:“不同的行为是如何在细胞自动机规则空间中分布的?”多年来,我偶尔会思考“细胞自动机规则空间”这个问题,想知道,比如说,它可能会有什么样的几何特性,特别是在规则无限大的连续极限下。

到了1980年代后期,“理论生物学”会议已经转向了“人工生命”会议。每当我参加这样的会议时,我常常感到沮丧。人们会给我展示一些模拟,看起来它们有太多的参数,永远也无法得出什么有意义的结论。人们还常常声称自然选择是一个“非常简单的理论”,但一旦“实施”了,就会出现各种问题——需要做出很多选择——比如种群规模、适应性阈值、有机体之间的相互作用等等。最终的结果通常是陷入某种非常特定的模拟中,而这些模拟并没有明显的稳健的含义。

(在1980年代中期,我投入了大量精力来发展我所称之为“复杂系统研究”的新方向。这一方向的重点是那些具有明确简单规则但表现出高度复杂行为的系统——例如细胞自动机。然而,渐渐地,“复杂性”开始成为一种流行的通用术语——我猜部分是为了区分自己与我的努力——一些人开始强调他们不仅仅是在研究复杂系统,而是在研究复杂自适应系统。但往往这种做法似乎只是在为稀释研究的清晰性找借口——我因此感到非常失望,以至于几乎没有再关注这些领域。)

到1990年代中期,我正在撰写《A New Kind of Science》,并希望将生物学作为我在计算宇宙中方法论和发现的一个应用例子。在名为“生物学中的基本问题”一节中,我主张(正如我在这里所说的那样),计算不可约性是一个比自然选择更强大的根本性力量,而且当我们在生物学中看到复杂性时,它很可能是“计算起源”的,而不是被自然选择“雕刻”出来的。在那部分讨论中,我包括了这样一幅图,展示了在连续的1位变化下,k=3,r=1的细胞自动机规则中行为的“常常是某种程度上的渐变变化”(是的,这本书是黑白的): Why-Does-Biological-Evolution-Work_file-241210005257254.png 这不是自适应地完成的;基本上只是沿着规则空间中的一条“随机直线”进行探索。事实上,在这里和书中的大部分内容中,我关注的是像细胞自动机这样的系统“自然会做什么”,而不是它们可以被构造(或自适应进化)来做什么。我确实给出了“构造”,说明细胞自动机如何执行特定的计算任务(例如生成质数),而且有些模糊地,在《宇宙中的智能》一节中,我探讨了如何找到可以成功“将输入翻倍”的 k=3,r=1 规则(我讨论这些规则的原因是为了突出一个难题:如何判断这些细胞自动机是“为某个目的而构造的”还是仅仅是“做它们本来会做的事情”): Why-Does-Biological-Evolution-Work_file-241210005424280.png 许多年过去了。我们夏季学校偶尔会有一些关于规则空间的项目,有时也会涉及到适应性。我一直保持着对生物学基础问题的兴趣,逐渐收集相关信息,并时常就此主题发表演讲。与此同时——尽管当时我并没有特别地内化这种联系——到2010年代中期,通过我们在 Wolfram Language 上的实际工作,我已经跟上了现代机器学习的步伐。大约在同一时期,我也从我的朋友 Greg Chaitin 那里听到过他在努力(如他所说)“通过计算思想证明达尔文”——这些计算思想是他在思考数学基础时应用过的。

然后在2020年,我们的物理学项目问世了,围绕多路径图等概念建立了完整的形式主义。很快我意识到,的确,我所称之为“多重计算”的东西,不仅仅与基础物理相关;它是一种非常普遍的思想,可以应用于许多领域,到2021年时,我开始尝试将其进行归类: 【配图暂缺:原始图片文件已丢失。】 我对这些问题进行了思考。最初我最认真地处理的是元数学问题,我在2022年完成了相关的书籍。那年末,我完成了一个(酝酿了50年的)项目——受我们的物理学项目启发——旨在理解热力学第二定律,并且作为这个项目的一部分,我认为自己在思考生物系统的基本特性(尽管不是它们的适应性进化)方面有所进展。

然后,ChatGPT问世了。在参与其技术工作的同时,我开始思考它的科学原理,特别是它是如何工作的。它的一部分似乎与人类语言中未被识别的规律有关,但另一部分则反映了正在出现的“元发现”——即如果你对一个机器学习系统“猛击”足够多次,它似乎能够学会几乎任何东西。

但为什么会这样?最初我认为这一定只是高维度的“显而易见”结果。但我很快意识到事情远不止如此。作为理解可能性的边界的一部分,几个月前,我写了一篇文章,探讨了“人工智能能解决科学问题吗?” 【配图暂缺:原始图片文件已丢失。】 我讨论了科学的不同潜在目标(例如做出预测、生成叙述性解释等)。在文章的深入部分,我有一节标题为“探索系统的空间”,在其中我讨论了类似“能否找到一个能够做X的系统?”的问题,并询问像神经网络这样的系统是否能够在通常会是庞大穷尽搜索的情况下,帮助我们“提前”找到答案。作为这个讨论的一个附带内容,我认为将其与非神经网络的适应性进化过程进行比较可能会很有趣。

回想起Greg Chaitin关于将停机问题与生物进化联系起来的想法,我开始想,也许可以通过适应性地进化元胞自动机规则,找到那些能够生成具有特定有限寿命的图案的规则。我把它想象成一个经典的机器学习问题,需要最小化一个“损失函数”。

于是,就在2月22日凌晨1点过后,我写下了三行Wolfram语言代码——并尝试了这个实验: 【配图暂缺:原始图片文件已丢失。】 它成功了!我设法找到了元胞自动机规则,这些规则可以生成寿命正好为 50 步的模式: 【配图暂缺:原始图片文件已丢失。】 它成功了!我设法找到了能够生成恰好活50步的细胞自动机规则: 【配图暂缺:原始图片文件已丢失。】 现在回想起来,我还算幸运。首先,这是一个非常简单的实验(至少在 Wolfram 语言中是如此),即使我并不指望它能成功,但还是做了。其次,在我的第一个实验中,我选择的参数恰好直接起作用(k = 4,寿命 50 等)。

不过,原则上,40 年前我也可以做同样的实验,不过如果没有 Wolfram 语言,就没那么容易了。不过,我当时拥有的计算机已经足够强大,原则上我可以得出与现在相同的结果。但是,如果没有现代机器学习的经验,我想我是不会尝试的,而且我肯定会轻易放弃。是的,这么多年来,我一直以为适应性进化是简单明了的实验无法实现的,这让我感到有些惭愧。不过,现在能够揭开我一直想知道的另一个谜团,我还是很满足的。而且我觉得,更多关于生物学和机器学习基础的东西,可能终于触手可及了。

— 感谢你读到这里 —
高清查看 · 点击图片切换原始尺寸

寻找一个想法