智能机器如何思考(txt+pdf+epub+mobi电子书下载)


发布时间:2020-06-11 13:14:49

点击下载

作者:(美)肖恩·格里什

出版社:中信出版集团股份有限公司

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

智能机器如何思考

智能机器如何思考试读:

前言

2010年的一个晚上,这本书的种子播种在了计算机科学系顶层的人工智能研究实验室里。当时,我刚刚参加了一些关于自动驾驶汽车的研讨会,对它们的工作原理颇为好奇,于是我做了一些网络搜索。我找到的最好的解释是卡内基–梅隆大学和斯坦福大学的一些研究人员撰写的学术论文。我看了几分钟,对自动驾驶汽车的工作原理有了些粗浅的认识,然后便离开了。

但随着时间的推移,我发现自己三番五次地重复这个过程。每当看到媒体报道人工智能或机器学习领域的一个个突破时,我就会回到同一个问题:它们是如何工作的?令我感到奇怪的是,我花了无数时间在学术界和产业界研究和实践机器学习,但我仍然不能坚定连贯地回答这个问题。我想,或许我对人工智能和机器学习的了解不如我本应了解的那么多,又或许大学课程没有教授我们全面的知识。大多数关于这些主题的大学课程只教授这些突破背后的构件,而不教授如何将这些构件组合在一起去做有趣的事情。

但还有另一个更根本的原因,即我无法弄清楚它们的工作原理:这些突破中的大多数确实涉及开创性的研究,我们根本不知道如何构建它们,直到研究人员找到了方法、撰写了过程或构建了原型。这就是为什么研究人员一直在同行评议期刊上发表关于这些突破的文章,因为这些文章新颖、有影响力、非显而易见(而且是经过同行评议的)。但是,这些突破背后的细节一经发表就会被随意散布在许多不同的来源中,因此仍然无济于事。

最终,我意识到应该把自己在研究中学到的东西与他人分享,这样他们就无须为了理解相同的东西而跨越同样的障碍。换言之,我写这本书的原因是,这是一本如果我不懂机器学习我将会想读的书。

于是我写了这本书,希望它能够帮助那些对广义上的科学技术感兴趣的人,无论老少;或者那些想要更多地了解机器学习和人工智能是否会对他们的公司有帮助的行业领导者。这本书旨在让广大读者都能读懂,无论是满怀好奇心的高中生,还是退休的机械工程师。虽然了解一些计算机科学会有所帮助,但阅读本书唯一的前提条件是好奇心和一点专注力。我有意把这本书中涉及的数学知识保持在最低限度,以便向普通读者更好地传达核心思想。

机器人、人工智能和机器学习领域的专家通常比较了解我将要描述的一些算法的实现细节,但是对他们中的许多人而言,其余的叙述和对整个系统的设计可能仍然是陌生的(除非这是他们的研究领域)。我希望这本书能为大家带来一些新东西。1 自动机的秘密长笛演奏者

1737年,在工业革命的黎明时分,法国的机械天才雅克·德·沃康松(Jacques de Vaucanson)完成了一件杰作:一尊可以像真人一样用长笛演奏音乐的塑像。只见这尊真人大小的塑像把真实的长笛举到嘴边,接着便用它的机械肺把空气送入乐器,吹出一个个音符。通过移动嘴唇,调整吹气的力度,控制手指精确地在长笛孔上移动,塑像可以吹出一系列音符,组成一首完整的乐曲,“其吹奏过程就像人类[1]乐手的演奏一样完美”。沃康松并不满足于塑像只会用长笛演奏一[2]首乐曲,于是赋予了塑像演奏12首不同乐曲的能力。

对公众而言,像长笛演奏者这样的装置他们并非第一次见,但是这个装置很特别。他们把这种机器称为自动机,而且爱不释手。摆弄[3]这类装置已经成为整个欧洲富裕阶层的一种爱好。有一段时间,沃康松向一小部分观众收取相当于一周薪水的费用,让他们观看他那奇怪的装置。它那自然的运动和复杂的行为对当时的人们来说完全属于未知的领域。最终,沃康松在欧洲的其他地区巡回展出了长笛演奏者和其他几台自动机。

长笛演奏者是如何工作的?它是黑魔法吗?在那10年以前,一位教会官员曾下令捣毁了沃康松的一个工作坊,因为他认为这是亵渎神灵,所以沃康松肯定不会再做任何看起来太像魔法的事情。它是骗局吗?就在长笛演奏者诞生之前的几年,一台看似能演奏大键琴的自动乐器曾让法国国王路易十五颇为着迷。国王坚持要了解这台装置的工作原理,最终却发现它只是个傀儡,里面藏着一个5岁的小女孩。[4]沃康松敏锐地意识到了这一点,热切地向观众展示长笛演奏者的内部机制。它的动作流畅自然,当沃康松展示它的内部机制时,它显然只是在遵循编码到其机械内脏中的一系列指令。

沃康松为了进一步证明其发明的合理性,向法国科学院展示了这台自动机,并提交了一篇题为《自动长笛演奏者的机理》的论文。在论文中,沃康松精确地阐释了这台神奇机器的工作原理。塑像由木头和硬纸板制成,被漆成大理石的样子,包裹着皮革的指尖与长笛孔形成密封。自动机的机械驱动器由两根旋转轴组成。为了让塑像吹气,其中一根轴给三组风箱打气,产生低、中、高三档不同压力的气流。这三股气流合在一起形成一个人工气管,被送入塑像的口中。装置的另一根轴慢慢地转动一个表面带有小螺柱的圆筒。当圆筒旋转时,这些小螺柱会压在15根由弹簧承载的杠杆上。通过链条和线缆,这些杠杆可以驱动自动机的各个部分。一些杠杆控制着手指和嘴唇的运动。[5]剩下的杠杆决定了低、中、高三档压力中的哪一档气流应该吹进长笛以及装置的舌头应该选择占据哪个位置来改变气流。通过将小螺柱放置在旋转圆筒上的适当位置,沃康松可以对塑像进行编码,从而让它演奏出他想要的任何乐曲。虽然有些复杂,但它不过是一个巨大的[6]音乐盒。法国科学院接受了他的论文,并做了精彩的评论。

沃康松的杰作只是那个世纪的发明家几十年来开发的许多自动机之一。自动机之所以受欢迎,正是因为它看起来是完全自主的,而且它似乎复制了人类的智能。长笛演奏者和其他类似的自动机是工业革命中的人工智能先驱:在几十年的时间里,随着各类材料和各种新发明的出现,自动机得以成为可能,当时的技术专家和业余爱好者在他们独特的探索中使用自动机来复制我们的身体和思想。[1]Gaby Wood,“Living Dolls:A Magical History of the Quest for Mechanical Life by Gaby Wood,”The Guardian,February15,2002,accessed February5,2017,https://www.theguardian.com/books/2002/feb/16/extract.gabywood.[2]Georgi Dalakov,History of Computers and Computing,Automata,Jacques Vaucanson,accessed March9,2017,http://history-computer.com/Dreamers/Vaucanson.html.[3]Tom Standage,The Turk(New York:Berkeley Publishing Group,2002),xii.[4]Standage,The Turk,5.[5]Wood,“Living Dolls”;Standage,The Turk,5.[6]Dalakov,History of Computers.今天的自动机

时间快进到今天。在现实生活中,自动驾驶汽车日夜穿梭于硅谷的各个城市。我们用提供奖励的方法训练计算机程序玩雅达利游戏,最终使程序的游戏水平远远超过人类玩家,就像训练一只狗坐下或打滚儿一样。在《危险边缘》(Jeopardy!)比赛节目中,一个计算机程序成功击败了两位世界冠军。我们开发出了在古老的围棋中战胜最优秀的人类棋手的计算机程序。与此同时,这些突破背后的人工智能正在以令人叹为观止的速度发展,甚至对这个领域的专家而言也是如此。

最后这一点怎么夸张也不为过。参加《危险边缘》比赛的“沃森”开发团队表示,在他们着手开发这个系统之前,创建出能够击败世界顶尖玩家的程序还不可能。许多专家认为,创建出具备一定棋力的计算机围棋程序需要再过10年,AlphaGo(阿尔法围棋)证明了这是错误的,这个程序被训练了几个月,随后战胜了世界围棋冠军李世石。20个月后,AlphaGo的创建者开发了程序的另一个版本,它仅用三天就自学了人类数千年积累的围棋知识,以100比0的成绩击败了上一个版本,然而它只使用了上一个版本10%的计算能力。这在一定程度上要归功于人工神经网络的进步,人工神经网络是AlphaGo的技术基础,也是过去10年的研究热点。现在这些人工神经网络不仅会玩游戏,还能够识别照片中的图像、识别口语语音,其水平可以与人类媲美。

随着这些突破不断登上新闻头条,它们也自然而然地激发了我们的好奇心:它们是如何工作的?正如18世纪的欧洲人对长笛演奏者和当时的其他自动机感到疑惑一样,当我们谈论这些新型自动机时,那个问题总是隐藏在表面之下,悬而未决。

幸运的是,与沃康松向法国科学院提交论文的方式如出一辙,这些最新进展的创造者详细记录了构建智能计算机程序的方法。这些技术细节分布在许多不同的地方,在本书中,我试图把这些细节组织起来,用简单的术语说明智能机器是如何思考的。

与里面藏着5岁小女孩的冒牌自动机不同,你将在本书中看到的突破是真实的科学进步。虽然它们看起来像魔法,但是与法国科学院审查长笛演奏者一样,学术界对这些突破都进行了仔细的审查。它们同长笛演奏者一样,也是自动机的例子。自动机就是自动运行的机器。它看上去总是像人或动物一样自主运行,似乎可以独立思考。但根据定义,自动机是遵循程序的。这些程序是预先设定的指令序列,就像沃康松为让长笛演奏者演奏音乐而开发的程序一样。

正如我们将要看到的,事实证明,技术专家在过去的几个世纪里没有太大变化。他们仍然在设计自动机并给它们编程,以此复制人类的思想和身体,他们有时仍然会造出冒牌自动机。唯一的区别是,技术专家已经把工具升级为计算机和运行在计算机上的软件,它们是21世纪的杠杆、齿轮和发动机。钟摆的摆动

18世纪的自动机有时会使用当时尖端的精密技术——机械发条,来执行它们的程序。这些自动机是由机械能驱动的,例如一个被举高的重物、用钥匙上弦的线圈。自动机的创造者通常是钟表匠,其技术则源自钟表,因为钟表每到一个小时就尽职尽责地执行有趣的机械序列。钟表从启动前就存储在其内部的势能中汲取能量,以此计时并表演它们的“特技”。它们的发条使其以微小的增量释放存储的能量,从而逐步执行程序。

机械钟利用钟摆的摆动来计时。钟摆摆动的频率非常规律,直到[1]20世纪30年代,钟摆都是最好的计时方法。钟摆每摆动一次,一系列的闩锁和齿轮就会记录一个时刻,释放一点储存的能量,这样时钟就可以做一些有趣的事情,并施加给钟摆一个小小的推力,使它保持摆动。然后这个过程重复进行。机械手表的工作原理与之类似:一根精细的螺旋状的弹簧来回旋转一个圆盘,使圆盘绕着它的中心转动。随着圆盘的扭转,齿轮每次转动一到两个齿,从而使发条的其余部分可以做一些有趣的事情。

粗略地讲,电子计算机能够运行程序也是因为遵循了相同的机制。闩锁和齿轮的原理同样适用于计算机,但计算机并不是像钟摆那样安静地摆动,而是利用了电子的摆动。电子从电路的一个部分飞速移动到另一个部分,然后返回。电子从任意一个极端奔向目的地的中途,在移动到电路另一部分的过程中,保持动量不变。例如,电线线圈(电磁铁)或者晶体振荡器(经过实验室培养并且被精确切割的沙粒)的“弹性摆动”,其摆动速度能达到每秒数百万次,为电路提供非常精确的谐振频率。这些晶体振荡器取代了物理摆,因为它们对地震、温度变化、飞机和潜艇的加速度等外力具有稳定的抵抗力,而且它们的振荡速度非常快(每秒数百万次)。

每当这些电子从电路的一个部分摆动到另一个部分,类似于机械时钟或手表中的物理闩锁的电子锁存器就会记录下这一时刻,计算机就在这个时刻去执行程序的下一条指令。然后指令计数器向前移动,时钟等待电子往回摆动(或者等待新电子取代它们的位置),然后重复这个过程。[1]Warren A.Marrison,“The Evolution of the Quartz Crystal Clock,”The Bell System Technical Journal27,no.3(1948):517–536.并不难懂的自动机

这些电子的振荡以及它们实现的智能行为将成为本书的重点。在本书中,我们根本不会看到这些程序的低级指令,即程序员为创建程序而编写的变量和函数名以及程序生成的机器代码。但我们将会看到组成自动机的中间构件,它们本质上是更高一级的“统计学的齿轮和风箱”。通过了解组成这些自动机的构件,我希望你能够更好地了解其他现代自动机的工作原理。例如,既然你已经知道了沃康松发明的长笛演奏者的工作原理,就可能对他那只著名的“吃食鸭”(Digesting Duck)的部分工作原理做出一些有根据的猜测。这台自动[1]机看起来能拍打翅膀、嘎嘎叫、进食、消化食物,而且还能排便。

沃康松的自动机无法对世界做出反应。他那个时代的自动机遵循的是简单的、预先设定好的一系列步骤。现代的自动机能够对不断变化的环境做出反应,因为它们具有感知能力。它们不仅能对键盘上按下的按键做出反应,还能对汽车和行人穿过拥挤的十字路口做出反应,甚至能对《危险边缘》题目中的微妙线索做出反应。今天的自动机完成这些事情的方式足以令沃康松和他同时代的人敬畏不已。

我将本书写给对这些装置的工作原理感兴趣的人们。你无须拥有计算机科学的大学学位就能理解这本书,但是我会假设你熟悉一些关于计算机的基本知识,例如计算机遵循人类编码的明确指令,计算机表示图像是基于每个像素点的红、绿、蓝三色的数值的,等等。即使你熟悉人工智能或机器人技术,这本书的某些部分对你而言也仍然是新知识。虽然你可能在课堂上了解过这些装置的构件,但你仍然很可能没有学过如何将这些构件组合在一起,实现技术突破,因为这些内容通常不是在同一个地方教授的。最后,如果不想从头到尾读完的话,你也可以直接翻到最感兴趣的话题阅读。你无须往回翻阅好几章的内容来补习你需要知道的机器学习和人工智能背景。

机器学习和人工智能到底是什么?人工智能是一个广泛的研究领域,致力于赋予计算机做出智能行为的能力。但人工智能没有承诺计算机会像人类那样做这些事情,正如我们所看到的,它们做事的方式通常和人类大不相同。人工智能只是解决如何做智能的事情,而且人工智能解决问题的范围通常非常狭窄,比如找到一条走出迷宫的路径。机器学习是一个与人工智能密切相关的领域,它使机器通过从数据中学习来完成智能的工作。正如我们在本书中将看到的那样,无论是人工智能还是机器学习,它们本身都不是无所不能的。在某些情况下,我们需要设计一些算法,它们可以在不使用任何数据的情况下,笨拙地用蛮力实现智能的解决方案;而在某些情况下,我们还需要设计一些算法,这些算法可以从数以亿计的数据中学习,但在把它们与笨拙的蛮力解决方案结合起来之前,它们仍然毫无用处。我们需要结合两种类型的算法来做有意思的事情。

我已经提及了机器学习和人工智能领域的一些有趣的进步,在这本书中,我们会继续探索。在本书的前半部分,我将概述一些使智能机器能够感知环境并与环境交互的关键思想。我们将看到是什么让自动驾驶汽车能够在道路上行驶,并在拥挤的城市环境中穿行。我们将看到神经网络如何使这些汽车和其他机器能够感知周围的环境,看到神经网络如何识别图像中的物体和人类语音中的文字。我还将概述世界上最优秀的电影推荐引擎的工作原理,这个电影推荐引擎背后的故事扣人心弦,而且这个系统的许多核心思想渗透到了我们将在本书中看到的其他机器中。然后,我会告诉你们如何用奖励让计算机执行某些行为以及计算机如何通过人工神经网络感知世界。在本书的最后几章中,我们会更仔细地研究计算机如何玩各种游戏。具体而言,我们会研究在围棋和国际象棋比赛中分别击败了世界冠军李世石和加里·卡斯帕罗夫(Garry Kasparov)的AlphaGo和“深蓝”,还有在智力问答节目《危险边缘》中战胜了两位冠军——肯·詹宁斯(Ken Jennings)和布拉德·鲁特(Brad Rutter)的IBM(国际商用机器公司)的“沃森”。

在本书中,我们将追述这些突破背后的故事。我们会看到许多相关的研究人员,看到使这些进步成为可能的技术和方法之外的因素。例如,一个反复出现的主题是,互相竞争的研究社区有助于集中精力并促进进步。这就是让自动驾驶汽车进入公众想象并形成现代样式的原因。当时,数百个研究团队参加了同一场比赛,比赛的目标是制造[2]可以在沙漠中行驶数英里而无须人类驾驶员的自动驾驶汽车。这便是我们故事的开端,在莫哈韦沙漠的一个凉爽的早晨,一些车队在为比赛准备着它们的赛车。[1]有消息称,沃康松的“吃食鸭”实际上并不能消化。它体内有一个秘密的空间,用来储存送入的食物和排出的人工染色的粪便。[2]1英里≈1.6093千米。——编者注2 自动驾驶汽车:挑战不可能

大多数值得做的事情并非轻而易举,而且不会速战速决。你享受你得到的东西,享受事情的结果,这就是事情原本该有的样子。正确的做法是选择你喜欢的东西,用你所拥有的一切去追求它,这就是生活的意义所在。[1]“老红”威廉·惠特克(William“Red”Whittaker)红色车队领袖[1]Whittaker,quoted in Radha Chitale,“Red Team Falls to Its Own Offspring,”The Tartan[CMU Student Newspaper],October10,2005,accessed June15,2017,https://thetartan.org/2005/10/10/scitech/redteam.沙漠中的百万美元竞赛

在2004年的一个凉爽的星期四早上,第一次机器人汽车比赛在莫哈韦沙漠拉开了战幕。随着太阳升起,一只沙漠乌龟从洞穴中探出头来,希望能在迅速变暖的公路上享受一天的阳光。今天它发现自己被困在了洞穴附近,无论往哪个方向都寸步难行。大约20名生物学家在这个洞穴和类似的洞穴周围设置了路障,以保护濒临灭绝的动物[1]免受即将驶过附近公路的机器人汽车的伤害。他们恰当地预计了这些汽车无法保持在公路上行驶,更不用说避开它们中间的乌龟了。

人们对赛车是否能完成比赛的预期大相径庭。赛事经理毫不含糊[2]地声称,胜利者会在10小时内跑完142英里的赛程。但有人怀疑是否会有任何一辆赛车能完成比赛,机器人社区的很多人都有此怀疑。[3]

百万美元奖金岌岌可危。克里斯·厄姆森(Chris Urmson)是角逐这笔奖金的人之一,他是一个开发自动驾驶悍马汽车的研究团队的设计带头人。

克里斯身材颀长,顶着一头凌乱的金发。在传奇机器人专家“老红”威廉·惠特克的指导下,克里斯正在卡内基–梅隆大学攻读博士学位。他非常专注于自己的研究,在沙漠中花了近两个月的时间对车队[4]的悍马进行测试,一度连续工作近40个小时。在一次长时间的测试中,他一直守候到午夜时分,蜷缩在厚厚的毯子下,看着悍马兜圈子。[5]透过薄雾,车头灯光依稀可见,只见悍马突然偏离了路线,撞上了[6]铁丝网围栏。在另一次实验中,悍马在急转弯时翻了车,传感器被甩掉了,花了几个星期才修复。克里斯知道,这些事故发生在比赛前比发生在比赛中要好得多。

一辆自动驾驶摩托车毫无疑问地成了这场比赛的媒体宠儿。它的设计者给它安装了陀螺仪,这样它就可以通过反向旋转来保持平衡。[7]它是全国各地研究人员和爱好者提交的百余个参赛作品之一。虽然安装了陀螺仪的摩托车很智能,但每个人都知道,如果有哪支车队最终能赢得比赛,那么冠军很可能是来自卡内基–梅隆大学的克里斯和威廉的团队。卡内基–梅隆大学的研究人员在过去20年一直引领着这一领域,早在1991年,他们就把一辆原始的自动驾驶汽车开上了匹兹堡的街道。没有人能否认该大学的研究人员在机电方面的成就,而[8]且他们通过军事拨款获得的慷慨资助想必也是有百利而无一害。

比赛当天,克里斯和他的团队设计的装满了传感器的悍马从乌龟洞穴旁边疾驰而过,紧随其后的是另一辆赛车。悍马已经行驶了大约25分钟,它的车速并不快,在驶过的7英里赛程中,它的平均时速略高于15英里,但它仍然比当天其他参赛车辆要好得多。这辆机器人汽车的挡风玻璃被大大的“CAT”(卡特彼勒汽车)徽标盖住,它自信满满地向前奔驰。但突然,随着一个向左的急转弯,它的视野一片漆黑。由于看不见路,汽车成了盲眼行驶。[1]Marsha Walton,“Robots Fail to Complete Grand Challenge,”CNN,May6,2004,accessed June16,2017,http://www.cnn.com/2004/TECH/ptech/03/14/darpa.race.[2]Joseph Hooper,“From DARPA Grand Challenge:2004DARPA’s Debacle in the Desert,”Popular Science,June3,2004,accessed June16,2017,http://www.popsci.com/scitech/article/2004-06/darpa-grand-challenge-2004darpasdebacle-desert;Chris Urmson et al.,“High Speed Navigation of Unrehearsed Terrain:Red Team Technology for Grand Challenge,”Technical Report,CMU-RI-04-37,Robotics Institute,Carnegie Mellon University,2004.[3]“Driven to Innovate,”Carnegie Mellon University Homepage Archive,2010,accessed October16,2016,http://www.cmu.edu/homepage/computing/2010/fall/driven-to-innovate.shtml.[4]Douglas McGray,“The Great Robot Race,”Wired,March1,2004,accessed June15,2017,https://www.wired.com/2004/03/robot-3.[5]Douglas McGray,“The Great Robot Race,”Wired,March1,2004,accessed June15,2017,https://www.wired.com/2004/03/robot-3.[6]Douglas McGray,“The Great Robot Race,”Wired,March1,2004,accessed June15,2017,https://www.wired.com/2004/03/robot-3.[7]Douglas McGray,“The Great Robot Race,”Wired,March1,2004,accessed June15,2017,https://www.wired.com/2004/03/robot-3.[8]Douglas McGray,“The Great Robot Race,”Wired,March1,2004,accessed June15,2017,https://www.wired.com/2004/03/robot-3.。Joshua Davis,“Say Hello to Stanley,”Wired,January1,2006,accessed June15,2017,https://www.wired.com/2006/01/stanley.如何打造自动驾驶汽车

悍马是如何自动行驶7英里的?你可能听说过,自动驾驶汽车实现自动驾驶所使用的技术是机器学习,特别是深度神经网络。但是克里斯和他的同事赛后描述他们的悍马时,根本没有提到机器学习和神经网络。当时是2004年,距离我们研究出如何训练神经网络可靠地“看到”物体还有将近10年的时间。那么,这些早期的自动驾驶汽车使用了什么技术呢?在接下来的几章中,我将回答这个问题,并解释一些使汽车实现自动驾驶的最简单的算法。首先,我会解释当人们提供给一辆汽车要访问的一系列地点时,它如何在偏远的交通不便的沙漠公路上行驶数英里。在接下来的几章里,我会详细介绍让汽车能够“看到”周围的世界以及在城市环境中按加利福尼亚州的交通法规合理行驶的算法。但在深入探讨这些细节,即自动驾驶汽车软件的各部分之前,让我们先快速了解一下计算机控制汽车硬件的方式。

沃康松创造长笛演奏者的时候,通过在圆筒上的特定位置精心放置螺柱来为长笛演奏者编程,使它演奏特定的乐曲。这些螺柱会通过按压不同的杠杆控制长笛演奏者的嘴唇、气流、手指。如果沃康松想要创作一首新乐曲,他只需要制作一个新的圆筒,把螺柱放置在圆筒上的不同位置。如果他想改变塑像的嘴唇或手指移动的方式,同时保留他的12首乐曲,那么他只需要调整物理装置的杠杆、链条和关节。他把自动机的开发分为两部分——圆筒和系统的其他部分,这使得改进自动机和解释其原理变得更加容易。对于开发自动驾驶汽车,我们也可以如法炮制。

现在我们把注意力集中在汽车的速度上。简而言之,汽车需要把计算机给它的数字(比如“25”)转换成具体的东西,即汽车的行驶速度。让这比听上去更难的是,物理发动机不知道“25”是什么意思。例如,即使你知道给电动发动机施加250伏的电压会让汽车以每小时25英里的速度行驶,你也无法通过简单地调高或调低电压来获得想要的速度。如果想让汽车以每小时1英里的速度行驶,你不能指望给发动机施加10伏的电压它就能做到。在10伏电压下,发动机根本不会转动。

沃康松那个时代的人通过使用一种叫离心调速器的装置解决了这个问题,这种装置创建了一个反馈回路来控制发动机的速度。离心调速器是一种带有两个金属飞球的“旋转”装置,如图2.1所示,你可能会把它同蒸汽机和启蒙时期的机械车间联系起来。当发动机运转得更快时,离心调速器就旋转得更快,金属飞球被离心力向外拉。通过一系列杠杆,一个阀门会关闭进入发动机的燃料通路,使发动机减速。如果发动机运转太慢,装置就会增加发动机的燃料,使其加速。通过调节注入发动机的燃料,离心调速器可以让发动机的转速保持稳定。图2.1 离心调速器,电子控制系统的前身。当发动机运转得更快时,带有金属飞球的旋转轴旋转得也更快,飞球被离心力向外拉。接下来的一系列杠杆让发动机的阀门关闭。如果发动机运转太慢,阀门就会让更多的燃料通过

这个离心调速器的缺点是,它只知道如何让发动机保持单一速度运转。现代自动驾驶汽车使用类似的反馈回路,只是它们可以按照计算机程序控制的任意目标速度运转。在图2.2中,你可以看到这样的反馈回路。你的目标速度(例如每小时25英里)是这个反馈回路的输入,回路使用电子速度计而不是旋转装置来测量车轮速度与目标速度的差异。

我们希望从速度控制算法中得到的直觉行为是:当汽车开得太慢时,它会提高发动机的功率;当汽车开得太快时,它会降低发动机的功率。一种常用的调节发动机功率的方法叫作比例控制,之所以叫比例控制,是因为我们对功率的调节等于目标速度和当前速度的差值乘以一个固定的系数。比例控制并不完美,如果汽车爬坡行驶或逆风行驶,它的行驶速度往往比我们期望的速度慢。因此,我们通常会对控制算法做一些其他调整,例如,如果车速一直太慢,发动机的功率就会稍微提升一些。

最常见的控制算法由三条简单规则组成,它可以使汽车可靠地达到目标速度。我们在接下来的几章中介绍的许多自动驾驶汽车都使用了这种三规则控制器,专家称之为PID(比例–积分–微分)控制器。[1]

既然我们已经对硬件的控制方法有了大致的了解,就无须再过多思考这些复杂的细节。创建硬件固然重要,但我们可以假设它是一项单独的挑战,或许是另一本书的主题。为了从我们的视角来控制速度和转向,我们需要编写一个软件来告诉汽车应该以什么速度行驶,车轮应该扭转多大角度。把开车从硬件问题转变为软件问题,现在我们便可以只关注软件问题了。图2.2 PID控制器的反馈回路,即上文描述的三规则控制器。该控制器使用速度计的反馈来调节发动机的输入,例如功率[1]有时控制器会随着时间的推移累积误差,并将累积的误差添加到发送给发动机的信号中;如果误差始终过高或过低,这就会起作用(这被称为积分控制)。有时控制器会跟踪误差的变化速度,并主动调整发送给发动机的信号,预测未来的变化(这被称为微分控制)。这种三规则控制器通常被称为PID控制器,或比例–积分–微分控制器。从技术上讲,悍马只使用它的PD(比例–微分)部分控制油门,而且形式略有不同。规划路径

当悍马在比赛中行驶时,它并不是朝某个随机方向行驶25分钟,而是沿着一条通往特定目的地的道路行驶。汽车可以朝目的地行驶,是因为车里有一个软件告诉它该去哪里。这个规划组件是自动驾驶汽车最重要的部分,它决定了系统其余部分的优先级。汽车所做的其他一切事情,比如利用转向系统保持在道路上行驶、不撞上岩石等,都是为了进一步实现沿着那条路径行驶的目标。

在比赛开始前仅两个小时的时候,机器人汽车比赛的组织者才向参赛者提供了一幅电子地图,因为他们不希望参赛者提前偷看这条路线。这张带有GPS(全球定位系统)坐标的地图描绘了赛车从比赛起点到终点的路线。因此,克里斯和他的团队为汽车配备了GPS传感器来检测位置。从理论上讲,汽车只需要从地图上的一个地点导航到另一个地点,用GPS传感器调整方向,使自身保持沿路线行进即可。

克里斯的团队自称红色车队。他们知道GPS是导航中最重要的部分,但他们也知道这还不够。栅栏和岩石之类的障碍物会挡住去路。因此,红色车队还提前绘制了一幅巨大的地图,称之为“世界上最好[1]的地图”,以此完善他们在比赛当天早上得到的地图。在比赛开始[2]前的几周里,他们研究了54000平方英里沙漠的卫星图像,以确定障碍物的位置。

接下来,在比赛开始前仅两个小时的时候,他们获得了路线的GPS坐标,14个人连忙在几十台计算机的帮助下手工标注沿途的地

[3]形。

当这些工作人员手工标注地图时,计算机不断搜索从比赛起点到终点的最佳路线,并将最新信息发送给工作人员,以便其确定研究的优先顺序。克里斯和他的团队计划在比赛开始前把这条预先计算好的路径上传到他们的自动驾驶悍马上。[1]McGray,“The Great Robot Race.”[2]1平方英里≈2.59平方公里。——编者注[3]McGray,“The Great Robot Race.”。虽然手工标注地图非常耗时,但对自动驾驶汽车而言,这其实是一个合理的解决方案,因为对所有在道路上行驶的自动驾驶汽车来说,精确的地图只需要创建一次,不需要频繁更新。路径搜索

你小时候可能玩过一个游戏,在游戏中,你假设客厅某些地方的地面是熔岩。游戏的目的是找到一条穿过房间的路,尽可能地避免踩到熔岩。悍马从当前位置到达地图上的下一个目标点也需要做同样的事情,只是它需要避开的是沙漠中的危险地区,而不是熔岩。

但我们不能简单地告诉悍马“找一条好走的路”。还记得吗,当沃康松创造长笛演奏者时,他必须为塑像提供演奏长笛所需要的每一个小动作的指令。同样,当为计算机编程以找到一条好走的路时,我们需要给它一个明确的步骤序列,它必须遵循这个步骤序列才能自行找到正确路径。这些步骤就像一个秘方,我们必须对最细微的细节进行明确说明。

如果我们把你寻找穿过熔岩客厅正确路径的过程具体化,它大概是这样的:首先,你会不假思索地在脑海中预估踩在房间的不同表面或物品上所付出的成本,或许像表2.1所示的那样。表2.1

然后,通过估算踩在哪里,你可以用尽可能低的成本到达房间的另一边,以此规划穿过房间的路径。注意,我们将寻找最优路径的问题定义为最小化某个函数值(路径的成本)。这很重要,因为这样我们就可以用计算机擅长的事情来描述这个问题了。计算机不擅长做复杂环境中的开放式规划,但它擅长最小化函数值。你将在这本书中反复看到这一思想。

悍马进行的是计时比赛,因此红色车队在地图上给每一个1米×1[1]米的单元格分配了成本,来反映他们以六点量表为标准预计悍马安全行驶1米所需要花费的时间成本。走复杂地形的成本比走简单地形的成本更高,因为悍马在上面开得更慢。对于地图上没有铺设路面、缺乏GPS数据、地面不平坦或陡峭的区域,还有距离GPS坐标所描述的赛道中心太远的单元格,团队设置了额外的惩罚。得到了将成本分配给每个方形单元格的地图之后,他们就需要预估穿过地图的路径。

有一种很流行的路径搜索算法,被称为迪杰斯特拉算法(Dijkstra’s algorithm),计算机从起点向外扩张搜索边界,以此搜[2]索路径。使用该算法的程序会执行一个循环,每次循环时边界都向外扩张一小部分,直到计算机最终到达目的地。随着边界不断扩张,程序把任意一点围进边界内所要付出的成本会慢慢增加。所以无论何时,当它扩张边界想去围另一个点的时候,这个新点就是它要付出成本的最大值所能到达的点。像这样扩张边界的好处是,计算机可以沿着最有前途的路线搜索,比如先搜索成本很低的平坦道路,然后才会不得已费力地搜索更难走的路线,比如崎岖的越野地带。

当边界到达目标点,即自动驾驶汽车比赛中的目的地的时候,计算机就会知道起点和终点之间存在一条路径,也知道走过这条路径的成本。只要计算机记录下在地图上扩张边界的过程,就可以快速回溯,找到通往终点的最短路径。在图2.3中,你可以看到最短路径的样子以及搜索边界的过程。

计算机科学家和机器人专家多年来一直在研究这种算法,他们知道如何在几分之一秒内找到大型地图中成本最低的路径。当路径无须是最佳路径,仅仅是足够好的路径即可时,他们甚至可以用更短的时间估算出来。红色车队的计算机用这种算法规划出路线后,悍马便准备开始比赛了。[1]六点量表即把地形的情况分为1~6六个等级的测验量表。——译者注[2]许多自动驾驶汽车中使用的算法被称为A*(即A-Star)搜索,它使用近似来缩短搜索一条好走的路径所需的时间。导航

为了在地图上找到悍马的位置,克里斯的团队在悍马上安装了GPS传感器。GPS传感器使用来自美国国防部送入地球轨道的数十颗经过精心校准的卫星的信号。在任意时刻,GPS传感器都可以连接到其中几颗卫星,但并不总是相同的几颗。GPS传感器利用4颗可连接的卫星,根据三角测量法计算出当前时间和它所处的位置,可以精确到几米。

然而,单凭GPS并不能满足自动驾驶汽车的需求。首先,GPS测量并不总是准确的。优秀的GPS系统可以精确到厘米,但在最坏的情况下,有些GPS系统可能会有数百米的误差。GPS测量也存在硬件上的缺陷,例如通过隧道时硬件停顿,甚至卫星信号通过地球电离层时受到干扰。GPS也无法为机器人汽车指明方向。例如,如果悍马的车轮在布满沙土的道路上打滑,悍马可能会失去方向。因此,对悍马而言,在没有GPS的情况下导航是至关重要的。图2.3 起点至终点的路径选择。(a)拥有4种不同地形的地图。网格中的每个单元格代表1平方米,4种颜色代表4种地形。深色代表成本更高且不容易通过的地形。起点和终点分别标记在左侧和顶部。从浅灰色到深灰色,通过每个单元格的时间分别是1秒、3秒、9秒和18秒。(b)一些搜索算法从起点开始扩张搜索边界。每条边界都用黑色轮廓线标出,表示汽车在175秒、350秒、525秒和700秒内能行驶多远。(c)算法搜索完成后,计算机就会描绘出通过成本网格的最佳路径。在这种情况下,路径倾向于保持在浅色地形上,因为在浅色地形上汽车可以更快地行驶

因此,红色车队在悍马上安装了加速度计,以测量它的三维加速度,悍马通过积累这些加速度来估计汽车的速度和位置。他们还安装了测量旋转角度的陀螺仪,这样就可以跟踪它的方向了。

悍马利用1960年发现的一种数学模型——卡尔曼滤波器,将这些加速度计和GPS传感器的测量结果结合起来。卡尔曼滤波器可以实时跟踪运动的物体,例如跟踪潜艇在海洋中的位置或机器人悍马在赛道上的位置,其方法是提取物体的一组测量数据。卡尔曼滤波器背后的核心思想是,我们永远无法真正知道物体的真实位置和速度,只能拍摄其不完美的快照,这些快照就像声呐上的光点一样。有些光点可能是错误的,我们不想让它影响估算,例如,光点可能是一头鲸或一片海藻的反射,但卡尔曼滤波器可以消除这些异常值。事实上,卡尔曼滤波器并不期望它的所有测量值都是正确的,它只是希望平均值正确。如果有足够多的观测数据,它就可以非常好地近似估算出物体的真实位置和速度。卡尔曼滤波器提取加速度计、陀螺仪和GPS的测量结果,再结合车轮的测量结果,可以让自动驾驶汽车估算出自己的位置,即使在GPS中断两分钟的情况下,其估算结果也只有厘米级别的[1]误差。

虽然有这些精确的测量结果,但悍马仍然可能撞到围栏、岩石以及沿途其他在红色车队的地图上看不到的东西,所以车队还给悍马添了一只巨大的“眼睛”。他们计划用这只巨眼扫描悍马前进路径的路面,找出未被编入预先规划路径的障碍物。如果在规划路径上有障碍物或路面不平坦,那么他们编写的程序就会让悍马向左或向右转向,[2]以避免撞上障碍物或跌倒。

悍马的“眼睛”由激光和光传感器组成,被称为激光雷达。激光雷达就像声呐或雷达,只不过它不是反射声音或无线电波,而是从物体上反射光。(后文提到这项技术时,我会使用术语“激光扫描仪”。)巨眼还有一对安装在万向架上的摄像头,机器人汽车可以控[3]制它们指向不同的方向。(万向架是一种固定装置,可以让物体沿着不同的轴旋转,就像地球仪一样。)

但是,悍马的巨眼同样非常简陋。悍马的程序并没有根据它的“眼睛”所看到的东西实质性地调整路线。它只是按照预先规划好的路线走,按照简单的规则左右转向以避开难走的路面。

这只简陋的“眼睛”最终也给悍马惹来了麻烦,比赛中,悍马冲上路肩,撞上了一块岩石。[1]Sebastian Thrun et al.,“Stanley:The Robot That Won the DARPA Grand Challenge,”Journal of Field Robotics23,no.9(2006):661–692.[2]Urmson et al.,“High Speed Navigation of Unrehearsed Terrain.”[3]悍马还有几个低功率激光扫描仪被安装在它的侧面和前部,用于物体探测。无人车挑战赛的获胜者

悍马在沙漠中刚刚驶过7英里里程标后,一头撞上了一块岩石。那里有一个向左的急转弯,但悍马转弯太急了,左侧车轮越过了路肩。它向前滑行,底盘陷入沙土中,最终撞上了岩石。比赛计时器上的时间一分钟又一分钟地流逝,悍马还在沙土中旋转着车轮。几名负责跟踪悍马进程的赛事官员注视着它在晨光中挣扎。

悍马的车轮旋转了将近7分钟,最终着火了。附近的赛事官立刻按下遥控的电子灭火开关,停止了机器人,然后跳出来扑灭了火焰。悍马的车轮转得太快了,当按下电子灭火开关时,它的两个半轴全都[1]断裂了。克里斯的队伍正式退出了比赛。

DARPA(美国国防部高级研究计划局)组织了这次机器人汽车比赛,人们称之为“DARPA无人车挑战赛”(DARPA Grand Challenge)。在106辆报名参赛的车辆中,有15辆在比赛当天参加了比赛,其中包括克里斯和他的团队设计的机器人悍马。

最终,这些自动驾驶汽车没有一辆赢得百万美元奖金。在旁观者看来,这些赛车看起来简直就像一群可怜虫:只见一辆参赛的大卡车[2]慢慢地从灌木丛中退出来;另一辆车因为害怕影子而驶离了道路;那位自动驾驶摩托车的发明者,在赛前的兴奋和欢呼中,忘记了把摩[3]托车切换到自动驾驶模式,它在起跑线就一头栽倒了。

悍马行驶了7.4英里,最终在路边抛了锚。虽然它是比赛中表现最好的车辆,但它仅仅走完了5%的路程。

红色车队研究了他们的比赛记录,发表了一份长篇报告,概述了这辆悍马的优缺点。他们在报告中列举了25分钟行驶过程中的一些[4]问题。报告读起来就像电影《福禄双霸天》(The BluesBrothers)的剧本。

●撞上1号围栏桩;

●撞上2号围栏桩;

●短暂的停顿;

●撞上3号围栏桩;

●撞上岩石;[5]

●通过发夹弯时转弯半径过小。

在红色车队的报告中,这些撞击被描述为“非正常行为”,但保险公司可能会更恰当地称之为事故。[6]

DARPA曾向参赛者宣布,比赛可以用普通四驱皮卡完成,但红色车队选择了一辆悍马,因为他们不希望硬件成为瓶颈。这在某些情况下确实有所帮助,例如,3号围栏桩是加固过的,坚固的悍马推了它近两分钟才终于把它推倒,继续前进。克里斯甚至称他们的悍马[7]为“汽车破城槌,时速22英里的猛兽”。但是一辆坚硬的悍马并不足以赢得胜利。

问题是悍马几乎看不到它的去向。它的巨眼太原始,视力太差。除了长距离导航功能之外,悍马的大部分智能行为都涉及使用简单的规则对传感器做出反应。红色车队意识到了这些局限,对悍马进行了编程,让悍马在数据可能不可靠时忽略摄像头和激光扫描仪的数据,然后按照GPS坐标,沿着预定路线盲眼行驶。这就是在悍马致命的撞车之前发生的事情。它必须改进巨眼和任何支持巨眼的软件。[1]Urmson et al.,“High Speed Navigation of Unrehearsed Terrain.”[2]Davis,“Say Hello to Stanley.”[3]Hooper,“From DARPA Grand Challenge.”[4]《福禄双霸天》,美国动作电影,是历史上损毁车辆最多的电影。——译者注[5]Chris Urmson et al.,“Red Team Technology Overview,”Technical Report,The Robotics Institute,Carnegie Mellon University,2004.[6]Thrun et el.,“Stanley.”[7]Hooper,“From DARPA Grand Challenge”;McGray,“The Great Robot Race.”一场失败的比赛

对旁观者而言,DARPA无人车挑战赛可能看起来就是一次失败。美国有线电视新闻网以“机器人折戟挑战赛”为题总结了这次比赛。《大众科学》(Popular Science)称之为“DARPA的沙漠溃败”。[1]从好的一面讲,正如一位观众所言,这是“拖车司机的好日子”。[2]

但许多参赛者对结果非常满意。当晚,参赛者和组织者在位于终点的布法罗比尔赌场聚会,在那里,他们被一群热衷于制造机器人汽车的极客包围了。很快,所有人都能详细了解机器人悍马如何在崎岖的沙漠里跑7.4英里了!而且,在连续数月的连夜奋战和周末加班之[3]后,他们终于可以补觉了。

DARPA的官员也很兴奋,互相祝贺这场比赛的成功。在之前的8年中,自从自动驾驶汽车领域的引领者之一恩斯特·迪克曼斯(Ernst Dickmanns)宣称“这个领域需要等到计算机变得更强大才有希望”,该领域就一直在寒冬中蛰伏。计算机的速度提高了25倍,DARPA无人车挑战赛迅速重燃了这个领域,让研究人员得以再度取[4]得进展。

DARPA也更接近于实现国会的目标——到2015年使1/3的军用车辆实现自动驾驶(据我所知,这个目标并没有实现)。与参赛者一样,DARPA也拥有来自世界各地专家的文献,内容涉及如何制造可以在沙漠中自动行驶的汽车。“对我们而言,是否有车辆跑完整个赛程并不重要,”时任DARPA主任的安东尼·特瑟(Anthony Tether)解释[5]道,“我们希望激起人们对这个领域的科学兴趣和工程兴趣。”

从这个角度看,这次比赛大获成功。它吸引了100多名申请者,[6]并在短短几个月内就看到了450多家电视媒体和58家报纸的报道。《连线》(Wired)和《大众科学》等28家顶级杂志用大量篇幅报道了[7]这一赛事。尽管他们当时并不知道,但这至少比重工业投资自动驾驶汽车技术提前了15年。

DARPA的官员表示,为了继续推进发展,他们将在一年多后举行下届比赛。他们将奖金提高了一倍,达到200万美元。加里·卡尔(Gary Carr)是第一次挑战赛前连续几周彻夜工作的选手之一,也是那些迫不及待见证成功的选手之一。他说:“我们会来的。我们的赛[8]车会有所不同,但我们会来的。”对下一次比赛摩拳擦掌的人并不止他一位。克里斯和红色车队的其他队员现在又有机会了。[1]Hooper,“From DARPA Grand Challenge.”[2]Joab Jackson,“DARPA’s Desert Duel,”GCN,March13,2004,accessed June15.2017,https://gcn.com/articles/2004/03/13/darpas-desert-duel.aspx.[3]Walton,“Robots Fail to Complete Grand Challenge.”[4]Dickmanns,quoted in Davis,“Say Hello to Stanley.”[5]Jackson,“DARPA’s Desert Duel.”[6]DARPA,“Grand Challenge2004Final Report,”Technical Report,Defense Advanced Research Projects Agency,2004.[7]DARPA,“Grand Challenge2004Final Report.”[8]Walton,“Robots Fail to Complete Grand Challenge.”3 保持在车道内行驶:自动驾驶汽车的感知

将自主导航视为软件问题。斯坦福车队设计理念,2005年第二次无人车挑战赛

第二次无人车挑战赛在一年半之后重燃战火,同样是在莫哈韦沙漠。每隔5分钟就有一辆机器人汽车从起跑线出发,这样车辆就不会[1]在行驶过程中互相干扰。

红色车队的策略再次聚焦于地图和导航。这次,在一个月的时间里,车队派三名车手探察了2000英里的沙漠路程,寻找比赛可能选取的路线。和先前一样,队员在比赛开始之前对路线进行了两个小时的预处理,以帮助计算机规划出一条路径,然后将路径上传给悍马。[2]他们还给悍马编码了一条规则,以防它被困在岩石后面动弹不得。如果它被困住了,即如果它的车轮正在转动,但GPS传感器显示它没有移动,程序就让它后退10米,清除它对障碍物的判断,然后再试[3]一次。

对这些赛车而言,比赛中最具挑战性的部分是啤酒瓶关口,这是[4]一条1.5英里长的土路,一边是陡峭的岩石,另一边是100英尺高的[5]悬崖。参赛者围在关口处传来的现场直播视频旁边,观察着他们的[6]机器人汽车能否成功通过。红色车队的悍马虽然一路磕磕绊绊,但

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载