15.1 汤姆· 雷的电进化机
汤姆·雷[1]刚把编写好的小玩意儿放进计算机,它就迅速繁殖起来,直到几百个副本占满了可用的存储空间。雷的小玩意儿勉强算是个试验性的计算机病毒,因为一旦离开他的计算机便不能再复制,所以它没什么危险。他只是想看看,如果病毒必须在一个有限空间里互相竞争,会有什么结果。
雷的世界设计得很巧妙,在病毒老祖宗数以千计的克隆品中,有大约10%在自我复制时发生了微小变异。最初那个家伙是一个“80”——叫这个名字是因为它的编码长度为80个字节。有些80发生了一点随机的变异,成了79或81。这些新病毒中的一些变种不久就接管了雷的虚拟世界。它们进而再变异出更多种类。病毒80几乎被这迅速增长的新“物种”大军逼到濒临灭绝的地步。不过,它挺了过来,在79、51和45这些新面孔出现并达到数量峰值一段时间以后,80又死灰复燃了。
不过区区几个小时,汤姆·雷的电进化机已经进化出了“一锅培养液”,近百种计算机病毒为了在这个与世隔绝的世界中生存而大打出手。在花了几个月的时间编写代码后,雷在他的首次尝试中就孕育出了人工进化。
当雷还是个说话细声细气、腼腆的哈佛本科生时,就曾为著名的蚁人威尔森[2]在哥斯达黎加收集蚁群。威尔森的剑桥实验室需要活的切叶蚁群,而雷受雇到中美洲茂密的热带丛林寻找并捕获状态良好的野外蚁群,然后运到哈佛。他发现自己特别擅长做这个工作。他的窍门是以外科医生般的灵巧对丛林土壤进行挖掘,搬走蚁群的核心部分。需要搬走的是蚁后的完整内室,包括蚁后自己、她的看护蚁以及一个储存着足够食物的微型蚁园,以在运输中确保蚁群们不会忍饥挨饿。年轻的新生蚁群是最理想的了。这种蚁群的核心部分正好可以装进一个茶杯里。而另一个技巧就是找出藏在森林植被下的很小的蚁巢。只需几年时间,这个巴掌大小的小蚁群就可以填满一个大房间。
在热带雨林采集蚂蚁的同时,雷还发现了一种不明种类的蝴蝶,它会尾随行军蚁的行军路线。行军蚁吞噬其前进道路上所有动物的残忍习性,会把一群飞虫赶得慌不择路。一种鸟逐渐形成了跟随这个掠食大军的习惯,愉快地享用那些在空中四散奔逃的虫儿。而在紧随行军蚁大军的飞鸟身后,蝴蝶又接踵而至。蝴蝶尾随其后的目的是享用“蚂蚁鸟”的粪便“大餐”——那是产卵所急需的氮的来源。蚂蚁,“蚂蚁鸟”,“蚂蚁鸟蝴蝶”,也许还有谁知道什么玩意儿的东西跟在后面,组成了一支杂牌军,像一群串联好了的吉普赛人一样,浩浩荡荡地横扫这片丛林。
雷被如此精妙的复杂组合折服了。这简直就是一个游牧社会嘛!在无奇不有的天地万物面前,大多数企图了解生态关系的尝试都显得那么可笑。在茫茫宇宙之中,这三个种群(一种蚂蚁、三种蝴蝶、十几种鸟)是如何结成这种奇异的相互依赖关系的呢?为什么会这样呢?
雷在读完博士的时候,觉得生态科学暮气沉沉停滞不前,因为它不能对上面这些重要的问题给出一个满意的答案。生态学缺少好的理论来概括由每一片荒野的观察数据所积累起来的财富。它受到大量局部知识的困扰:没有一个总体理论,生态学只不过是个充斥着迷人童话的图书馆。藤壶群落的生命周期、毛茛田地的季节性形态变化或山猫家族的行为已是众所周知的了,但是,是什么原则(如果有的话)主导了这三者的变化呢?生物学需要一门关于复杂性的科学来解答这个关于形态、历史和发展的难解之谜——这些都是非常有趣的问题,而且都有野外数据的支持。
和许多生物学家一样,雷也认为生物学的希望在于将其研究重点从生物时间(森林的千年寿命)转移到进化时间(树种的百万年寿命)。进化起码还有一个理论。然而,对细节的过分执着也往往纠缠着进化研究。“我很沮丧,”雷对我说,“因为我不想研究进化的产品——爬藤啊、蚂蚁啊、蝴蝶啊什么的。我想研究进化本身。”
汤姆·雷梦寐以求的是制造一台电进化机。用一个“盛有”进化的黑匣子,他就能够阐明生态学的历史法则——雨林是如何由早期森林传承而来,生态系统到底是如何从产生了各种物种的同一原初力量中涌现出来的。如果他能研制出一台进化机,他就会有一个试验台可以用来做真正的生态实验。他可以选择一个群落,以不同的组合一遍又一遍地进行试验,比如说生成没有水藻的池塘,没有白蚁的森林,没有黄鼠的草地,或者为免以偏概全,生成有黄鼠的丛林和有水藻的草地。他可以从制造病毒开始,看看这一切将把他带向何处。
雷以前观察鸟类,收集昆虫,种植花卉——与计算机狂人完全不沾边儿,而他却坚信这样一台机器是能够造出来的。他记得十年前当他向一位麻省理工学院的计算机高手学习日本围棋时,那个高手曾运用生物隐喻来解释游戏规则。雷陈述道:“他对我说,‘你知道吗?编写一个能够自行复制的计算机程序是可行的。’在那一刻,我所憧憬的正是我现在所做的。我问他该怎么做,他说,‘噢,小菜一碟,不值一提。’但是我不记得他说了什么,或者他是否真的懂。当我想起那次谈话时,我就把小说扔到一边,捧起计算机手册来了。”
雷的电进化机方案是从简单的复制体开始,给它们一个舒适的栖息地,以及大量能源和有待填补的空间。和这些家伙最接近的实物是自复制的核糖核酸碎片。这个艰巨任务看上去是可行的。他打算调制一份计算机病毒的培养液。
当时正值1989年,新闻杂志上铺天盖地都是计算机病毒比瘟疫还糟、是技术所能到达的邪恶之极的封面报道。但雷却从计算机病毒的简单代码中窥见了一个新科学的诞生:实验进化与生态学。
为保护外部世界(和保证自己的计算机不会崩溃),雷用一台虚拟计算机来运行他的实验。虚拟计算机是一种在真实计算机的潜意识深处模拟特定计算机的智能软件。通过将那些可自我复制的小家伙们限制在这个影子计算机中,雷把它们与外界隔离,使自己在不危及主机的情况下,能够对计算机内存这样的重要功能胡乱折腾。“看了一年计算机手册之后,我坐下来写代码。两个月后,这小玩意儿跑起来了。在程序运行的头两分钟里,我就已经获得了可以进化的生物。”
雷在他称为“地球”的世界里种下了他编写的一个小玩意儿——80字节的程序代码,并把它放入他的虚拟计算机的内存中。这个小家伙先是找到一块80字节大小的空白内存空间,然后用一份自己的复制品占据这块地盘,从而实现了自我复制。不消几分钟,内存里就满是80的复制品了。
雷增加了两个重要功能,将这台施乐复印机般的复制机改造成一台进化机:他的程序在复制中偶尔会搞乱几位代码,他还赋予这些“生物”中的刽子手以优先权。简言之,他引入了变异和死亡。
计算机科学家告诉过他,如果随意改变计算机代码(他的所有生物实际上都是代码),改变后的程序可能无法正常运行,甚而使计算机崩溃。他们认为通过向编码中随机引入漏洞来获得可运行的程序的概率太低了,他的方案无异于浪费时间。雷其实也知道,维持计算机运行所需的完美实在是太弱不禁风了——漏洞会杀死进程。不过,由于他的造物程序在他的影子计算机中运行,一旦变异产生一个严重“畸形”的东西,他的刽子手程序——他将其命名为“收割机”——就会将它杀死,而他的“地球”的其余部分则继续运转。“地球”实际上是找出不能复制的漏洞程序,将其从虚拟计算机中拖将出去。
然而“收割机”会放过极少数有效变种,也就是说,那些碰巧形成一个真正的替代程序的变种。这些合法的变种能够复制并产生其他变种。如果你像雷那样将“地球”运行10亿个计算机周期,在这10亿次的机会中,将出现数量惊人的随机产生的东西。为了让系统更有活力,雷还为造出来的小东西们打上了年龄戳记,这样一来,老一些的家伙就会死亡。“收割机既杀死最老的家伙,也杀死最捣蛋的家伙。”雷笑着说。
在“地球”的首轮运行中,随机变异、死亡和自然选择都起了作用。没几分钟,雷就见证了一个生态系统的诞生——这个系统由那些新的生物组成,它们为抢夺计算机周期而竞争。竞争奖励个头小的家伙,因为它们需要的周期更少,而残酷的达尔文进化论淘汰的则是贪婪的消耗者、体弱多病的物种和老家伙。物种79(比80少一个字节)是幸运的。它的工作卓有成效,很快就超过了80。
雷还发现了非常奇怪的东西——一种只有45个字节的变种。它的代码效率极高,数量上也超过了所有其他变种。“这个系统自我优化的速度之快令我震惊,”雷回忆说,“系统中的存活者有着越来越短的基因,我可以用图把这个速度描绘出来。”
在对45的代码做进一步考察时,雷惊奇地发现它是一只寄生虫。它只包含了生存所需的代码。为了繁殖,它“借用”了80的繁殖代码来复制自己。只要周围有足够的80宿主,45就会兴盛起来。但是,如果在有限的范围内45太多了,就不会有足够的80提供复制源。随着80的减少,45也减少了。这对舞伴跳着共同进化的探戈,进进退退,就像北部森林中的狐狸和兔子一样。
“所有成功的系统都会吸引寄生虫,这似乎是生命的普遍属性。”雷提醒我说。在自然界寄生虫如此常见,以至于宿主很快就共同进化出针对它们的免疫力。寄生虫随之进化出骗过那种免疫力的策略。结果宿主再共同进化出抵制它们的防御能力。实际上这些行动并不是交替出现的,而是两股持续相互作用的力量。
雷学会了用寄生虫在“地球”中进行生态实验。他把79装到他的“培养液”里,因为他觉得79可能对寄生虫45免疫。的确如此。不过随着79的兴旺,第二种能够捕食它们的寄生虫进化出来。这一种有51字节长。当雷为它的基因排序时,他发现,45之所以能变成51,正是由一个“基因事件”所引起的:“7个出处已无从考究的指令取代了45中间段某处的一个指令,”把一个丧失能力的寄生虫变成了强有力的新物种。但这还不算完——一个对51具有免疫力的新物种进化了出来,而这样的过程还在继续。
在运行了很长时间的“培养液”中,雷发现了以其他寄生虫为宿主的超寄生虫:“超寄生虫就像是从你家的电线上偷电的邻居。他们用你的电,你付电费,而你还蒙在鼓里。”在“地球”里,像45这样的有机体发现自己无需“携带”大量代码来复制自己,因为它们周围有足够的代码。雷俏皮地说:“这就像我们利用其他动物的氨基酸一样(在我们吃它们的时候)。”在进一步检查中,雷发现超-超寄生虫兴旺起来,寄生升级到了第三重。他发现了“社交骗子”——这种生物利用两个合作的超寄生虫的代码(“合作”的超寄生虫彼此还相互偷窃!)。社会骗子需要相当发达的生态环境。至于超-超-超寄生虫,虽然还没看到,不过也许已经有了。在他的世界里,这种不劳而获的游戏也许永无止境。
15.2 你力所不逮的,进化能行
雷所发现的“生物”是人类程序员无法编写出来的。
“我从编写80字节的东西开始,”雷回忆说,“因为那是我能拿出来的最佳设计了。我猜想或许进化能把它降到75字节左右,于是就让程序运行了一整夜。结果第二天早上就出现了一个新东西——不是寄生虫,而是某种能完全自我复制的东西——它只有22字节!令我大惑不解的是,在没有像寄生虫那样盗用别人指令的情况下,一个电脑病毒是怎样仅通过22个指令就做到自行复制的呢?为了和他人分享这个新发现,我把它的基本算法发到网上。麻省理工学院一位计算机专业的学生看到了我的解释,但不知怎么却没有得到病毒22的代码。他试图手工重新创造它,但是他的最好成绩也需要31条指令。当他得知我是在睡觉时得到22条指令的时候,他沮丧极了。”
人类力所不逮的,进化却能做到。雷在一台显示器上展示了22在培养液中繁殖倍增的踪迹,以作为他的陈述的最佳诠释:“想想看,随机地改动程序竟然能胜过精雕细琢的手工编程,这听上去挺荒谬的,可这就是一个活生生的例子。”这位旁观者突然明了了,这些“没脑子”的黑客具有的创造力是永无止境的。
因为病毒要消耗计算机周期,所以较小(指令集更短)的病毒就有一定的优势。雷重写了“地球”的代码,使系统根据病毒大小按比例为其分配计算机资源,大病毒得到更多周期。在这种模式下,雷的病毒们所栖息的是一个不偏不倚的世界。正因为这个世界对大小病毒一视同仁,因此长期运行也许会更有意义些。有一次雷将它运行了150亿个计算机周期。在大约第110亿个周期左右,诞生了一种长度为36字节的病毒,它可是聪明得近乎狡诈了。它计算自己的真实尺寸,然后在“尾部”(我们姑且用这样的称谓吧)将长度值向左移了一位,在二进制中,这就相当于翻倍。靠着谎报自己的尺寸,病毒36神不知鬼不觉地窃取了病毒72的资源,这就意味着它得到了两倍于实际所需的中央处理器时间。这个变种自然横扫了整个系统。
也许汤姆·雷的电进化机最惊人的事情是它创造了性。没人告诉它什么是性,然而它还是发现了它。在一次实验中,为了看看关闭变异功能会产生什么结果,雷让“培养液”在没有外加错误的情况下运行。结果让他大吃一惊,即便没有程序变异,进化仍然发生了。
在真实的自然生活中,性是远比变异更重要的变化来源。性,从概念上讲,是遗传重组——一些来自父亲的基因和一些来自母亲的基因结合成为后代的全新基因组。在“地球”中,寄生虫有时会在无性繁殖中“借用”其他病毒的复制功能,而“收割机”有可能在这个过程中碰巧杀死了宿主,宿主原有的空间被新病毒占用。发生这种情况的时候,寄生虫就会使用新病毒的部分代码,以及“死去”病毒被打断了的部分复制功能。由此产生的后代是个未经刻意变异而产生的天然的新组合。(雷还说这种古怪的繁殖“相当于和死人发生性关系!”)在雷的“培养液”里,这种中断式交配其实一直都在发生,但只有当他关闭变异功能时,他才注意到这点。原来,不经意的重组本身就足以推动进化。死亡时生物所栖息的内存空间中就会有足够的不规则性,而这种复杂性提供了进化所需的多样性。从某种意义上说,系统进化出了变异。
对科学家而言,雷的人造进化机最令人欣喜之处在于,他的小世界展示的似乎是间断平衡。在相对较长的时期里,种群比例保持着一个相对稳定的局面,只是偶尔有物种灭绝或新物种诞生。接着,几乎是一眨眼功夫,这种平衡就立刻被一阵翻江倒海般的新老物种交替给打断了。对一个较短的时间来说,变化是狂暴而不受约束的。接着事情解决了,静止和平衡再次成为主宰。化石研究显示,这种形式在地球上的自然界中占压倒优势。静止是常态;而变化总是突如其来。在进化的其他计算机模型中也能看到同样的间断平衡方式,比如克里斯蒂安·林格伦的囚徒困境式的共同进化世界。如果人为进化反映了生物进化,你肯定想知道,如果雷让他的世界永远运行下去,会出现什么状况?他的病毒怪物会创造出多细胞吗?
遗憾的是,雷从来没有将他的世界以马拉松的方式运行过,去看看几个月或者几年之后会发生些什么。他还在不停地摆弄着他的程序,对其进行改进,以使之能够收集长期运行所产生的海量数据(每天50兆字节)。他承认:“有时,我们就像一群有一辆车的男孩子。我们总是在车库里打开发动机罩,把引擎零件拿出来摆弄,但是我们几乎从不开车,因为我们太执着于加大马力了。”
事实上,雷正专注于开发一种新硬件,那应该是一种新技术。雷认为他可以将虚拟计算机和为它编写的基本语言“烧制”进一块计算机芯片——一块进化用的硅片。这个现成的达尔文进化芯片就成了可以插进任何计算机的模块,它会为你迅速繁殖东西。你可以演化出代码,或子程序,或许甚至可能是整个软件程序。“我发现这相当奇怪,”雷吐露道,“作为一个热带植物生态学家,我竟然搞起了计算机设计。”
达尔文进化芯片可能带来的前景是美妙的。设想在你的个人计算机中就有一块,而在你的计算机中使用的文字处理软件是微软的Word。由于达尔文进化论常驻操作系统,Word会随着你的工作而进化。它会利用处理器的空闲周期,以缓慢的进化方式自我改善和学习,使自己适应你的工作习惯。只有那些提高了速度和准确性的改变会保留下来。不过,雷深信应该将杂乱无章的进化与工作分割开。“你应该把进化与终端用户分开,”他说。他设想在后台离线进行“数字耕牧”,这样一来,进化中不可或缺的错误和失败就不会为用户所见;在用户的使用过程中,进化也处于“休眠”状态。
进化在市面上也算不上天方夜谭了。今天你就能买到类似功能的电子表格模块。它的名字就叫作“进化者”。“进化者”是苹果电脑上的电子表格模板——非常复杂,密密麻麻有数百个变量和“假设”函数。工程师和数据库专家们都使用它。
比如说,你有三万名病人的医疗记录。你可能很想了解一个典型患者的症状。数据库越大,想看到你存在特定位置的数据就越困难。大多数软件都能计算平均值,但是凭这并不能抽取出一个“典型”患者。你想了解的是,在收集到的几千种类别的数据中,哪一套量测值对最多数人群来说具有相似的意义。这是一个对海量交互变量进行优化的问题。对任何生物来说,这都是一个再熟悉不过的问题:如何将成千上万个变量所输出的结果最大化呢?浣熊必须确保自己的生存,但是有上千种变量(脚的大小,夜视能力,心率,皮肤颜色等)可以随时间推移而发生变化,且一个参数的改变会引起另一个参数的改变。要想穿过这片包含各种可能结果的广阔空间,并且还留有些许登顶的希望,唯一的方法就是进化。
“进化者”软件对最大多数患者的最宽泛的病历进行优化。它尝试给出一名典型患者的基本描述,然后检查有多少患者符合这份描述,再对病历进行多纬度改进,看看是否有更多患者与之相符,然后修改、选择、再修改,直至最大数量的患者符合这份描述。这项工作特别适合进化。
计算机科学家把这个过程叫作“爬山法”。进化程序试图在包含最优解的形式库中向顶峰攀升。通过持续不断地向更好的解决方案推进,程序一直向上攀登,直到不能爬得更高。在那一点上,它们就到达了峰顶——一个极大值。然而始终有个问题:这个峰顶是周围最高的吗?或者,程序是否被困在一个局部高点,与旁边高得多的峰顶只有一条峡谷之隔,却又无从回退?
找到登上一处高点的路径并不难。自然界中的进化和计算机中的进化程序所擅长的,是在山峦起伏、一山更比一山高的地形中,爬到全局意义上的至高点——主峰。
15.3 并行实施的盲目行为
从外表看很难判断约翰·霍兰德的真实年龄。他曾经摆弄过世界上最早的计算机,现在则任教于密歇根大学。他首次提出了一种数学方法,用以描述进化所具备的优化能力,并且该方法可以轻松地在计算机上编程实现。因其数学形式在某种程度上类似于遗传信息,霍兰德把它们称为遗传算法[3]。
和汤姆·雷不同,霍兰德从性开始入手。霍兰德的遗传算法选取两组类似于DNA的计算机代码,这两组代码在问题求解上都有不错的效果,然后以交配互换的方式将它们随机重组,看看新的代码会不会表现得更好一点。在设计系统时,和雷一样,霍兰德必须克服一个悬而未决的问题:对于任何随机生成的计算机程序来说,往往都谈不上什么好坏,而是根本就不靠谱。从统计学的意义上说,对可用代码做随机变异,结局注定是屡战屡败。
早在20世纪60年代初理论生物学家就发现,与突变相比,交配所产生的实用个体比例更高,因而以其为基础的计算机进化也更稳定和有生命力。但是,单靠有性交配,其结果很受局限。20世纪60年代中期,霍兰德发明了遗传算法;遗传算法中起主要作用的是交配,但突变也是幕后策划者之一。通过将交配与突变结合在一起,系统变得灵活且宽泛。
和其他具有系统观念的人一样,霍兰德认为大自然的工作和计算机的任务是相似的。“生物体是高明的问题解决者,”霍兰德在他的工作总结中写道,“它们所展示出来的多才多艺使最好的计算机程序都为之汗颜。”这个论断尤其令计算机科学家们感到难堪。他们可能经年累月地在某个算法上绞尽脑汁,而生物体却通过无目标的进化和自然选择获得了它们的能力。
霍兰德写道,进化的方法“排除了软件设计中最大的一个障碍:预先规定问题的所有特征”。如果你有许多相互矛盾而又彼此关联的变量,而目标定义又很宽泛,可能有无数个解,那么进化正是解决之道。
正如进化需要大量的个体才能发挥效用一样,遗传算法也要炮制出数量庞大的代码群,并且这些代码们同时进行处理数据和发生变异。遗传算法实际上是一大群略有差别的策略,试图在崎岖的地形上同时攀爬不同的峰顶。由于大量代码并行作业,因而能同时访问该地形的多个区域,确保它不会错过那真正的高峰。
隐含的并行主义是进化过程确保其不单攀上高峰、而且是最高峰的魔力所在。如何找出全局最优值?通过同时考察整个地貌的每一寸土地。如何在复杂系统中对上千个相互冲突的变量做出最佳平衡?通过同时尝试上千种组合。如何培养出能在恶劣条件下生存的生物体?通过同时投入一千个略有差异的个体。
在霍兰德的算法中,那些“处在最高处”的代码们彼此交配。换句话说,“地势高”的区域,交配率就高。这便将系统的注意力集中到最有前途的区域,同时,对那些没有希望的地区,系统则剥夺了它们所占用的计算周期。这样,并行主义既做到了“天网恢恢,疏而不漏”,又减少了寻找顶峰所需要的代码数量。
并行是绕过随机变异所固有的愚蠢和盲目的途径之一。这是生命的极大讽喻:一个接一个地重复盲目行为只能导致更深层的荒谬,而由一群个体并行执行的盲目行为,在条件适合时,却能导出所有我们觉得有趣的东西。
约翰·霍兰德在20世纪60年代研究适应机制时发明了遗传算法。而直到20世纪80年代末,他的成果都没有引起任何关注,除了12个异想天开的计算机研究生。其他几个研究者,如工程师劳伦斯·福格尔[4]和汉斯·布雷默曼[5],在20世纪60年代独立开展了种群的机械式进化研究;现在密歇根州韦恩州立大学工作的计算机科学家迈克尔·康拉德,在20世纪70年代也从对适应的研究转向了为种群进化建立计算机模型;他们都受到了同样的冷落。总之,这项工作在计算机科学领域里可以说是默默无闻,而生物学界对它更是一无所知。
在霍兰德关于遗传算法和进化的书《自然与人工系统中的适应》(Adaptation in Natural and Articial Systemss)于1975年问世前,只有两三个学生写过关于遗传算法的论文。直到1992年再版时,这本书只卖出2500本。在1972年至1982年间,整个科学界关于遗传算法的文章不超过二十几篇,更遑论有什么对计算机进化顶礼膜拜的追随者了。
生物学界对此缺乏兴趣尚情有可原(但也不是什么光彩的事情);生物学家认为自然界太复杂,难以用当时的计算机来展现其真实全貌。而计算机科学对此兴趣寥寥,就莫名其妙了。我在为本书做调研时经常感到困惑,像计算进化这样重要的方法为什么竟无人理睬呢?现在我相信,这种视而不见的根源,在于进化所固有的看上去杂乱无章的并行性,以及它与当时盛行的计算机信条——冯·诺依曼串行程序——在根本上的抵触。
人类的第一台电子计算机叫作电子数值积分计算器[6],是1945年为解决美军的弹道计算问题而研发的。电子数值积分计算器是一个由1.8万支电子管、7万个电阻和1万个电容构成的庞然大物。它需要6000个手动开关来设置指令,然后运行程序;各个数值的计算实际上是以并行方式同时进行的。这对编程来说是个负担。
天才的冯·诺依曼从根本上改变了这种笨拙的编程系统。电子数值积分计算器的接替者——离散变量自动电子计算机[7],是第一台可运行存储程序的通用计算机。冯·诺依曼24岁那年(1927年)发表了他的第一篇关于数学逻辑系统和博弈论的学术论文,自那时起,他就一直在考虑系统逻辑问题。在与离散变量自动电子计算机小组共事时,为了应付计算机编程在求解多问题时所需的复杂运算,他发明了一种方法来控制这些运算。他建议将问题分成离散的逻辑步骤,类似于长除法的求解步骤,并把求解过程的中间值临时储存在计算机中。这样一来,那些中间值就可以被看成是下一部分问题的输入值。通过这样一个共同演化的循环(现在称为子程序)来进行计算,并将程序逻辑储存在计算机中以使它能与答案交互,冯·诺依曼能将任何一个问题转化成人脑所能理解的一系列步骤。他还发明了描述这种分步线路的标记法:即现在大家所熟悉的流程图。冯·诺依曼的串行计算架构——一次执行一条指令,其普适性令人惊叹,并且非常适合人类编程。1946年冯·诺依曼发表了这个架构的概要,随后所有的商用计算机都采用了这个架构,无一例外。
1949年,约翰·霍兰德曾效力于离散变量自动电子计算机的后续项目“旋风计划”[8]。1950年,他参加了IBM“国防计算机”的逻辑设计团队,这款机型后来演变成IBM 701机,是世界第一部商用计算机。当时的计算机有房间那么大,耗电量惊人。到了50年代中期,霍兰德加入了一个带有传奇性的圈子,里面都是些思想深邃之人,他们开始讨论人工智能的可能性。
当赫伯特·西蒙和艾伦·纽厄尔[9]这样的学界泰斗把学习看作高贵和高等的成就时,霍兰德却把它看作光鲜外表下的低端适应。霍兰德认为,如果我们能理解适应性尤其是进化的适应性,就可能理解甚至模仿有意识的学习。尽管其他人有可能意识到进化与学习之间的相似之处,然而在一个快速发展的领域里,进化并不太为人所关注。
1953年,霍兰德在密歇根大学数学图书馆漫无目的地浏览时,偶然发现了一卷由R.A.费希尔[10]写于1929年的《自然选择的遗传理论》(Genetical eory of Natural Selectionn),顿时大受启发。达尔文引领了从对生物的个体研究到种群研究的转向,而把种群思维转变为定量科学的则是费希尔。费希尔以一个随时间推移而进化的蝴蝶族群为对象,将其看作是一个将差别信息并行传遍整个族群的整体系统。他提出了控制信息扩散的方程。通过驾驭自然界最强大的力量——进化,以及人类最强有力的工具——数学,费希尔单枪匹马开创了一个人类知识的新世界。“我第一次意识到能对进化进行有意义的数学运算。”霍兰德回忆起那次奇妙邂逅时说。“那个想法对我非常有吸引力。”霍兰德如此醉心于将进化作为一种数学来处理,以至于(在复印机还没有问世的当时)拼命想搞到绝版的全文。他恳求图书馆把书卖给他,但没有成功。霍兰德吸取了费希尔的见解,又将其升华为自己的构想:一群协处理器,在计算机内存的原野上,如蝴蝶一般翩翩起舞。
霍兰德认为,人工学习其本质上是适应性的一个特例。他相当确定能在计算机上实现适应性。在领悟了费希尔关于进化是一种概率的洞见后,霍兰德着手尝试把进化编为代码输入机器。
在尝试之初,他面临着一个两难处境:进化是并行的处理器,而所有可用的电子计算机却都是冯·诺依曼式的串行处理器。
在把计算机变为进化平台的迫切愿望下,霍兰德做了唯一合理的决定:设计一台大规模并行计算机来运行他的实验。在并行运算中,许多指令同时得到执行,而不是一次只执行一个指令。1959年,他提交了一篇论文,其内容正如其标题所概括,介绍了“能同时执行任意数量子程序的通用计算机”[11],这个机巧装置后来被称为“霍兰德机”。而等了差不多30年,一台这样的计算机才终于问世。
在此期间,霍兰德和其他计算进化论者不得不依赖串行计算机来培育进化。他们使出浑身解数在快速串行处理器上编程模拟一个缓慢的并行过程。模拟工作卓有成效,足以揭示出真正并行过程的威力。
15.4 计算中的军备竞赛
直到20世纪80年代中期,丹尼·希利斯才开始建造第一台大规模并行运算计算机。其实早在几年前,希利斯就已是一个计算机科学专业的神童了。他的那些恶作剧和黑客事迹即使在麻省理工这个号称黑客鼻祖的学校中也颇具传奇性。希利斯以其惯有的清楚明了向作家史蒂文·列维[12]总结了冯·诺依曼计算机的瓶颈所在:“你为计算机输入的知识越多,它运行得越慢。而对人来说,你给他的知识越多,他的头脑越敏捷。所以说我们处在一种悖论之中,你越想让计算机聪明,它就变得越愚笨。”
希利斯真正想做的是生物学家,而他理解复杂程序的特长却将他吸引到麻省理工学院的人工智能实验室。在那里,他最终决定尝试设计一台“会成为我的骄傲”的思考型计算机。他把设计一个无法无天、三头六臂的计算机怪兽的开创性想法归功于约翰·霍兰德的启发。最终希利斯领导的小组发明了第一台并行处理计算机——“连接机”。1988年,每台“连接机”可卖得一百万美元高价,赚得盆满钵满。有了机器,希利斯就开始认真地从事计算机生物学研究了。
“我们知道,只有两种方法能制造出结构极其复杂的东西,”希利斯说,“一个是依靠工程学,另一个是通过进化。而在两者中,进化能够制造出更加复杂的东西。”如果靠设计不能制造出令我们骄傲的计算机,那我们就不得不依靠进化。
希利斯的第一台大规模并行“连接机”能使64000个处理器同时运行。他迫不及待地要启动进化,于是给计算机注入了64000个非常简单的程序。和霍兰德的遗传算法或雷的“地球”一样,每一个个体都是可以发生变异的一串符号。不过,在希利斯的“连接机”中,每个程序都有专门的处理器来对其进行处理。因此,种群能极其迅速地做出反应,而其数量之多,是串行计算机根本不可能做到的。
在他的培养液里,最初的“小家伙”都是些随机的指令序列,但是经过几万代进化,它们就变成能将一长串数字进行排序的程序(排序体)。大多数较大型的软件都会包含这样的排序例程。多年来,在计算机科学领域有无数的人力花费在设计最有效的排序算法上。希利斯让数千个排序体在计算机中增殖,随机变异,偶尔进行有性基因互换。然后,正如通常的进化策略一样,他的系统会测试这些程序,终止那些效率低下的,只有最短的(最好的)排序体才有复制的机会。经过上万代的循环后,他的系统培育出一种程序,它几乎和由人类程序员编制的最佳排序程序一样短。
接着,希利斯重新开始试验,不过这次有一个很重要的不同:允许在对进化的排序体进行测试时,测试程序(测试体)本身也可以发生变异。用来测试的字符串可以变得更复杂,以抵制那些简单的排序体。排序体必须瞄准一个移动的目标,而测试体则需要躲避一支会转向的利箭。事实上,希利斯将测试用的数字列表从一个僵化被动的环境转变成了一个积极主动的有机体。就像狐狸和野兔、黑脉金斑蝶和马利筋一样,排序体和测试体也构成了经典的共同进化关系。
希利斯骨子里还是个生物学家,他把不断变异的测试体看成是一个试图干扰排序程序的寄生生物,把他的世界看成是一场军备竞赛——寄生虫进攻,宿主防卫,寄生虫反攻,宿主防守反击,如此循环。传统观念认为,这种胶着的军备竞赛是在愚蠢地浪费时间,或难逃陷入泥潭的厄运。然而希利斯发现,寄生虫的引入并没有妨碍排序体的发展,恰恰相反,它加快了进化的速率。寄生虫式的军备竞赛也许很丑陋,但它们大大加快了进化的速度。
和汤姆·雷一样,丹尼·希利斯也发现进化能超越通常的人类能力。在“连接机”中发展起来的寄生虫,刺激了排序体去设计更有效的解决办法。在共同进化了1万个周期之后,希利斯的小怪物们进化出一种计算机科学家们前所未见的排序体。最具讽刺性的是,它刚好比人类设计的最短算法少一步。看似愚钝的进化设计出了一个独具匠心又非常有效的软件程序。
“连接机”中的单个处理器很愚蠢,智力跟一只蚂蚁差不多。不管花上多少年时间,单个处理器都无法独自想出任何问题的独创性解决办法。即使把64000个处理器串到一起也好不了多少。
而当64000个又蠢又笨的蚂蚁大脑形成相互联结的庞大网络时,它们就构成了一个进化的种群,看起来就像大脑里的一大堆神经元。那些使人类精疲力尽的难题,却往往在这里得到绝妙的解法。这种“海量连接中涌现出秩序”的人工智能方法便被冠以“连接主义”的名号。
早期认为进化与学习紧密相关的直觉又被连接主义重新唤醒了。探索人工学习的连接主义者通过将愚钝的神经元联结成巨大的网络而大展拳脚。他们研发了一种基于联结的并行处理方法——在虚拟或硬件实现的并行计算机上运行——与遗传算法相似,它能同时进行大量的运算,不过它的评估机制更加精密(更聪明)。这些大大“开窍”了的网络被称为神经网络。迄今为止,神经网络在产生“智能”方面所取得的成就还很有限,尽管它们的模式识别能力非常有用。
然而,一切事物均来自低等连接这一理念着实令人惊诧。网络内部究竟发生了什么神奇变化,竟使它具有了近乎神的力量,从相互连接的愚钝节点中孕育出组织,或是从相互连接的愚笨处理器中繁育出程序?当你把所有的一切联结到一起时,发生了什么点石成金的变化呢?在上一分钟,你有的还只是由简单个体组成的乌合之众;在下一分钟,联结之后,你却获得了涌现出来的、有用的秩序。
曾有那么一瞬间,连接主义者猜想:也许创造理智与意识所需要的一切,不过就是一个够大的互相连接的神经元网络,理性智能可以在其中完成自我组装。甫一尝试,他们的这个梦就破灭了。
但是人工进化者们仍然在追寻着连接主义的梦想。只是,和着进化的缓慢节奏,他们会更有耐心。而这缓慢的、非常缓慢的进化节奏着实令我不安。我这样向汤姆·雷表达我的忧虑:“现成的进化芯片和并行进化处理机让我有些焦虑,因为进化需要的时间多得令人难以置信。这个时间从何而来?看看大自然的运行速度,想一下,在我们谈话期间,有多少微小分子被吸附到一起。大自然的并行速度之快、规模之广之大令人难以置信,而我们却打算尝试超越它。在我看来,根本就没有足够的时间能做成这件事。”
雷回答道:“哦,我也有同样的焦虑。但另一方面,让我惊讶的是,在我的系统里即使仅靠一个虚拟处理器,进化也能进行得如此之快。再者,时间是相对的。进化的时间尺度是由进化中一代的时间跨度来决定的。对人类来说,一代是30年,但对我的小东西们来说,一代就是几分之一秒。而且,当我扮演上帝时,我能加快整体的突变率。我不敢肯定,但是也许我可以在计算机上得到更多的进化。”
在计算机上进行进化还有其他的原因。比如,雷能记录每个“小东西”的基因组序列,保存完整的人口统计和种群谱系。它生成大量数据,而在现实世界中根本无法收集这些数据。尽管随着人造世界复杂性的激增,提取信息的复杂性和成本也会激增,但做起来仍可能比无法掌控的有机世界更容易些。正如雷告诉我的那样,“即使我的世界变得像真实世界一样复杂,但我是上帝,我无所不知。我能获取任何我感兴趣的信息而不打扰它,也不用走来走去踩坏植物。这是一个根本的不同。”
15.5 驾驭野性的进化
回到18世纪,本杰明·富兰克林很难让朋友们相信,他实验室里产生的微弱电流与荒野中发生的雷电本质上是一回事。部分原因是由于他的人造电火花与撕裂天空的巨型闪电相比根本不在一个级别上,但更主要的原因是,那些旁观者们认为,福兰克林所声称的再现自然有违常理。
今天,汤姆·雷也难以让他的同事们信服,他在实验室里人工合成的进化与塑造自然界动植物的进化本质上是相同的。他的世界里几个小时的进化与蛮荒大自然中数十亿年的进化在时间尺度上的差别也只是部分原因;最主要的是,怀疑者们也认为,雷所声称的再现一个难以明了的自然过程是有违常理的。
在富兰克林之后200年,人工生成的可驾驭和可度量的闪电通过电线被导入建筑物和工具,成为社会尤其是数字社会中最重要的组织力量。再200年后,可驾驭和可度量的人工适应也将被导入各种机械设备,成为我们社会的主要组织力量。
还没有一个计算机科学家可以合成出符合预期的、无比强大的、能带来翻天覆地变化的人工智能。也没有一个生物化学家能够创造出人工生命。然而,雷和一些人已经捕捉到了进化的一角,并按照他们各自的需求来再现进化。许多技术人员相信,星星之火必将燎原,我们所梦寐以求的人工生命和人工智能都将由此而来。与其制造,不如培育。
我们已经运用工程技术造出了尽可能复杂的机器。如今,我们所面对的项目——数千万行代码的软件程序,覆盖全球的通讯系统,必须适应迅速变化的全球购买习惯并在几天内更新设备的工厂,价廉物美的机器人——其复杂度只有进化才能搞定。
由于进化是缓慢的、无形的和冗长的,因而在这个快节奏的、咄咄逼人的人造机器世界里,进化恍若一个难以察觉的幽灵。但我更愿意相信,进化是一种能被容易地转化为计算机代码的自然而然的技术。正是进化与计算机之间的这种超级兼容性,将推动人工进化进入我们的数字生活。
15.6 进化聪明分子的愚钝科学家
不过,人工进化不仅限于硅片。只要是工程方法一筹莫展的地方,都可以导入进化。生物工程这种尖端领域已经采用了合成进化技术。
这是一个来自真实世界的问题。你需要一种药物来抗击刚刚分离出机理的疾病。把这个疾病机理看作是一把锁。你所需要的是一把正确的钥匙——一种药,来打开这把锁。
有机分子的构成非常复杂。它们由数千个原子组成,其排列方式多达数十亿种。仅仅知道一种蛋白质的化学成分对我们了解其结构没有太大帮助。长长的氨基酸链层层叠叠绕成一团,而热点[13]——蛋白质的活跃部分——恰好处于外侧面的合适位置上。这种折叠蛋白质的方式就好比将一条一英里长、上面用蓝色标记了6个点的绳子绕成一团,使6个蓝色的点都落在不同的外侧面上。缠绕的方式不计其数,但是符合要求的却没有几个。你甚至无从知道一种方式是否接近答案——除非你已经快完成了它。变化是如此之多,纵使穷尽地老天荒也无法一一试遍。
制药商们通常有两种手段来对付这种复杂性。过去,药剂师靠的是碰运气。他们试遍所有从自然中发现的化学物质,看看哪一个可以解开这把给定的锁。一般都会有一两种天然化合物能够部分地发挥效用——这也算是获得了钥匙的一部分。今天,在工程学时代,生物化学家们试图破译基因代码和蛋白质折叠之间的路径,看是否能通过工程方法设计出构建分子所需的步骤。尽管有些许成功的例子,但蛋白质折叠和基因路径仍然因过于复杂而难以控制。因而,这种被称为“合理化药物设计”的逻辑方法,实际上已经撞上了工程方法所能处理的复杂性的极限。
自20世纪80年代末起,世界各地的生物工程实验室都开始致力于完善另一种我们用来创造复杂体的工具——进化。
简单地说,进化系统产生出数十亿随机分子,并用来试着开锁。在这数十亿个平凡的候选者中,也许只有一个分子的一部分与这把锁的6个点之一相合。这把“亲和”钥匙便被保留下来,其余的则被无情地淘汰。接着,由幸存下来的“亲和”钥匙又繁育出数十亿个新变种,同时与锁相合的那个点保持不变(称为绑定),再被用来试那把锁。也许此时又能发现一把可以匹配两个点的“亲和”钥匙。这把钥匙就作为幸存者保留下来,其余的则死去。幸存者繁育出数十亿个变种,最般配的后代将存活下去。这种淘汰-变异-绑定的过程重复几代后,这个分子繁育程序就会找到一种药——或许是救命药,与锁的所有点都相契合。
几乎任何一种分子都能被进化。譬如说,生物技术人员能进化出一种改进版的胰岛素。他们将胰岛素注入兔子体内,兔子的免疫系统会对这种“毒素”产生抗体(抗体是毒素的互补构型[14])。接下来,将这种抗体提取出来,注入进化系统。在进化系统中,抗体就好比是测试用的锁。经过几代进化之后,生物技术人员可以得到抗体的互补构型,实际上也就是胰岛素的替代版。这种替代版极具价值。天然药物的替代品具备诸多优势:它们可能更小;更容易注入身体;副作用更小;更容易制造;或靶向更精准。
生物进化者们还可以进化出一种对抗肝炎病毒的抗体,然后再进化出一种与抗体相配的仿肝炎病毒。被选中的病毒并非完美的变种,而是缺失了一些可引发致命症状的活性点。这种有缺陷、无能力的替代品就是所谓的疫苗。因而,疫苗也可以通过非工程的方法进化出来。
所有药物制造的常规逻辑在进化方法面前都不再适用。进化出来的分子与合理化设计出来的药物在效果上并无二致。唯一不同的是,我们对其功效的原理和方式一无所知。我们只知道它通过了所有的测试。这些发明出来的药物已经超出了我们的理解力,它们是“非理性设计”的产物。
药物进化允许研究人员不明就里,而进化本身却慢慢聪明起来。印地安那州立大学的进化生物化学家安德鲁·埃林顿(Andrew Ellington)告诉《科学》杂志,在进化系统中“要让分子告诉你有关它的事情,因为它比你更了解它自己。”
繁育药物可以使医学受益。但药物与软件不同。我们也许可以繁育软件,然后将系统交到它的手里,任由其自行繁育,走向无人知晓的境界。但我们能否让分子也走上这条不知通往何处的进化之路呢?
答案是肯定的,但这也会是一项艰巨的任务。汤姆·雷的电进化机偏重于处理可遗传的信息,却忽略了机体;而分子进化则偏重于机体,却忽略了可遗传的信息。单纯的信息本身很难消除,而没有死亡就没有进化。肌肉和血液之所以对进化非常有帮助,正是因为机体提供了一个让信息死去的便捷方式。任何能将可遗传信息与可消亡机体合二为一的系统都具备了进化系统的要素。
圣地亚哥的生物化学家杰拉尔德·乔伊斯研究的是早期生命化学。他提出了一种简单的方法,能够将信息和机体这对进化的双重本质融入到一个强健的人工进化系统中:他在一个试管里再现了可能是地球生命的早期阶段——“核糖核酸[15]世界”。
核糖核酸是非常精密的分子系统。它并不是最早的生命系统,但地球生命发展到某个阶段几乎必然成为核糖核酸生命。乔伊斯说:“生物学中的一切迹象都表明,39亿年前的地球是由核糖核酸来唱主角。”
核糖核酸有一个独一无二的优势,是我们所知的任何其他系统都不具有的。它能同时兼任机体和信息两个角色——既是表现形式,又是内在成因;既充当信使,又是信息。一个核糖核酸分子既要担当起与世界互动的职责,又要完成延续世界的重任,至少要把信息传递给下一代。尽管身负重任,核糖核酸仍然是一个极为紧凑的系统,开放式的人工进化正可以由此展开。
斯克里普斯研究所座落在加利福尼州圣地亚哥市附近的海边,是一座雅致时髦的现代化实验室。在这里,杰拉尔德·乔伊斯带着一小群研究生和博士后进行他的进化实验。在塑料试管的底部有少许液滴,体积还赶不上顶针大小,这就是他的核糖核酸世界。几十支这样的试管放在冰桶里,需要进化的时候,就把它们加热到身体的温度。一旦暖和起来后,核糖核酸能在一小时内产生出十亿个副本。
“我们所拥有的,”乔伊斯指着一个小试管说,“是一个大型的并行处理器。我之所以选择生物进化而不是计算机模拟,原因之一就是在地球上,至少在不久的将来,还没有计算机能为我提供1015个并行的微处理器。”试管底部的液滴在尺寸上与计算机芯片上的智能部分大体相当。乔伊斯进一步阐述道:“实际上,我们的人工系统甚至比自然进化还要好,因为没有多少自然系统能让我们在一小时内产生1015个个体。”
自维持的生命系统除了能带来智能革命外,乔伊斯认为进化还可以在制造化学品和药品上带来商业利润。在他的想象中,分子进化系统能够每天24小时、一年365天不停运转。“你给它下达一项任务,并告诉它,在搞清楚如何将分子A变成分子B之前,不要离开工作间。”
乔伊斯一口气说出了一大串专门从事定向分子进化[16]研究的生物技术公司(吉莱德[17]、Ixsys[18]、Nexagen[19]、Osiris[20]、Selectide[21],以及达尔文分子公司)。他的名单中还不包括那些已经颇具规模的生物技术公司,如基因泰克公司[22],该公司不仅从事定向进化技术的前沿研究,也进行合理化药物设计。达尔文分子公司主要专利的持有人是研究复杂性的科学家斯图尔特·考夫曼,该公司募集了数百万美元来利用进化设计药物。诺贝尔奖得主、生物化学家曼弗雷德·艾根[23]称,定向进化是“生物技术的未来”。
然而,这是真正的进化吗?它与那个带给我们胰岛素、眼睫毛和浣熊的进化是一回事么?没错,这就是进化。“我们通常所说的进化是达尔文进化,”乔伊斯告诉我,“不过在另一种进化中,选择压力[24]是由我们来决定的,而不是自然,因此我们称其为定向进化。”
定向进化是另一种监督式学习,另一种遍历博尔赫斯图书馆的方法,另一种繁育。在定向进化中,选择是由培育者引导的,而非自然发生的。
15.7 死亡是最好的老师
戴维·艾克利是贝尔通信研究所[25]神经网络和遗传算法领域的研究员。我偶然间了解到了艾克利对进化系统一些最独到的看法。
艾克利是个壮得像头熊、满嘴俏皮话的家伙。他和他的同事迈克尔·利特曼[26]制作了一段关于人工生命世界的搞笑视频,并在1990年第二届人工生命大会上播放出来,惹得在场的250位严肃的科学家们哄堂大笑。他的“造物”实际上就是些代码片断,和经典的遗传算法没有多大区别,但是,他用滑稽的笑脸来表示这些代码片段,让它们四处游动相互啃咬,或者撞上代表边界的墙壁。聪明的活下来,愚蠢的则死掉。和其他人一样,艾克利发现,他的世界能够进化出对环境异常适应的有机体。成功的个体非常长寿——按其所在世界的时间尺度衡量的话,能活25000“天”。这些家伙把系统给琢磨透了。它们知道如何用最小的努力来获取自己所需的东西,也知道如何远离麻烦。具有这种基因的“生物”,不仅个体很长寿,而且由其组成的种群也世代兴旺。
在对这些“街霸”的基因进行了一番研究后,艾克利发现它们有些资源尚未充分利用,这使得他觉得自己可以像神一样有番作为:通过改进它们的染色体,利用上这些资源,使它们更加适应他为它们搭建的环境。于是,他修改了它们进化后的代码(这个举动实际上相当于早期的虚拟基因工程),再把它们放回到他的世界。作为个体,它们能力超强,脱颖而出,适应力超过了以往的任何前辈。
然而,艾克利注意到,它们的种群数目总是低于自然进化而来的那些家伙。作为一个群体来说,它们活力不足。尽管从未绝迹,但它们总是濒临灭绝。艾克利认为,由于数目太少,这个物种的繁衍不会超过300代。也就是说,尽管手工改进的基因能够最大限度地适合个体,但从对整个族群有利的角度看,却不如那些自然成长起来的基因。此时此刻,在这午夜黑客的自酿世界中,一句古老的生态学格言第一次得到了明证:对个体而言最好的,对物种而言却不一定。
“我们弄不明白从长远看到底什么才是最好的,这点让人很难接受。”艾克利在人工生命会议上的一席话赢得了一片掌声,“但是我想,嘿,这就是生命!”
贝尔通信研究所之所以允许艾克利从事他的芥子世界的研究,是因为他们认识到进化也是一种计算。贝尔通信研究所曾经而且现在也一直对更好的计算方法很感兴趣,尤其是那些基于分布式模型的方法,因为电话网就是一个分布式计算机。如果进化是一种有效的分布式计算,那么是否还有其他的方法?如果可以的话,我们又能对进化技术做出怎样的改进或变化呢?借用我们常用的那个图书馆/空间的比喻,艾克利滔滔不绝地说道:“计算的空间庞大得令人难以置信,我们只不过探索了其中非常微小的一些角落。我现在做的,以及我想进一步做的,是扩展人类认识到的计算的空间。”
在所有可能的计算类型中,艾克利最感兴趣的是那些与学习有关的过程。“强学习”是一种学习方式,它需要聪明的老师。老师会告诉学生应该知道些什么,而学生则分析信息并将其储存在记忆中。不太聪明的老师则通过不同的方法教学。她对所要教的东西本身也许并不了解,但是,她能告诉学生什么时候猜出了正确答案——就像代课教师给学生测验打分一样。如果学生猜出了部分答案,老师可以给出“接近”或“偏离”的暗示,帮助学生继续探索。这样一来,这位不太聪明的老师就可能生成其本身所不具备的知识。艾克利一直在推动对“弱学习”的研究,他认为这是一种让计算空间最大化的方式:利用最少的输入信息,获取最多的输出信息。“我一直在试图找出最愚笨、最孤陋寡闻的老师,”艾克利告诉我,“我想我找到了。答案是:死亡。”
死亡是进化中唯一的老师。艾克利的使命就是查明:只以死亡为老师,能学到什么?我们还不是很清楚答案,但有些现成的例证:翱翔的雄鹰,鸽子的导航系统,或白蚁的摩天大楼。找到答案需要些时间。进化是聪明的,但同时又是盲目和愚笨的。“我想象不出比自然选择更笨的学习方法了,”艾克利说道。
在所有可能的计算和学习的空间中,自然选择占据了一个特殊的位置,它是一个极点,在这个点上,信息传递被最小化。它构成了学习和智能的最低基线:基线之下不会有学习产生,基线之上则会产生更加智能、更加复杂的学习。尽管我们仍然不能完全理解自然选择在共同进化世界中的本质,但它依然是学习的基础熔点。如果我们能够给进化一个度量值的话(我们还不能),就可以以此为基准评判其他形式的学习。
自然选择躲藏在许多表象之下。艾克利是对的;如今计算机科学家们都意识到,计算方式有许多种——其中许多是进化的方式。任何人都知道,进化和学习的方式可能有数百种;不论哪种策略,实际上都是在对图书馆或空间进行搜索。“传统人工智能研究的闪光思想——也是唯一思想——就是‘搜索’,”艾克利断言道。实现搜索的方法有很多种,对自然生命中起作用的自然选择只是其中的一种。
生物意义上的生命是与特殊的硬件绑定在一起的,这就是以碳为基础的DNA分子。这个特殊的硬件限制了自然选择所能使用的搜索方法。而有了计算机这个新硬件,特别是并行计算机,许多新的自适应系统得以问世,全新的搜索策略也得以应用。例如,生物DNA的染色体无法将自己的代码向其他生物体的DNA分子“广而告之”,以便它们获得信息并改变其代码,而在计算机环境中,你就能做到这一点。
戴维·艾克利和迈克尔·利特曼都是贝尔通信研究所认知科学研究组的成员。他们着手在计算机上构建一个非达尔文的进化系统。他们选择了一个最合逻辑的方案:拉马克进化,也即获得性遗传[27]。拉马克学说很有吸引力。直觉上,它远比达尔文进化更有优势,因为按道理来说有用的变异能更快地进入基因序列。然而,它的计算量之大很快就让满怀憧憬的工程师们明白,构造这样一个系统是多么不现实。
如果一名铁匠需要凸起的肱二头肌,他的身体该怎样倒推出基因上所需的变化呢?拉马克系统的缺陷在于,对于任何一个有利的变化,都需要回溯到胚胎发育期的基因构成。由于生物体的任何变化都可能由多个基因引起,或者是在身体的发展过程中由多个相互作用的指令引起。任何外在形式的内在因果都是一张错综复杂的网络,理清这个网络所需的追踪系统其复杂性与这个生物体本身相比也不惶多让。生物学上的拉马克进化受困于一条严格的数学定律:求多个质数的乘积极其容易,但分解质因素则异常困难。最好的加密算法正是利用了这种不对称的难度。拉马克学说之所以没有在生物界中真正存在过,就在于它需要一种不可能存在的生物解密方案。
不过,计算中并不需要躯体。在计算机进化(如汤姆·雷的电进化机)中,计算机代码兼任基因和躯体两个角色。如此一来,从表象中推导出基因的难题就迎刃而解了。(事实上,这种“表里如一”的约束并非只限于人工领域,地球上的生命必然已通过了这个阶段。也许任何自发组织的活系统都必须从一个“表里如一”的形式开始,就像自复制的分子那么简单。)
在计算机的人工世界里,拉马克进化是有效的。艾克利和利特曼在一台拥有16000个处理器的并行计算机上实现了拉马克系统。每个处理器管理一个由64个个体组成的亚种群,总计大约有100万个个体。为了模拟出躯体和基因的双重信息效果,系统为每个个体制作了基因副本,并称其为“躯体”。每个躯体的代码都略微有些差别,它们都尝试解决同一个问题。
贝尔通信研究所的科学家们设置了两种运行模式。在达尔文模式中,躯体代码会发生变异。某个幸运的家伙可能会意外地得到较好的结果,于是系统就选择它进行交配和复制。然而在达尔文进化中,生物交配时必须使用其代码的原始“基因”副本——即它所继承的代码,而非后天获得的经过改良的躯体代码。这正是生物的方式。所以,当铁匠进行交配时,他使用的是他的“先天”代码,而非“后天”代码。
相比之下,在拉马克模式中,当那个改良了躯体代码的幸运儿被选中进行交配时,它能使用后天获得的改良代码,作为其交配的基础。这就好比铁匠能将自己粗壮的胳膊传给后代一样。
经过对两个系统的比较,艾克利和利特曼发现,就他们所考量的复杂问题而言,拉马克系统的解决方案要比达尔文系统强上两倍。最聪明的拉马克个体比最聪明的达尔文个体聪明得多。艾克利说,拉马克进化的特点在于它把种群中的“白痴非常迅速地排挤出去”。艾克利曾经朝一屋子的科学家大喊道:“拉马克比达尔文强太多了!”
从数学意义上来说,拉马克进化注入了一点学习的要素。学习被定义为个体在活着时的适应性。在经典的达尔文进化中,个体的学习并不重要。而拉马克进化则允许个体在世时所获得的信息(包括如何增强肌肉,或如何解方程)可以与进化这个长期的、愚钝的学习结合在一起。拉马克进化能够产生更聪明的答案,因为它是更聪明的搜索方法。
拉马克进化的优越性使艾克利大感惊讶,因为他认为大自然已经做得很好了:“从计算机科学的角度看,自然是达尔文主义者而不是拉马克主义者,这实在是很蠢。可是自然受困于化学物质,而我们没有。”这使他想到,如果进化的对象不局限于分子的话,也许会有更有效的进化方式和搜索方法。
15.8 蚂蚁的算法天赋
意大利米兰的一组研究员提出了一些新的进化和学习方法。他们的方法填补了艾克利所提到的“所有可能的计算空间”中的一些空白。这些研究员们把自己的搜索方法称为“蚁群算法”,是因为他们受到了蚁群集体行为的启迪。
蚂蚁把分布式并行系统摸了个门清。蚂蚁既代表了社会组织的历史,也代表了计算机的未来。一个蚁群也许包含百只万工蚁和数百只蚁后,它们能建起一座城市,尽管每个个体只是模模糊糊地感觉到其他个体的存在。蚂蚁能成群结队地穿过田野找到上佳食物,仿佛它们就是一只巨大的复眼。它们排成协调的并行行列,穿行在草木之间,并共同使其巢穴保持衡温,尽管世上从未有任何一只蚂蚁知道如何调节温度。
一个蚂蚁军团,智愚而不知测量,视短而不及远望,却能迅速找到穿越崎岖地面的最短路径。这种计算正是对进化搜索的完美映射:一群无知而短视的个体们在数学意义上崎岖不平的地形上同时作业,试图找出一条最优路径。蚁群就是一个并行处理机。
真正的蚂蚁通过名为信息素的化学系统来彼此交流。蚂蚁在彼此之间以及自己的环境中散发信息素。这些芳香的气味随着时间的推移而消散。它还能通过一连串的蚂蚁来接力传播:它们嗅到某种气味,复制它并传给其他蚂蚁。信息素可以被看作是在蚂蚁系统内部传播或交流的信息。
米兰小组(成员为阿尔贝托·克罗尼、马可·多利古和维多里奥·马涅索)按照蚂蚁的逻辑构建了方程式。他们的虚拟蚂蚁是一大群并行运转的愚笨处理器。每个虚拟蚂蚁有一个微不足道的记忆系统,可以进行本地沟通。如果干得好的话,所获得的奖赏也以一种分布式计算的方式与其他同类分享。
意大利人用标准的旅行商问题来测试他们的蚂蚁机。这个问题是这样描述的:你需要拜访很多城市,但每座城市只能拜访一次,那么哪条路径最短?为了求解这个问题,蚁群中的每个虚拟蚂蚁会动身从一座城市漫游到另一座城市,并在沿途留下信息素的气味。路径越短的话,信息素挥发得越少。而信息素的信号越强,循迹而来的蚂蚁就越多。那些较短的路径由此得到自我强化。运行5000回合之后,蚂蚁的群体思维就会进化出一条相当理想的路径。
米兰小组还尝试了各种变化。如果虚拟蚂蚁都由一座城市出发或均匀分布在各个城市,会有什么不同吗?(分布的效果要好一些。)一个回合中虚拟蚂蚁的数量会有影响么?(越多越好,直到蚂蚁与城市的数量比为1:1。)通过改变参数,米兰小组得到了一系列蚂蚁搜索算法。
蚂蚁算法是拉马克搜索的一种形式。当某只蚂蚁偶然发现一条短路径,这个信息通过信息素的气味间接地传播给其他虚拟蚂蚁。这样,单只蚂蚁毕生的学习所得就间接地成为整个蚁群信息遗产的一部分。蚂蚁个体把它学习到的知识有效地传播给自己的群体。与文化教导一样,传播也是拉马克搜索的一部分。艾克利说:“除了交配,信息交换还有许多方式。比如晚间新闻。”
无论是真实的蚂蚁,还是虚拟的蚂蚁,它们的聪明在于投入“传播”的信息量非常少,范围非常小,信号也非常弱。将弱传播引入进化的提法相当有吸引力。即使地球的生物界中存在拉马克进化,那它也一定被埋藏得很深。不过,仍然存在充满了各种稀奇古怪算法的空间,各种拉马克式的传播尽可以在那里找到用武之地。我听说有的程序员整天在鼓捣“弥母(文化基因)”式的进化算法,即模仿思想流(弥母)从一个大脑进入另一个大脑,试图捕捉到文化革命的精髓和力量。连接分布式计算机节点的方法有千千万万,迄今为止,只有极少数的方法(如蚂蚁算法)被人们考察过。
直到1990年,并行计算机还遭到专家们的嘲笑,认为它尚有很多地方值得商榷,过于专业,属于狂热派的玩物。它们结构混乱,难以编程。但狂热派却不这么看。1989年,丹尼·希利斯与一个知名计算机专家公开打赌,预测到1995年,并行机每月处理的数据量将超过串行机。看来他是对的。当串行计算机由于其狭窄的冯·诺依曼通道不堪复杂任务的重负而痛苦呻吟时,专家的看法一夜之间就发生了变化,并迅速席卷了整个计算机产业。彼得·丹宁[28]在《科学》杂志上撰文(《高度并行的计算》(Highly Parallel Computation),,称,“解决高级科学问题所需的计算速度,只能通过高度并行的计算架构来获得。”斯坦福大学计算机科学系的约翰·柯扎[29]更直截了当,“并行计算机是计算的未来。句号。”
然而,并行计算机还是很难掌控。并行软件是水平的、并发的、错综复杂的因果网络。你无法从这样的非线性特性中找出缺陷所在,它们都隐藏了起来。没有清晰的步骤可循,代码无从分解,事件此起彼伏。制造并行计算机很容易,但要为其编程却很难。
并行计算机所面对的挑战是所有分布式群系统都会面对的——包括电话网络、军事系统、全球24小时金融网络,以及庞大的计算机网络。它们的复杂性考验着我们掌控它们的能力。“为一个大规模并行机编程的复杂度可能超过了我们的能力,”汤姆·雷对我说,“我认为我们永远也写不出能充分利用并行处理能力的软件。”
并行的愚昧的小东西能够“写”出比人类更好的软件,这让雷想到了一个能得到我们想要的并行软件的办法。“你看,”他说,“生态的相互作用就是并行的最优化技术。多细胞生物本质上就是在宇宙尺度上运行大规模的并行代码。进化能够‘想出’我们穷尽一生也无法想清楚的并行编程。如果我们能够进化软件,那我们就能大大往前迈进一步。”对于分布式网络这类事物,雷说:“进化是最自然的编程方式。”
自然的编程方式!这听起来真让人有些泄气。人类就应该只做自己最擅长的工作:那些小而灵的、快而精的系统。让(人工注入的)自然进化去做那些杂乱无章的大事吧。
15.9 工程霸权的终结
丹尼·希利斯也得出了相同的结论。他很认真地表示,想让自己的“连接机”进化出商务软件。“我们想让这些系统解决一个我们只知如何陈述却不知如何解决的问题。”一个例子就是如何编写出数百万行驾驶飞机的程序。希利斯提议建立一个群系统,以进化出“驾驶技巧”更优秀的软件,系统中有一些微小的寄生虫程序会试图坠毁飞机。正如他的实验所展示的,寄生虫会促使系统更快地向无差错和抗干扰强的导航程序收敛。希利斯说:“我们宁肯花更多时间在编制更好的寄生虫上,也不愿花上无数个小时去做设计代码和查错这些事情。”
即使技术人员成功地设计出一款庞大的程序,譬如导航软件,要想对其进行彻底的测试也是不可能的。但进化出来的东西则不同。“这种软件的成长环境里充斥着成千上万专职的挑刺者,”希利斯说着,又想起了自己的寄生虫,“凡是在它们手下躲过一劫的,都经受住了严酷的考验。”除了能够创造我们制造不出来的东西以外,进化还有一点值得夸耀:它能造出来缺陷更少的东西。“我宁愿乘坐由进化出来的软件驾驶的飞机,也不愿乘坐由我自己编制的软件驾驶的飞机,”作为一名非凡的程序员,希利斯如是说道。
长途电话公司的呼叫路由程序总共有200万行代码。而这200万行代码中的三行错误代码就导致了1990年夏天全国电话系统的连锁崩溃。现在,200万行已经不算多了。装载在海军海狼潜艇上的作战计算机包含了360万行代码。1993年微软发布的新操作系统“NT”总共包含400万行代码。一亿行的程序也离我们不远了。
当计算机程序膨胀到几十亿行代码时,仅仅是维护程序、保持正常运行本身就会成为一个主要负担。有太多的经济活动和人的生命会依赖于这种数十亿行的程序,因此不能让它们有哪怕片刻的失效。戴维·艾克利认为,可靠性和无故障运行时间将成为软件最首要的任务。“我敢说,对真正复杂的程序来说,仅仅是为了存活下来就要消耗更多的资源。”目前,一个大型程序中只有一小部分致力于维护、纠错和清理工作。“将来,”艾克利预言道,“99%的原始计算机周期都将被用在让这个怪兽自我监视以维持其正常运转上。只有剩余的1% 将被用于执行用户任务——电话交换或其他什么。要知道,这个怪兽只有活下来,才能完成用户任务。”
随着软件越来越大,生存变得越重要,同时也越来越困难。要想在日复一日的使用中存活下来,就意味着必须能够适应和进化,而这需要做更多的工作。只有不断地分析自己的状况,修正自己的代码以适应新的需要,净化自己,不断地排除异常情况,并保持适应与进化,程序才能生存下来。计算必须有生命力和活力。艾克利称之为“软件生物学”或“活力计算”。程序员即使24小时都开着寻呼机,也不能确保数十亿行的代码能够不出故障。人工进化也许是唯一能使软件保持生命力和活力的方法。
人工进化是工程霸权的终结。进化能使我们超越自身的规划能力;进化能雕琢出我们做不出来的东西;进化能达到更完美的境界;进化能看护我们无法看护的世界。
但是,正如本书标题所点明的,进化的代价就是——失控。汤姆·雷说道:“进化系统的一个问题就是,我们放弃了某些控制。”
丹尼·希利斯所乘航班的驾驶程序是进化出来的,没有人能弄懂这个软件。它就像一团千丝万缕的乱麻,也许真正需要的只是其中的一小部分,但是它能够确保无故障地运行。
艾克利的电话系统是由进化出来的软件管理的,它是“活”的。当它出问题时,没有人能排除故障,因为程序以一种无法理解的方式埋藏在一个由小机器组成的未知网络中。不过,当它出问题时,它会自行修复。
没有人能把握住汤姆·雷的培养液的最终归宿。它们精于设计各种小技巧,却没人告诉它们下一步需要什么技巧。唯有进化能应付我们所创造的复杂性,但进化却不受我们的节制。
在施乐公司帕洛阿尔托研究中心,拉尔夫·默克勒[30]正在制造能够自我复制的极小分子。由于这些分子的尺度为纳米级别(比细菌还小),因此这种技术被称为纳米技术。在不久的将来,纳米技术的工程技能与生物技术的工程技能将趋于一致:它们都把分子看成是机器。对纯粹的生命来说,纳米技术可以看作是生物工程;对人工进化来说,纳米技术则等同于生物分子。默克勒告诉我:“我可不想让纳米技术进化。我希望把它限制在一定的框架内,并且受到国际公约的制约。对纳米技术来说,最危险的事情莫过于交配。是的,我想,应该有个国际公约来限制在纳米技术中使用交配。一旦交配,就有了进化;只要进化,就会有麻烦。”
进化并未完全超脱我们的控制;放弃某些控制只不过是为了更好地利用它。我们在工程中引以为傲的东西——精密性、可预测性、准确性以及正确性,都将为进化所淡化。
而这些东西必须被淡化,因为真实的世界是一个充满不测风云的世界,是一个千变万幻的世界;生存在这个世界里,需要一点模糊、松弛、更多适应力和更少精确度的态度。生命是无法控制的;活系统是不可预测的;活的造物不是非此即彼的。谈起复杂程序时,艾克利表示:“‘正确’是水中月,是小系统的特性。在巨大的变化面前,‘正确’将被‘生存能力’所取代。”
当电话系统由适应性很强的进化软件来运行时,是没有一种所谓的正确方式的。艾克利继续道:“说一个系统是‘正确的’,听起来就像是官话、空话。人们评判一个系统,是根据其对意外情况的反应力以及应对措施的创造性。”与其正确,不如灵活,不如耐久;所谓“好死不如赖活”。艾克利说:“小而专且正确的程序就像蚂蚁,对身处的世界茫然无知;而反应灵敏的程序往往是失控的庞然大物,仅把1%的精力花在你要解决的问题上。孰优孰劣,不言自喻。”
有一次,在斯图亚特·考夫曼的课上,一个学生问他:“对于你不想要的东西,你的进化是如何处理的?我知道你能让一个系统进化出你想要的东西,可是,你又怎么能肯定它不会制造出你不想要的东西?”问得好,孩子。我们能足够准确地定义我们想要的东西,从而将它培育出来。然而,我们往往不知道我们不想要什么。即使知道,这些不受欢迎者的名单也长得不切实际。我们怎样才能剔除那些不利的副作用呢?
“你做不到的。”考夫曼坦率地回答。
这就是进化的交易。我们舍控制而取力量。对我们这些执着于控制的家伙来说,这无异于魔鬼的交易。
放弃控制吧,我们将人工进化出一个崭新的世界和梦想不到的富裕。放手吧,它会开花结果的。
我们曾经抵制住过魔鬼的诱惑吗?
[1] 汤姆·雷(Tom Ray,全名Thomas S.Ray):生态学家,编写出了名为“Tierra”(西班牙语“地球”之意)的计算机人工生命模型,引起学术界的轰动。目前他是奥克拉荷马大学的动物学教授兼任计算机科学副教授。
[2] 艾德华·威尔森(Edward Osborne Wilson,1929.06.10~):美国昆虫学家和生物学家,尤其以他对生态学、进化论和社会生物学的研究而著名。他的主要研究对象是蚂蚁,尤其是蚂蚁通过弗洛蒙进行通讯。他于1975年所写的《社会生物学:新的综合》(Sociobiology:The New Synthesis)引起了对社会生物学的争论。生物多样性这个词也是他引入的。威尔森的成就获得了许多奖励,其中包括美国国家科学奖章、克拉福特奖和两次普利策奖。
[3] 遗传算法(Genetic Algorithms,简写为GA):人工智能领域的一个重要算法,最早由约翰·霍兰德于20世纪70年代提出。
[4] 劳伦斯·福格尔(Lawrence Fogel,1928.03.02~2007.02.18):进化计算和人为因素分析的先驱者,进化规划之父。
[5] 汉斯·布雷默曼(Hans Bremermann,1926~1996):加州伯克利大学名誉教授,数学生物学先驱。
[6] 电子数值积分计算器(ENIAC – Electronic Numerical Integrator and Computer):1946年2月15日诞生于宾夕法尼亚大学,由美军在二战中投资研制。它曾被认为是世界上第一台电子计算机,但最近的一场旷日持久的官司改变了这个历史,阿塔纳索夫-贝瑞计算机(Atanasoff-Berry Computer,简称ABC)取而代之成为世界上第一台电子计算机。
[7] 离散变量自动电子计算机(EDVAC – Electronic Discrete Variable Automatic Computer):是一台早期的电子计算机。它和电子数值积分计算器的建造者均为宾夕法尼亚大学的电气工程师约翰·莫奇利和普雷斯波·艾克特。冯·诺依曼以技术顾问的身份参与了研制。
[8] 旋风计算机(Whirlwind):一款由麻省理工大学研制的早期电子计算机。引入了当时先进的实时处理理念,并最先采用显示器作为输出设备,拥有世界首款成熟的操作系统。其设计理念对20世纪60年代的商用计算机产生巨大影响。
[9] 艾伦·纽厄尔(Alan Newall,1927.03.19~1992.07.19):计算机科学和认知心理学领域的科学家,曾任职于兰德公司以及卡内基-梅隆大学的计算机学院、商学院和心理学系。1975年他和赫伯特·西蒙一起因人工智能方面的基础贡献而被授予图灵奖。
[10] R.A.费希尔爵士(Sr.Ronald Aylmer Fisher,1890.02.17~1962.07.29):英国皇家学会会员、统计学家、生物进化学家与遗传学家。他是现代统计学与现代进化论的奠基人之一。他被认为是“一位单枪匹马创立现代统计科学的天才”,“达尔文最伟大的继承者”。
[11] 《能同时执行任意数量子程序的通用计算机》:A Universal Computer Capable of Executing an Arbitrary Number of Sub-programs Simultaneously
[12] 史蒂文·列维(Steven Levy,1951~):美国新闻工作者,写了不少有关电脑科技、密码系统、网络安全和隐私的书。
[13] 热点(hot spot):基因组上的某些小块区域。这些区域内发生基因重组的频率要高于周围区域上百倍乃至上千倍。热点的成因目前尚不清楚,但所有热点的特性都很相似。此外,最近的研究显示,人类基因组中有超过25000个热点,这也表明热点是基因组中普遍存在的现象。
[14] 互补构型(complementary shape):指能像手与手套、钥匙与锁一样合在一起的构型。
[15] 核糖核酸(RNA):是一种重要的生物大分子,是细胞中遗传信息的中间载体。对一部分病毒而言,RNA是其唯一的遗传物质。
[16] 定向分子进化(directed molecular evolution):根据所需要的属性进行分子进化的技术。
[17] 吉莱德(Gilead):1987年成立于硅谷的一家高科技生物制药公司,研发和生产的药品种类主要包括抗艾滋病毒药、抗肝炎药、严重心血管疾病和呼吸道疾病用药。公司2009年的收入超过70亿美金,在《商业周刊》评选的2009年50强公司中名列第一。
[18] Ixsys:创立于1989年,是第一家从事定向分子进化研究的公司。后更名为“应用分子进化”(Applied Molecular Evolution,简写为AME)。现为纳斯达克上市公司。
[19] Nexagen:位于俄亥俄州的健康保健品公司,主打产品为减肥药Jen Fe Next。
[20] Osiris:纳斯达克上市公司,从事干细胞产品的研发和生产。
[21] Selectide:1990年创立于亚利桑那州图森市,公司后经多次收购与转手,已名存实亡。
[22] 基因泰克(Genentech):美国历史最悠久的生物技术公司,创办于1976年。公司在上世纪末和本世纪初曾推出过几款癌症用药,风靡市场。瑞士制药业巨头罗氏集团目前为该公司的完全拥有者。