YaMoR是一种仍处于实验阶段的新式模块机器人,组块之间以铰链相互连接。它既能组成类似千足虫的直线结构,蠕动前行;也能模仿两栖动物的四肢结构,匍匐前进;甚至可以模拟昆虫爬行。模块中的电脑芯片让它能够被重复编程,每一个模块都是智能的,类似于人类的大脑。只要方法得当,模块机器人就可以通过优化自身的设计应对不同的问题。
作为世界顶尖的理工学院之一,瑞士洛桑联邦理工学院设计生产的YaMoR是蒸蒸日上的模块机器人家族中的新成员。目前世界上许多工程学实验室都专注于研制模块机器人,种类众多。但由于适用的条件不同,这些机器人往往风格迥异,相互之间缺乏相似性。有的模块机器人像方形的骰子,有的则像金字塔。还有一些由成群的球体构成,另一些则像成串的轮胎。类似YaMoR的模块机器人在外形设计上几乎百无禁忌,各种立体几何造型应有尽有。
在YaMoR机器人跨出第一步的5.4亿年之前,自然界就已经发生过一次形态设计的百家争鸣了,我们把那场生物性状的爆炸式起源称为寒武纪大爆发(cambrian explosion)。我们今天看到的所有形态的生物都诞生于那场爆发,而有更多的物种则已经消失在历史长河中,比如所有身体分节、没有四肢的古虫动物(vetulicolia)。与古虫动物门生物相比,以YaMoR为代表的模块机器人显得非常原始。如果推动自然进化的曲速引擎同样能够在人类工程技术中大显神威,那么第二次寒武纪大爆发似乎也就值得期待了。
我们将会看到,促进自然进化的基因型网络在人类技术进步中同样存在,并不是什么天马行空的想法。自然进化和技术创新拥有诸多共同点。
大自然和人类技术发展都依赖于不断试错。作为天才发明家的代表人物,爱迪生曾经“尝试不下6 000种不同的植物,才找到世界上最适合制作灯丝的材料”。他最终在无意间发现竹子是解决白炽灯泡灯丝易断问题的最佳答案,对于这段经历,爱迪生自己也感慨万千,其中一条总结是:“我并没有失败那么多次。我不过是成功找到了一万种不适合的材料而已。”这句名言无疑说明了“试错”对于技术发明而言的重要性,而对于生物学也一样。
试错不管是在当下还是在爱迪生生活的年代都意义非凡。著名的编程语言FORTRAN曾经帮助科学家模拟从原子到星系的运行规律,为人类理解宇宙立下汗马功劳。FORTRAN的创始人之一约翰·巴克斯(John Backus)曾说:“你必须有随时失败的觉悟。你费尽心力,提出许多不同的想法,然后努力求证,但是结果往往会发现它们都行不通。在偶然发现一个可行的办法之前,你要不断重复这个过程。”
诚然,就失败所蒙受的代价而言,生物进化比一个研究灯泡材料的发明家或者研究理论的科学家要惨重得多。以大雁为例,大雁体内的血红蛋白变体不啻于大自然所做的一场生存实验。如果变异的结果是血红蛋白从稀薄的空气中摄取氧气的能力提升,那么成功。但如果结果是血红蛋白失去携氧能力,那么这种变异连同这个个体就将落入万劫不复之地。
理论科学和工程技术中的失败通常不会有致命的危险,但是错误的观点也往往没有那么容易被澄清。著名的天文和天体物理学家弗雷德·霍伊尔爵士(Sir Fred Hoyle)直到2001年去世都拒绝接受宇宙大爆炸理论,不仅如此,他还为流感理论辩护,认为流行性感冒是太阳风减弱时外星病毒侵入地球大气所致。19世纪的开尔文勋爵曾经用热力学定律以及他的基督教信仰作为测算地球年龄的依据,结果得出的结论只有地球实际年龄的数百分之一。
科学和技术的修罗场上从来不缺充斥着错误信念的聪明脑瓜,而且那些人往往至死不悟。量子物理的创始人之一马克斯·普朗克(Max Planck)曾经颇有洞见地表示:“科学理论的胜利往往建立在异见者的坟墓之上,而不是他们的皈依,下一代人成长过程中耳熟能详的理论即他们认为的真理。”科学就像大自然,总是随着丧钟的节拍翩翩起舞。
巧合的是,大自然抵抗致命错误的秘诀之一恰好被技术发明领域所借鉴:人海战术。探索自然图书馆的生物不止一个,同样的道理,每一项重要的发明也不是某个天才孤军奋战的成果。尽管从在浴缸里泡澡的阿基米德到在专利局上班的爱因斯坦,每个伟大的科学家脑海中的世界对大多数人而言都难以想象,但是如同有成群的生物涌入生物进化的各色化学图书馆一样,科学和技术创新的另一个真相是它们的进步需要密集的资源投入。开发FORTRAN需要众人通力合作,而爱迪生在研制灯泡、电话和电报机的时候也借助了数十名助手的协助。
19世纪的工业革命更是某个新兴阶层崛起的结果,这个阶层的成员主要是受过优质教育的技工,而不是衣冠楚楚的贵族科学家。这些手艺人为了提高生产效率发明了一系列新技术,包括蒸汽机和自动织布机。时至今日,任何新技术的发明,从新款手机到新式药物,抑或新型能源,都需要大量的科学家和工程师经过激烈的竞争和无数次的失败才有可能成功。从这些例子来看,如果没有试错的过程,我们很难想象有更合理的成功方式:参与的人越多,尝试的可能性也就越多,相应成功的概率也就越高。
与自然界类似,技术和科研人员们总是同时行军在各自领域的最前线。提出过“行为榜样”(role model)和“自我应验预言”(self-fulfilling prophecy)概念的美国社会学家罗伯特·默顿(Robert Merton),因他对于科学理论多起源的归纳而被科学界铭记。默顿把同一个理论的不同起源直接称作“多起源”(multiples)。类似的例子举不胜举:气体温度和压力之间的关系在英语国家被称为波义耳定律,而在法语国家则被称为马略特定律,因为罗伯特·波义耳(Robert Boyle)和埃德姆·马略特(Edme Mariotte)分别通过自己的工作独立发现了这个规律。
罗伯特·富尔顿(Robert Fulton)、马奎斯·德朱弗若依(Marquis de Jouffory)和詹姆斯·拉姆齐(James Rumsey)都是蒸汽船的“设计者”;温度计更是至少有6名不同的发明者。更广为人知的例子是微积分,它几乎由牛顿和莱布尼茨两人同时提出;而伊莱沙·格雷(Elisha Gray)则与格拉汉姆·贝尔(Graham Bell)在同一天申请了电话机的专利(尽管最后还是贝尔赢得了法律仲裁的专利权)。
科研以及技术多起源的现象之所以存在,是因为科学问题与自然界的生命一样,同一个问题通常有多种解决途径。最典型的例子也是科学家研究较为充分的一个问题:生物学家称之为碳固定,而工程学家称之为碳脱除,研究的关注点都是如何除去大气中的二氧化碳。生物除碳的中流砥柱是一种植物酶,它能够把二氧化碳连接到一种名为1,5-二磷酸核酮糖的糖分子上。一旦结合,二氧化碳就会成为新分子的一部分并参与接下来的代谢反应,并最终成为植物实体的一部分。这个过程不仅可以促进植物生长,让今天的我们能够用上化石燃料,它也是碳元素在生物圈和非生物圈循环的方式。
不过自然界并不是只有植物拥有固定碳的能力,某些细菌能够用乙酰辅酶A,而另一些则可以利用三羧酸循环中的某些中间代谢产物固定二氧化碳。试图阻止气候变暖的环境工程师也在研发更先进的碳脱除技术,比如利用乙醇胺或氢氧化钠分子固定二氧化碳。
默顿的多起源理论在许多其他例子中也适用。汽车的发动机可以是往复活塞式,也可以是偏心转子式。汽车的燃料燃烧可以靠汽油发动机的火花塞来触发,也可以用柴油发动机的压缩热来触发。生物可以用灵活的单眼感知光线,也可以借助复杂精致的眼球感知光线。生活在极圈的鱼类体内的抗冻蛋白前身是不同酶的晶体蛋白及高度多样化的携氧球蛋白,都是生物对于同一个问题的多种解决方式。
科学技术和生物创新的另一个共同点是擅长废物再利用,这在技术发明的历史上体现得淋漓尽致。根据作家斯蒂芬·约翰逊(Stephen Johnson)的记述,约翰内斯·古登堡(Johannes Gutenberg)发明印刷术的契机是他从别人那里借来的一台机器,那台机器配有螺旋传送装置,在设计之初是用来给客人上酒的,而古登堡对它做了改装使它成为驱动新媒体运转的高效引擎。用于加热食物的微波炉技术最早来自雷达:一名雷达工程师在微波融化了他口袋里的一条巧克力棒后发现了微波的加热功能,最初投入商业使用的产品名称正是“雷达炉”。
轻质合成材料凯夫拉(Kevlar),发明的初衷是用以替代赛车轮胎上的钢质材料,而现在则大量应用于防弹背心和钢盔的制造。还有一些甚至都称不上“创造”的普通装置也是“旧瓶装新酒”的产物,比如两个锯木架上摆上一块门板就是一张粗糙的桌子;一只靴子也可以当简易的制门器使用;牛奶箱同时也是上好的档案柜,等等。爱迪生说得好:“想要创造,你需要先有想象力和一堆无用的垃圾。”
1982年,古生物学家史蒂芬·杰伊·古尔德和伊丽莎白·弗尔巴(Elizabeth Vrba)把生物学中的这种现象正式命名为“扩展适应”(exaptation)。事实上,达尔文才是这方面的引领者,他在《物种起源》中就提醒读者,“某个针对特定目的构建的器官可能出于适应更多功能的目的而发生改变”。扩展适应最经典的例子是鸟类的羽毛,构成鸟类羽毛的主要成分与构成爬行动物的鳞片的成分相同,是一种被称为角蛋白(keratins)的致密纤维蛋白。羽毛最初的功能很可能是保温和防水,后来才演变(或者说“扩展”)为用于飞行。
扩展适应的现象在分子水平也很常见,例如那些调节羽毛合成的调控分子。其中一种蛋白质叫“音速刺猬”(sonic hedgehog)。没错,正是那款著名的电子游戏的名字。这种蛋白质在人类体内负责控制手指和脊髓的生长,而在鸟类体内则与羽毛的生长有关。一种控制后肢形成的调节蛋白在蝴蝶体内负责控制眼状斑点的发育,某些代谢酶更是直接参与晶状体的形成。
扩展适应的例子是我们要探讨的自然和技术之间的最后一个共同点:创造在一定程度上就是对原有事物的组合优化。我们第一次了解到这个事实是在探讨代谢时,生物通过对已有化学反应的组合把有毒的五氯苯酚代谢成可利用的能源物质,或者把体内有毒的成分代谢成低毒的尿素。对于蛋白质而言,新的创造来自对已有氨基酸的重新组合。而在调控环路中,新的环路起源于调节因子之间新的相互作用。技术发明上的创造也逃不出优化组合的套路,以航空工业的喷气式发动机为例,它的三个主要组成部分分别是提高气压的空气压缩机、混合空气和燃料的燃烧室以及产生动力的旋转涡轮。
在20世纪,当来自英国、德国、匈牙利和意大利的工程师们埋头研制世界上第一台喷气式发动机时,上述三个部分都已经不是什么新鲜玩意儿了。最早的空气压缩机是装在熔炉上的风扇,人类利用工业风扇的历史已经超过了2 000年;蒸汽机车和内燃机车则是燃烧室不可或缺的操作设备;阿基米德在公元前3世纪就已经发明了螺旋涡轮,第一个燃气涡轮发动机的专利出现在18世纪晚期的英国。
喷气式发动机的发明并不是优化式创新的特例。几十年前,以经济学家约瑟夫·熊彼特(Joseph Schumpeter)和社会学家科拉姆·吉尔菲兰(S.Colum Gilfillan)为代表的社会科学家都认为对已有事物的组合优化是发明创造的关键。经济学家布莱恩·阿瑟(W. Brian Arthur)在他的《技术的本质》[26]中甚至直言,“无论什么新技术都必须建立在已有的技术基础之上”。从前面的章节我们大概能够体会,同样的道理在生物学中也适用:任何生物进化中的新性状,无论它在无尽的宇宙图书馆中的哪个角落,都是组合优化的结果,就像每一本新书都不过是对已有文字的重新组合而已。
试错、人海战术、多起源及组合优化都是科学技术和自然界之间相似的地方,难怪技术学家一直想要模仿自然的创造能力。这里我指的不仅仅是生物技术专家,尽管人类在生物技术领域已然硕果累累:从可以把沾满泥渍的裤子洗得干干净净的含酶洗衣粉到糖尿病患者使用的人工合成胰岛素、通过基因工程培育的抗虫作物。生物技术的材料取自生物本身,因此它从一开始就已经利用了自然图书馆带来的便利。我在这里想搞明白的是,与人造材料打交道的技术学家是否也能享受同样的便利,比如利用玻璃、塑料、硅质材料或YaMoR的专家。
技术创造与生物进化并没有我们想的那么神秘,反而特别因循守旧。技术学家们早就发现,创造的过程犹如一个按部就班的算法,连机器都能重复。变异通过改变DNA创造具有新表现型的生物,其中一些经过自然选择幸存下来并繁衍生息,这个过程就是在变异、选择中不断循环往复。意识到这一点的技术学家,确切地说是计算机科学家们,据此创立了一个全新的领域,以研究生物进化的算法,他们想要完全依靠计算机解决现实世界中的复杂问题。
一个著名的例子是广为人知的旅行推销员问题(traveling salesman problem),这个数学谜题由爱尔兰数学家威廉·罗恩·哈密尔顿(William Rowan Hamilton)在19世纪中期提出。旅行推销员问题的预设条件并不复杂:一个推销员要出门拜访几个身处遥远城市的潜在客户,每个客户都住在不同的城市。推销员需要乘车或乘坐飞机前往,这意味着旅程中会耗费大量时间。而推销员是个恋家的人,他希望在保证造访客户数量的基础上,每趟出差的时间越短越好。旅行推销员问题讨论的是,找出一条经过所有城市的路线,让推销员能够以最快、最高效的方式完成出差。
这个数学问题的难度远远超出它的表象。如果城市的数量不多,几乎任何人都能轻松设计出最短的旅行线路。但是当需要考虑的城市数量超过十几个时,最优路线的制订就变得异常困难。旅行推销员问题属于计算机科学家口中典型的“非确定、多项式”的计算问题。这类命题是目前最困难的计算问题之一,困难的原因在于问题的解决方案将随着城市数量的增加呈指数级上升。
围绕旅行推销员问题已经有上千篇相关论文发表。关注这些论文的读者并不是推销员,而是计算机芯片的设计师。计算机芯片内包含了数以亿计的元件,电子元件之间通过连接进行数据交换。由于缩短元件之间的连接距离能够在节省电能的同时提升计算速度,所以制订电路元件(“城市”)之间的最短路线自然也就成了芯片设计师们的诉求。为百货公司运送货物的卡车司机、联邦快递以及到社区接送学生的校车对这个问题都不会感到陌生。甚至大黄蜂也需要解决这个问题:一只工蜂每次回巢前可能要“拜访”数百朵花,对它们而言,走太多的冤枉路就意味着负担不起的浪费。
如果考量的“城市”数量在数千座上下,那么以复杂的数学手段为推销员设计最佳路线依然是可行的。虽然这些数学理论复杂高深,但是从名字上却一点看不出来,比如“切割平面法”和“分支定界法”。当城市数量上升到百万级别时,这些方法依旧能够制订出接近完美的路线。不过严谨的数学算法并不是必需的,生物学家们愚钝而盲目的算法同样能够解决问题:首先让计算机随机生成一个路线方案——任何路线都可以,无论它多么低效。然后,由计算机程序对生成的路线进行修改,每次只改变其中几座城市(在不同的情景中也可以是停留的商铺、学校或花)之间的线路,继而查看新的路线是否比原来的更短。如果路线的确变短了,就选择继续改变后面的新路线。下一步再重复上述过程,再比较。而如果线路没有缩短就放弃新路线,回到原有的方案上。经过足够多的尝试,这种简单的算法同样能够让路线变得越来越短,最终找到的路线就算不是最优解,也是相对最理想的路线之一。
这种进化的算法还被应用在了一些你想不到的地方。比如军事作战计划制订员用这种方式设计无人机在敌方领空的最佳巡航路线,密码编译人员用这种方式为敏感信息加密,基金经理用这种算法预测金融市场的动向。汽车工程师也可以通过优化发动机内燃料注入的时间和压力,调整它的运作,而这种算法不负众望,的确能够提升发动机的燃料效率。需要注意的是,仅仅提高燃料效率并不足以推动发动机设计上的改革。
模拟生物进化的进化算法确实是一种强大的工具,但是似乎还缺点儿什么。它们欠缺生物进化的核心部分:组合优化。大自然是组合优化的一把好手,而原因非常简单:标准化。
我们在第2章中已经探讨过,类似通用能量载体三磷酸腺苷以及通用遗传密码等标准化物质的存在,是生命有着共同起源的最佳证据。而人类技术工程中缺少如此高度的标准化,往往只能通过不断创造新的标准推动技术进步,这又构成了组合优化难以实现的主要瓶颈。为了让空气压缩机、燃烧室和涡轮引擎组合到一起推动数吨钢铁飞上天,技术人员着实为不同的工业标准耗费了一番心力。现今汽车内燃机的发明也是一样,发动机的零件接口必须做到标准化,比如活塞、阀门与汽缸的尺寸必须相符。工业革命中许多标志性的发明也经历了类似的过程。第一台投入使用的蒸汽机实际上是2世纪亚历山大港的蒸汽动力玩具和17世纪德国真空泵的组合。钳工用台虎钳只不过是把两种古老的机械结合到了一起:杠杆手柄和螺纹装置。最早的自行车由三部分构成:轮胎、杠杆以及滑轮。除了创意,这些发明全都建立在统一的工业标准上。
如果说技术工业领域没有标准,那就有点言过其实了。技术发明依赖的通用标准不仅包括科学研究的自然规律,更重要的是测量方式的标准化,比如温度、质量以及电荷。不过大多数技术领域不像大自然,技术领域缺乏特定的标准化规范。自然界需要严格的标准化,因为它不像人类发明家,可以用额外的心力弥补工业标准上的不足。
功能不同的蛋白质,有的能催化反应,有的能推动分子转运,还有的能维持细胞存活。这些功能的结构基础都相同,都是由氨基酸以同样的连接方式组合而成的。氨基酸之间的标准化连接方式是“肽键”,由一个氨基酸分子的氮原子和相邻氨基酸的碳原子构成。尽管每种氨基酸自身的结构不同,但由于“接口”的标准化,它们依旧能以相同的方式连接到一起。正是不同生物体内的氨基酸连接的标准化造就了我们熟悉的自然界。没有标准化,就没有超宇宙级数量的基因型。自然图书馆如果不能畅通无阻,生物进化也就寸步难行。
让组合优化成为现实的标准化不仅仅是蛋白质的专利,RNA也以标准的化学键连接单位分子。生命储存遗传信息的标准规范DNA使得细菌间的基因转移和性状组合成为可能。调控环路也以标准化方式调节着基因的表达,调节因子蛋白都能够识别和结合特定的DNA片段,通过改变不同基因前的调节片段,同样的调节因子能发挥不同的作用。我们手头只有一些为数不多的小部件,只要我们能够制订一种标准化的连接方式,然后以所有可能的方式对它们进行组合,无论这种组合多么盲目,我们创造新事物的潜力都已经和大自然不相上下了。
这种标准化的过程对于人类的工程技术领域来说显然是力所能及的:流行的乐高积木就是很好的例子,此外,另一项古老得多的技术也是很好的例证。
16世纪的威尼斯人安德里亚·帕拉迪诺(Andrea Palladino)是西方历史上最具影响力的建筑师之一。在漫长而光辉的职业生涯里,他至少为16个威尼斯最富有的家族设计过豪宅,修建过30座乡间别墅,还设计过数座教堂。帕拉迪诺的平面设计图总是风格迥异,每张设计图之间有着天差地别。他设计的建筑在建筑面积、户型、朝向以及房间布局上都不尽相同。
即便如此,这些房子依旧带有帕拉迪诺独特的风格烙印,虽然多数人可能说不清这种烙印究竟是什么。20多年前,艺术史学家乔治·赫西(George Hersey)与计算机专家理查德·弗里德曼(Richard Freedman)试图通过合作研究解释这种独特的风格,寻找隐藏在帕拉迪诺平面设计图中的秘密。他们的想法是,如果帕拉迪诺的设计图背后当真有特定的规律,那么我们肯定能用相应的算法模拟一张帕拉迪诺风格的设计图。
为了提取出帕拉迪诺风格的必要元素,赫西和弗里德曼分析了数十座帕拉迪诺式别墅的结构:房间的朝向、墙壁的布局、相邻房间的长度是否有特定的比例等。最后,他们成功了。两人设计的计算机程序最终成功创造了一张帕拉迪诺风格的平面设计图。设计图里所有的细节都和已有的帕拉迪诺式建筑不同,无论是面积、朝向,还是房间布局,但是明眼人都能一眼认出这张新设计图里充斥着帕拉迪诺风格。
这个程序的算法在设计平面图时,会先勾出建筑的轮廓,这个轮廓往往呈矩形,然后算法会再用垂直或者水平的线贯穿矩形——这些直线代表墙壁,在建筑里分隔出不同的房间。一条直线可以把房子分隔成两个部分,而两条平行的直线则可以把房子分隔成三个部分,以此类推。每个房间继而以相同的方式被分隔,小房间再以这种方式继续分隔……直到房间的大小符合进一步设计的需要。对一个矩形用相互平行的垂直或水平线进行多次分割,每次用一条或多条直线,我们几乎可以绘制出无限多样的平面设计图。
帕拉迪诺的设计风格既不是刻意做作也不是随意而为,也没有听起来那么复杂高深。举例来说,如果一个房间被一条直线分隔成两个小房间,通常两个小房间的面积相同,或者其中一个是另一个的两倍大。而如果这个房间被两条平行线分割,通常中间的房间是两侧房间的两倍大。只要掌握这两点和其他几条规律并灵活运用,就算是计算机也可以模拟出这种最富盛名的文艺复兴时期的建筑风格。
自然界刻板的组合方式当然和计算机模拟帕拉迪诺风格的过程不完全相同。蛋白质是由更小的氨基酸组合而成的产物,而帕拉迪诺式建筑则是分割矩形建筑的结果。不过两者的共同点更值得关注:不管是蛋白质还是建筑学,都是用有限的基本元素和更有限的组织原则创造出种类庞杂的新产物。如果这个规律在工业革命前就已经存在于建筑学中,那么我们有理由推测,它也极有可能存在于工业革命之后的工程技术领域。
YaMoR就是一个很好的例子,它代表的领域正是现代数字技术。
控制机器人的电脑芯片上嵌有无数个晶体管,集成电路上的晶体管是一个只能对电压有无做出两种反应的简单电子元件:“0”代表没有电压,关闭开关;“1”则代表有电压,打开开关。所有的晶体管协同合作,对一串输入的数据流进行处理之后,再以一连串“0”和“1”的形式输出。每个晶体管相当于一个位,或者也叫二进制位。晶体管只有开和关两种状态,它们是计算机理解所有信息的基础。数学家对计算机工作原理的描述更精确,他们将计算机的工作状态描述为函数值的计算,即电路获得一个输入,经过演算和处理获得一个输出。电路演算所使用的函数,其名称出自英国数学家兼哲学家乔治·布尔(George Boole)1854年的著作《思维规律的研究》。布尔创立的学术分支是科学上一个巨大的进步,而世人口中的布尔函数,早已经成为现代计算机科学的核心。
布尔函数中最简单的逻辑之一是与(AND)函数,你的每次搜索几乎都离不开这个函数。举个例子,如果你想找某首乐曲的电子版散页乐谱,譬如莫扎特的《魔笛》(Magic Flute),搜索引擎会检索所有标题中含有“莫扎特”的曲谱,对于每个标题,返还的结果要么为“是”,要么为“否”,用一个位来表示也就是“1”或者“0”。接着,引擎对“魔”字也会进行相同的处理。于是,就每个标题而言,两个关键词分别有两种返还结果,组合之后一共有4种不同的可能情况。数字编码的0-1阵列可以用数学家们习惯的方式书写,来替代布尔函数的函数值,这种写法被称为真值表。与函数的真值表写法如图7-1中a表所示,对于函数的每个输入,两个关键的检索结果分别在表格的左侧沿着纵向标出,表格右侧则是4个最终的返还值,也就是函数的输出,还是用“1”和“0”的形式标记。最终得到的4种结果中只有一种返还值为“是”——只有当先前两个输出的结果均为“是”,才算作《魔笛》检索的一个可能值。
如果你想要找标题中有“莫扎特”或者“魔”(或者兼有两者)的曲谱,搜索引擎需要运行另一个布尔函数:或(OR)函数。或函数和与函数的数据输入过程相同,都是检索所有含有“莫扎特”和“魔”的标题,但是它们判定的规则却不同。在或的逻辑里,只要输入数据的两个结果有一个为“是”,那么最终的输出结果就为“是”(如图7-1b)。所以,或函数的输出中不仅会有《魔笛》,还将有莫扎特的其他626支曲目,此外还有桑塔纳(Santana)的《黑魔女》(Black Magic Woman),史蒂维·旺达(Stevie Wonder)的《如果这就是魔法》(If It's Magic)等。布尔函数中还有一个更简单的逻辑函数,非(NOT)函数(如图7-1c)。非函数将输出所有返还值为“否”的结果,在这里,它可以帮你找到所有标题中不包含关键词“莫扎特”的曲谱。
图7-1 真值表
与、或、非以及很多其他独特的布尔函数,比如XOR、XNOR、NAND以及NOR,帮助我们把自然语言中复杂的问题翻译成一串计算机能够理解的二进制数字。不仅如此,二进制数字与十进制一样,能够进行加减乘除运算。无论一台计算机有多么高端复杂,它的集成电路都在执行最基本的算数运算和简单的布尔函数,比如与函数。只需要两个最简单的数字,0和1,加上布尔函数,数字计算机就能够识别图片、对数据进行加密、发送语音邮件或是预测下周二的天气。如此看来,算数存在的意义远远不止是小学的数学考试而已。
布尔函数另一个非凡的特征是简单函数能够通过叠加组成复杂函数,在叠加的过程中,一个函数的输出可以作为下一个函数的输入。这就像一个乘法运算(4×3)可以用一个加法运算来代替:(4+4+4)。不仅如此,虽然理论上可以有无数种布尔函数,但每一种布尔函数都不过是与、或和非三个简单函数组合叠加的结果。这对于计算机来说非常重要,因为在集成电路中,晶体管往往通过串联形成计算单元以执行不同的布尔逻辑函数,这些晶体管单元因此被称为逻辑门。
图7-2中展示了几种简单的逻辑门,芯片设计师用这些示意图来代表与、或和非逻辑门。每个逻辑门的左侧都有一条或者两条直线代表输入,对应一个或者两个位。而右侧的一条直线则代表唯一的输出。图7-3中数个门电路被连接到一起以完成最简单的算数:计算两个二进制数字的相加之和——如此简单的运算已经需要6个逻辑门,而每一个逻辑门中包含了多个晶体管。现代计算机能够加减乘除的极限当然已经远远不止64位,涉及的逻辑门数量也往往达到了百万级。
图7-2 逻辑门
图7-3 计算二进制加法的电路
大多数集成电路在出厂前就会完成硬件连接,而像YaMoR这样的机器人则配备了可编程硬件,它们的芯片中某些逻辑门电路能够被修改,例如把某个与门电路改成或门电路。此外,不同逻辑门之间的组合方式也可以发生改变。有些可编程芯片甚至能在进行运算的同时修改逻辑门。逻辑门数量达到百万级别的电脑芯片已经不是小孩子手里的玩具了,而是灵活强大的计算引擎,它能帮助计算机学习许多人类才知道的东西。通过对自身硬件的修改,自主机器人不仅能移动,还能学会避开低洼的坑洞和其他陷阱。
如果你觉得上面这些听起来很熟悉,那是因为这与生物进化中一次改变一个分子的过程十分类似。可编程的逻辑门电路相当于可变的基因型,而不同的算法则相当于不同的表现型。和进化类似,计算机学习的过程需要不断试错。在这个过程中,良好的表现会受到激励和加强,而不好的行为则会受到惩罚和削弱。当然机器人受到的惩罚往往不会像进化那么严厉。如果未来某一天你拥有的某个机器人高尔夫打得不太好,它大可以多多练习它的站姿、握杆或者甩杆技巧,而不是直接被淘汰。
另外,这种学习方式也不需要遗弃原有的知识。比如在学习高尔夫的前后,即便你脑中与坐、走、跑、跳等动作有关的神经环路逐渐发生改变,你依旧能够执行这些动作。逻辑门与生物进化的共同点还不止于此:逻辑门电路之间的连接属于通用连接,因为逻辑门的输出可以被任何其他逻辑门的输入所识别,就像蛋白质中标准化的肽键。只是对于蛋白质而言,肽键的合成、断裂和修饰要简单得多,而生产一块能够随意修改的标准化电路则要经过精心设计且耗费大量的人力。
标准化连接和少数几个基本逻辑门这两个条件已经足以打造出一款能够击败人类国际象棋冠军、从数百万页书中找出特定的一页或者“打印”3D物体的电脑芯片了。现实生活中的可编程芯片会让人联想到大自然的进化能力,如果有一座数字电路图书馆,里面收录了逻辑门电路所有可能的组合方式,那么它的组织形式会不会和自然图书馆一样?这个问题的答案将告诉我们,生物进化的曲速引擎是否有适用于工程技术发展的改装版本。
卡蒂克·拉曼(Karthik Raman)为我们找到了答案。拉曼毕业于印度最顶尖的大学之一印度理工学院,他选择了我的实验室继续博士后研究。而拉曼可不是空手而来的,他带着他对于科学的极度狂热,面对失败毫不气馁的毅力以及分析复杂数据的鬼才天赋,跨进了我的实验室。当我提出让他研究可编程电路图书馆时,他二话不说就扑到了这项研究上。
虽然如今市面上的可编程芯片中,逻辑门的数量往往在百万级。但是经过严谨的估算后,我们认为研究规模相对更小的集成电路是一个更好的选择。如果我们考量一个包含16个逻辑门的集成电路,可能的电路数量将达到1046个,这个数字会随着逻辑门的增加以指数级增长。当逻辑门达到36个时,电路的可能数量已经超过了10100个。巨大的基数倒是让是否要制作芯片进行实物测试的疑问显得清晰明了:面对数百万个需要测试的电路,我们也只能用计算机对它们进行模拟了。
包含16个逻辑门的集成电路理论上能够演算1019种布尔函数,不过我们以前并不清楚图书馆内的电路是否都有功能。说不定其中大部分的电路只能执行一些比较低级的计算,比如加法和乘法。为了寻找答案,拉曼首先构建了一张巨大的网络,并向其中添加尽可能多的集成电路。他设计了200万种集成电路,每种电路中的逻辑门之间都以随机的方式互相连接。这200万种不同的电路可以演算出150万种不同的功能函数,而其中只有寥寥数种函数类似于我们熟悉的与函数。虽然拉曼在研究中已经尽了很大努力,但是他的工作仍然只涉及了一小部分集成电路,有待验证的集成电路数量是200万的1040倍,而布尔函数的数量则是150万种的1012倍。拉曼的工作告诉我们,即便是简单的集成电路,同样能够计算数量庞大的布尔函数。
由于图书馆中电路的数量要远远多于布尔函数,确切的数字是1026倍,所以图书馆中许多电路表达的含义应当是相同的,含义相同的文本执行相同的逻辑函数,但是我们并不知道它们的组织方式。为此拉曼随机选定了一个执行任意函数功能的集成电路并寻找它的相邻电路。他寻找的方式是对集成电路中的逻辑门进行调整,例如把某个逻辑门的输入端调换到另一个逻辑门的输入端。
如果这种“突变”后的集成电路依旧可以执行原来的逻辑函数功能,拉曼就选择留下它。如果逻辑函数改变,他就重新尝试其他连接方式。通过重复这个过程,拉曼的集成电路一步一步地远离最初的起点,而电路的函数功能保持不变。拉曼从某个随机集成电路出发,在保证函数功能不变的情况下进行随机游走,重复了上千次。
集成电路网络中随机游走能够到达的距离,甚至比我们在之前章节中探讨过的基因型网络都远:大多数集成电路可以在保证函数功能不变的情况下,从图书馆的一端走到截然相对的另一端。两个集成电路除了执行的函数功能相同之外,可以说毫无相似之处,从单个逻辑门到多个逻辑门之间的连接方式皆不同,但是它们的确都位于同一张集成电路网络中,只要不断改变基本逻辑门之间的连接就可以把其中一个变成另一个。不仅如此,在研究中我们还发现,无一例外,所有的函数都具备这个性质。也许这是所有二进制逻辑门电路的一个基本特性。数字图书馆和生物图书馆相比,也许有过之而无不及。
下一步,拉曼把注意力转向了集成电路所在的社区,他首先寻找某个电路所在的社区,确保这些相邻的集成电路与原电路功能相同,然后再寻找社区电路的相邻电路,列出它们所有的函数功能。拉曼发现,这些社区的多样程度与生物图书馆不分伯仲。功能相同的不同集成电路所在的社区中,有超过80%的集成电路执行着不同的函数功能。和生物图书馆类似,对于集成电路而言这是一件好事:一个集成电路能够维持自身的函数功能,同时又保留有巨大的改变潜力。虽然一个集成电路的所有相邻电路仅有大约60种新的函数功能,但是只要对逻辑门的连接进行10次改变,潜在的新函数数量就达到了100多种;100次改变后,这个数字变成了400多种;而如果我们从起点走出1 000步,那么沿途将遇到近2 000种新的函数。
在先前的章节中我还打过多维空间网络的比方,基因型网络就像一块复杂得难以想象的编织物,而且这块织物只存在于高维空间。拉曼发现这个比喻同样适用于集成电路,功能特定的某个集成电路能够以任何一个随机电路作为起点,通过改变若干个逻辑门之间的连接而获得。数字电路也像一块高维空间的纺织物,这张网络让我们寻找所需功能函数的效率得到了大大提升。
通过与基因型网络的对比可以得知,集成电路网络具备推动电脑芯片优化的所有特征,它就是硬件进化的曲速引擎。未来的某一天,YaMoR的继承者将不仅能够经过学习避开路上的坑洞,还可以学会更复杂的技能,比如洗碗、照顾孩子打球等。它们的数字大脑可以通过按部就班的修改和优化,在不影响原有行为的基础上习得新的技能,温故而知新。如果有人说我们的大脑也在用相同的方式进行学习,我一点都不会感到惊奇。如今我们都知道,在人的一生中,大脑中神经元之间的突触连接始终在发生着变化,而这种变化与生物探索基因型网络的方式相似。倘若如此,工程学借鉴生物进化的日子将指日可待。
不幸的是,我们对工程学该如何借鉴生物学依旧一无所知。我们仍然不知道创造力的物质基础到底是什么。不过我们也发现,新的技术发明不是免费的,因为拉曼找到了标价签,而这个代价我们并不陌生。
拉曼对逻辑电路的复杂性进行了分析,也就是电路中包含的逻辑门的数量多少。他找到了最简单的逻辑电路,所谓最简单,就是无论多小的改变都无法保证电路的功能不变。最简电路中的每一个逻辑门、逻辑门之间的每一处连接都至关重要,稍作改变,电路的函数功能就无法维持。因此,最简电路的结构和算法无法被改进,经得起修改和优化的电路需要一定的复杂度。越复杂的逻辑电路对修改的耐受性越高。
复杂电路中看似多余的逻辑门和逻辑门连接就像备用零件,用以帮助芯片学习新的函数功能,它们就是爱迪生所说的“无用的垃圾”。和生物学中一样,看似多余的复杂性,其实对进化而言至关重要。这就是人类的工程技术能够从自然界借鉴的东西之一:如果我们想撬开创造力的黑匣子,奥卡姆剃刀的刀刃多少显得有些单薄。如果说精简主义是水,那么创造力就是油,两者互不相融。
但是这并不意味着技术创新的领域里容不下精简主义和高雅主义。恰恰相反,只是它们藏在更深的层次里。高雅主义的实质就是精简主义本身:利用有限的原料和有限的规则,创造出世界万物。利用这个规则,大自然创造了蛋白质,创造了调控环路,创造了新陈代谢,创造了生命。从简单的病毒到复杂的人类,继而催生了我们的文化和技术:无论是《伊利亚特》还是iPad。技术发明的精简主义和高雅主义就像自然图书馆,隐藏在现实世界的背后,看不见,摸不着。我们只能从生命之树上觅得一些亦真亦幻的风影,就像柏拉图洞穴里的变幻之影。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。