屏幕上,一个动画人物向前迈了一步,试图行走。但它立刻摔倒在地,仰面朝天,徒劳地挥舞着双腿。然后它又出现在屏幕的左侧,小心翼翼地走了几步,又摔倒了。回到屏幕上,它抬起了膝盖,自信地迈出了大约六步,然后侧身倒下。在一次又一次尝试行走后,这个人物最终成功地在屏幕上大步流星地走了过去,仿佛它的动作是直接从人类行走的视频中捕捉到的。

Leo Espinosa 插画
这部小短片可能不会获得奥斯卡最佳动画短片奖,但生成它的软件却是一个编程奇迹。这个人物并不是由屏幕外的动画师教会如何行走;它是自己进化出了行走的能力。这种能力来自于一些巧妙的编程,这些编程试图模仿大自然传递成功基因的能力。
这个想法被称为遗传算法。它会创建一个潜在解决方案的随机种群,然后测试每个解决方案的成功率,选择一批中最优秀的“基因”传递给下一代,包括引入变异的轻微突变。这个过程会不断重复,直到程序进化出一个可行的解决方案。遗传算法最初由约翰·霍兰德(John Holland)于 20 世纪 60 年代在密歇根大学开发,如今正越来越多地应用于实际任务,例如设计更高效的冰箱。
遗传算法使得计算机能够完成一些深刻的事情,一些看起来非常像思考的事情。而那个学习走路的动画人物展示了一些设计上的进展,这些进展使得计算机能够在没有人为指导的情况下做出自己的决定。
对于娱乐内容的创作者来说,其回报是即时且显而易见的。大多数大制作的好莱坞电影或动作类视频游戏充斥着行走(以及奔跑和跳跃)的计算机渲染人物。为了让这些角色看起来逼真,它们必须以令人信服的方式移动,这意味着它们必须以某种方式学会如何行走。直到最近,电影制作人要么必须指示每个肢体以特定方式移动,要么必须对真人动作进行三维映射,然后将这些信息应用于虚拟角色。你可以在《指环王:双塔奇兵》中看到歌鲁姆(Gollum)角色的动作方式。这种费力的方法可以产生令人信服的结果,但其灵活性却非常差。如果动画师为某个场景录制了某人下坡行走,然后稍后决定该角色在途中需要绊倒一块石头,他们就必须重新编排整个序列。
相反,牛津大学研究员、现已成为动画创业者的托尔斯滕·赖尔(Torsten Reil)决定借鉴大自然的经验,利用进化的力量来解决让数字角色逼真移动的问题。“首先,我们创建了一个简单的火柴人:它有重力;它有关节,”他解释道。“然后我们加入了虚拟肌肉和一个控制肌肉的神经网络。问题是:如何让神经网络做你想让它做的事情?如果你只有一个随机组装的神经网络,它会向肌肉发送非常复杂的信号,但这通常不是行走——更像是随机的抽搐。”肌肉都能工作,并且它们与中枢神经系统连接,但角色仍然不知道任何关于行走的事情。
角色的身体模型涉及 700 个需要优化的独立参数才能教会它像人类一样行走。“如果你用人眼看那个系统,你根本无法自己完成,因为系统太复杂了,”赖尔说。“这就是进化的用武之地。”
赖尔和他的团队创建了一个遗传算法来探索优化人物控制系统的潜在方法。遗传算法的构成要素实际上相对简单:一组“生物体”,每个生物体都有一组不同的“基因”;用于基因突变和重组的规则;以及一个“适应度函数”来评估每一代中最有希望的生物体。在本例中,适应度函数是“从起点行进的距离而不摔倒”。
该算法生成了 100 个动画人物,每个人物都有一个随机组装的控制其肌肉的神经网络。然后算法让它们都尝试行走。不出所料,第一代几乎完全无能。但有几个人物比其他人略好一些——它们在倒地前犹豫地迈出了一步。根据适应度函数,它们成为了第一轮的获胜者。软件复制了它们神经网络的 20 个副本,并在每个副本中引入了细微的突变,添加了 80 个具有随机连接网络的参与者,然后启动了下一代行走。
遗传算法总是会带来惊喜。赖尔的动画在不摔倒的情况下行进的能力迅速提高,但它们并不总是以行走的方式前进。“我们得到了一些根本不走路的生物,但它们以非常奇怪的方式前进:爬行或翻跟头。”这些生物正在遵守游戏规则,所以赖尔不得不改变规则。“我们不得不加入一些例外:不仅仅是行进的距离,而是行进的距离且质心不能低于某个点。”







与生物生命一样,遗传算法也有两种主要形式:有性繁殖和无性繁殖。一些算法会“交配”适应度函数中的幸存者,在这个过程中重组基因。另一些算法则克隆最成功的解决方案,并通过突变纯粹引入变异。


最终,赖尔将该程序优化到只需要 20 代和几分钟的计算时间。该团队创建了一个简短的延时视频,展示了途中几代的样本剪辑,包括第一代最好的行走者(地面上挥舞四肢的初始人物),并以第 20 代成功大步前进的人物结束。
这是“重复发明轮子”是一种好事的情况之一。观看延时视频片段,人们不禁会惊叹,这种虚拟进化与我们祖先数百万年前在非洲草原上首次直立行走时的真实进化过程大致相似。火柴人之所以能够自信地大步前进,不是因为有人精心设计它,而是因为进化过程允许人物自己找到独特的运动和肌肉控制模式。
遗传算法并不能让计算机像 HAL 9000 那样拥有自我意识,但它确实使计算机真正具有创造力,能够进行富有想象力的飞跃和细微的联系,这些可能是人类工程师难以企及的。最终的结果是一个实用的产品,现在已经被集成到一个名为 Endorphin 的动画软件套件中。
赖尔和他的团队并非唯一在实际任务中运用遗传算法的人。比尔·格罗斯(Bill Gross)和他在加州帕萨迪纳的 Idealab 的发明家团队正在使用遗传算法开发一种新型太阳能设备(参见第 52 页的“抓住火苗”)。格罗斯认为,遗传算法有潜力彻底改变工程学。他设想,遗传算法可以处理整个设计过程,而不仅仅是作为帮助绘制装置的可视化工具。你定义你的生物体、你的基因和你的适应度函数,然后让软件完成实际找出答案的繁重工作。
“我认为工程应该这样进行:与其定义零件或电路板,不如定义你的目标,让软件来演化出答案。比如,我想要一张桌子。与其画一张桌子,不如说,我的约束条件是:我想要一个这个高度的平面,具有这种横向刚度,等等。然后你告诉软件,好的,你有杆、梁、螺丝、螺栓——以最低的成本做出你能做的最好的东西。”
遗传算法的倡导者经常用生态系统的语言来谈论他们的软件:捕食者与猎物、物种与资源。但格罗斯有另一种想法——少一些雨林,多一些装配线。“假设你让软件可以访问整个 McMaster-Carr 工业用品目录。他们有 400,000 种库存零件:螺丝、螺栓、铰链,应有尽有。所以,你拥有这些零件的整个基因库。”你梦想中的机器就藏在这些组合之中,而模拟进化很可能是找到它的最快方式。
“你陈述你的目标,让它以最低的价格,用最佳的零件组合来演化,下午机器就会在那里,”格罗斯兴奋地说。“这是极端的夸张——但夸张的程度并不大!”

Natural Motion 是为开发文章中描述的 Torsten Reil 的 Active Character Technology 而成立的公司。请访问其网站,在那里你可以找到对其工作和应用的简要描述,以及一个演示人物学习行走的 QuickTime 演示:www.naturalmotion.com/pages/technology_hiw.htm。
亲眼看看遗传算法的一个实际应用——一种更高效的冰箱:frontier.enginsoft.it/applicazioni/english/frigorifero_eng.html。
在 Steven Johnson 的网站上,你可以了解他最近在做什么,还可以找到他最近发表的一些文章链接,包括为《Discover》撰写的文章:www.stevenberlinjohnson.com。














