2008年9月7日星期日

生物学启迪 群体智能+蚁群算法(ant colony optimization, ACO)

很多人都认为,如果上帝是一个程序员,那么他的工作量将大的惊人。
单一一个细胞的运行结构,编程工作量就可能超过天文数字的概念,其中光一个脱氧脱糖核酸的组合,就够微软的技术组干一百多年。
然而,事实上,现在越来越多的科学家和程序员发现,也许我们的世界,并没有建立在如此复杂的理论基础上,而是基于一些十分简单的规则。
这里有一个典型的例子,就是蚁群算法。

名词解释:
蚁群算法(ant colony optimization, ACO),又称蚂蚁算法,是一种用来在图中寻找优化路径的机率型技术。它由Marco Dorigo于1992年在他的博士论文中引入,其灵感来源于蚂蚁在寻找食物过程中发现路径的行为。蚁群算法是一种模拟进化算法,初步的研究表明该算法具有许多优良的性质.针对PID控制器参数优化设计问题,将蚁群算法设计的结果与遗传算法设计的结果进行了比较,数值仿真结果表明,蚁群算法具有一种新的模拟进化优化方法的有效性和应用价值。

具体的实现过程不累述,只提一点,就是整个蚁群算法只有100多行代码,但是它完美的再现了蚂蚁寻找食物的运行方式,包括寻找最短路径,避免走回头路以及如何最大范围内的扩大搜索面。

在观看这段代码的时候,很多方面,能发现上帝当时在编程的思维痕迹,比如说信息素变量运用(《蚂蚁革命》中被称为费尔蒙的东西),蚁群算法算是一种对世界的反编译,复杂无比的蚁群搜索系统,被简单的解析成原始的小块。

这个程序现在被广泛用于电力系统,火车系统,路由系统以及搜索引擎的抓取程序。

由此,我们可以引申的思考一些问题,比如说世界的复杂本源背后的运行规律,是否和蚂蚁算法一样简单?

很多专家提出的“小世界”概念中就可以发现了端倪,原来我们所在的整个生物系统,其实是类似于蚁群算法这种简单程序叠加而产生的。

也就是说,复杂的行为,不是本质,而是现象,简单程序控制下的个体的简单行为,互相影响,从而演化成非常复杂的行为,甚至构成极端复杂的社会体系,甚至是思维。

我相信这就是爱迪生研究思维之后,所得出的结论的真相:我们的思维产生,是因为“无数小人在我们头脑里活动。”

这里引进另一个概念,叫做群体思维来阐述这个问题。这也是研究蚂蚁,蜜蜂等社会昆虫得出的经典结论之一。

概念的核心是:单一的蚂蚁,是不具有思维性的,它只对环境产生反应,而发生一些行为,单一的蚂蚁的生存能力非常弱小,然而,100万只蚂蚁互相作用形成的行为,就变得非常复杂,蚂蚁的繁殖,食物的搜集,它们甚至能通过细菌的发酵,控制窝里的温度,在泥土中修建复杂无比,极端准确的通道,控制整个蚁巢的建筑结构,不会因为巢穴的扩大而崩塌。

这些行为体现的智力,是大型哺乳动物无法达到的,就算是黑猩猩,你也无法教会他通过细菌发酵去调节泥土的温度,单一一只蚂蚁,同样也无法做到这一点,但是一窝蚂蚁,却完成的近乎完美。

这种单一个体智力底下,但是群体拥有极高智力的现象,被称呼为群体智能。同样的东西,包括蜜蜂,真菌复合体,白蚁等等。

群体智能是一个很多人不敢触及的话题,因为它可以非常容易的复制到很多学科中去。比如说我举一个最简单的例子。

人的脑细胞,单个脑细胞不具有任何的智力,他只运行一些接受神经电流然后转发的人物,但是120亿个人的脑细胞,互相运作,可以产生这个世界上最伟大的东西——“思维”。

也许有人认为这比蚂蚁要复杂多了,其实,你可以发现如果一窝蚂蚁有100万只,则一只蚂蚁必须和另外99万只蚂蚁建立链接,而人的脑细胞现在所开发的10%活跃细胞中,每个细胞也只有2万条对外的神经联系,就是说,从运行效率来说,蚂蚁远远高于人脑。

那你也许要问,如果是这样的话,为什么蚂蚁窝的群体智力低于人的智力呢?

群体智慧理论里,最大的争议就是这一点,大部分人认为,群体的数量,和信息的传播速度,决定着群体的智慧程度。

可以这么说,如果一窝蚂蚁的数量达到120亿只,且他们可以用电流的速度交谈,则这窝蚂蚁只要有10%在活动,就能够达到人的智力水平,甚至,它会产生“思维”,一种凌驾于个体上的思维,一只蚂蚁没有“我”概念,但是这窝蚂蚁可能就会产生“我”的自我认知。但是事实上,这不可能达到。因为蚂蚁社会结构太松散了。

往回看,也许认为这很无稽,因为蚂蚁是分散的个体,而人的大脑是一个整体。

然而,人的大脑真的是整体吗?

不,把人类放大10亿倍,你就会发现人的大脑也是由无数个单独的个体悬浮组成的,就好比一个充满脑细胞的宇宙一样。

好了到了这里,可以总结一下了。

结合上边所说的东西,加上简单规则的概念,我们是否可以这样认为,假如单个脑细胞的运行规则能够被解码,当然我不奢望是100行代码,然后将这个程式做成病毒,在全球计算机网络里传播,等到传播的数量达到一个数量级,我们会否拥有一个巨大的电子虚拟生命?电子“自我”意识,会否在全球互联网中苏醒?

那么,实现这个“苏醒”的数量是多少,就是接入全球互联网带毒电脑的临界数量?

这里面能够思考的东西,还很长很长,很深很深。

名词解释2:
群体智能(Swarm intelligence):
群体智能这个概念来自对自然界中昆虫群体的观察,群居性生物通过协作表现出的宏观智能行为特征被称为群体智能。群体智能应该遵循五条基本原则:
(1) 邻近原则( Proximity Principle) ,群体能够进行简单的空间和时间计算;
(2) 品质原则(Quality Principle) ,群体能够响应环境中的品质因子;
(3) 多样性反应原则( Principle of Diverse Re2sponse) ,群体的行动范围不应该太窄;
(4) 稳定性原则(Stability Principle) ,群体不应在每次环境变化时都改变自身的行为;
(5) 适应性原则(Adaptability Principle) ,在所需代价不太高的情况下,群体能够在适当的时候改变自身的行为。

群体智能具有如下特点:
(1) 控制是分布式的,不存在中心控制。因而它更能够适应当前网络环境下的工作状态,并且具有较强的鲁棒性,即不会由于某一个或几个个体出现故障而影响群体对整个问题的求解。
(2) 群体中的每个个体都能够改变环境,这是个体之间间接通信的一种方式,这种方式被称为“激发工作”(Stigmergy) 。由于群体智能可以通过非直接通信的方式进行信息的传输与合作,因而随着个体数目的增加,通信开销的增幅较小,因此,它具有较好的可扩充性。
(3) 群体中每个个体的能力或遵循的行为规则非常简单,因而群体智能的实现比较方便,具有简单性的特点。
(4) 群体表现出来的复杂行为是通过简单个体的交互过程突现出来的智能( Emergent Intelli2gence) ,因此,群体具有自组织性。

PS.当时我现在感兴趣的是,编写一个蚂蚁病毒,让互联网变成一个巨大的蚁巢。
呵呵,可惜,我只会php。本文的写作动机,来自《终结者3》,《猎物》和《蚂蚁革命》