最近读 Scott Aaronson 的文章 《The First Law of Complexodynamics》。这篇文章表面上讲的是熵、柯尔莫哥洛夫复杂度、sophistication,以及一种作者称为 complextropy 的复杂性概念。但读到最后,我觉得它真正讨论的是一个更深的问题:

为什么世界上最“有趣”的结构,既不出现在完全有序的时候,也不出现在完全随机的时候,而是出现在两者之间?

这篇文章从一个很直观的例子开始:一杯咖啡里倒入牛奶。

一开始,咖啡和牛奶分开。状态很有序,也很容易描述。

左边是咖啡,右边是牛奶。

过了一会儿,牛奶开始扩散,出现丝状结构、旋涡、边界和局部混合区。这时候图案最“有趣”。

最后,咖啡和牛奶完全混匀。状态熵最高,但反而又变得无聊。

全部均匀混合了。

所以熵和复杂性不是一回事。

熵似乎是单调增加的:

低 → 高 → 更高

但我们直觉里的“复杂性”或者“有趣性”更像是:

低 → 高 → 低

这就是文章要回答的问题。


一、熵和复杂性有什么区别?

熵大致衡量的是:

一个系统有多少种可能的微观状态。

高熵状态通常更普通、更典型。比如一杯完全混匀的咖啡,它可以由大量微观排列实现,所以它是高熵的。

但复杂性不是“越乱越复杂”。

完全有序的系统不复杂。
完全随机的系统也不复杂。

真正复杂的是中间态:有结构,但不是简单结构;有变化,但不是纯噪声。

可以这样说:

熵问的是:这个状态有多随机、多典型?
复杂性问的是:这个状态里有没有非平凡结构?

低熵状态容易描述:

黑白分开。

高熵平衡态也容易描述:

均匀混合。

中间态才难描述:

有不规则边界,有局部团块,有丝状结构,有多尺度纹理。

所以更准确的说法不是“混乱程度低和高的时候规律少”,而是:

混乱程度极低和极高的时候,系统都容易被简单描述;中间状态最难被简单描述,因此最复杂。


二、第二定律为什么“几乎像重言式”?

文章接着谈热力学第二定律。

第二定律说:

封闭系统的熵会随时间增加,直到达到最大值。

Sean Carroll 说,这件事在某种意义上“几乎像重言式”。

所谓重言式,就是一种由定义几乎直接成立的真话。比如:

单身汉是未婚男性。

它当然是真的,但因为“单身汉”本来就定义为“未婚男性”,所以这句话没有太多新信息。

类似地,高熵状态本来就意味着:对应的微观排列数量更多、更典型、更常见。

所以说“系统倾向于高熵状态”,有点像是在说:

系统倾向于更可能出现的状态。

这当然不是错,而是太接近定义了。

真正难的问题不是:

为什么熵会增加?

而是:

为什么宇宙一开始居然是低熵的?

如果宇宙一开始就是高熵状态,就不会有后来的星系、恒星、生命、大脑和文明。文章不打算解决这个宇宙学谜题,而是把“初始低熵”当作给定事实,然后继续追问:

即使熵不断增加,为什么复杂性不是不断增加?


三、普通柯尔莫哥洛夫复杂度不够

为了形式化“复杂性”,作者引入 Kolmogorov complexity,柯尔莫哥洛夫复杂度。

它的定义很优雅:

一个对象的复杂度,就是生成它所需的最短程序长度。

比如:

00000000000000000000

很容易描述:

打印 20 个 0。

所以复杂度低。

而一个完全随机的字符串:

01101000110110100101...

没有明显规律,只能原样写下来,所以柯尔莫哥洛夫复杂度高。

一开始,我们可能想用柯尔莫哥洛夫复杂度来定义熵。随机状态难压缩,有序状态容易压缩,这看起来和熵很像。

但很快出现问题。

假设一个系统是确定性的,从简单初始状态开始,按固定规则演化。那第 t 步的状态可以这样描述:

初始状态 + 演化规则 + t

初始状态和演化规则是固定的,真正随着时间增长的只是数字 t

而表示数字 t 需要多少比特?

大约是:

log₂(t)

因为 n 个比特可以表示 2ⁿ 种情况,所以要表示一个到 t 为止的数字,只需要大约 log₂(t) 个比特。

这里可以用一个程序员更熟悉的类比来理解:状态压缩 DP

在状态压缩 DP 里,一个看起来很复杂的状态集合,常常可以被压进一个整数的二进制位里。比如一个集合里有 n 个元素,每个元素选或不选,表面上是一个组合状态,但可以用一个 n 位 bitmask 表示。状态本身可能对应很丰富的信息,但它的索引或编码可以非常短。

这里的 t 也有点像这样。

系统第 t 步的具体画面可能很复杂,像一张充满纹理的咖啡混合图。但如果这个系统是确定性的,我们不需要直接保存那张图,只需要保存:

这是第 t 步。

只要初始状态和演化规则已知,这个时间索引就足够把状态定位出来。

所以从普通柯尔莫哥洛夫复杂度看,这个状态并没有随着图案变复杂而显著变复杂。它只是多了一个很短的二进制索引。

这就导致一个反直觉结论:

一个确定性系统即使演化出看起来很复杂的状态,它的普通柯尔莫哥洛夫复杂度也只会随 log(t) 增长。

这太慢了,不符合我们对物理熵增加的直觉。

问题在于:普通柯尔莫哥洛夫复杂度只问“有没有短程序”,不问“这个程序要跑多久”。

如果一个程序是:

从宇宙初始状态开始,模拟 138 亿年,然后输出现在这一刻。

这个描述确实很短,但它不是一个有用解释。

因为你真的要得到结果,就得模拟整个宇宙。

所以“状态压缩 DP”这个类比很好:它说明了状态本身看起来很大,但只要有生成规则和索引,就可能被极短地定位。但这也暴露出普通 Kolmogorov complexity 的局限:它只关心描述长度,不关心解压、生成、模拟这个状态需要多少时间。


四、必须引入资源限制

这篇文章最关键的转折之一是:

一个短描述如果不能在有限时间内使用,就不构成现实意义上的解释。

所以我们不能只问:

有没有一个程序能生成这个状态?

还要问:

它能不能在合理时间内生成这个状态?

这就是 resource-bounded Kolmogorov complexity,资源有界柯尔莫哥洛夫复杂度。

普通版本只看程序长度。
资源有界版本还看运行时间、计算资源、模型能力。

这一步非常重要,因为物理世界里的复杂性不是上帝视角下的复杂性,而是有限观察者眼中的复杂性。

咖啡中间态之所以复杂,不是因为它在原则上不能由初始状态和物理定律生成,而是因为:

如果你没有足够时间完整模拟,你无法快速得到那些具体的不规则边界和纹理。

换句话说:

存在一个解释,不等于这个解释可用。

换成前面的“状态压缩 DP”类比:普通 Kolmogorov complexity 允许一种极端表示。只要我有初始态、转移规则和状态编号,就算当前状态的图像本身极其复杂,也可以被一个短索引定位。

但现实中的复杂性不只取决于能否定位,还取决于能否在有限时间内把它展开、生成、使用。

这就是为什么作者必须引入 resource bounds。


五、随机也不是复杂:sophistication

普通柯尔莫哥洛夫复杂度还有另一个问题:

它会把完全随机的字符串判定为高度复杂。

但这不符合我们的“有趣性”直觉。

一个完全随机字符串确实不可压缩,但它不一定有趣。因为我们几乎可以用一句话描述它:

它是随机的。

Kolmogorov 后来意识到这一点,并引出了相关概念:sophistication

它的直觉是:

不直接描述对象本身,而是描述一个模型,使得这个对象是该模型中的典型样本。

普通柯尔莫哥洛夫复杂度问:

描述 x 本身需要多短的程序?

sophistication 问:

能否找到一个集合或模型 S,使得 x 是 S 中的普通成员?描述这个 S 需要多复杂?

这能很好地区分三类对象。

1. 简单对象

比如:

0000000000000000

可以令:

S = {这个全 0 字符串}

集合 S 很简单,所以 sophistication 低。

2. 完全随机对象

如果 x 是一个 n 位随机字符串,可以令:

S = 所有 n 位二进制字符串

这个集合也很简单:

所有长度为 n 的 0/1 串。

x 虽然本身难以压缩,但它作为这个集合里的一个成员很普通。所以 sophistication 也低。

3. 真正复杂的对象

真正 sophistication 高的对象,是既不能用简单规则解释,也不能用简单随机模型解释的对象。

它不是:

全 0。

也不是:

完全随机。

而是:

有结构,但结构本身不简单。

这正好对应咖啡中间态。


六、sophistication 仍然不够

不过,文章接着指出:普通 sophistication 仍然会失败。

因为对于动态系统,我们还是可以作弊。

确定性系统的第 t 步状态可以被解释为:

初始状态 + 演化规则 + t

即使是概率系统,也可以定义:

S(t) = 从初始状态出发,经过 t 步后所有可能出现的状态集合

这个集合的描述也很短:

初始状态 + 概率转移规则 + t

如果真实状态 x 是 S(t) 里的典型成员,那么 sophistication 依然低。

但问题是,S(t) 虽然短,却可能很难计算、很难采样、很难实际使用。

所以作者的修补方案是:

给 sophistication 加上计算资源限制。

这就引出全文的核心概念:complextropy


七、complextropy:有限计算者眼中的有趣复杂性

作者提出的 complextropy 可以粗略理解为:

描述一个能高效生成“像 x 这样”的样本的最简单模型,需要多少信息。

这个定义里有几个关键点。

第一,不直接描述 x,而是寻找一个模型或分布 S。

第二,S 必须能高效采样。也就是说,不能只是理论上存在,而要能在有限时间内生成样本。

第三,x 必须是 S 中的典型样本。也就是说,知道 S 以后,你仍然不能用很短的方式把 x 特别挑出来。

第四,试图利用 S 重构 x 的算法也必须受资源限制。否则无限时间的算法总能做一些不现实的搜索。

这两个资源限制都很重要:

  1. 生成模型必须高效;
  2. 重构或压缩目标状态的算法也必须高效。

如果不限制前者,我们又会回到“初始状态 + 规则 + t”的短描述陷阱。

如果不限制后者,我们又会允许一种不现实的上帝视角:只要无限搜索,总能找到某些特殊压缩方式。

所以 complextropy 捕捉的是:

在有限计算资源下,一个对象是否能被简单高效模型解释。

这正是物理世界里“有趣复杂性”的样子。


八、复杂动力学第一定律

作者的猜想是:

如果用资源有界的 sophistication 来定义 complextropy,那么自然混合系统的 complextropy 会呈现低—高—低的曲线。

也就是:

初始有序状态:complextropy 低
中间混合状态:complextropy 高
最终平衡状态:complextropy 低

这就是标题里的 The First Law of Complexodynamics

当然,这不是一个已经被证明的定律,而是一个猜想。

作者建议用一个离散化咖啡杯模型来研究它:

  • 用二维黑白像素表示咖啡和牛奶;
  • 黑色代表咖啡;
  • 白色代表牛奶;
  • 初始时黑白分开;
  • 每一步随机交换相邻的黑白像素;
  • 最终趋向均匀混合。

然后研究这个系统的 complextropy 是否真的先低、再高、再低。

理论证明很难,因为要证明中间态复杂,不是说“我想不到简单模型”,而是要证明:

任何短的高效模型都不行。

这是典型的计算复杂性下界问题,很难。

经验上可以做模拟,用 gzip 之类的压缩工具近似不可计算的复杂度。但这也很粗糙,因为 gzip 更接近普通压缩复杂度,不一定能捕捉真正的 complextropy。

所以文章最后的态度很克制:

这不是一个已经解决的问题,而是一个可以被形式化、模拟、研究、证明或反驳的问题。

我很喜欢这一点。它不是在空谈“宇宙很复杂”,而是在努力把一个模糊直觉变成一个可研究的数学问题。


九、这篇文章和广义 AI 有什么关系?

读完以后,我一直在想:这篇文章为什么会被放到 Ilya Sutskever 的阅读列表里?它和 AI 到底有什么关系?

它当然不是一篇 AI 工程论文。

它不会告诉我们:

  • 模型该多大;
  • 架构该怎么设计;
  • 训练目标该怎么写;
  • scaling law 怎么推;
  • AGI 怎么实现。

但它可能提供了一个更底层的判断框架:

什么样的系统才具有非平凡的结构复杂性?

从广义 AI 的角度看,我们可以把人类智能行为看成文章里的对象 x。

我们要寻找的不是一个能输出随机复杂性的函数,而是一个在有限计算资源内,能生成高结构复杂度行为的机制。

也就是说,AI 要模拟的不是“随机性”,也不是“规则表”,而是某种介于两者之间的东西。


十、智能不是低熵,也不是高熵

如果用文章的框架看 AI,大概可以分成三类系统。

1. 简单规则系统

比如:

如果 A,则 B。
如果 C,则 D。

这种系统可预测、可解释、可压缩。

但它太死板,不够智能。

它像低熵初始态。

2. 随机系统

比如:

面对问题,随机选择动作。

它不可预测,但也不智能。

因为它没有结构,没有目标,没有可积累的模型。

它像高熵随机态。

3. 高 complextropy 系统

真正智能的系统应该是:

  • 有规律,但不是死规则;
  • 有变化,但不是随机噪声;
  • 有目标,但能根据环境调整;
  • 有压缩,但不是简单查表;
  • 有泛化,但不是无限穷举;
  • 有结构,但结构不是一句话能说完。

这才像智能。

所以可以说:

智能不是最大熵,也不是最低熵,而是资源有界条件下的结构化复杂性。


十一、有限时间是关键

这篇文章对 AI 最重要的启发,可能正是“资源限制”。

一个系统如果可以无限计算,很多问题都失去意义。

理论上,一个系统可以:

  • 枚举所有可能行动;
  • 模拟所有未来;
  • 穷尽所有策略;
  • 比较所有结果;
  • 然后选择最优答案。

但这不构成现实意义上的智能。

因为真实智能必须在约束下工作:

  • 时间有限;
  • 算力有限;
  • 信息有限;
  • 记忆有限;
  • 反馈有限;
  • 环境不断变化。

所以智能不是:

原则上能不能算出正确答案?

而是:

能不能在来得及行动之前,生成足够好的结构化判断?

这和 complextropy 的精神非常接近。

一个只能通过无限搜索或巨大查表才能表现得聪明的系统,不是真正令人满意的智能系统。它没有找到生成机制,只是硬编码结果。

真正的智能应该是:

用有限机制生成大量结构化、适应性强、非平凡的行为。


十二、查表不是智能,随机也不是智能

这篇文章还帮助我们理解两个 AI 里的经典直觉。

第一,巨大查表不是智能。

理论上,一个查表系统可以保存所有输入和输出:

看到输入 1,输出答案 1;
看到输入 2,输出答案 2;
……

只要表足够大,它也可以表现得很聪明。

但我们不满意,因为它没有压缩出生成机制。

它只是直接编码了结果 x,而不是找到了一个能解释 x 的模型 S。

第二,随机探索也不是智能。

一个系统如果只是随机行动,行为可能很难预测,但它的生成机制太简单:

随机输出。

这就像完全随机字符串:普通 Kolmogorov complexity 很高,但 sophistication 很低。

随机不是复杂。

随机更不是智能。


十三、AI 追求的也许是高 complextropy 行为

所以,如果把文章的思想延伸到广义 AI,可以得到一个说法:

AI 要寻找的,是一种能够在有限时间内推导出足够复杂的“有趣结构”的生成机制。

这里的“有趣结构”,在 AI 里就是类似人类智能的行为:

  • 能学习;
  • 能规划;
  • 能解释;
  • 能适应;
  • 能抽象;
  • 能处理不确定性;
  • 能在有限资源下做近似决策;
  • 能生成既不机械也不随机的行为。

这不等于说 complextropy 已经给出了 AI 理论。

它没有。

但它给了一个重要提醒:

智能的关键不是复杂度越高越好,而是结构化复杂性。

太简单,是死规则。
太随机,是噪声。
真正有趣的结构在中间。


结语

这篇文章最打动我的地方,是它给“复杂”这个词做了一次清洗。

我们平时很容易把复杂和随机混为一谈。但 Scott Aaronson 想说的是:

随机不是复杂。
简单也不是复杂。
真正复杂的是既不能被简单规则解释,也不能被简单随机模型解释的中间结构。

而且,这个结构必须对有限计算者有意义。

如果一个解释只能在无限时间、无限算力下使用,那它就不是现实中的解释。

这对理解物理系统有意义,对理解 AI 也有启发。

也许 AI 的目标不是制造一个最大熵系统,也不是制造一个规则大全,而是找到某种高效生成机制,使得人类智能行为成为它的典型输出。

用一句话总结:

智能不是随机性,也不是规则性,而是在有限资源下生成有趣结构的能力。


Comments

comments powered by Disqus