轩彩娱乐注册文化集团
  • 产品&服务

    传统的计算模式大多是串行的、中心控制式的。例如图灵机仅有一个读写头在工作,每一个时刻只能完成一步运算[1]。计算机理论科学家们已经证明这种串行机器在原则上能够模拟一切计算,甚至包括大规模的并行运算,前提是我们对效率没有任何要求。

    然而,在现实世界中,效率是一个非常重要的问题。我们利用大量的并行空间换取运算时间是更重要的问题。随着计算机网络以 及存储设备的大量普及,到了20世纪末期,人们越来越重视这种去中心化的、并行的运算模式。在复杂性科学研究中,人们甚至为这些新的运算模式取了一个好听 的名字:涌现计算。以下三个例子将让您真正领会涌现是何等强大的资源,它可以用来解决各式各样的实际问题。

    1粒子群的优化算法

    1986年,计算机科学家Craig Reynolds发明了一种被称为Boid的计算机模拟程序。通过给计算机中的智能体(Boid)设置三条简单的规则:靠近、对齐、避免碰撞,Craig就能模拟出鸟类群体活灵活现的飞行行为[2]。

    然而,早期的Boid仅仅能够逼真地模拟实际的鸟类飞行情况,如果我们在Boid所处的人工环境中加入食物会出现什么情 况呢?在真实世界中,鸟类会争先恐后地奔向食物。假如我们在Boid飞行的环境中撒上很多食物,颜色深的地方表示食物浓度大,浅的地方浓度小,那么 Boid就应该会自动聚集在食物浓度较大的地方。那么能不能把鸟类飞行觅食的行为用来解决实际的优化问题呢?

    我们仍然采用比喻的方法,把人工Boid飞行的空间比喻成优化问题的解空间,而把优化函数的函数值比喻成食物的浓度。这 样,优化函数值越大的地方对应的食物越多,Boid飞向这个点的概率就会越大。最后,很有可能所有的Boid都集中到了目标函数值最大的点,从而利用 Boid群体的涌现行为求解了函数优化的问题。

    这实际上就是粒子群优化算法(Particle Swarm Optimization,简称PSO算法)的思路[3]。在PSO算法中,一群虚拟的粒子(就相当于是Boid)在优化空间中自由地飞翔,他们会寻找食 物并聚集到食物最多的点从而完成优化任务。如果某个特殊的Boid在问题空间中发现了一个食物浓度更高的点,它就会召集其它的Boid过去。Boid在飞 行的过程中会经历一些小的干扰,这样就会使有些Boid的飞行轨道与原轨道发生较小的偏移,从而使得Boid群体具有了一定的创新性。

    PSO可以很快地搜索问题的空间,并找到最大值点。目前,PSO作为一种独立的算法已经被用来解决各种优化问题[4]。

    2一维元胞自动机的涌现计算

    为了更好地理解涌现计算是怎样在计算机中发生的,Jims Crutchfield用一类最简单的涌现系统——一维的元胞自动机——来实现涌现计算[5]。由于一维的元胞自动机是一类典型的通过局部相互作用生成复 杂的全局模式的系统,所以,通过细致的分析这类系统往往能够让我们对系统的运作机理获得更好的了解。

    所谓的一维元胞自动机,就是一个一维的方格世界:

    其中每一个方格(元胞)是由黑白两种颜色构成的,并且,每个元胞下一时刻的颜色仅仅由它左右两侧元胞的颜色决定。我们知 道,因为每个元胞的颜色只有黑白两种,这样,任意一个元胞加上它左右两个元胞的颜色组合就一共有八种情况:黑黑黑、黑黑白,黑白黑、白黑黑、黑白白、白黑 白、白白黑、白白白。只要我们为这八种情况的每一种都指定当前元胞在下一时刻的颜色,那么就完全定义了这个一维元胞自动机的规则。 

    我们可以用一张二维图形来展现一维元胞自动机的运行情况,如图5和图6所示。其中,每一个横行表示这个元胞自动机在某一 时刻的状态,从上往下则表示随时间运行的状态。每一个元胞都根据它左、右两个邻居的颜色进行自己颜色的更新。所以,我们可以把元胞自动机的动态展现在一张 二维图片上。

    由于一维的元胞自动机完全是一个确定性的系统,这样,只要给定初始状态(第一行的黑白排列情况),根据固定的规则,元胞自动机所画出的图像就是固定的。

    我们完全可以把这个元胞自动机看作是一个计算系统,只要我们把该自动机的初始条件看作是这个元胞自动机的输入数据,而把 运行(比如说100步之后的黑白元胞的分布情况)看作是它的计算结果,那么给定一组输入条件之后,这个元胞自动机就会完成一系列局部的操作,最终在第 100步的时候给出一个结果。当元胞自动机的规则确定之后,不同的输入一般会对应不同的输出结果。但是,问题是,一般情况下,这个元胞自动机不会进行有意 义的运算,因为它的规则太任意了。

    能不能设计某种非常简单的计算任务,从而在各种各样(即规则不同)的元胞自动机中找到一种合适的自动机,使它完成指定的 计算任务呢?Crutchfield运用遗传算法对所有可能的一维元胞自动机(回想一下,一维元胞自动机的所有可能规则集合是有限的)进行搜索,通过不断 的进化,系统终于可以找到一些元胞自动机完成简单的运算。

    比如,Crutchfield设计的一个简单的运算任务就是对初始的黑白元胞的比例进行分类。如果初始条件下,黑色的元 胞偏多一些,元胞自动机100步后的输出就必须全部都是黑色元胞;反之如果白色的元胞多一些,则要求元胞自动机在100步后全部输出白色。这样,如果我们 把初始的黑白元胞看作输入,把100步后的结果看作输出,那么这个一维元胞自动机就能够完成密度分类这个简单的任务[5]。

    虽然这个任务表面上看起来很简单,然而,对于元胞自动机来说却非常难。因为每个元胞仅仅能跟它左右两个邻居通信,而看不 到输入时候的整体情况。在计算过程中,每一个元胞也只能根据左右邻居的颜色来机械地按照固定的规则变换颜色,不存在某个超级元胞能够对所有的元胞发号施令 而决定系统的运行。也就是说,这群元胞们必须学会相互协调合作才能完成对于他们来说非常复杂的任务。

    然而,通过遗传算法,Crutchfield终于找到了这种能够完成密度分类任务的一维元胞自动机。

    遗传算法终于找到了可以正确分类的元胞自动机。那么究竟这些简单的自动机是如何完成这种复杂的计算任务的呢?

    Crutchfield进一步研究发现,这些成功分类的自动机的运行图都具备一种明显的特征:有很多横跨区域的大斜线, 以及一些明显的三角形块状区域。我们知道,在元胞自动机的运行图中,一条黑色的斜线就相当于是一个传播的信号(黑色元胞的信息从一侧传递到另一侧)。也就 是说,这些元胞之间会建立一种相互通信的机制。当某一个初始区域有更多的黑色元胞的时候,在这些元胞的边界处就会产生某种“粒子”(由一些传播的元胞组 成),从而与白色元胞区域产生对消的现象。这样,通过不断的“粒子对消”就完成了黑色元胞数与白色元胞数的比较,最后输出正确的运算结果。

    为了看清楚这些简单的元胞自动机的运行原理,Crutchfield甚至过滤掉了那些规则的三角块区域,而把边界的“粒 子”凸现出来(图9)。我们看到,这些粒子(标为希腊字母的线条)在时空中运动,把信息从世界的一端传递到另一端,并与其他的粒子相互碰撞、反应,生成其 他的粒子或者湮灭,从而完成对于这些元胞自动机来说非常复杂的计算任务。

    总结来看,Crutchfield所研究的演化元胞自动机属于一类涌现计算模型,因为每个元胞都仅仅完成简单的局部运 算,但是这些元胞通过相互作用,完成了全局的运算。Crutchfield的研究进一步指出,这些简单的并行相互作用的元胞之所以能够完成全局运算,其中 一个最重要的因素就是在于它们可以通过“粒子”进行跨区域的通信,使得不同区域的两个或者多个元胞之间能够发生相互作用而实现整体的协调与合作。

    他的研究给我们指出,涌现计算的一个重要的必要条件就是:信息的流动。因为只有信息的流动才能完成不同区域的通信,也才能真正让本来相互分散的个体连接而成一个整体。


    图标
    COPYRIGHT RESERVED © 2016 轩彩娱乐注册文化集团 版权所有 蜀ICP备09041620
    图标
     

    轩彩娱乐注册微信公众号

    400-028-8080