隐秩序——复杂适应系统领域中的经典之作
by jake on 6月 7, 2007
很早以前就听说过John Holland这个名字了,因为他的遗传算法在国内学术界早已经闻名遐迩。然而,通过阅读《隐秩序》这本书才让我了解到,John Holland的学术贡献不仅仅是遗传算法这样一个比较狭窄的算法领域,而是一个全新的学科复杂适应系统CAS,甚至是一种西方科学思想的全新世界观:一种进化的、适应性的、柔性的世界。
1、基本元素
纽约市中心的普通的一天,小女孩彼得逊走进了她喜欢的商店,直奔一排货架,毫不犹豫地拿起了一瓶她喜欢吃的腌鲱鱼……。然而小女孩从不用担心她喜欢的东西不在那,因为全世界的超级市场几乎都可以精确地把居民需要的成千上万的形形色色商品送到市场中、货架上。也许我们对这一现象早已经司空见惯,然而仔细思考里面却存在着一个很大的谜题:是谁安排了这一切呢?是什么机制使得那么多商品恰到好处地供应到货架上?经济系统为什么可以自发调节?
从这样一个司空见惯的小事情,John Holland开始引领我们进入了CAS(复杂适应系统)的世界。接下来,Holland开始展现它非凡的知识和才华,从免疫系统到神经网络,从股票市场到热带雨林。哇,原来CAS的胃口这么大,它面向的不再是一两个数学定理的证明和无穷、繁琐的生物学实验,而是我们这个大千世界,一个几乎涉猎所有学科的广阔学术空间。
这一章的一个基本点就是Holland教我们用一种统一的视角来看待所有的复杂适应系统。中国有句老话:隔行如隔山,一个搞经济学的人不会过问生物学的研究进展,搞计算机的几乎不关心政治。西方的科学研究方法教会了我们分类法,于是我们把学科也越分越细,然而CAS的诞生呼吁我们,是时候重新综合地看待所有学科了。那么,一般的复杂系统具有什么样的共同特征呢?首先,所有这些系统都是由大量被称为主体的元素组成的系统,这些主体整体能够具备第一章提到的聚集、非线性、流、多样性这四个特性,每个主体都具备内部模型、标识、积木这三种机制。
根据我的理解,Holland这里所说的特性就是指所有的复杂适应系统所能反映出的客观特点和性质,它们是这些系统从宏观的角度来看所普遍具有的现象。而机制则说的是这些系统的内部原因,即基本上所有复杂系统中的个体都会遵循这样的三种普遍使用的规则。这样机制制约的个体相互组合就形成了具备四种特性的复杂系统。
进一步,根据Holland提出的这7点,我们能够勾画出这样一种图景:若干小的细胞主体四处游走开始扎堆”聚集”到一起,并且它们之间发生着各种各样的复杂的”非线性”相互作用关系。由于每个细胞体都是由更小的大量的”积木”单元组合而成的,因此细胞体能够利用这些积木感知并操作它们的外在世界。它们通过给环境进行”内部模型”的建立而形成关于这个世界的一系列假设和预测,在这些假设和预测的共同作用下,细胞会不停学习从而完成自己的适应进化。然而细胞们聚集成的组织太大了,它会占据很大的空间区域,而空间区域的不同就会造成每个小细胞们的局部环境的不同。有的小细胞的环境可能水多一些,有些可能充满了有害物质,有些则可能营养丰富。这就导致了虽然小细胞们可能在开始的时候内部基础非常相似,然而却由于后天的环境不同而形成了完全不同的适应性结果。这就是”多样性”产生的基础。个体的多样化还进一步造成了这些个体细胞相互作用关系的多样化,于是非线性作用进一步发挥威力,不断创造各种新的生态位,而进一步催生组织的个体的多样性。 然而,这个时候组织要想进一步发展,则新的问题出现了。这就是个体太过多样化了,差异太大了,然而组织又要形成为一个统一的整体,必须有某种机制来抵消这种多样化,减少组织内各个部分之间的差异。这怎么办呢?有两种方法解决,一种是”标识”,一种是”流”。首先,随着细胞的多样化增加,每个细胞所需要处理的信息就要增多,每个细胞要跟那么多不一样的细胞打交道显然是一件很痛苦的事儿。他们必须学会偷懒,也就是给那么多繁杂的细胞进行归类,给每个细胞贴标签,这就是个体的”标识”机制。其实,我们人类就是这么干的,我们常常会把其他人分成三六九等,其实就是给人贴标签。然而仅仅贴标签只不过是降低了个体处理信息的复杂性,然而组织整体要想存在还必须形成某种统一的东西,这就是流。流将所有的细胞重新统一成为一个整体,从而保证了组织的存在基础。在细胞和细胞之间开始接触的时候,他们就会发生物质和信息的交换,然而这些交换仅仅构成了一些局部的小的流动,随着系统进一步发展,各个小的流动开始汇合而形成一些大的贯穿整个组织的洪流。于是资源开始形成一种新的共同基础(好比是人体的血液),这股流流遍全身维护组织整体的存在。就这样,小细胞们构成了新一层次的生命体:组织。接下来,组织又成为了新一层面的细胞,组织和组织之间在发生相似的故事组织成更大的个体……。
当然,这个图景仅仅是我自己的一个想象,Holland的脑中是否产生了这个动画?我不得而知,但我个人感觉,根据这个图景,Holland所述的7个基本点及其相互之间的关系变得更清楚了.
2、适应性主体
Holland带我们在复杂适应系统各个领域神游了一番以后,突然板起脸来说:“好了,别光顾得好玩,该来点真格的了!”。这一章开始展开了计算机模型的庞大攻势。也许到了这一章,数理基础薄弱、甚至数学物理学得很好却不熟悉计算机尤其是人工智能的人开始败下阵来了。然而,Holland毕竟是搞计算机出身,而且曾经参与过很早很早的IBM商业计算机的设计(在那个时候,摸过计算机的人也没有几个),所以他不可能不展示他对于计算机建模的深刻见解。
上一章Holland抽出了所有复杂适应系统的共性,我们已经知道了what,接下来我们自然要问,how? 具体就是怎么来研究呢?这个时候,holland和大多数SFI(圣塔菲,Santa Fe Institute)学派的学者都会跟传统数学说”no”,我们需要新的东西,这就是“计算机模型”,在这一章,Holland就是要告诉我们计算机模型是如何帮助我们理解复杂适应系统的。
Holland的研究思路是不忙对复杂系统的整体一下子建立大的模型,那是一个浩瀚的工程。而是从CAS中相对简单的个体出发,也就是我们上面提到的简单得多的细胞出发。在机器中建立这些个体的模型,然后让这群个体在计算机中相互作用而生成复杂系统的动态。于是接下来的一个关键问题就是如何建立每个主体(Agent)的模型。这可是Holland的拿手好戏,自从60年代以来,Holland已经几乎独立的发展了一整套建立适应性的Agent的计算机方法。这就是本章的主题。
我认为,这一章其实可以分成两大部分,一部分是主体,另一部分是适应性。
首先,我们需要考虑的是,一个能够根据环境信息而进行决策和行动的主体。这是人工智能领域研究的问题。早期的人工智能已经提供了很多很多种建立这种主体的方法,包括什么慎思结构、神经网络等等。然而Holland没有采取那些繁杂的模型,而是用了一种相对简单的基于规则的方法。什么是基于规则的方法?我们可以就把它理解为一种因果关系,或者一种条件反射。“如果有东西朝我移动,我就逃跑;如果那个东西很小我就把它吃掉。”这种规则系统具有足够的计算能力,它完全等价于一台通用计算机。然而,仅仅用规则来描述主体的行为似乎有些太简单了,在很多情况,主体处理的信息往往非常复杂,以至于不能用简单规则来还原。Holland真有新招,他不使用一个规则,而是用一组规则,每种规则还都不一样,而且在运行的时候,可能会有好多相互矛盾的规则同时激活。仅仅这一点:允许相互矛盾的规则同时激活就已经让很多搞传统人工智能的人大跌眼镜,因为人工智能一直强调的是逻辑性、前后协调性,他们会人为的消除系统中的非逻辑性。
然而,当多个规则同时存在甚至相互矛盾的时候就会自然提出一个问题,究竟Agent应该采用哪个规则呢?这就需要用到Holland所说的信用分派机制,即给每个规则都分派一个信用来表示使用该规则的可能性。用过遗传算法的人都知道,遗传算法有一个关键的适应度函数,这里的信用就是适应度函数对每个规则进行评价。当系统运行起来以后,这个信用会动态地改变,也就是系统从外界得到反馈来改变信用。也就是说信用是一种反馈机制。
在推理中人们常常把多条规则首尾相接到一起形成一个长长的推理链,这种机制也可以用Holland的系统中描述出来。同时Holland还发明了水桶连算法来解决长链上规则的信用分派问题。即Holland把每条规则比喻成市场上的能够自由买卖的主体,这些主体一方面交换着货物(执行的权利),另一方面货币(信用)会反向流动.
其次,Agent还具有适应性,这种适应性来源于Agent内部的创新机制:遗传算法,这是Holland在60年代的时候就研究出来的结果。当所有搞人工智能的人都认为知识和推理非常重要的时候,Holland却认为学习和灵活适应才是最重要的。因此,他用自然进化的比喻来研究程序的自动进化。正是他这一开创性的成就,使得人工智能学界兴起了新的一派人工智能,即进化学派,同时也为后来的遗传编程、演化程序等方法创造了可能。将这两点和起来,也就是基于规则的Agent和遗传算法就构成了完整的Agent分类器系统模型。
3、4、回声导致的涌现、回声模型的计算机模拟
其实,前面两章的内容已经构成了整本书的精华所在。可以说前面两章是Holland对复杂适应系统的研究已取得的一些成果。它们已经能够构成一整套研究CAS的方法和理论的基础。用这两章的知识我们已经可以对大部分的复杂适应系统进行建模研究了。然而,Holland还没有停止,而是继续前进,讨论了一些甚至是现在也没有得到充分研究清楚的领域:即人工生命中的开放式进化。有很多人看完整本书也不一定明白Echo模型,甚至仅仅了解了前述两章的内容就认为懂得了Holland整个的思路。(我以前就是这样,直到最近又看了一遍《隐秩序》这本书才知道自己的无知和幼稚)。其实这两章的内容才算真正进入了研究CAS的正题。
有了我们要研究的目标:一般的复杂适应系统,有了强有力的工具:计算机以及一整套关于适应性Agent的构造方法,我们是否就能够模拟任意一个复杂适应系统了呢?答案是:远远不能。看看我们还缺少什么?
(1)、隐性适应度函数
无论是遗传算法还是分类器系统,对每个个体的选择都需要根据一个明确定义的适应度函数来进行。尤其当我们解决优化问题的时候,这种适应度函数是由优化问题本身定义好了。然而在现实的复杂适应系统中,对于每个主体来说(细胞、生命、经济人)都不存在一个预先定义好的适应度函数。也不存在着现成的优化问题让个体去寻求最优解。复杂系统中存在的仅仅有不停的变化、不停的适应。因此,我们要想真正理解复杂适应系统就不能用原来的适应度函数,至少不能用显式的、固定死的适应度函数。
(2)、个体基因发育出来的细胞多样性
考虑一个受精卵发育成成体的过程,我们会发现,原始的受精卵细胞通过不断的分裂、增殖能够长出复杂的生命个体。更有意思的是,所有个体细胞都具有相同的基因,这些基因序列在不同的环境下却能够有序地分裂成异常不同的细胞体。比如人的皮肤细胞和脑神经元细胞无论从外形还是功能上来说都存在着很大的差异,但他们都具有相同的染色体。也就是说,如果我们把DNA序列比喻成计算机代码的话,那么该代码序列指导合成蛋白质的过程就是计算机计算DNA程序的过程。相同的DNA序列发育成不同的细胞就意味着同一段代码在不同的计算机环境中运行需要得到完全不同的计算结果。这显然是与我们目前的计算机程序不符的。而无论是生命个体的发育、生态系统的产生还是人类社会系统的生长都存在着类似的个体发生问题,这是用一般的方法不能解决的。
(3)、多层级结构
自然界的复杂系统普遍存在着层级结构,细胞->器官->生命->物种->生态,人->组织->单位->国家->人类社会,然而从现有的技术和理论框架出发我们还不足以描述这种层级结构.
(4)、资源的生产、交换及其流动
现实中的生命个体的各个部分之间还能进行资源的交换。而且每个个体就像一个独立的工厂可以根据不同的输入资源变化形成新的资源,这些资源之间能够运动而形成流。这一过程也是在现有模型中不容易建模的一个关键。
基于上述这些问题的考虑,Holland提出了这个echo模型,并提出了若干方案希望该模型能够模拟所有这些现象。这些问题也是目前人工生命中开放式进化生态系统的研究重点。这类问题是如此深奥以至于它触及到了自然进化的本质,又是如此另类,以至于它远远超越了我们同时代的许多科学问题的提问方式。
然而,可惜的是,Holland的Echo模型在《隐秩序》这本书里仅仅做了建模的讨论,而没有更多计算机模拟的结果。据说直到现在人们也没有对Echo模型的所有方面都进行模拟研究。而且,让人不易理解的另一个方面就是Holland的Echo模型似乎和他第二章的Agent模型联系非常不紧密,基本就是两套完全不同的框架。
幸好,现在已经有好多可以替代Echo模型的开放进化系统,比如大名鼎鼎的Tierra,还有各种人工化学模型,然而所有这些模型肯定都没有达到《隐秩序》中描述的程度,对上面提出的3个问题也仅仅是部分解决了。假如人们真能够造一个完美的开放式进化系统,那么在本文1、基本元素那里提到的小细胞体构造大规模组织的整个动画过程应该能够在计算机模拟中看到。
5、通向理论
这一章自然是对整本书讨论内容的一个展望了。如果说第一章Holland提出了问题What,第二章到第四章讨论了How的问题,那么这一章显然是要讨论Why这个问题,也就是说,Holland最终想回答构成一切复杂适应系统的各种动态背后的基本原理是什么?请注意,Holland在这章里明确提出了数学的重要性,他说计算机模型仅仅是一些个案的研究,而我们最终要得到的目标显然是一种各个计算机模型背后的数学理论,因为只有数学才能真正抽象出我们想要的事物背后的机制。但很显然,Holland自己在论述这个问题的时候也显得有些力不从心,因为对CAS的理解还太初步,我们还远没有达到上升为一个通用理论的程度。我不知道SFI的其它科学家怎么想,至少对Holland来说,他并不是一味排斥数学的作用的,而实在是因为他还没有能力把他对复杂适应系统的认识抽象成数学的形式。看到这里,我很感动,因为Holland的治学态度是认真负责的,他并不想用一大堆谁都看不懂的数学来唬人,他希望先对复杂系统有了普遍认识之后,才把它抽象成数学的形式。
Leave your comment