1701066924
第4点对我来说没有意义。我认为很有可能我的大脑支持通用计算(至少在我有限的记忆容量允许的范围内),而线虫的脑也(基本上)是通用的,但我不认为我们进行的计算在复杂程度上是等价的。
1701066925
1701066926
沃尔夫勒姆走得更远,他认为存在一个简单的类似元胞自动机的规则可以作为“宇宙的终极确定性模型” [158] ,这个原初元胞自动机的计算是存在的万事万物的源头。这个规则有多长呢?沃尔夫勒姆说:“我猜其实相当短。” [159] 但是到底多长呢?他说:“我不知道。也许三四行Mathematica程序。”小写的计算。
1701066927
1701066928
《新科学》在2002年出版后引起了轰动——很快就位居亚马逊网站的畅销书榜首,并在之后很久都留在畅销书榜中。沃尔夫勒姆为了这本书的出版成立了沃尔夫勒姆媒体公司(Wolfram Media),在书出版后这家公司进行了大规模的宣传活动。对这本书的看法分成两个极端:一些读者认为这本书棒极了,是革命性的;另一些人认为这本书盲目自大,缺乏实质和原创性[例如,批评者指出物理学家祖斯(Konrad Zuse)和弗瑞德金(Edward Fredkin)早在20世纪60年代就提出了宇宙是元胞自动机的理论 [160] ]。不管怎样,我们这些元胞自动机的爱好者都认为,《新科学》至少很好地宣传了元胞自动机。
1701066929
1701066931
第11章 粒子计算[161]
1701066932
1701066933
1989年我偶然读到物理学家帕卡德(Norman Packard)的一篇文章, [162] 写的是用遗传算法设计元胞自动机规则。我一下就被吸引住了,想自己也试试。当时因为繁忙,无暇顾及(我在写博士论文),但这个想法一直留在我的脑海里。几年后,论文完成了,我也在圣塔菲研究所找到了职位,终于可以有时间深入研究这个问题了。有个叫赫拉贝尔(Peter Hraber)的本科生当时在研究所逗留,想找点事情做,我就把他招进来协助我研究这个课题。很快一个叫达斯(Rajarshi Das)的研究生也加入我们,他当时在独立研究类似的课题。
1701066934
1701066935
类似于帕卡德的思想,我们想用遗传算法演化出能执行所谓的“多数分类 [163] (majority classification)”任务的元胞自动机规则。这个任务很简单:元胞自动机要能区分初始状态中是开状态还是关状态占多数。如果是开状态占多数,最后所有元胞就应当都变成开状态。同样,如果是关状态占多数,最后所有元胞就应当都变成关状态。(如果初始状态中开状态和关状态的数量一样多,就没有答案,但是可以让元胞的数量为奇数来避免这种可能。)多数分类任务有点类似于选举,是在大家都只知道最近邻居的政治观点的情况下预测两个候选人谁会赢。
1701066936
1701066937
多数分类问题对冯·诺依曼结构的计算机而言是小菜一碟。CPU只需要分别对初始状态中的开状态和关状态进行计数,同时在内存中记录计数值就可以了。计数结束后,从内存中读取数值进行比较,然后根据结果将元胞状态都设成开或关。冯·诺依曼结构的计算机可以轻松实现这个工作,因为它有随机存取存储器可以存储初始状态和中间值,还有中央处理器可以计数,进行最后的比较,以及将状态重设。
1701066938
1701066939
而元胞自动机则没有CPU和内存可以用来计数。它只有一个一个的元胞,每个元胞除了自己的状态就只知道相邻元胞的状态。这种情形其实也是对许多实际系统的理想化。例如,在大脑中,神经元只与其他少数神经元有连接,而神经元必须决定是否激发,以及以何种强度激发,使得大量神经元的整体激发模式能表示特定的感知输入。类似的,第12章我们还会看到,蚂蚁必须根据与其他少量蚂蚁的交互来决定做什么事情,让蚁群整体能够受益。
1701066940
1701066941
因此,基本上很难设计出让所有元胞能协同决策的元胞自动机。赫拉贝尔和我想知道遗传算法是不是能解决这个设计问题。
1701066942
1701066943
借鉴帕卡德的工作,我们使用一维元胞自动机,每个元胞与相邻的6个元胞相连,这样元胞的邻域中就有7个元胞(包括自己)。
1701066944
1701066945
你可以先想一下如何给元胞自动机设计规则,让它能进行多数分类。
1701066946
1701066947
一个合理的想法是:“元胞应当变成邻域中当前占多数的状态。”这就好像根据你自己和邻居的多数意见来预测哪个候选人会当选。然而,这个“局部多数投票”元胞自动机并不能完成任务,图11.1说明了这一点。初始状态中黑色元胞占多数,然后根据局部多数投票规则运行了200步。可以看到元胞自动机很快变成黑白区域相间,然后就不再变化。黑白区域的边界两边的元胞邻域分别是黑白占多数。最后的状态组合中既有黑色元胞也有白色元胞,没有得到想要的结果。其中的问题是,根据这个规则,区域之间无法相互交流信息,因此它们无法得知自己是否是多数。
1701066948
1701066949
这个规则的设计并不是那么显而易见,因此依照第9章的做法,我们用遗传算法来试一下是不是能产生出有用的规则。
1701066950
1701066951
在遗传算法中元胞自动机规则被编码成0/1序列。每一位对应一种可能的邻域状态组合(图11.2)。
1701066952
1701066953
遗传算法的初始群体为随机产生的元胞自动机规则。为了计算规则的适应度,遗传算法用各种初始状态组合进行测试。遗传算法的适应度为产生出的最终状态正确的比例——正确指的是如果初始开状态占多数,元胞就都为开,初始关状态占多数,元胞就都为关(图11.3)。我们将遗传算法运行了许多代,最终算法设计出了一些表现得相当好的规则。
1701066954
1701066955
1701066956
1701066957
1701066958
▲图11.1 “局部多数投票”元胞自动机的时空图,初始状态为黑色占多数(图片引自米歇尔、克鲁奇菲尔德和达斯的文章《演化执行计算的元胞自动机:最近的研究综述》,收录在《第一届进化计算及其应用国际会议文集》,俄罗斯科学院,1996年)
1701066959
1701066960
1701066961
1701066962
1701066963
▲图11.2 元胞自动机编码为遗传算法个体的方法图示。128种可能的邻域状态组合按固定顺序排列。各邻域状态组合对应的中心元胞更新状态编码为0(关)和1(开)。遗传算法中每个个体有128位,以固定顺序编码更新状态
1701066964
1701066965
1701066966
1701066967
1701066968
▲图11.3 为了计算适应度,用各种随机初始状态对规则进行测试。适应度为规则在运行一定步数后产生出正确答案的比例
1701066969
1701066970
我们通过机器人罗比已经看到,遗传算法演化得出的结果往往无法在其“基因组”层面进行理解。我们在这里演化出的用于多数分类的元胞自动机也是一样。下面是遗传算法演化出的表现最好的基因组之一:
1701066971
1701066972
00000101000001100001010110000111000001110000010000010101010 10111011001000111011100000101000000010111110111111111101101 1101111111
1701066973
[
上一页 ]
[ :1.701066924e+09 ]
[
下一页 ]