3.2 快速、廉价、失控

「快速、廉价、失控」的口号最早出现在会展中工程师的胸牌上,后来罗德尼·布鲁克斯将之用于自己那篇引起轰动的论文的标题中。新的逻辑带来对机器全然不同的新视角。移动机器人群体中并没有控制中心。他们分散在时空里,正如一个民族穿越了历史和大陆。大量地制造这些机器人吧,别把它们看得过于珍贵。

罗德尼·布鲁克斯在澳大利亚长大成人。和别的男孩一样,他喜欢读科幻小说,喜欢做玩具机器人。他养成了反过来看事物的习惯,总是爱逆习常的观念行事。他不断进出全美各大顶尖机器人研发实验室,追寻关于机器人的奇思异想,最后接受了麻省理工学院移动机器人研究项目负责人的终身职位。

广告:个人专属 VPN,独立 IP,无限流量,多机房切换,还可以屏蔽广告和恶意软件,每月最低仅 5 美元

在那里,布鲁克斯开展了一个雄心勃勃的研究生课题项目,研发更接近昆虫而非恐龙的机器人。第一个诞生的是「阿伦」。他的头脑保存在旁边的台式电脑里,因为当时的机器人研发者都这么做,以获得值得保存的大脑。阿伦的身体具有视觉、听觉和触觉,它所感知到的信号通过几股线缆传送到那个盛放大脑的「盒子」里。在这些线缆上会产生太多的电子背景干扰,使布鲁克斯和他的团队倍受困扰,挫折不断。为解决这一问题,布鲁克斯换了一个又一个学生。他们查遍了各种已知的传播介质,甚至尝试了业余无线电、警用对讲机、手机等多种替代方案,但无论哪种方案,都无法建立不受静电干扰又能传输丰富多样信号的连接。最后布鲁克斯和学生们都发誓,不管必须把大脑设计得多么小,下一个项目非把大脑中枢整合到机器人体内不可——这样就再也用不着那些惹麻烦的线缆了。

因此,在制作后两个机器人「汤姆」和「杰瑞」时,他们被迫只使用非常简单的逻辑步骤以及短且简单的连接。出乎意料的是,在完成简单任务时,这种简陋的自带神经电路居然比大脑表现得更好。这个不大不小的收获促使布鲁克斯重新审视弃儿「阿伦」。他后来回忆道,「事实证明,阿伦的头脑真没起什么作用。」

这次精简让布鲁克斯尝到了甜头,并促使他继续探索,看看机器人能傻到什么程度但仍能做些有用的工作。最终,他得到了一种基于反射的智能。具有这种智能的机器人不比蚂蚁更聪明,但它们和蚂蚁一样能给人以启迪。

布鲁克斯的设想在一个叫「成吉思」的机巧装置上成形。成吉思有橄榄球大小,象只蟑螂似的。布鲁克斯把他的精简理念发挥到了极致。小成吉思有6条腿却没有一丁点儿可以称为「脑」的东西。所有12个电机和21个传感器分布在没有中央处理器的可解耦网络上。然而这12个充当肌肉的电机和21个传感器之间的交互作用居然产生了令人惊叹的复杂性和类似生命体的行为。

成吉思的每条小细腿都在自顾自地工作,和其余的腿毫无关系。每条腿都通过自己的一组神经元——一个微型处理器——来控制其动作。每条腿只需管好自己!对成吉思来说,走路是一个团队合作项目,至少有六个小头脑在工作。它体内其余更微小的脑力则负责腿与腿之间的通讯。昆虫学家说这正是蚂蚁和蟑螂的解决之道——这些爬行昆虫的足肢上的神经元负责为该足肢进行思考。

在机器蟑螂成吉思身上,行走通过12个马达的集体行为而完成。每条腿上两个马达的起落,取决于周围几条腿在做什么动作。如果他们抬起落下的次序正确的话——那么,起步!一、二、一,一、二、一!——就「走起来」了。

这个精巧的装置上没有任何一部分是掌管走路的。无需借助高级的中央控制器,控制会从底层逐渐汇聚起来。布鲁克斯称之为「自底向上的控制」。自底向上的行走,自底向上的机敏。如果折断蟑螂的一肢,它会马上调整步态用余下的五肢爬行,一步不乱。这样的转换不是断肢后重新学习来的;这是即时的自我重组。如果你弄废了成吉思的一条腿,还能走的其余五条腿会重新编组走路,就如同蟑螂一样,轻易地找到新的步态。

布鲁克斯在他的一篇论文里首先阐述了怎样使创造物「无知无觉」地走路的方法:

没有所谓的中央控制器来指导身体把脚放在哪里,或者跨过障碍时要把腿抬多高。实际上,每条腿都有权做些简单动作,而且每条腿都能独立判断在不同环境下该如何行事。举例来说,一个基本动作的意识是,「如果我是腿而且抬起来了,那么我要落下去」,而另一个基本动作的意识可描述为,「如果我是腿在向前动,得让那五个家伙稍微拖后一点」。这些意识独立存在且随时待机,一旦感知的先决条件成立就会触发。接下来,要想开步行走,只需按顺序抬起腿(这是唯一可能需要中央控制的地方)。一条腿一抬起来就会自动向前摆动,然后落下。而向前摆动的动作会触动其余的腿略微向后挪动一点。由于那些腿正好接地,身体就向前移动了。

一旦机器生物能在平滑表面稳步前行了,就可以增添一些其他动作使它走得更好。要让成吉思翻越横亘在地板上的电话簿,需要安装一对触须,用来把地面上的信息传递回第一组腿。来自触须的信号可以抑制电机的动作。此规则可能是,「如果你感觉到什么,我就停下;不然我还接着走。」

成吉思在学会爬过障碍物的同时,其基本的行走模式却未受到丝毫扰乱。布鲁克斯借此阐释了一个普适的生物原则——一个神律:当某个系统能够正常运转时,不要扰乱它;要以它为基层来构建。在自然体系中,改良就是在现存的调试好的系统上「打补丁」。原先的层级继续运作,甚至不会注意到(或不必注意到)其上还有新的层级。

当你的朋友告诉你走哪条路去他家的时候,绝不会顺便告诫你「千万别撞车」,即便你确实必须遵守此训诫。他们不需要就那个低层次的目标和你沟通,因为你熟练的驾车技术早已保证那个目标会轻易实现。而走哪条路去他家就属于高层次的活动了。

动物(在进化过程中)的学习方式与此类似。布鲁克斯的移动机器人亦是如此。它们通过建立行为层级来学会穿越复杂的世界,其顺序大致如下:

避免碰触物体

无目地漫游

探索世界

构造内在地图

注意环境变化

规划旅行方案

预见变化并相应修正方案

在碰到障碍物的时候,负责无目的漫游的部门不会大惊小怪,因为负责避免碰触物体的部门早已对此应对自如了。

布鲁克斯移动机器人实验室的研究生们制作了一个拾荒机器人,他们开心地称它为「搜集癖好机」——一到晚上,它就在实验室里四处搜集空饮料罐。它的无目的漫游部门让它在每个房间里晃来荡去;避免碰触部门则保证它在漫游的时候不会磕碰上家具。

搜集癖好机整晚地闲逛,直到它的摄像头侦测到桌子上一个饮料罐形状的物体。信号触动移动机器人的轮子,将其推进到饮料罐正前方。搜集癖好机的胳膊并不需要等待中枢大脑(它也没脑子)发出指令,就能够通过周围环境「了解」自己所处的位置。它的胳膊上连有传递信号的导线,以便胳膊能够「看」到轮子。如果它察觉,「咦,我的轮子停下了」,它就知道,「我前面肯定有个饮料罐」。于是,它伸出胳膊去拿罐子。如果罐子比空罐子重,就留在桌子上;如果和空罐子一样轻,就拿走。机器人手拿着空罐子继续无目的地漫游(因为有避免碰触部门的帮助,它不会撞墙或磕到家具),直到偶遇一只回收筒。这时,轮子就在回收桶前停下。傻乎乎的胳膊会「查看」自己的手是否拿着罐子,是,就会扔进回收筒。如果不是,就再次在办公室里四处漫游,直到发现下一个罐子为止。

这个荒唐的、「撞大运」的回收系统效率极其低下。但夜复一夜,在没有什么其他事好做的情况下,这个傻乎乎却很可靠的拾荒者居然搜集到数量可观的铝罐子。

如果在原有的正常工作的搜集癖好机上添加一些新的行为方式,就能发展出更复杂的系统。复杂性就是这样依靠叠加而不是改变其基本结构而累积起来的。最底层的行为并不会被扰乱。无目的漫游模块一旦被调试好,并且运转良好,就永远不会被改变。就算这个无目的漫游模块妨碍了新的高级行为,其所应用的规则也只是会被抑制,而非被删除。代码是永远不变的,只是被忽略了而已。多么官僚却又多么生物化的一种方式啊!

更进一步说,系统的各个部分(部门、科员、规则、行为方式)都在不出差错地发挥作用——犹如各自独立的系统。「避免碰触部门」自顾自地工作,不管「拿罐子部门」在不在做事。「拿罐子部门」同样干自己的工作,不管「避免碰触部门」在不在做事。青蛙的头即便掉下来了,它的腿还会抽跳,就是这个道理。

布鲁克斯为机器人设计的分布式控制结构后来被称作「包容架构」[1],因为更高层级的行为希望起主导作用时,需要包容较低层次的行为。

如果把国家看成一台机器,你可以用包容架构来这么建造:

你从乡镇开始。先解决乡镇的后勤:基本工作包括整修街道、敷设水电管道、提供照明,还要制定律法。当你有了一些运转良好的乡镇,就可以设立郡县。在保证乡镇正常运作的基础上,你在郡县的范围内设立法院、监狱和学校,在乡镇的层级之上增加了一层复杂度。就算郡县的机构消失了,也不会影响乡镇照常运转。郡县数量多了,就可以添加州的层级。州负责收税,同时允许郡县继续行使其绝大部分的职权。没有州,乡镇也能维持下去,虽然可能不再那么有效率或那么复杂。当州的数量多了,就可以添加联邦政府。通过对州的行为做出限制并承载其层面之上的组织工作,联邦层级包容了州的一些活动。即使联邦政府消失了,千百个乡镇仍会继续做自己的地方工作——整修街道、敷设水电管道、提供照明。但是当乡镇工作被州所包容,并最终被联邦所包容时,这些乡镇工作就会显示出更强大的功效。被这套包容架构所组织起来的乡镇不但能够建造楼房,还可以设立教育体系,制定规则,而且会比原来更繁荣。美国政府的联邦结构就是一个包容架构。

包容架构:Subsumption Architecture