从微软蓝屏事件看现代社会的脆弱性(2)
在本系列的第一篇杂谈发布后,某位群友就该话题向我推荐了另一篇相关博文,文中提到的一些概念让本人深受启发。因此。在学习了一些相关内容后,本人决定就此话题再追加一篇杂谈,以便从另一个角度更深入地探讨这个问题。
至于那篇博文所在的博客,本人也在闲暇之余大致进行了翻阅,然后很快就被作者的视野之广博所惊讶,毕竟光是他给出的推荐电子书就有16GB之多,里面涉及的内容也是五花八门,涵盖政治、经济、哲学、历史以及他本行锁在的编程等内容。遗憾的是,可能因为作者的阅读列表中有关自然科学的内容占比太少,而在书单中占绝大多数的人文科学的书籍又大多是不存在结果唯一性和确定性的思维产物,其后果就是看得越多就越容易被其中潜藏的意识形态洗脑(正所谓知识越多越反动),因此博客作者的思想也是肉眼可见地随着时间越来越偏激,终于在2021年被抓进了局子——而他最引以为傲、在博客中多次提及的各种网络安全和社会工程学知识最终也没能保得住他。
这件事告诉我们,学文科的风险确实不小——毕竟自然科学的知识大多建立在对真实世界的观察和实际实验的基础上,所以它们(至少在初始的研究范围内)不太可能出错,只会随着实验精度的提升和研究对象的扩展而不断被新的理论修正;而社会科学的所谓“规律”则大多比较主观,并且强烈地受限于其所在的社会背景和文化环境,因此非常容易受到时代变迁和作者主观想法的影响,从而导致错误的价值观和世界观。此外,在网络上发表感想时尽量还是少碰政治,毕竟键政在大多数情况下很难对社会真的产生什么实际影响,反而容易因此遭到铁拳。子曰:“不在其位,不谋其政”,说的就是我们往往因为视野局限而难以做出最优决策,所以最好还是不要操心那些离日常生活太远的政治话题。
在上一篇杂谈中,我曾经在无意中提到“人与人之间的复杂网络”,而当时的我并没有意识到,这里的“复杂”其实并不仅限于其字面上的意思,而是涉及到一个巨坑的新兴学科领域——复杂性科学。从定义上说,复杂性科学主要研究的是由简单规则和局部相互作用产生的复杂行为和现象,这种系统通常被称为复杂系统。与简单系统(如简单的钟摆)或无组织随机系统(如大量分子的布朗运动)不同,复杂系统中的个体数量通常介于其二者之间(即微观与宏观之间的介观世界),并且其个体间必须具有强大但仅限于局部的联系。此时,系统的个体之间就很容易自发形成复杂但又具有一定规律的“半有序”结构(例如分形),即系统整体可以发现无法简单地从个体推出的模式。这种“整体大于部分之和”的现象在复杂性科学中被称为涌现。例如,计算机图形学家克雷格·雷诺兹就发现,仅通过局部的“分离、对齐、聚合”这三条简单规则,就可以模拟出复杂的鸟群群体行为,也就是著名的“Boids”算法。很显然,我在文章中提到的“人与人之间的复杂网络”,也是复杂性科学的经典研究对象之一。
作为一种典型的复杂系统,人与人之间的社交网络自然也展现出其他复杂系统的某些共性,例如自组织、多尺度和非线性等。这些内容如果全部展开讲的话,我估计这期杂谈甚至下一期杂谈都不用说别的了,所以这里仅仅关注复杂系统中最核心的一条规律:不确定性。由于在复杂系统中,个体之间的联系产生了无法简单地从底层规则中推导出来的全局性质(即上文中提到的涌现),而这种全局性质又很容易反过来对系统的个体行为施加影响,这就容易造成一种正反馈的循环。这种正反馈的机制可能使得系统的局部变化被快速放大,从而引发全局性的影响,以至于使整个系统朝着某个不确定的方向进行演化,甚至演变出全新的模式或状态,这个性质又被称为强涌现。然而,学过生物的人都知道,正反馈往往对于整个系统的稳定性十分不利,因为它倾向于推动系统加速远离其当前的状态(而不是像负反馈系统那样倾向于拉回初始状态),进而导致整个系统进入不可知的领域。不幸的是,复杂系统中的正反馈强度往往压倒负反馈,也就是说很小的扰动就可能突破局部负反馈产生的自稳定性势阱,使得复杂系统在长期上陷入完全不可预测的不确定性。这可能也是复杂性科学看起来相当“反科学”(尤其是在量子力学诞生之前的传统科学)的原因之一——复杂系统的变化过程十分依赖于初始条件和随机扰动,所以在相当程度上违背了传统科学所依赖的还原论。从某种程度上说,我在上一篇杂谈中在不清楚相关定义的情况下,已经无意中摸到了这些理论的一点皮毛。
类似地,在IT行业中计算机系统的各个节点和连接同样构成了一个高度复杂的网络,而这些节点之间的相互作用则在很大程度上决定了整个系统的运行状态。然而,这种网络常常会面临单点故障问题,即在一个系统中,如果某个特定组件或节点发生故障,那么整个系统的功能都将受到严重影响或彻底瘫痪。从这个角度出发我们不难发现,由于上文中提到的不确定性的存在,在一个复杂系统中可能到处都是单点故障。这可能是因为复杂系统的自组织过程未必总是产生去中心化的网络结构,而是因为系统内的某些机制(例如上一篇杂谈中的主题——去中心化网络上的马太效应)导致某些节点或组件逐渐占据主导地位(这也未尝不是一种正反馈),从而形成一个更为中心化的结构——而中心节点往往意味着潜在的单点故障。更可怕的是,这些中心节点并不总是显而易见的——它们常常隐藏在众多看似无关紧要的节点或组件中,在故障发生前表现完全正常,但在单点故障爆发时却能产生毁灭性的影响——正如此次微软蓝屏事件中的微软操作系统——中内置的安全软件——的公司里的一个小职员推送的一次小小更新。
可笑的是,即便我们已经发现了问题所在,却仍然无力去解决它。在实际的工程设计中,单点故障最常用的解决办法是冗余设计,即通过部署多个相同功能的设备来替代单一设备,从而确保在某个设备出现故障时,其他设备仍然可以继续运作,从而保证整个系统的稳定。经常看空中浩劫的朋友都知道,飞机上的多套相同备份仪表就属于这种设计模式。然而,这种解决方法在人类的社交网络中却通常难以为继,毕竟社会中的每个人都是独一无二的,而现在的生产力水平也不足以支持在每个岗位上都部署多个人随时待命,只有在少数关键岗位上能做到这一点(例如国家元首或战争指挥)。另一种可用的设计是故障隔离,即通过物理上的设计将整个系统分为多个隔离区,以防止一个分区的故障蔓延到其他部分,比如大型船舶中的多个水密舱,即使有一个进水也不至于让整艘船沉没。然而,在全球化浪潮不断加深的当下,这种试图阻碍人与人之间交流的办法似乎也并不能称为一个办法,毕竟就连在过去几十年中屡试不爽的“局部断网”,如今也已经被大规模普及的卫星通信所破解。
因此,我认为目前社会的潜在不稳定性问题,归根结底可以视为一个三难抉择问题,又或者说是一个不可能三角——即效率、稳定性和公平性这三者不可能同时得到保证。这一想法实际上借鉴了分布式系统中类似的CAP定理,即在一个分布式系统中,不可能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition Tolerance)这三个特性。具体来说,当系统在某些节点之间发生网络分区时,那么它必须在以下两者中做出选择:保持一致性,即所有节点都拥有相同的数据副本;或者保持可用性,即系统仍然可以响应请求。换句话说,分布式系统设计者必须在这三者之间做出权衡,无法同时实现所有目标。类似地,社会系统中的效率、稳定性和公平性之间也存在类似的问题。在上文中提到的冗余设计或者类似的负载均衡设计中,实际上就是通过资源的浪费提高系统的抗风险能力,也就是牺牲了系统的整体效率以换取稳定性;而在故障隔离的设计中,则往往通过牺牲公平性换取稳定性,在故障出现时优先保障高优先级子系统的运行,而牺牲低优先级的部分,从而确保核心功能的持续运作。
这个不可能三角问题其实还可以进行更深入的讨论,例如效率优先的社会和公平优先的社会究竟哪个更好。然而,进一步探讨这些问题实际上已经触及了某些意识形态层面的争议,这显然违反了我在前言中所提到的“禁止键政”的原则。因此,本篇文章就到此为止,其余的部分便留给各位读者自行思考和探讨。
以上。