第 01 章

什么是复杂系统 · 为什么整体不是部分之和

读完能分清『复杂(complex)』和『复杂繁琐(complicated)』的根本区别,理解涌现(emergence)—— 简单的局部规则怎么催生出无法从部件读出的整体行为 —— 并拿到一套认出复杂系统的镜头(涌现 / 反馈 / 非线性 / 自组织 / 对初值敏感 / 适应)。

约 1.5 小时
本章要破的,是你对『复杂』这个词最自然的那个理解

这是复杂系统路书的第 1 章,约 1.5 小时,纯阅读。它是整条路书的入口,后面所有内容都建立在这一章立起来的那个区分之上。

你大概率听过复杂系统这个词,而且脑子里已经有了一幅画面:一个庞大的、零件多到数不清的、牵一发动全身的东西。这幅画面很自然,却恰恰是错的,或者说,它把另一个词的样子安到了复杂系统头上。这一章要做的第一件事,就是把这幅画面换掉,换成一幅更准、也更有用的:复杂不在于零件多,而在于零件之间的交互没法拆开来理解。等这个区分立住了,你会发现自己其实早就泡在复杂系统里了,你写的大型软件、你刷的信息流、你堵在里面的早高峰,都是。

本章三节:第一节用一架飞机和一个蚁群,把复杂(complex)和复杂繁琐(complicated)分开;第二节讲涌现,看简单到能写进几十行程序的局部规则,怎么长出谁都没设计的整体行为;第三节给你一套由六个签名组成的镜头,让你以后在任何领域都能一眼认出:这是一个复杂系统。

0. 先认清:你每天都泡在复杂系统里,只是没这么叫它

先从一个你可能有过的体感说起。如果你写过、或者维护过一个长到一定规模的软件系统,你多半经历过这样的时刻:改了一行看起来人畜无害的代码,线上却塌了一片看似毫不相干的功能;某个小功能毫无预兆地被用爆,流量曲线一夜之间翻了几十倍;团队里没有任何一个人能完整说清"这个系统现在到底在干什么",它好像长出了自己的脾气。这种"系统有了自己的意志、不再完全听设计者的"的感觉,不是你的错觉,也不是工程没做好,它是一类系统的固有属性,而且这类系统有一门专门研究它的科学。

这门科学叫复杂系统(complex systems),它研究的不是某一个具体领域,而是一种横跨所有领域的现象:蚁群、城市、经济、大脑、免疫系统、生态、互联网,这些东西彼此八竿子打不着,却共享同一套底层逻辑,以至于研究蚂蚁的人和研究股市的人能坐在一张桌子上,用同一套词汇互相听懂。这一章不会把这些领域逐个讲一遍,那是后面的事。这一章只做一件最要紧的事,就是把这套词汇里最核心、也最容易被误解的那个概念交到你手里,让你拿到一副能认出复杂系统的眼镜。戴上它,你再回头看自己写的系统、看新闻里的市场崩盘、看早高峰的堵车,会发现它们忽然都属于同一个家族。

1. Complicated ≠ Complex · 一架飞机和一个蚁群

Setup · 你以为「复杂」就是「零件多、很繁琐」

大多数人,包括很多受过良好工程训练的人,默认把复杂等同于一件事:零件多、环节多、读起来费劲。按这个理解,一架现代客机当然是复杂的,它有几百万个零件;一份缠绕着无数边界条件的报税表也是复杂的;一套层层调用的老代码同样是。这个理解不能说全错,它抓住了"难"这个直觉,但它把"难"和"复杂"画上了等号,而这恰恰是这一节要拆开的地方。复杂系统科学里的复杂,指的根本不是难不难、零件多不多,它指的是另一件事,一件用零件数量完全度量不出来的事。

要看清这一点,最快的办法不是给复杂下定义,而是把两个东西摆在一起,让你亲眼看出它们是两类。一个是那架几百万零件的客机,另一个是你家后院草地上的一窝蚂蚁。直觉会说客机当然比蚂蚁窝复杂得多,它零件多了好几个数量级。但接下来你会看到,在复杂系统科学的意义上,结论恰恰反过来:那架飞机不复杂,那窝蚂蚁才复杂。

Build-up · 把飞机和蚁群摆在一起比

先看飞机。飞机的零件确实多到吓人,但它有一个决定性的性质:它是可拆解的。每一个零件都有人懂,都有图纸,都写在手册里;工程师可以把飞机拆成系统、子系统、零件,一层层理解清楚,再装回去,而装回去之后它的行为和拆之前一模一样。更关键的是,它的行为是可预测的:给定输入,你能事先算出输出,液压、气动、控制,每一处的因果都是设计出来、并且能在图纸上推演的。这种系统在复杂系统科学里有个专门的词,叫复杂繁琐(complicated)。它难,它庞大,但它的难是"零件多、要学的东西多"这种难,本质上是可以被一个足够大的团队、一套足够厚的手册驯服的。飞机没有自己的脾气,它老老实实地等于它所有零件按图纸拼起来的那个总和。

再看蚂蚁窝。一窝蚂蚁的"零件"反而少得多,而且每只蚂蚁本身蠢得可怜:它没有全局地图,看不见整个蚁群,记不住复杂的计划,能做的只是对鼻子底下的几条信息素痕迹做出简单反应。可就是这样一群笨零件,合起来却能干出惊人的事,它们能在变化的环境里稳定地找到食物、自动选出最短路径、按需调配出去觅食的工蚁数量,整个蚁群表现得像一个有智能、会算计的整体。现在请你找一找:这份觅食的智能,到底装在哪只蚂蚁脑子里?答案是,哪只都没有。没有哪只蚂蚁在指挥,蚁后只管产卵、并不发号施令,没有总规划、没有领导、没有蓝图。那份智能不在任何一个零件里,它只存在于成千上万次简单交互彼此叠加出来的那个整体层面上。你把蚁群拆开,一只一只地研究,会发现每只蚂蚁都平平无奇,而你要找的那个智能,在拆开的瞬间就消失了。

复杂繁琐(complicated)· 一架飞机飞机机翼液压控制输入可预测输出可拆解 · 可预测装回去行为不变 · 行为住在零件里复杂(complex)· 一个蚁群觅食智能(整体层面涌现)无中心 · 无蓝图 · 每只只看信息素智能不在任何一只蚂蚁里拆开就消失 · 行为住在交互里
复杂 ≠ 零件多。左:飞机几百万零件,却能拆成机翼/液压/控制逐层看懂、装回去行为不变,输入也能算出可预测的输出 —— 这叫复杂繁琐(complicated)。右:蚁群没有中心、没有蓝图,每只蚂蚁只对鼻子底下的信息素做反应,觅食的智能不在任何一只蚂蚁里、只活在交互叠出来的整体上,拆开就消失 —— 这才是复杂(complex)· 对应正文 第 1 节

Reveal · 复杂不在零件多少,在交互能不能拆开

把飞机和蚁群的对比收口成一句话,你就拿到了这一章最核心的那个区分。复杂繁琐的系统,行为住在零件里,所以你能把它拆开、逐个理解、再装回去,而它照旧;复杂的系统,行为住在零件之间的交互里,所以你一拆,要研究的那个东西本身就没了。零件的数量在这里几乎不说明任何问题:飞机几百万零件却复杂繁琐,蚁群零件少得多却复杂。真正分开这两类的,是行为能不能被还原到部件上,能,就是复杂繁琐;不能,行为是从交互里冒出来的,那才叫复杂。

复杂繁琐(complicated)的系统能拆开来理解、再装回去而行为不变;复杂(complex)的系统,它的行为活在部件的交互之中,一旦拆开就消失了。复杂从来不是零件多少的问题,而是交互能不能被还原的问题。

(说一句实话,以免你日后读到别处犯迷糊:complicated 和 complex 这组对照,被管理学里的 Cynefin 框架推广得很广,它是一个好用的入门坡道,但严格的复杂系统科学并不把"繁琐"当成一个理论术语,研究者真正盯着的是后面那个"复杂"到底由什么构成。所以请把这组对照当成上手的扶手,而不是这门科学的全部结论。)

Implication · 「拆开来理解」这把老钥匙,在复杂系统上拧不动

这个区分一旦立住,一个相当有分量的后果就跟着来了。我们从小被训练的那套理解世界的默认方法,是还原:遇到一个难懂的大东西,就把它拆成小块,搞懂每一块,再把理解拼起来。这套方法对付复杂繁琐的系统极其有效,飞机、发动机、操作系统,都是这么被人类驯服的。但对复杂系统,这把钥匙会在锁孔里拧不动,因为你要理解的那个整体行为,根本不在任何一块里,它在块与块的交互里,你拆得越干净,离它越远。这也正是为什么,面对一个足够大的软件系统,"把每个服务单独搞懂"这种纯还原式的排障,常常解释不了线上那场级联崩溃,因为崩溃是交互涌出来的,不是哪个服务里写着的。那么,既然不能靠拆,这种"从交互里冒出来"的整体行为到底是怎么来的?这就是下一节那个核心概念,涌现,要回答的问题。

2. 涌现 · 简单的局部规则,怎么长出谁都没设计的整体行为

Setup · 如果没有谁在指挥,秩序从哪来

上一节留下了一个让人不太安心的画面:蚁群表现出智能,却没有任何一只蚂蚁在指挥;整体有秩序,却没有蓝图、没有中心。这其实违反了我们的一个深层直觉,我们总觉得,有组织的行为背后一定站着一个组织者,整齐的队列后面得有个发号施令的人,一个能运转的系统总该有个设计它、控制它的大脑。可复杂系统反复打脸这个直觉:大量有序、精巧、看起来像被精心设计过的整体行为,背后空无一人。这种"没有指挥者,秩序却自己冒出来"的现象,就是复杂系统科学的心脏概念,涌现(emergence)。这一节要让你相信,涌现既不神秘也不玄,它是一种机制,而且是一种你今晚就能在自己电脑上跑出来的机制。

Build-up · 三个小例子,规则简单到能写进几十行程序

最能让人信服的办法,是看几个例子,它们的局部规则简单到近乎可笑,涌出来的整体行为却复杂到惊人。

第一个例子是康威生命游戏(Conway's Game of Life),数学家 John Conway 在 1970 年想出来的,靠科普作家 Martin Gardner 当年十月在《科学美国人》专栏里一介绍,立刻引爆了无数读者。它的规则简单到一句话能说完:在一张方格纸上,每个格子要么活要么死,下一刻它的死活只取决于身边八个邻居里有几个活着,邻居太少就孤独而死、太多就拥挤而死、不多不少才活下来或新生。就这么几条只看邻居的死板规则,不引入任何别的东西,格子们却会自发拼出会移动的"滑翔机"、会周期闪烁的振荡子、甚至能拼出可以做任意计算的结构,整个棋盘后来被证明强到足以模拟一台通用计算机。没有谁画过一架滑翔机,它是从那几条规则里自己掉出来的。

第二个例子来自计算机图形学。1987 年,Craig Reynolds 发表了一个模拟鸟群的模型(论文叫《Flocks, Herds, and Schools》,发在当年的 SIGGRAPH 上),他给每只虚拟的"鸟"只装了三条本地规则:别撞上靠太近的邻居(分离)、大致朝邻居们的平均方向飞(对齐)、向邻居们的中心靠拢一点(聚合)。每只鸟都只看得见身边几个同伴,谁也没有整群的视野,更没有一个领头者在统一调度。可一旦放它们一起飞,屏幕上就涌出了那种我们在黄昏天空里见过的、像活物一样流动变形的鸟群。这个模型后来被电影工业反复拿去生成成群的蝙蝠和企鹅,而它的全部秘密,就是那三条只管邻居的简单规则。

第三个例子最反直觉,来自经济学家 Thomas Schelling 在 1971 年提出的居住隔离模型(发表于《Journal of Mathematical Sociology》)。设想一座城市,每个居民都相当宽容,他们乐意住在混居的社区里,唯一的小小要求,只是不希望自己周围的同类邻居少到让自己成了极少数。这是个非常温和、几乎称不上偏见的偏好。可当 Schelling 让这群温和的人按这条小规则一步步搬家,整座城市却几乎必然滑向接近彻底的隔离,黑白泾渭分明,谁也不挨着谁。最刺痛人的地方在于,这个谁都不想要的极端结局,不是任何一个种族主义者推动的,它是从一大堆"我只是不想当极少数"的温和念头里,自己涌出来的。Schelling 由此点破了一句要命的话:个体的意图和集体的结果之间,没有简单的对应关系。

简单局部规则涌现的整体行为① 生命游戏每格只看 8 个邻居的死活:太挤/太孤就死,不多不少才活会移动的滑翔机② boids 鸟群分离对齐聚合每只只看身边几只流动的鸟群③ Schelling 隔离每个人只是不想当极少数(很温和的偏好)整座城市泾渭分明地隔离
涌现的同一个模板,跑三遍:简单的局部规则(左)→ 谁都没设计的整体行为(右)。① 生命游戏:每格只看 8 个邻居的死活,却自己掉出会移动的滑翔机;② boids:每只鸟只守分离/对齐/聚合三条本地规则,屏幕上涌出流动的鸟群;③ Schelling:每个人只是不想当极少数,整座城市却几乎必然滑向泾渭分明的隔离。没有指挥者,整体图案无法还原到单条规则 · 对应正文 第 2 节

Reveal · 整体不是「更多」,是「不同」

这几个例子背后,是同一句被引用了无数次的话。1972 年,物理学家、后来的诺奖得主 Philip Anderson 在《科学》上发表了一篇题为《More Is Different》的短文,矛头直指那个根深蒂固的还原主义信念。Anderson 承认还原主义本身没错,万物确实都遵循同样的基本规律;但他指出,这绝不意味着你能反过来,从那些基本规律一路推演、把整个世界重新构造出来。每当系统的尺度和复杂度上一个台阶,全新的性质就会冒出来,而这些新性质没法从下一层的规律里事先算出来。他留下一句话,几乎成了整个复杂系统领域的旗帜:整体变得不只是更多,而是非常不同(the whole becomes not merely more, but very different from the sum of its parts)。涌现说的正是这件事,新的整体性质,不在任何部件里,也推不出来,它是部件们在更大尺度上交互时,真真切切冒出来的新东西。

把万物还原成基本规律,不等于能从基本规律重建万物。每上一个复杂度台阶,都会冒出无法从下层推导的新性质,整体不只是更多,而是与部件之和非常不同。

Implication · 涌现不是玄学,是能在笔记本上跑出来的

理解了涌现是"冒出来的新性质",一个常见的误会就能顺手解掉。很多人一听"整体大于部分之和、推都推不出来",立刻觉得这是在讲玄学,是某种科学解释不了的神秘力量。恰恰相反。回头看那三个例子,生命游戏和鸟群都是确确实实的程序,你今晚花个把小时,用几十行代码就能把它们跑起来,亲眼看着滑翔机从死板的规则里爬出来。这里没有任何超自然的东西,所谓的"神奇",全部来自一件朴素的事:整体行为没法被还原到部件上。涌现不是解释的终点,而是一种可以被建模、被模拟、被一点点看清机制的现象。把这点想透,你看复杂系统的眼光就变了:你不再指望靠拆解去理解它,而是开始去问,是哪些简单的局部交互,涌出了眼前这个整体。带着这个问题,我们就能进入最后一节,给你一套现成的镜头。

3. 认出复杂系统的六个签名

有了前两节的底子,这一节给你一套能直接上手的东西:六个反复出现的签名。它们不是六条互相独立的定义要你背下来,而是一副镜头的六个刻面,以后你面对任何一个陌生系统,挨个比划一遍,就能判断它到底是复杂繁琐、还是真正的复杂。

先看让系统动起来的两个签名:反馈和非线性反馈回路(feedback loop)指的是系统的输出会绕回来变成它自己的输入,从而影响接下来的走向。它分两种:正反馈不断自我放大,像一段内容的病毒式扩散、像挤兑时越慌越取的银行;负反馈则把系统往回拉、使它稳定,像空调温控、像供需调节价格。紧挨着反馈的是非线性(nonlinearity),意思是输出不和输入成比例,小小的扰动可能掀起惊人的后果,巨大的投入也可能几乎激不起水花。正是这两个签名,让复杂系统的因果不再是一条直线,也让"加倍投入就加倍产出"这种线性直觉彻底失灵。

再看关于秩序从哪来的两个签名:自组织和涌现。自组织(self-organization)说的是,全局的秩序和图案,是从局部交互里自己长出来的,没有中央控制器、也没有外部蓝图,鸟群的形状、蚂蚁的路径、市场里的价格,都是这么来的;斯坦福研究蚂蚁的 Deborah Gordon 有句话点得很透,在一个蚁群里没有谁在管事。涌现则是上一节的主角,新的整体性质在更大尺度上冒出来、且无法还原到部件。这两个签名常常结伴出现,自组织偏重"没人指挥",涌现偏重"冒出新性质",合起来就是那句"秩序无需领导者"。

最后看两个更深的签名:对初始条件敏感,和适应。对初始条件敏感(sensitivity to initial conditions)是混沌理论的核心,气象学家 Edward Lorenz 在 1963 年发现,一组完全确定的方程,只要起点差了极小一点,结果就会指数级地越拉越开,以至于长期预测变得不可能,尽管系统本身没有半点随机。需要说一句精确的话:那个著名的"蝴蝶扇翅"的比喻,通常被追溯到 Lorenz 后来(一般记为 1972 年)的演讲,而不是 1963 年那篇论文本身,别把比喻安错了地方。第六个签名是适应(adaptation),它把活的复杂系统和单纯的物理图案分开:大脑、经济、生态里的部件会根据经历改变自己的策略,整个系统在学习、在演化,这正是 John Holland 命名的复杂适应系统(complex adaptive systems)里"适应"二字的来历。

把这副六刻面的镜头举起来,对准你熟悉的东西,你会看到它们纷纷亮起来。互联网就是教科书级的例子:它没有总设计师,却自组织出了一种少数巨型枢纽、海量小节点的结构,物理学家 Barabási 和 Albert 在 1999 年用"偏好连接"解释了这种枢纽是怎么长出来的,新节点倾向于连向已经很热门的节点,于是富者愈富。(这里要诚实补一句:早期那种说真实网络普遍都是无标度的论断,后来被更严格的统计检验泼了冷水——Broido 与 Clauset 在 2019 年系统检验了近千个真实网络,发现严格意义上的无标度其实相当罕见,不少网络用对数正态分布拟合得一样好甚至更好,连互联网到底算不算都有争议;所以把无标度当成一种常见且重要的模式就好,别当成放之四海皆准的铁律。)市场里的价格是无数交易涌现出的信号,崩盘则是一场正反馈的级联;早高峰那种没有事故却凭空堵死的"幽灵堵车",是局部刹车经非线性放大后的涌现;而你写的大型软件系统,那场牵一发动全身的级联故障、那次毫无预兆的病毒式增长,正是反馈、非线性和涌现联手的结果。这些系统过去看起来风马牛不相及,此刻在同一副镜头下,露出了同一张脸。

综合 · 把镜头装上

回过头看这一章走过的路。你进来时,脑子里的复杂大概等于"零件多、很繁琐";现在你知道了,那其实是复杂繁琐,真正的复杂讲的是另一回事,是行为活在交互里、拆开就消失的那种不可还原性。你也见过了这种不可还原性是怎么发生的,简单到几十行代码的局部规则,能涌现出谁都没设计的整体行为,而这不是玄学,是能在笔记本上跑出来的机制。最后你拿到了一副由六个签名组成的镜头:反馈、非线性、自组织、涌现、对初值敏感、适应。

这副镜头,就是整条路书的地基。从下一章起,我们会逐个深挖这些签名背后的机制,看它们怎么在网络、在生态、在经济、在你写的系统里具体运转。但真正的收获从现在就开始了:你以后再遇到一个牵一发动全身、没人完全说得清、好像有自己脾气的系统,不会再笼统地说它"很复杂",你会停下来问一句,它的整体行为是从哪些局部交互里涌出来的。会问这句话,你就已经站进了复杂系统的门里。

本章术语速查

  • 复杂系统(complex system):整体行为由大量简单局部交互涌现而成、无法还原到单个部件的系统。判据不是零件多少,而是交互可否被还原。
  • 复杂繁琐(complicated):零件再多也可拆解、可预测、装回去行为不变的系统(如飞机)。与复杂相对,是入门用的对照坡道(源自 Cynefin 框架)。
  • 涌现(emergence):大量局部交互在更大尺度上产生的、无法从部件推导的新整体性质。复杂系统科学的核心概念。
  • 自组织(self-organization):全局秩序在没有中央控制器、没有外部蓝图的情况下,从局部交互中自发形成。
  • 反馈回路(feedback loop):输出绕回成为输入。正反馈自我放大,负反馈趋于稳定。
  • 非线性(nonlinearity):输出不与输入成比例,小因可致大果,反之亦然。
  • 对初始条件敏感 / 混沌(sensitivity to initial conditions):确定性系统中,微小的起点差异指数级放大,使长期预测不可能。
  • 复杂适应系统(complex adaptive system, CAS):部件会根据经历改变策略、整个系统在学习演化的复杂系统(John Holland 命名)。
  • 偏好连接(preferential attachment):新节点倾向连向已热门节点,导致"富者愈富"的枢纽结构,解释了网络里常见的无标度枢纽(无标度是否普遍、互联网算不算,2019 年后有争议)。

参考文献

入门必读

  • Complexity: A Guided Tour(Melanie Mitchell · Oxford University Press · 2009)· 面向非专业读者的最佳入门,用蚁群、大脑、免疫系统、互联网、经济串起整门学科,叙述风格本身就值得学。

引用出处

深 dive 资源(可选)

  • Hidden Order: How Adaptation Builds ComplexityEmergence: From Chaos to Order(John Holland · 1995 / 1998)· 复杂适应系统的奠基论述。
  • Santa Fe Institute · 复杂系统科学的发源地与大本营(创立于 1984)。
  • Self-organized criticality: An explanation of 1/f noise(Bak, Tang & Wiesenfeld · Physical Review Letters 59(4) · 1987)· 沙堆模型与"自组织临界",想要"混沌边缘"那层味道时再读。
  • Scale-free networks are rare(Anna D. Broido & Aaron Clauset · Nature Communications · 2019)· 对"真实网络普遍无标度"的系统性反驳;读完 第 3 节 的无标度,记得配上这一剂清醒。

下一章

这一章给了你认出复杂系统的镜头;接下来要做的,是把镜头对准镜头本身,逐个拆开这些签名背后的机制。下一站我们会从涌现与自组织的具体引擎讲起,看看在没有指挥者的前提下,秩序到底是通过哪几种可辨认的方式被一点点组织起来的。