最近读 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 的算法也必须受资源限制。否则无限时间的算法总能做一些不现实的搜索。
这两个资源限制都很重要:
- 生成模型必须高效;
- 重构或压缩目标状态的算法也必须高效。
如果不限制前者,我们又会回到“初始状态 + 规则 + 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