好书精读 · READ 75
Complexity: A Guided Tour · 梅拉妮·米歇尔 (Melanie Mitchell) · 2009
一大群又笨又简单、只看得见身边邻居、谁也不听谁指挥的小部件——蚂蚁、神经元、免疫细胞、买家卖家——凑在一起,为什么会长出会算账、会适应、看上去像有目的的整体行为?这本书把回答这个问题的几条线索(混沌、信息、计算、演化、网络、标度律)拼成一张外行看得懂的地图,同时诚实地承认:这门学科连「复杂」该怎么量都还没量出来,它还没有自己的牛顿。
梅拉妮·米歇尔是圣塔菲研究所(Santa Fe Institute,复杂性科学的大本营)的教授、计算机科学家,博士师从侯世达(《哥德尔、艾舍尔、巴赫》的作者),又受教于遗传算法(genetic algorithm)的开创者约翰·霍兰德(John Holland)——这条学脉决定了本书的气质:从计算的角度看生命与社会。副标题「a guided tour(一次导览)」是认真的:它不宣布新理论,只带你走一圈,指出哪里已铺好路、哪里还是烂泥地。
「复杂」这个词被用滥了:航天飞机零件多得吓人,却不是复杂系统——它有图纸、有总设计师、每个零件干什么被规定死了。米歇尔给的工作定义(大意)是:一个由大量部件组成的网络,没有中央控制,各自只遵守简单规则,却由此产生复杂的集体行为、精巧的信息处理,以及通过学习或演化而来的适应。三条硬杠缺一不可:
这个定义把话说死了:有总指挥的不算,不会随环境改变自己的也不算——它同时解释了这门学问为什么难:我们熟悉的解释套路是「找出那个负责的部件」,而复杂系统里根本没有那个部件。
第一条思想来源是混沌(chaos):简单的确定性规则如何产生看似随机的行为。教科书例子是逻辑斯蒂映射(logistic map),一个只有一行的人口模型:「明年的人口 = R × 今年的人口 ×(1 − 今年的人口)」——前半截是繁殖(人口越多生得越多),后半截是拥挤(越接近上限资源越紧)。就这么个式子,随着繁殖率 R 变大,长期行为依次经历:稳定在一个值 → 在两个值间来回跳(周期 2)→ 四个 → 八个 → …… 分岔越来越密,到 R ≈ 3.57 后彻底进入混沌:数列永不重复,且对初值极端敏感——小数点后第十位的差别,几十步后就把两条轨迹拉到天南地北。这就是「蝴蝶效应」的数学骨架(气象学家洛伦茨在一个简化天气模型里最早撞上它)。
示意(schematic,非精确数据):同一条规则,只把一个参数往上拧,稳定 → 周期 2 → 周期 4 → …… → 混沌。
它拆掉了自牛顿以来的一个默认假设:确定 ≠ 可预测。拉普拉斯曾设想一个知道全部初始条件就能推演整个宇宙的智者;混沌说,哪怕方程你真知道,只要初值的测量精度有限(它永远有限),误差就会指数放大——长期预测在原理上便不可能。而反过来,普适性(universality)给了这门学科最大的希望:费根鲍姆发现分岔一次比一次快,相邻两次分岔的参数间距之比收敛到常数 4.6692…(费根鲍姆常数),且这个数不只属于逻辑斯蒂映射——一大类形状迥异的系统通向混沌的路都按同一比例收缩,后来在滴水龙头、电路、对流实验中被实测证实。细节完全不同的系统,可能共享同一条定量规律——这门学科后来所有的野心,都建立在这个先例上。
如果说混沌是「简单规则产生不可预测」,自组织就是硬币的另一面:简单规则产生有用的秩序。一个成熟的收获蚁群会做许多像是「决策」的事:外面食物多就多派觅食蚁,巢被踩坏就抽调蚁去修,两处食源能选近的那处。可是没有任何一只蚂蚁知道这些:蚁后不是领导,她只负责下蛋;单只蚂蚁的行为简单到可以写成几条 if-then。
全局调度怎么发生的?生物学家黛博拉·戈登(Deborah Gordon)在亚利桑那沙漠对收获蚁做了几十年野外实验,答案是靠碰撞的频率:每只蚂蚁身上带着标明「我干哪一行」的表皮碳氢化合物气味,在巢口用触角碰一下就闻到。单只蚂蚁的规则粗略是:「单位时间里我碰到多少个刚从外面回来的觅食蚁?碰得频繁 → 外头有戏 → 我也出去;碰得稀 → 待着。」没有一只蚂蚁在统计,整个巢却做出了一个统计判断。信息不在任何个体脑子里,它在相遇率里。
戈登还发现更怪的事:蚁群会随「年龄」变化——年轻的蚁群更急躁好斗,十几年的成熟蚁群更稳当、对干扰的反应更有节制。可是单只工蚁只活约一年,没有任何一只蚂蚁活得够久去经历这个变化,蚁后也没在「学习」。那「变成熟」发生在哪儿?只能发生在群体这一层。这也是它改变你看世界的地方:当你在一个组织、一个市场、一场舆论里看到明显的「意图」,第一反应通常是去找那个主使者;复杂系统告诉你,最常见的答案是没有主使者,只有一堆局部规则加上互动的密度。
要把「信息在相遇率里」说得更硬,得先把「信息」讲清楚。第一条线索是麦克斯韦妖(Maxwell's demon):盒子中间有隔板和一扇小门,门口坐个小妖精,看见快分子飞来就放右边、慢分子放左边——不出力气,一边就热一边就冷,熵(entropy,粗略讲即「无序程度」;热力学第二定律说封闭系统的熵只增不减)凭空减少了。这悖论困了物理学家一百多年,最终由西拉德、兰道尔与班尼特接力解决:妖精必须先「知道」分子快慢,而记忆有限,它迟早要擦掉旧记录腾地方;而『擦除信息』这个动作本身,在物理上必然向环境释放至少 kT·ln2 的热量(兰道尔原理,k 为玻尔兹曼常数、T 为温度)。把这笔账算进去,第二定律分毫不差。结论改变了学科版图:信息不是抽象的,它是物理的、有能量成本——「把生命系统当成信息处理器」于是不再只是比喻。
第二条线索是香农信息论:香农(Claude Shannon)把「信息量」定义成消息消除了多少不确定性,单位是比特(bit)——一次抛硬币的结果给你 1 比特。这个定义极其有用(今天所有压缩与纠错都建在上面),却有个缺口:它完全不管意义,随机噪声的熵最高,「我爱你」和一段乱码可以有同样的比特数。于是复杂性科学卡住了:它想说蚁群、细胞、大脑在「处理信息」,可现成的信息论只量得出比特,量不出「这个信号对这个系统意味着什么」。『意义』至今没有像比特那样干净的度量,这是这门学科最重要的缺口之一。
这是全书最有勇气的一章:一门叫「复杂性科学」的学问,居然量不出复杂性。米歇尔摆了十来种候选度量,每种都有道理,也都在某处崩掉:
结论很坦率:这些度量互不相容、各管一段,说明「复杂」很可能不是一个量,而是像「生命」一样的一簇性质。下次谁说「这个系统更复杂」,你该问——哪个意义上的复杂?信息量?结构深度?层级数?还是只是「我看不懂」?
元胞自动机(cellular automaton, CA)是这门学科的果蝇:一排格子,每格非黑即白,每步所有格子同时按同一条规则更新,而这条规则只允许看自己和左右邻居。就这么点东西却能干出惊人的事:沃尔弗拉姆(Stephen Wolfram)把最简单的一维规则全部编号研究(256 条),发现里面藏着从死寂、到周期图案、到看不出规律的伪随机(规则 30,后来真被用作随机数发生器),乃至规则 110——它被证明是「通用的」,即给它合适的初始格局,就能算出任何可计算的东西。一条只看左右邻居的规则,构成了一台完整的计算机。
更早也更深的是冯·诺伊曼。他想回答:一台机器能不能造出跟自己一样复杂的机器(而不是越造越简单)?他设计了一个纸上的元胞自动机(29 种状态),里面有一台「通用构造器」,外挂一条描述自身的纸带。关键洞见是那条纸带必须被用两次:一次被『读懂并执行』(照着说明造出机器),一次被『不求甚解地抄写』(复制给后代)。这是 1940 年代末的事,比沃森与克里克解出 DNA 双螺旋早了好几年——而 DNA 干的正是这两件事:转录翻译(当指令读)与复制(当数据抄)。一个纯逻辑推演,提前猜中了生命的核心机制。
米歇尔自己的研究把这条线推到「涌现的计算」:她与克拉奇菲尔德等人不去设计规则,而用遗传算法演化元胞自动机,让它判断初始格子里黑的多还是白的多——每个格子只看得见邻居,却要答一个全局问题。演化出的高分规则,工作方式只有换个描述层次才看得懂:局部先形成几块颜色一致的「区域」,区域之间的边界像粒子一样在时空图上移动、相撞、湮灭,答案正是由这些「粒子」的碰撞算出来的。粒子不在规则里,也不在任何一个格子里——它是涌现出来的信息载体。要看懂一个复杂系统在算什么,往往得先找到它真正的计算单元,而那个单元通常不是它的零件。
遗传算法是霍兰德的发明,把达尔文那一套搬进计算机:候选解编码成一串「基因」,随机生成一大群,在任务上打分(适应度),分高的多留后代,后代经过交叉(两个亲本各取一段拼起来)与变异(随机改几位),重复几百代。米歇尔用一个特别憨的例子把它讲活了:捡易拉罐的机器人 Robby。它在 10×10 的格子世界里捡罐子,每步只看得见自己所在格与上下左右五格(有罐 / 空 / 是墙),要在有限步数内尽量多捡、少撞墙。米歇尔先亲手写了一套她认为很合理的策略(见罐就捡、没罐就往有罐的方向走、否则随机走),再让遗传算法从随机策略开始演化几百代。演化出来的策略明显赢过她手写的那套(书中给的分数大意是 483 对 346)。更有意思的是它怎么赢的:演化出的 Robby 有时故意不捡脚下的罐子,先走开绕一圈再回来——那颗没捡的罐子成了一个路标,让这个没有记忆的机器人靠「我看得见一颗罐」来定位自己,从而系统地清扫一条走廊,而不是瞎转。
分量在两点。其一,变异加选择能找到设计者想不到的解,因为它不受「这样做讲得通吗」的约束——把罐子当路标这种主意,没有哪个程序员会先验地写下来。其二,代价是可解释性:演化出的策略只是一张查找表,你得反过来做侦探才看得懂它凭什么好。这对张力今天听着格外耳熟——它正是当代机器学习的处境,而这本 2009 年的书已经讲透了。
全书第三部想论证:蚁群、免疫系统、代谢网络、大脑材料完全不同,却在用同一套架构处理信息。最能服人的是免疫系统——它要认出所有病原体,包括从没出现过、明天才变异出来的。解法不是「事先记住一张黑名单」,而是先随机造出海量可能性,再让环境来筛:身体里万亿量级的淋巴细胞,每个表面的受体形状由若干基因片段随机重组拼出;某个受体一旦碰巧和入侵者贴合,这个细胞就被激活、疯狂增殖(克隆选择),且增殖时开启高频突变,贴得更紧的子代被优先留下。这是一场几天之内在你身体里跑完的微型演化。
| 蚁群 | 免疫系统 | 大脑 | |
| 简单部件 | 工蚁 | 淋巴细胞 | 神经元 |
| 信息藏在哪 | 相遇率、信息素浓度 | 各类受体的细胞数量分布 | 群体放电的统计模式 |
| 随机性的用处 | 乱走,撞见新食源 | 随机重组受体、循环巡逻 | 噪声助推探索与可塑性 |
| 反馈怎么调配 | 好路上信息素越走越浓 | 贴合者被克隆放大 | 有用的连接被强化 |
| 谁在指挥 | 没有谁。全局行为由局部互动加反馈自己长出来。 | ||
米歇尔提炼的共同架构:统计性的信息表征 + 拿随机性当燃料 + 大规模并行试探 + 用反馈把资源调向有戏的方向。
这套架构的核心叫探索与利用的权衡(exploration–exploitation trade-off):资源有限时,既要继续押已见效的方向(利用),又要留一部分去试没走过的路(探索)——押太狠会被环境变化打死,试太多则永远吃不饱。蚁群、免疫系统、演化、强化学习,以及你决定「换工作还是留下」,本质上是同一道题。但米歇尔很克制:她明说这是共同原理的候选清单,不是理论,因为它们目前还给不出定量预测。
1990 年代末,复杂性科学有了新的通用语言:网络——把系统抽象成一堆节点和连边,再问这张图长什么样。两个发现引爆了整个领域。其一是小世界网络(small-world network)(瓦茨与斯托加茨,1998)。规则网络(每人只认识邻居)抱团紧但绕远;随机网络路径短却不抱团。他们发现:在规则网络里只要随机重连极少数几条边,平均路径长度就断崖式下跌,而抱团程度几乎不变。这解释了「六度分隔」——你的社交圈高度重叠,但只需极少数「跨圈的弱连接」,世界就近在咫尺;同一结构也解释了谣言与流感为何传得那么快。
其二是无标度网络(scale-free network)(巴拉巴西与阿尔伯特,1999)。万维网、论文引用、航线网中,节点连接数的分布不是钟形曲线,而是幂律(power law):绝大多数节点只有寥寥几条连边,极少数「枢纽」(hub)却有成千上万条。「无标度」是说这张网没有「典型连接数」可言——人的身高有个典型值 1.7 米,网页的「典型链接数」却说不出来。生成机制简单得让人不安:增长 + 优先连接(preferential attachment),新节点不断加入且更倾向连到已经很红的节点上。富者愈富就够了,不需要任何设计。
由此得到一条极有用的推论:稳健却脆弱(robust yet fragile)。随机删掉节点,无标度网络几乎不受影响(随机砸到的基本都是小角色);可一旦有人专挑枢纽下手,网络会迅速碎成一地。这重塑了我们对互联网抗毁性、金融传染、疫苗接种策略(优先给「高连接度的人」打)、物种灭绝连锁反应的理解——同一个结构,既是它扛得住的原因,也是它一击致命的原因。米歇尔在这里也踩了刹车:幂律在统计上极难验证,双对数坐标上看着像直线的东西很多其实是对数正态之类的分布,而且不同机制都能生成幂律。
全书最像「定律」的一块在这里。克莱伯定律(Kleiber's law):动物的基础代谢率(每天烧掉多少能量)与体重的关系不是正比,而是 体重的 3/4 次方——体重是老鼠一万倍的牛,代谢率只有老鼠的约一千倍。不止代谢:心率大致按体重的 −1/4 次方走(越大越慢),寿命按 +1/4 次方走(越大越长),两者相乘约等于常数——从老鼠到大象,一生的心跳总数大致在同一量级(粗略是十亿次的量级)。「四分之一次幂」在生物学里像鬼影一样反复出现,跨越 20 多个数量级的体型范围。
怪就怪在,纯几何预测的应该是 2/3:热量从表面散失,表面积按长度平方涨、体积按立方涨。多出来的那一点从哪来?韦斯特、布朗与恩奎斯特(West, Brown & Enquist)的解释是:限制生物的不是表面积,而是给全身供货的那套分形分支网络——血管、气管、植物的维管束。这套网络须满足三条:填满整个身体(每个细胞都得供到)、末端单元大小固定(毛细血管在老鼠和大象体内一样粗)、在演化压力下把输送的能量耗散降到最低。三条推下去,数学上给出的正是 3/4。约束不是几何的,是「配送网络」的。
更大胆的一步是推向城市:贝当古与韦斯特发现城市也有标度律,方向却相反——基础设施(加油站数、路网长度)随人口亚线性增长(指数约 0.85,跟生物一样有规模经济),而专利数、工资总额、GDP 与犯罪数却超线性增长(指数约 1.15,人口翻倍,它们涨得比一倍还多)。「人越多,人均产出的好东西和坏东西都更多」——这是城市与生物体最根本的分野:生物长大变慢,城市长大变快。米歇尔同样附上怀疑(代谢指数是否普遍为 3/4,生物学界一直有争论),这也是全书的态度:把最漂亮的候选定律端给你看,同时把它脚下的裂缝也指给你。
全书五部,是一条上升的线:先备齐四件工具,再看它们如何合成「涌现的计算」,最后诚实地清点战果。
① 复杂系统的定义很硬:大量简单部件、没有中央控制、只按局部规则行事,却涌现出复杂的集体行为、精巧的信息处理与适应能力——航天飞机零件再多也不算,因为它有总设计师。
② 混沌说了件反牛顿的事:确定 ≠ 可预测。一行确定的公式就能把小数点后第十位的误差放大成完全不同的未来;长期预报的不可能是原理性的,不是我们不够聪明。
③ 但混沌也给了这门学科最大的希望:普适性——形状迥异的系统通向混沌的路,竟按同一个常数(费根鲍姆常数 4.6692…)收缩。
④ 蚁群没有总指挥:蚁后只管下蛋,任务调度靠蚂蚁互相碰触的频率。没有一只蚂蚁在做统计,整个巢却做出了统计判断——信息不在任何个体里,它在互动的动态里。
⑤ 信息是物理的:麦克斯韦妖破不了热力学第二定律,因为它擦除记忆时必然向环境放热(兰道尔原理)。但香农的比特只量得出「消除了多少不确定性」,量不出意义——「意义」至今没有度量。
⑥ 一门叫复杂性科学的学问居然量不出复杂性:最短程序长度把随机噪声排在最前(反了),逻辑深度抓住了「来之不易的结构」却算不出来,统计复杂度说复杂住在秩序与随机之间那条窄带上。多半「复杂」根本不是一个量。
⑦ 冯·诺伊曼在 DNA 结构揭晓前就纯逻辑推出:自我复制机必须把自身描述用两次——一次当指令执行,一次当数据照抄。这正是 DNA 的转录与复制。
⑧ 演化能找到设计者想不到的解:演化出的捡罐机器人会故意不捡脚下的罐子,把它留作路标给自己定位。代价是可解释性——你得反过来做侦探才懂它凭什么好(今天的机器学习正处在同一处张力上)。
⑨ 网络给出两条硬结论:少数「跨圈弱连接」就让世界变小(小世界);「富者愈富」自动长出枢纽(无标度),于是系统稳健却脆弱——随机故障几乎无感,专打枢纽则一击致命。
⑩ 最该带走的是作者对自己领域的诚实:它眼下处在前牛顿阶段——看到幂律不等于找到了机制,能重现现象的模型不等于对现象的解释,而「涌现」若说不出是哪些局部规则、经由哪种互动产生了哪个可测的整体性质,就只是「我不知道」的体面说法。