成为复杂前的系统 ——读《复杂》
——还原论者喜欢线性,而非线性则是还原论者的梦魇。
《复杂》这本书,书如其名,章节涵盖了从数学、生物、物理到计算机等等各种不同学科的知识,从内容上来看,其本身也诠释了“What is complexity”。在构成上,本书也极适合作为一类增进学科发展背景了解的科普读物,特别是针对想要学习交叉学科的学生,当我们在学习某些知识和理论的时候,往往注重于对公式的把握和使用,其发展历程上所经历的种种变化和细节,经常被忽视了。实际上,我认为凡是属于庞大的历史中脱颖而出的各个科学的进步,其“细枝末节”也是值得考量的。往往我们会觉得,故事太多,而人所能接受的却太少,然而我并不觉得一定要铭记每一个细节,在不同的用例中感受到科学研究的热情所在即可。
本书的核心思想主要在于“复杂”上。首先,现实世界中的事物和系统都是复杂的,并不简单地存在理想的模型。而传统物理学无法解释在复杂变量存在下,模型的长期演变结果究竟是如何的,所以才引入了研究复杂和混沌系统的概念。蚂蚁是经常被举例用来说明生物群体意识的动物,在聚集到一定数量时,便会自发的分工协作,维持集体的运转,与之相似的还有蝗虫。而这一系统却是普遍存在而又复杂的,无法完全的理解或者解释。我认为类似于NP 完全问题,当计算超出一定范围后,很快就变的不可计算了。事实上,对于蚂蚁的理解就好像对很多类似的复杂系统的理解一样,只能大概知道“也许”是这样,在短时间内的预测还可以,但长期预测就不可行了。大脑与蚁群很类似:个体(神经元或蚂蚁)之间相互传递信号,信号的总强度达到一定程度时,会导致个体以特定的方式动作,从而再次产生信号。免疫系统是又一个例子。在免疫系统中,相对简单的组分一起产生出包含信号传递和控制的复杂行为,并不断进行适应。
混沌系统中初始的不确定性到底是如何被急剧放大的呢?关键因素是非线性。例如三体问题,而庞加莱为了解决这个问题也创建了一个新的数学分支——代数拓扑(algebraic topology)。又例如,即使是很简单的计算机气象模型,也会有对初始条件的敏感依赖性。现在虽然有了高度复杂的气象计算模型,天气预报也最多只能做到大致准确预测一个星期。在前年参与一项超算比赛时,HPC赛道的题目便是和大气模型MPAS相关的,其计算量已经非常庞大,但仍不足以准确预测天气,足见天气的复杂度之深。
Xt+1 = RXt(1-Xt)
上述是文中提到的逻辑斯蒂映射,一行非常简单的方程,却是展现混沌系统最著名的方程。早在去年第一届HPCGame中我就对其有所了解(作为题目的还有后文出现的生命游戏),在某些取值时候会进入周期,另一些则完全发散。在当时我修改了题目代码以进行敛散性判别(后来发现并无必要),其特殊的变化形式非常有趣。我认为对混沌系统最诗意的描述还是蝴蝶翅膀的扇动引起飓风,一点微小的变化就足以引起结果完全被改变,这就是充满神秘的复杂和混沌系统的魅力。
所有关于计算机的发展历程都离不开一个人:香农。当然,一定还有他的图灵机。香农的结果在许多领域都有应用。最广为人知的应用就是编码理论,研究数据压缩问题和可靠传输的编码方法。编码理论对电子通信的所有领域几乎都有影响:移动电话、计算机网络、全球定位系统,等等。作者在本书中解释了图灵机如何引入停机问题,通过将判断是否会死循环的图灵机用于判断其自身等巧妙的论证,证明了不存在明确程序能解决停机问题,否定了希尔伯特第三问题(是不是所有命题都是数学可判定的?也就是说,是不是对所有命题都有明确程序(definite procedure)可以在有限时间内告诉我们命题是真是假?)。图灵机不单指一类现实的机器,或者是香农制造的那一台,代码实现的程序就可以是图灵机。
接下来一部分则是介绍了遗传学的发展史,这一部分知识并不超出普通生物学教育的知识范围,重点还是在发展历程中的细节上,比如达尔文也赞同过获得性遗传的观点,以及进化论和遗传律学者的争执,进而到现代综合的争论等等。其本身是方便引出计算机的遗传算法等等,而后文又在解释遗传算法的同时,重新点题第一章的生物学内容。
如何度量复杂性?答案是复杂性科学不止一个,而是有好几个,每个对复杂性的定义都不一样。复杂性的一个简单度量就是大小。根据这个度量,如果比较碱基对数量,人类比酵母复杂250倍,如果比较基因数量,人类则只比酵母复杂4倍。另一种直接的复杂性度量就是香农熵,在第3章曾将香农熵定义为信息源相对于信息接收者的平均信息量或“惊奇度”。人们提出了许多改进方法来用熵度量复杂性。其中最著名的方法由柯尔莫哥洛夫(Andrey Kolmogorov)、查汀(Gregory Chaitin)和索罗蒙洛夫(Ray Solomonoff)分别独立提出,他们将事物的复杂性定义为能够产生对事物完整描述的最短计算机程序的长度。这被称为事物的算法信息量。为了更加接近我们对复杂性的直觉,数学家班尼特在20世纪80年代初提出了逻辑深度(logical depth)的概念。一个事物的逻辑深度是对构造这个事物的困难程度的度量。如果复杂系统能够执行计算,不管系统是天然的还是人工的,也许有可能用它们的计算的复杂程度来度量它们的复杂性。度量的多样性也表明复杂性思想具有许多维度,也许无法通过单一的度量尺度来刻画。
当提到自我复制的计算机程序,或者对于遗传算法(GA),期望的输出就是特定问题的解。比如,你需要编写一个程序控制机器人清洁工在办公楼拾垃圾。你觉得编这个程序太费时间,就委托遗传算法替你将这个程序演化出来。因此,期望的GA输出就是能让机器人清洁工完成拾垃圾任务的控制程序。那么当前可以提供各种功能代码的人工智能,是否已经是这种期望中的遗传算法?有些不同的是,遗传算法在每个目标上都重新演化,而现代人工智能则是通过复杂演化后成为可以提供结果的程序,而后者显然更有时效性。
大脑是计算机吗?如果我们同意接受更宽泛的计算概念,答案就一定是‘是’。同蚁群一样,大脑的计算方式——数以亿计的神经元并行工作,而无须中央控制——也与现代的数字计算机的运作方式完全不同。同自然界的复杂系统一样,元胞自动机也是由大量简单个体(元胞)组成,不存在中央控制,每个个体都只与少量其他个体交互。而且元胞自动机也能表现出非常复杂的行为,它们的行为很难甚至不可能通过其更新规则来预测。
在科学中,模型是对某种“实在”现象的简化表示。科学家们说是在研究自然,但实际上他们做的大部分事情都是在对自然进行建模,并对所建立的模型进行研究。对于大部分复杂系统来说,不可能对其进行真正的实验,用数学研究也非常困难,这个时候模型就是研究它们的唯一可行途径。计算机模型也必须是可重复的——也就是说,其他人重新构造所提出的模型要能得到同样的结果。
网络是由边连接在一起的节点组成的集合。节点对应网络中的个体(例如神经元、网站、人),边则是个体之间的关联(例如突触、网页超链接、社会关系)。网络中存在的内部联系紧密、外部较松散的群体被称为集群(clustering)。进出一个节点的边的数量称为这个节点的度(degree)。
复杂领域有个笑话,说是在“等待卡诺”。卡诺是19世纪初的一位物理学家,他提出了热力学的一些关键概念。与之类似,我们也在等待出现适当的概念和数学来描述我们在自然界看到的各种形式的复杂性。复杂领域更需要一位牛顿式的人物。其现在所面临的概念问题,就类似于微积分发明之前牛顿所面临的问题。在牛顿的传记中,科学作家格雷克(James Gleick)这样描述:“他受困于语言的混乱——有些词汇定义不清,有些词汇甚至还没有出现……牛顿相信,只要他能找到合适的词汇,他就能引领整个运动科学。……”通过发明微积分,牛顿最终创造了所需的词汇。借助于无穷小、微分、积分和极限等概念,微积分为严格描述变化和运动提供了数学语言。这些概念在数学中已经存在,但是不完整;牛顿能够发现它们之间的关联,并且构建出和谐统一的宏大建筑将它们结合到一起,让它们彻底一般化。这幢宏大的建筑使得牛顿能够创造出动力学体系。
总的来说,本文涉及的领域多,在某些方面,作者提供了复杂有趣的知识,例如logistic映射;另一些方面,作者介绍了在历史上发展过程中的种种趣事,比如实际上不止一个人和达尔文在同一时间段提出了对于涉及进化论的现象的观点。这些使得本书在各种意义上都值得一读,可以补充一些对已有知识的理解。
最后以本书结尾结束:借用作家和探险家纪德(André Gide)的一句话:“不敢远离海岸线,就别想发现新大陆。”朋友们,让我们一起向复杂性的新疆域进发吧。
成为复杂前的系统 ——读《复杂》