身体的智能:6.2进化计算的基本思想
进化的三个基本推动力量是累积性选择、变异以及自组织。Dawkins以一个有意思的例子令人印象深刻地说明了累积性选择的运作。假设一个猴子正坐在键盘的前面随机打字。虽然可能性非常低,但还是存在,在某个时候,这只猴子打出的字母序列,正是莎士比亚的哈姆雷特原文。为了让问题更容易一些,达尔文从哈姆雷特中选择了一个单句,即“我想它像一只蹦鼠(methinks it is like a weasel),”一个略微老式英语的句子,取自哈姆雷特(Hamlet)和波洛尼厄斯(Polonius)谈论天上造型
各异的云的形状,波洛尼厄斯(略显白痴般地)基本上重复哈姆雷特的话。这句话(为什么这对伊丽莎白时代的戏剧观众是滑稽可笑的,超出了我们的理解范围,但这无关紧要)。包括空格和标点,共有29个字母。设想英语字母表里的26个字母加上空格,总计有2729(相当于3×101)个可能的字符串,一个极大的数量,比大脑神经元的数量(约101)大得多。如果我们要随机地搜索所有这些字符串,例如,我们可以让一个猴子来敲打键盘,找到“我想它像一只融鼠”这一字符串的过程或许永无止境(至少比一只猴子的寿命长得多)。但是,如果我们改变搜索方式,引入一个目标函数,测量每一字符串和目标句“我想它像一只融鼠”的符合程度,搜索过程在经过大约40代后停止(取决于算法的相关细节)。以下说明算法是如何工作的。
我们以一个随机产生的字符串集合开始,该集合包含10个字符串。对每个字符串,我们计算处于正确位置,即字符串中字母位置与目标句中对应的字母位置一致的字符的数量。我们选择取得最高分数的5个字符串,进行一次复制,并用来取代分数较低的那5个句子,以保证句子数量仍大致相同。当我们复制一个字符串时,我们随机选择字符串中的一个位置,再随机选择一个字母替代在此位置上的原字母。在这10个句子组成的新集合里选择最好的5个,按上述步骤重复操作。如此循环约40次,我们最终能得到正确的句子。这几乎就像是魔术!在某一特定时刻的一个字符串种群就叫做一代,由适应度函数来判断哪些字符串保留,哪些丢弃,对新字符串随机改变的过程视作变异。人工进化能如此的快找到目标字符串,正是由于前面提到的累积性选择原理。
自然界中当然没有这样的目标字符串,进化过程中没有这样预先定义好的目标;即进化是“盲目”的。唯一的标准是生存和繁衍,毛皮的存在并不是为了进化得到某些毛皮类物种,而是为了利于生物长久生存并得以繁殖后代。所以,尽管自然进化并不是目标为导向的,但“好”的个体数量将会增长,因为它们会设法繁殖。
回顾历史上的某个物种,也许是通过不断地进化,逐渐由一个秃毛的物种变为多毛的物种。在这种情况下,我们可能误认为进化是向着多毛的物种方向进行的,但这只是由参考系问题引起的另一个错误,观察者人为地为进化引人了一个目标(原本是没有目标的)。尽管人工进化同生物进化存在着重大的差异(如明确的目标或者适应度函数),不过,仍然证明了进化这一设计工具的巨大威力,并且一些结果足以让人震惊。我们很快将对其做更多的介绍。
进化计算已经发展成为一个庞大和多样化的研究领域,并且大多数工作是与发展具体的算法有关的。但是,事实上所有的方法都可视作我们在6.1节“人工进化”插注中简要描述的整体框架的各种实例和变种。因此,我们需要做的就是牢记这一整体框架,这将会使我们对人工进化有很好的理解。本书所感兴趣的是具身性在人工进化中的作用。从事进化计算的世界(如术语所示,是一个从事计算的学术团体)正要着手研究具身性与进化间的关系。但是,在探讨这个想法前,我们简要回顾这个领域的历史。