蝴蝶不能导致风暴——关于“系统”的知识

此文是对《得到》万维钢[精英日课]之《“蝴蝶效应”我们都理解错了》一文的叙述形式和目的改写。原作者如有异议可告知则立行删除。


“蝴蝶效应”是人们经常谈论的一个典故,是说巴西的一只蝴蝶扇动翅膀,有可能在几周之后,在美国德克萨斯州,导致一场飓风。人们经常用蝴蝶效应形容微小的事情可能带来很大的影响。这是一个以讹传讹式的误传,实际上没有这回事。为什么要对这种传闻进行纠正,是因为这种说法会造成很严重的观念错误。

我们应该首先了解一下“蝴蝶效应”说法的来历。1961年,美国数学家爱德华·洛伦兹在用计算机通过某种算法模拟天气变化,原本某个输入参数的数值应该是 0.506127,有一次洛伦兹为了省事,就把该输入数值末尾进行了四舍五入,用 0.506 代替。这样的做法其实误差不到万分之二,是一个非常非常小的变化。可是洛伦兹发现,计算机输出的结果,却不是相差万分之二,甚至不止相差百分之二十,而是导致天气状态颠覆,变成了一个完全不同的天气状况。这就相当于说,你测量某地大气压数值如果有万分之二的误差,结果预测出来的天气就从晴天变成下雨了。这是一个令人绝望的发现。如果是这样的话,请问谁能保证测量的参数都无比准确呢?那所谓的天气预测还有什么意义呢?

数学家们可不是第一次遇到这种情况。数学家早就知道,对于“非线性系统”,结果有时候就是会对初始值非常敏感:初始值差一点点,结果就会相差很大。这也是“混沌”这个概念的起源。比如著名的“三体问题”就是一个非线性系统。三个临近的星球在引力作用下会如何运动?开始的位置差一点点,后面的结果就会很不一样。而“线性系统”就简单得多,输入差一点,输出就仅差一点,不会更多。洛伦兹有感于非线性系统的这个性质实在太不好对付,就作了一个夸张的比喻表述,说这简直就像是巴西的蝴蝶扇动翅膀所带来的德克萨斯的一场飓风啊……请注意,洛伦兹说的只是一个夸张的比喻而已,事实上蝴蝶是不会导致飓风的。

“蝴蝶效应”的误传使得人们对非线性系统无端地产生了恶劣的印象,其实非线性系统并非是完全不可控的系统。今天我们的天气预报是相当准确的,气象局通过卫星云图和地面气象数据,能够很好地预测阴、晴、雨、雪、飓风和台风,他们并不需要关注什么蝴蝶之类的无关因素。洛伦兹当初的计算机模拟算法存在一定的弊病,使用了一个过于敏感的模型。事实上并不是所有的非线性系统对所有的输入参数都那么敏感。天气系统并不是一个特别夸张的变化多端的系统。人们经常把股市也想象描绘成混沌系统,似乎有些看起来很无害的小波动,有可能带来股市比较大的波动。但就像古话比喻的那样,“没病不死人”,事实上小波动是不会导致股灾之类的大事件的。用“蝴蝶效应”形容小事导致了大事,这个观念是错误的。让我们分析一下什么叫“导致”。

我们先进行一个多米诺骨牌实验:从小到大的一堆多米诺骨牌排在一起,最大的一块有一个人那么大,最小的一块比指甲盖还小,只能用镊子拿。放倒最小的一块,骨牌就会连锁反应,最终把最大的一块也推倒。这不就是“蝴蝶效应”吗?一个极其微小的骨牌,却把一个很大的骨牌放倒了。但是我们要问,放倒最大一块骨牌的根本原因,是那块极其微小的骨牌吗?

不是。根本原因是这些骨牌的排列方式。这是一个极其危险的系统。因为就算最小的骨牌不倒,只要中间任何一个骨牌倒下,都会导致后面所有的骨牌倒下。

如果一定要追因问责的话,那么你要问的不是谁推倒了最小的骨牌,最小的骨牌有权做它想做的事情;你应该问的是,谁把骨牌排列成这个样子!这就好比说如果你把一堆炸药堆放在一起,只要一个火星就能引起爆炸,那么爆炸发生了,你埋怨的不应该是那个火星,你应该反思为什么炸药会以不安全的方式存放,并存放在不安全的地方。

火星总是会有的,微小的骨牌总是不稳固的,蝴蝶也一定要煽动它的翅膀。你应该关注和能够管理的是系统本身,而不是关注哪些微小外因最后变成导火索。什么样的系统是脆弱的、危险的系统呢?1979 年,美国宾夕法尼亚州的三里岛核电站,发生了一次严重的反应堆的融毁事故。事故虽然没有造成直接或者间接的人员伤亡,但却造成了 10 亿多美元的经济损失。当时美国政府请了一位叫查尔斯·佩罗的社会学家帮着分析事故原因。佩罗的研究,从此改变了人们对大事故的看法。与一般公众的想象相反,目前的核电站其实是一种非常不容易出毛病的设施。切尔诺贝利核电站是早期的没经验的设计,如同中国大炼钢铁似的蛮干的杰作。三里岛核电站也是老式的设计,安全性能与今天的新型核电站不能比。即便如此,它也没那么容易出问题。佩罗发现,三里岛事故是由三个原因同时起作用导致的。第一,反应堆有个给水系统,正常情况下应该供水,但不巧的是,给水系统发生故障,而备用的给水系统在之前维护时被关闭了,没有按规定打开。第二,给水故障了,反应堆温度上升,这时候有个泄压阀就会自动开启以降低温度。等到温度降下来后泄压阀应该自动关闭,但是泄压阀也发生了故障,没有及时关闭,于是导致反应堆的冷却剂往外流;第三,如果工作人员能正确判断发生了什么,也能立即采取有效措施。可是工作人员看到的指示灯显示泄压阀已经关闭了。这是由于指示灯的设计缺陷,显示灯应该显示泄压阀的真实状态,是处在打开还是关闭的状态,而不是显示已经“命令 ”泄压阀关闭,工作人员被误导了。这三件事只要有一件不发生,大事故就不会发生。英文中有个词叫“完美风暴”,意思是几个因素恰好一起发生而导致一个剧烈的后果。三里岛核电站事故,就是一场“完美风暴”。如果我们问,在这个事故中谁是那只煽动翅膀的蝴蝶,应该指责谁呢?可以想象,局外中的人们本能地都会是指责当时负责操作的工作人员,可这三件事情是在 13 秒内发生的,工作人员根本来不及反应。佩罗说,我们真正应该指责的是系统。

从三里岛事故出发,佩罗总结,现代几乎所有重大事故,包括飞机坠毁、化工厂爆炸等等,具有两个共同特征:第一个特征是“复杂”。中文的“复杂”对应到英文有两个词,一个是 complex,一个是 complicated。后者的意思差不多是“很麻烦、不容易理解”,而前者的意思是系统的各个部分互相关联,不是简单的连接。我们说的这个复杂是 complex。我们应该了解什么是系统,并尽量学会“系统思维”。任何系统都有正反馈和负反馈回路。正反馈回路会让系统不稳定,负反馈回路会让系统回归稳定。核电站这种系统实在太复杂了,其中有各种反馈回路,有些部分之间的关联还是隐藏的,隐藏于设计者的设计意图之外。如果有一个正反馈关联回路是设计者没想到的,在事故中开启了,就会很麻烦。第二个特征是“紧致耦合(tight coupling)”。所谓紧致耦合,就是这个系统缺少缓冲地带,错误冗余度太差。出现这种情况往往是系统过于追求效率,搞得系统元素都是一环套一环可丁可卯,结果错一步就导致后面全错。

比如大型桥梁就是一个不复杂、耦合也不紧的系统。哪个桥墩有问题,不至于马上波及别的桥墩,大桥对付着还能用上一段时间。道路交通也不复杂,但是耦合比较紧,一条路上任何一个地方出事故,整条路都得堵车。高等学府系统很复杂,但是耦合不紧,教授们就算搞搞政治斗争也翻不了天。可是像核电站和化工厂这种东西,如果又复杂耦合又紧,那就容易出大事故。

系统思维的结论是:大事故不会是蝴蝶随意煽动翅膀引起的。没有一个安全的系统,所谓安全意识就是一句空话。安全意识一定是在系统设计之初才能起到真正的作用。要把系统设计或调整好,要有定回路、缓冲区,要有错误冗余空间,这样我们才可以有恃无恐。反过来说,如果系统性能不行,人就算整天战战兢兢也难保不出事儿。

你可能感兴趣的:(蝴蝶不能导致风暴——关于“系统”的知识)