通过模拟布尔逻辑电路的演化,可以揭示技术进步的本质。研究表明,复杂技术并非通过随机探索产生,而是依赖于一个分阶段构建的过程,即由简单的技术模块逐层搭建而成。这种模块化的层级结构,类似于 Herbert Simon 的钟表匠比喻,极大地降低了在庞大可能性空间中搜索的难度。从信息论的角度看,技术创新实质上是一个高效获取和利用信息的过程,通过逐步验证和排除,将一个几乎不可能完成的搜索任务变得可行。
模拟技术进化
经济学家 Brian Arthur 设计了一个模拟实验,通过组合最基础的逻辑门(NAND 门)来“进化”出更复杂的布尔逻辑电路。NAND 门是功能完备的,意味着任何逻辑功能都可以通过它来构建。
- 起点: 模拟从最简单的元素开始:NAND 门和代表 1 和 0 的常量。
- 过程: 程序随机地将现有组件(最初只有 NAND)连接起来,看是否能实现预设的目标,如 AND 门或 XOR 门。
- 封装与迭代: 一旦某个目标(如 AND 门)被实现,这个新形成的电路就会被“封装”起来,成为一个新的、可供选择的构建模块。后续的迭代就可以直接使用这个 AND 门,而不是从头用 NAND 门搭建。
- 垫脚石效应: 实验发现,如果没有先完成像“全加器”这样的简单目标,模拟就无法进化出更复杂的“2位加法器”。这证明了技术进步依赖于将简单技术作为通往复杂技术的“垫脚石”。
我们的模拟系统能够创造复杂的技术(电路),但前提是必须先创造出更简单的技术作为构建模块。
巨大的搜索空间问题
技术的真正挑战在于如何在巨大的可能性海洋中找到有效的解决方案。一个逻辑电路的功能可以用其“真值表”来定义,即所有输入和输出的组合。随着输入和输出数量的增加,可能的功能数量会发生组合爆炸。
- 一个有 2 个输入和 1 个输出的函数,有
2^4 = 16种可能的真值表(如 AND, OR, XOR 等)。 - 一个 8 位加法器有 16 个输入和 9 个输出,其可能的函数数量高达 10^177,554。这个数字远超宇宙中的原子总数。
在 25 万步内通过随机组合发现这样一个电路的可能性微乎其微。我们的实验之所以能成功,是因为它首先满足了更简单的需求,并利用这些成果作为构建模块,逐步引导自己走向更复杂的目标。
钟表匠的比喻:模块化的力量
诺贝尔奖得主 Herbert Simon 曾用一个故事来解释复杂系统的架构:
- 钟表匠 Tempus: 他组装一块含 1000 个零件的手表。任何一次中断都会让已组装的部分散架,必须从头开始。他几乎永远无法完成一块手表。
- 钟表匠 Hora: 他将手表设计为由多个稳定的“子组件”构成(例如,每 10 个零件组成一个子组件)。如果中断发生,他只需重新组装当前的子组件,而不是整个手表。Hora 的效率比 Tempus 高出数千倍。
Arthur 的模拟实验就像 Hora 的工作方式。直接从零开始构建一个 8 位加法器就像 Tempus 一样不可能成功。但通过先构建稳定的子组件(如 1 位加法器、2 位加法器等),这个任务就变得可行了。这种层级结构和模块化是克服组合爆炸的关键。
技术搜索即信息获取
我们可以用信息论的框架来更精确地理解这一过程。信息论的核心思想是,信息可以减少不确定性。
- 比特 (Bit): 一个比特的信息能将可能性的空间减半。例如,要知道一枚硬币是正面还是反面(2 种可能),需要 1 比特信息。要知道手机在 8 个口袋中的哪一个(8 种可能),则需要 3 比特信息(
2^3 = 8)。 - 熵 (Entropy): 熵衡量的是通过一次尝试平均能获得多少信息。最高效的策略是提出能将可能性均等划分的问题(例如,“它比面包盒大吗?”),这样无论答案是“是”或“否”,都能最大化地减少不确定性。
将这个理论应用于技术搜索:
- 全局搜索(Tempus 方式): 随机尝试构建一个完整的 8 位加法器,就像在拥有 2^852 种可能的树叶的巨树上随机摘取一片叶子。一次失败的尝试(几乎是 100% 的情况)几乎不提供任何有用的信息,因为你只排除了亿万分之一的可能性。
- 模块化搜索(Hora 方式): 逐个验证和锁定子组件(如每个逻辑门或加法器模块)是否正确。每当你确认一个子组件是正确的,你就排除了所有不包含这个正确组件的庞大分支。这是一种信息获取效率极高的方式。
结论
技术进步的核心是解决一个巨大的搜索问题。成功的关键不在于更快的计算或更多的随机尝试,而在于采用一种能最大化信息获取效率的策略。
一个层级化、模块化的设计,允许我们分阶段地验证和构建,从而将一个看似不可能的搜索任务,分解成一系列可以管理的小问题。每一次对子组件的成功验证,都提供了大量信息,极大地缩小了后续的搜索范围。因此,技术创新与其说是一个制造过程,不如说是一个高效的学习和信息积累过程。