当前位置: 100md首页 > 医学版 > 医学资料 > 资料下载2021
编号:3364
智能机器如何思考.pdf
http://www.100md.com 2020年2月22日
第1页
第7页
第13页
第25页
第47页
第230页

    参见附件(7948KB,547页)。

     智能机器如何思考是作者肖恩·格里什写的关于智能机器的书籍,主要讲述了智能汽车的构造和作用,智能机器的神经网络,以及关于对智能机器的未来的展望。

    智能机器如何思考内容提要

    任何足够先进的技术初看都与魔法无异。

    自动驾驶汽车已经在很多国家上路,网飞的算法能主动预测你喜欢的电影,DeepMind的计算机程序通关了雅达利游戏,AlphaGo在古老的围棋领域攻克了人类智能的防线。

    这一切是如何发生的?智能机器究竟如何思考?

    在这本书中,作者用人人 都能读懂的语言展示了人工智能领域的前沿成果,深入解读了感知算法、强化学习、智能体、卷积神经网络、深度语音识别、图片识别等科技巨头纷纷拥抱的概念,正是它们让当今的机器如此智能。

    智能机器如何思考作者信息

    肖恩·格里什(Sean Gerrish)谷歌前工程专家、普林斯顿大学的机器学习博士、机器学习极客。他曾在高频交易机构泰莎科技担任工程师,并在谷歌担任机器学习和数据科学团队的工程专家。

    智能机器如何思考作品评价

    味道不错。作者是前Google专家、普林斯顿的机器学习博士,应该是硬核的;但写得很软,想表达的是工作原理。三极管、电子震荡(生成驱动系统的频率)和程序代码(编码)是当代的自动机,就像之前机械时代的齿轮、钟摆和小螺柱一样,以自动化的方式推动着社会的发展进步。而了解基础的工作原理和其中普适些的思考方式让我们知道哪些是可为的。

    智能机器如何思考截图

    扉页

    目录

    引文

    推荐序

    前言

    1 自动机的秘密

    长笛演奏者

    今天的自动机

    钟摆的摆动

    并不难懂的自动机

    2 自动驾驶汽车:挑战不可能

    沙漠中的百万美元竞赛

    如何打造自动驾驶汽车

    规划路径

    路径搜索

    导航

    无人车挑战赛的获胜者

    一场失败的比赛

    3 保持在车道内行驶:自动驾驶汽车的感知

    第二次无人车挑战赛

    自动驾驶汽车中的机器学习

    斯坦利的架构

    避开障碍物

    寻找道路的边缘

    开眼看路

    路径规划

    斯坦利大脑的各个部分如何相互交流

    4 在十字路口避让:自动驾驶汽车的大脑

    城市挑战赛

    感知抽象

    比赛

    Boss 的高层次推理层

    攻克交通堵塞

    三层架构

    自动驾驶汽车看到的物体

    自动驾驶汽车:复杂的系统

    自动驾驶汽车的轨迹

    5 网飞和推荐引擎的挑战

    百万美元大奖

    竞争者

    如何训练分类器

    比赛的目标

    庞大的评分矩阵

    矩阵分解

    第一年结束

    6 团队融合:网飞奖的赢家

    缩小竞争者之间的差距

    第一年末

    随时间变化的预测

    过度拟合

    模型混合

    第二年

    最后一年

    赛后

    7 用奖励教导计算机

    DeepMind 玩雅达利游戏

    强化学习

    教导智能体

    为智能体编写程序

    智能体如何观察环境

    经验金块

    用强化学习玩雅达利游戏

    8 如何用神经网络攻克雅达利游戏

    神经信息处理系统

    近似,而非完美

    用作数学函数的神经网络

    雅达利游戏神经网络的结构

    深入研究神经网络

    9 人工神经网络的世界观

    人工智能的奥秘

    国际象棋自动机“土耳其人”

    神经网络中的误导

    识别图像中的物体

    过度拟合

    ImageNet

    卷积神经网络

    为什么是深度神经网络?

    数据瓶颈

    10 深入了解深度神经网络的内部秘密

    计算机生成图片

    压缩函数

    ReLU 激活函数

    机器人之梦

    11 能听、能说、能记忆的神经网络

    对机器而言,“理解”意味着什么?

    深度语音识别系统

    循环神经网络

    为图像生成字幕

    长短时记忆网络

    对抗数据

    12 理解自然语言

    是宣传噱头,还是人工智能研究的福音?

    IBM 的“沃森”

    攻克《危险边缘》所遇到的挑战

    浩如烟海的知识

    《危险边缘》挑战赛的诞生

    DeepQA

    问题分析

    “沃森”如何解读句子?

    13 挖掘《危险边缘》的最佳答案

    地下室基准

    生成候选答案

    查找答案

    轻量级过滤器

    证据检索

    评分

    汇总和排名

    调整“沃森”

    重新审视DeepQA

    “沃森”有智能吗?

    14 用蛮力搜索找到好策略

    通过搜索玩游戏

    数独

    树的大小

    分支因子

    游戏中的不确定性

    克劳德· 香农与信息论

    评价函数

    “深蓝”

    加入IBM

    搜索与神经网络

    西洋双陆棋程序

    搜索的局限

    15 职业水平的围棋

    计算机围棋

    围棋

    通过抽样走子来建立直觉

    神之一手

    蒙特卡洛树搜索

    单臂***

    AlphaGo 是否需要如此复杂

    AlphaGo 的局限

    16 实时人工智能与《星际争霸》

    构建更好的游戏机器人

    《星际争霸》与人工智能

    简化游戏

    实用《星际争霸》机器人

    OpenAI 与《DOTA2》

    《星际争霸》机器人的未来

    17 50 年后或更遥远的未来

    人工智能起起伏伏的发展过程

    如何复制这本书中的成功

    数据的普遍使用

    下一步去向何方

    致谢

    版权页

    智能机器如何思考

    [美]肖恩· 格里什 著

    张羿 译

    中信出版集团

    目录

    引文

    推荐序

    前言

    1 自动机的秘密

    长笛演奏者

    今天的自动机

    钟摆的摆动

    并不难懂的自动机

    2 自动驾驶汽车:挑战不可能

    沙漠中的百万美元竞赛

    如何打造自动驾驶汽车

    规划路径

    路径搜索

    导航

    无人车挑战赛的获胜者

    一场失败的比赛

    3 保持在车道内行驶:自动驾驶汽车的感知

    第二次无人车挑战赛

    自动驾驶汽车中的机器学习

    斯坦利的架构

    避开障碍物

    寻找道路的边缘

    开眼看路

    路径规划

    斯坦利大脑的各个部分如何相互交流

    4 在十字路口避让:自动驾驶汽车的大脑

    城市挑战赛

    感知抽象

    比赛

    Boss的高层次推理层

    攻克交通堵塞

    三层架构

    自动驾驶汽车看到的物体

    自动驾驶汽车:复杂的系统

    自动驾驶汽车的轨迹

    5 网飞和推荐引擎的挑战

    百万美元大奖

    竞争者

    如何训练分类器

    比赛的目标

    庞大的评分矩阵

    矩阵分解

    第一年结束

    6 团队融合:网飞奖的赢家

    缩小竞争者之间的差距

    第一年末

    随时间变化的预测

    过度拟合

    模型混合

    第二年

    最后一年

    赛后

    7 用奖励教导计算机

    DeepMind玩雅达利游戏

    强化学习

    教导智能体

    为智能体编写程序

    智能体如何观察环境

    经验金块

    用强化学习玩雅达利游戏

    8 如何用神经网络攻克雅达利游戏

    神经信息处理系统

    近似,而非完美

    用作数学函数的神经网络

    雅达利游戏神经网络的结构

    深入研究神经网络

    9 人工神经网络的世界观

    人工智能的奥秘

    国际象棋自动机―土耳其人‖

    神经网络中的误导

    识别图像中的物体

    过度拟合

    ImageNet

    卷积神经网络

    为什么是深度神经网络?

    数据瓶颈

    10 深入了解深度神经网络的内部秘密

    计算机生成图片

    压缩函数

    ReLU激活函数

    机器人之梦

    11 能听、能说、能记忆的神经网络

    对机器而言,―理解‖意味着什么?

    深度语音识别系统

    循环神经网络

    为图像生成字幕

    长短时记忆网络

    对抗数据

    12 理解自然语言

    是宣传噱头,还是人工智能研究的福音?

    IBM的―沃森‖

    攻克《危险边缘》所遇到的挑战

    浩如烟海的知识

    《危险边缘》挑战赛的诞生

    DeepQA

    问题分析

    ―沃森‖如何解读句子?

    13 挖掘《危险边缘》的最佳答案

    地下室基准

    生成候选答案

    查找答案

    轻量级过滤器

    证据检索

    评分

    汇总和排名

    调整―沃森‖

    重新审视DeepQA

    ―沃森‖有智能吗?

    14 用蛮力搜索找到好策略

    通过搜索玩游戏

    数独

    树的大小

    分支因子

    游戏中的不确定性

    克劳德· 香农与信息论

    评价函数

    ―深蓝‖

    加入 IBM

    搜索与神经网络

    西洋双陆棋程序

    搜索的局限

    15 职业水平的围棋

    计算机围棋

    围棋

    通过抽样走子来建立直觉

    神之一手

    蒙特卡洛树搜索

    单臂***

    AlphaGo是否需要如此复杂

    AlphaGo的局限

    16 实时人工智能与《星际争霸》

    构建更好的游戏机器人

    《星际争霸》与人工智能

    简化游戏

    实用《星际争霸》机器人

    OpenAI与《DOTA2》

    《星际争霸》机器人的未来

    17 50年后或更遥远的未来

    人工智能起起伏伏的发展过程

    如何复制这本书中的成功

    数据的普遍使用

    下一步去向何方

    致谢

    版权页

    引文

    献给设计和构建智能机器的工程师和研究员

    推荐序

    10 多年前,我遇见了肖恩。当时我在谷歌领导团队,负责开发为谷歌的

    搜索广告业务提供支持的许多大型机器学习系统。肖恩是我们小组里最顶尖

    的工程师之一,当时他正在研究机器学习前沿领域的一系列具有挑战性的问

    题。我们一起工作以来,体现在统计机器学习技术中的各类人工智能已经从

    相对难以触及的神秘技术、研究人员和高科技公司的专属领域,发展成为日

    益平易近人的、卓有成效的工具和技术,值得每一位软件开发人员使用。

    目前机器学习领域取得的快速进展,在一定程度上是由以下因素推动的:

    数据爆炸,高性能计算机体系结构的复兴,云提供商竞相为开发人员和研究

    人员构建可扩展的人工智能平台,人们将实时智能嵌入移动设备、汽车、其

    他消费电子产品和日益普遍的连接到云端的计算设备的热潮。这种快速进步

    中包括一些惊世骇俗的成就,机器在许多狭窄的领域已经接近于或超过了人

    类的能力,例如在图像中标记物体、识别语音、玩策略游戏以及翻译语言,但我们仍处于这些技术发展的初期,摆在我们面前的是长达几十年的创新和

    发现之旅。

    对开发人员和研究人员而言,理解机器学习的工作原理是一个明智的职

    业选择。目前,全球的科技巨头公司对这些技术的专业知识都有很高的需求。

    微软、亚马逊、谷歌、苹果、百度等许多公司都提供应用程序接口、工具包

    和云计算基础设施,将机器学习的开发工作交给全世界数以千万计的开发人

    员。未来几年,随着越来越多的应用程序包含智能功能,大多数开发人员都

    需要掌握一些机器学习技术。这正是这本书的宝贵价值所在。

    这本书诞生自肖恩对了解现代机器学习成功之路的渴望。在用清晰易懂

    的方式描述这些系统的本质时,肖恩利用 10 多年的行业和学术经验解决了

    机器学习带来的一些最棘手的问题。鉴于机器学习系统能够复制某些方面的

    人类智能,等到某个突破点临近,原本由人类特有的创造诗意词句的能力或

    许也会被机器复制。肖恩对这些技术严谨实用的描述反映了他在科研战壕中

    的岁月,不时令人感到痛苦的反复试验让战壕中的人们了解到,机器学习并

    不是魔法。如果你知道如何应用它,了解它的局限所在,它就是强有力的前

    沿工具;如果你不知道,它就几乎一文不值。

    肖恩通过列举现实世界的例子,回避不必要的术语,使现代机器学习的

    概念变得通俗易懂。这本书假设读者在机器学习或计算机科学领域的知识相

    对较少,因此对更广泛的受众而言非常友好。鉴于当前围绕机器学习和人工

    智能的对话颇为活跃,并且这些技术可能对我们的未来产生影响,任何想要

    参与这场对话的人都应该尽可能地学习。由于市场上缺乏对机器学习通俗易

    懂的专业介绍,这本书将成为引导你理解底层技术的理想方法,它可以帮助

    你更好地判断哪些言论值得相信,哪些说得天花乱坠的谬论应该被抛弃。

    微软CTO(首席技术官)

    凯文· 斯科特(Kevin Scott)

    前言

    2010 年的一个晚上,这本书的种子播种在了计算机科学系顶层的人工

    智能研究实验室里。当时,我刚刚参加了一些关于自动驾驶汽车的研讨会,对它们的工作原理颇为好奇,于是我做了一些网络搜索。我找到的最好的解

    释是卡内基–梅隆大学和斯坦福大学的一些研究人员撰写的学术论文。我看

    了几分钟,对自动驾驶汽车的工作原理有了些粗浅的认识,然后便离开了。

    但随着时间的推移,我发现自己三番五次地重复这个过程。每当看到媒

    体报道人工智能或机器学习领域的一个个突破时,我就会回到同一个问题:

    它们是如何工作的?令我感到奇怪的是,我花了无数时间在学术界和产业界

    研究和实践机器学习,但我仍然不能坚定连贯地回答这个问题。我想,或许

    我对人工智能和机器学习的了解不如我本应了解的那么多,又或许大学课程

    没有教授我们全面的知识。大多数关于这些主题的大学课程只教授这些突破

    背后的构件,而不教授如何将这些构件组合在一起去做有趣的事情。

    但还有另一个更根本的原因,即我无法弄清楚它们的工作原理:这些突

    破中的大多数确实涉及开创性的研究,我们根本不知道如何构建它们,直到

    研究人员找到了方法、撰写了过程或构建了原型。这就是为什么研究人员一

    直在同行评议期刊上发表关于这些突破的文章,因为这些文章新颖、有影响

    力、非显而易见(而且是经过同行评议的)。但是,这些突破背后的细节一

    经发表就会被随意散布在许多不同的来源中,因此仍然无济于事。

    最终,我意识到应该把自己在研究中学到的东西与他人分享,这样他们

    就无须为了理解相同的东西而跨越同样的障碍。换言之,我写这本书的原因

    是,这是一本如果我不懂机器学习我将会想读的书。

    于是我写了这本书,希望它能够帮助那些对广义上的科学技术感兴趣的

    人,无论老少;或者那些想要更多地了解机器学习和人工智能是否会对他们

    的公司有帮助的行业领导者。这本书旨在让广大读者都能读懂,无论是满怀

    好奇心的高中生,还是退休的机械工程师。虽然了解一些计算机科学会有所

    帮助,但阅读本书唯一的前提条件是好奇心和一点专注力。我有意把这本书

    中涉及的数学知识保持在最低限度,以便向普通读者更好地传达核心思想。

    机器人、人工智能和机器学习领域的专家通常比较了解我将要描述的一

    些算法的实现细节,但是对他们中的许多人而言,其余的叙述和对整个系统

    的设计可能仍然是陌生的(除非这是他们的研究领域)。我希望这本书能为

    大家带来一些新东西。

    1 自动机的秘密

    长笛演奏者

    1737 年,在工业革命的黎明时分,法国的机械天才雅克· 德· 沃康松

    (Jacques de Vaucanson)完成了一件杰作:一尊可以像真人一样用长笛演奏

    音乐的塑像。只见这尊真人大小的塑像把真实的长笛举到嘴边,接着便用它

    的机械肺把空气送入乐器,吹出一个个音符。通过移动嘴唇,调整吹气的力

    度,控制手指精确地在长笛孔上移动,塑像可以吹出一系列音符,组成一首

    完整的乐曲,“其吹奏过程就像人类乐手的演奏一样完美”[1]。沃康松并不满

    足于塑像只会用长笛演奏一首乐曲,于是赋予了塑像演奏 12 首不同乐曲的

    能力。[2]

    对公众而言,像长笛演奏者这样的装置他们并非第一次见,但是这个装

    置很特别。他们把这种机器称为自动机,而且爱不释手。摆弄这类装置已经

    成为整个欧洲富裕阶层的一种爱好。[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.combooks2002feb16extract.gabywood.

    [2]Georgi Dalakov,History of Computers and Computing,Automata,Jacques

    Vaucanson,accessed March9,2017,http:history-

    computer.comDreamersVaucanson.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 岁小女孩的冒牌自动机不同,你将在本书中看到的突破是

    真实的科学进步。虽然它们看起来像魔法,但是与法国科学院审查长笛演奏

    者一样,学术界对这些突破都进行了仔细的审查。它们同长笛演奏者一样,也是自动机的例子。自动机就是自动运行的机器。它看上去总是像人或动物

    一样自主运行,似乎可以独立思考。但根据定义,自动机是遵循程序的。这

    些程序是预先设定的指令序列,就像沃康松为让长笛演奏者演奏音乐而开发

    的程序一样。[书籍分 享V 信 iqiyi114]

    正如我们将要看到的,事实证明,技术专家在过去的几个世纪里没有太

    大变化。他们仍然在设计自动机并给它们编程,以此复制人类的思想和身体,他们有时仍然会造出冒牌自动机。唯一的区别是,技术专家已经把工具升级

    为计算机和运行在计算机上的软件,它们是 21 世纪的杠杆、齿轮和发动机。

    钟摆的摆动

    18 世纪的自动机有时会使用当时尖端的精密技术——机械发条,来执行

    它们的程序。这些自动机是由机械能驱动的,例如一个被举高的重物、用钥

    匙上弦的线圈。自动机的创造者通常是钟表匠,其技术则源自钟表,因为钟

    表每到一个小时就尽职尽责地执行有趣的机械序列。钟表从启动前就存储在

    其内部的势能中汲取能量,以此计时并表演它们的“特技”。它们的发条使其

    以微小的增量释放存储的能量,从而逐步执行程序。

    机械钟利用钟摆的摆动来计时。钟摆摆动的频率非常规律,直到 20 世

    纪 30 年代,钟摆都是最好的计时方法。[1]

    钟摆每摆动一次,一系列的闩锁

    和齿轮就会记录一个时刻,释放一点储存的能量,这样时钟就可以做一些有

    趣的事情,并施加给钟摆一个小小的推力,使它保持摆动。然后这个过程重

    复进行。机械手表的工作原理与之类似:一根精细的螺旋状的弹簧来回旋转

    一个圆盘,使圆盘绕着它的中心转动。随着圆盘的扭转,齿轮每次转动一到

    两个齿,从而使发条的其余部分可以做一些有趣的事情。

    粗略地讲,电子计算机能够运行程序也是因为遵循了相同的机制。闩锁

    和齿轮的原理同样适用于计算机,但计算机并不是像钟摆那样安静地摆动,而是利用了电子的摆动。电子从电路的一个部分飞速移动到另一个部分,然

    后返回。电子从任意一个极端奔向目的地的中途,在移动到电路另一部分的

    过程中,保持动量不变。例如,电线线圈(电磁铁)或者晶体振荡器(经过

    实验室培养并且被精确切割的沙粒)的“弹性摆动”,其摆动速度能达到每秒

    数百万次,为电路提供非常精确的谐振频率。这些晶体振荡器取代了物理摆,因为它们对地震、温度变化、飞机和潜艇的加速度等外力具有稳定的抵抗力,而且它们的振荡速度非常快(每秒数百万次)。

    每当这些电子从电路的一个部分摆动到另一个部分,类似于机械时钟或

    手表中的物理闩锁的电子锁存器就会记录下这一时刻,计算机就在这个时刻

    去执行程序的下一条指令。然后指令计数器向前移动,时钟等待电子往回摆

    动(或者等待新电子取代它们的位置),然后重复这个过程。

    [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 自动驾驶汽车:挑战不可能

    大多数值得做的事情并非轻而易举,而且不会速战速决。你享受你得到

    的东西,享受事情的结果,这就是事情原本该有的样子。正确的做法是选择

    你喜欢的东西,用你所拥有的一切去追求它,这就是生活的意义所在。[书籍

    分 享V信 iqiyi114]

    ―老红‖威廉· 惠特克(William―Red‖Whittaker)[1]

    红色车队领袖

    [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.org20051010scitechredteam.

    沙漠中的百万美元竞赛

    在 2004 年的一个凉爽的星期四早上,第一次机器人汽车比赛在莫哈韦

    沙漠拉开了战幕。随着太阳升起,一只沙漠乌龟从洞穴中探出头来,希望能

    在迅速变暖的公路上享受一天的阳光。今天它发现自己被困在了洞穴附近,无论往哪个方向都寸步难行。大约 20 名生物学家在这个洞穴和类似的洞穴

    周围设置了路障,以保护濒临灭绝的动物免受即将驶过附近公路的机器人汽

    车的伤害。[1]

    他们恰当地预计了这些汽车无法保持在公路上行驶,更不用说

    避开它们中间的乌龟了。

    人们对赛车是否能完成比赛的预期大相径庭。赛事经理毫不含糊地声称,胜利者会在 10 小时内跑完 142 英里的赛程。[2]

    但有人怀疑是否会有任何一

    辆赛车能完成比赛,机器人社区的很多人都有此怀疑。[3]

    百万美元奖金岌岌可危。克里斯· 厄姆森(Chris Urmson)是角逐这笔奖

    金的人之一,他是一个开发自动驾驶悍马汽车的研究团队的设计带头人。

    克里斯身材颀长,顶着一头凌乱的金发。在传奇机器人专家“老红”威

    廉· 惠特克的指导下,克里斯正在卡内基–梅隆大学攻读博士学位。他非常专

    注于自己的研究,在沙漠中花了近两个月的时间对车队的悍马进行测试,一

    度连续工作近 40 个小时。[4]

    在一次长时间的测试中,他一直守候到午夜时

    分,蜷缩在厚厚的毯子下,看着悍马兜圈子。[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.com2004TECHptech0314darpa.race.

    [2]Joseph Hooper,“From DARPA Grand Challenge:2004DARPA’s Debacle in the

    Desert,”Popular Science,June3,2004,accessed

    June16,2017,http:www.popsci.comscitecharticle2004-06darpa-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.eduhomepagecomputing2010falldriven-to-

    innovate.shtml.

    [4]Douglas McGray,“The Great Robot Race,”Wired,March1,2004,accessed

    June15,2017,https:www.wired.com200403robot-3.

    [5]Douglas McGray,“The Great Robot Race,”Wired,March1,2004,accessed

    June15,2017,https:www.wired.com200403robot-3.

    [6]Douglas McGray,“The Great Robot Race,”Wired,March1,2004,accessed

    June15,2017,https:www.wired.com200403robot-3.

    [7]Douglas McGray,“The Great Robot Race,”Wired,March1,2004,accessed

    June15,2017,https:www.wired.com200403robot-3.

    [8]Douglas McGray,“The Great Robot Race,”Wired,March1,2004,accessed

    June15,2017,https:www.wired.com200403robot-3. 。 Joshua Davis,“Say Hello to

    Stanley,”Wired,January1,2006,accessed

    June15,2017,https:www.wired.com200601stanley.

    如何打造自动驾驶汽车

    悍马是如何自动行驶 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]

    在比赛开始前的几周里,他们研究了

    54000 平方英里[2]

    沙漠的卫星图像,以确定障碍物的位置。

    接下来,在比赛开始前仅两个小时的时候,他们获得了路线的 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 分钟行驶过程中的一些问题。报告读

    起来就像电影《福禄双霸天》(The BluesBrothers)[4]

    的剧本。

    ●撞上1号围栏桩;

    ●撞上2号围栏桩;

    ●短暂的停顿;

    ●撞上3号围栏桩;

    ●撞上岩石;

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

    在红色车队的报告中,这些撞击被描述为“非正常行为”,但保险公司可

    能会更恰当地称之为事故。

    DARPA 曾向参赛者宣布,比赛可以用普通四驱皮卡完成,[6]

    但红色车队

    选择了一辆悍马,因为他们不希望硬件成为瓶颈。这在某些情况下确实有所

    帮助,例如,3 号围栏桩是加固过的,坚固的悍马推了它近两分钟才终于把

    它推倒,继续前进。克里斯甚至称他们的悍马为“汽车破城槌,时速 22 英里

    的猛兽”。[7]

    但是一辆坚硬的悍马并不足以赢得胜利。

    问题是悍马几乎看不到它的去向。它的巨眼太原始,视力太差。除了长

    距离导航功能之外,悍马的大部分智能行为都涉及使用简单的规则对传感器

    做出反应。红色车队意识到了这些局限,对悍马进行了编程,让悍马在数据

    可能不可靠时忽略摄像头和激光扫描仪的数据,然后按照 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 年使13 的军用车辆实

    现自动驾驶(据我所知,这个目标并没有实现)。与参赛者一样,DARPA 也

    拥有来自世界各地专家的文献,内容涉及如何制造可以在沙漠中自动行驶的

    汽车。“对我们而言,是否有车辆跑完整个赛程并不重要,”时任DARPA 主任

    的安东尼· 特瑟(Anthony Tether)解释道,“我们希望激起人们对这个领域的

    科学兴趣和工程兴趣。”[5]

    从这个角度看,这次比赛大获成功。它吸引了 100 多名申请者,并在短

    短几个月内就看到了 450 多家电视媒体和 58 家报纸的报道。[6]

    《连线》

    (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.comarticles20040313darpas-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]

    对这些赛车而言,比赛中最具挑战性的部分是啤酒瓶关口,这是一条

    1.5 英里长的土路,一边是陡峭的岩石,另一边是 100 英尺[4]

    高的悬崖。[5]

    参赛者围在关口处传来的现场直播视频旁边,观察着他们的机器人汽车能否

    成功通过。[6]

    红色车队的悍马虽然一路磕磕绊绊,但基本顺利通过。事实上,悍马成功跑完了全部 132 英里的赛程,这几乎是第一场比赛中行进路程的

    20 倍。[7]

    但它并没有获胜。比赛的获胜者是斯坦利,它是斯坦福车队制造的

    赛车,这一年首次参赛。斯坦利开得太快了,为了等它前面的赛车,它不得

    不两次停车。[8]

    最终比赛组织者停住了斯坦利前面的赛车,让斯坦利通过。

    最后,斯坦利完赛比红色车队的悍马快了 10 多分钟。[9]

    斯坦福车队由斯坦福大学人工智能实验室负责人塞巴斯蒂安· 特龙

    (Sebastian Thrun)领导,他是有史以来担任这一职位的最年轻的人。塞巴

    斯蒂安也来自卡内基–梅隆大学,仅仅几年前他还是机器人实验室的初级教

    员。虽然他先前从未制造过自动驾驶汽车,但他从第一次无人车挑战赛受到

    了启发。在得知那场挑战赛是一场“沙漠溃败”之后,他问自己:“我们能做得

    更好吗?”[10]

    他从大众汽车公司得到了两辆大众途锐汽车的赞助和大众电子

    研究实验室的支持,由此,他得以将灵感转化为行动。[11]

    正如塞巴斯蒂安在比赛的个人笔记中所写的那样,他首先通过组织研讨

    班召集人力,建造斯坦利的原型。[12]

    这不是普通的课堂:没有教科书,没有

    教学大纲,也没有讲座。[13]

    这门课的 20 名学生只阅读了两篇论文,这样他

    们就不会偏向于任何特定的方法。[14]

    在短短 8 周内,他们就造出了一辆原型

    车,它可以沿着沙漠路线行驶得比悍马更远(虽然速度慢一些)。[15]

    是什么让斯坦利在比赛中大获成功?前一年的参赛车辆对障碍物检测等

    方面的依赖太少。[16]

    斯坦福车队认识到,过于强调地图和导航而忽视对环境

    的感知是错误的。虽然他们的对手红色车队在第二次无人车挑战赛前已经探

    察了2000 英里的沙漠道路,但这一区域仅占实际比赛路线的 2%。[17]

    斯坦福车队知道,即使大型悍马也可能被岩石困住,而且 DARPA 提醒

    他们,小型皮卡可以穿越这条路线,这就形成了一种不同的设计理念:将自

    主导航视为软件问题。[18]

    在让学生设计原型机器人的研讨班结束后,塞巴斯

    蒂安和一个小团队(仅由少数学生和其他一些研究人员组成)舍弃了他们的

    大部分代码,开始更仔细地重写斯坦利的软件,并为汽车中包含的软件设置

    了一个很高的标准。[19]

    但他们并不只是依赖软件,更具体地讲,他们计划使

    用机器学习来解决驾驶问题。

    [1]Sebastian Thrun et al.,“Stanley:The Robot That Won the DARPA Grand

    Challenge,”Journal of Field Robotics23,no.9(2006):661–692.

    [2]Joshua Davis,“Say Hello to Stanley,”Wired,January1,2006,accessed

    October30,2016,https:www.wired.com200601stanley.

    [3]Chris Urmson et al.,“A Robust Approach to High-Speed Navigation for Unrehearsed

    Desert Terrain,”Journal of Field Robotics23,no.8(2006):467–508.

    [4]1 英尺=0.3048 米。——编者注

    [5]Steve Russell,“DARPA Grand Challenge Winner:Stanley the Robot!”Popular

    Mechanics,January8,2006,accessed

    June15,2017,http:www.popularmechanics.comtechnologyrobotsa3932169012.

    [6]Russell,“DARPA Grand Challenge Winner.”

    [7]Urmson et al.,“A Robust Approach.”

    [8]前面这辆车实际上是红色车队送来参赛的另一辆车。

    [9]Russell,“DARPA Grand Challenge Winner.”

    [10]Davis,“Say Hello to Stanley”;Joseph Hooper,“DARPA’s Debacle in the

    Desert,”Popular Science,June3,2004,accessed

    June16,2017,http:www.popsci.comscitecharticle2004-06darpa-grand-challenge-

    2004darpasdebacle-desert;Sebastian Thrun,“A Personal Account of the Development of

    Stanley,the Robot That Won the DARPA Grand Challenge,”AI Magazine27,no.4(2006).

    [11]Davis,“Say Hello to Stanley”;Thrun,“A Personal Account.”

    [12]Davis,“Say Hello to Stanley”;Thrun,“A Personal Account.”

    [13]Davis,“Say Hello to Stanley”;Thrun,“A Personal Account.”

    [14]Davis,“Say Hello to Stanley”;Thrun,“A Personal Account.”

    [15]Davis,“Say Hello to Stanley”;Thrun,“A Personal Account.”

    [16]Russell,“DARPA Grand Challenge Winner.”

    [17]Davis,“Say Hello to Stanley.”

    [18]Thrun et al.,“Stanley.”

    [19]Thrun,“A Personal Account.”

    自动驾驶汽车中的机器学习

    斯坦福车队并不是第一个使用机器学习设计自动驾驶汽车的研究小组,至少自20 世纪80 年代开始,人们就已经在自动驾驶汽车的背景下研究机器

    学习了。[1]

    但是,斯坦福车队属于第一批完全押注于机器学习的现代自动驾

    驶汽车团队。在自动驾驶汽车成为主流媒体热门词汇之前的近 10 年里,他

    们就欣然接受了机器学习在自动驾驶汽车领域的角色,塞巴斯蒂安的车队在

    赛后这样描述其赛车。

    无论在比赛前还是在比赛中,机器学习的广泛应用都使斯坦利变得强大

    和精确。我们相信,这些技术加上广泛的测试,对斯坦利在这场比赛中的成

    功起到了很大的作用。[2]

    当塞巴斯蒂安和他的团队第一次着手打造斯坦利时,他们面临着一项艰

    巨的任务。他们需要为其自动机设计一种方式来感知世界并做出反应。斯坦

    利在寻找新路径时不能每次都等几秒,随着环境模型的改变,它需要做出无

    缝衔接的决策。塞巴斯蒂安的团队考虑这个任务,就像一个建筑师团队考虑

    设计新建筑一样。他们需要为斯坦利找到一个架构。

    [1]Dean A.Pomerleau,Alvinn:An Autonomous Land Vehicle in aNeural

    Network.Technical Report,DTIC Document,1989.

    [2]Thrun et al.,“Stanley.”

    斯坦利的架构

    塞巴斯蒂安的团队整合的架构由三个独立的部分组成,如图 3.1 所示。

    架构最左侧的部分是硬件层,其中包括传感器和执行器,前者负责收集数据,后者控制转向、刹车和发动机转速。硬件层不会做任何智能的事情,它仅仅

    是从传感器(摄像机、激光扫描仪和 GPS 系统等)获取数据,并使用来自规

    划层的命令(如发动机转速和车轮角度)控制汽车的硬件。除了可能被嵌入

    硬件的卡尔曼滤波器外,硬件层几乎没有通常属于人工智能或机器学习领域

    的东西。[1]

    在另一端,即最右边,是思考层,或称规划层:它执行汽车的高层次规

    划。(斯坦利没有太多高层次的思考,我们会在下一章中看到更多自动驾驶

    汽车的高层次思考,但在斯坦利中这几乎不存在。)鉴于道路上有障碍,这

    一层解决了汽车应该如何转向以避开障碍的问题。这一层负责决定汽车的实

    际驾驶方式。它将命令发送到最左边的硬件层,通常是发送给我们在上一章

    看到的三规则控制器。如果规划层希望发动机以特定的速度(例如每小时 25

    英里)为目标,那么它只需要将该命令发送给硬件控制器即可。

    图 3.1 中的中间层位于左侧的硬件层和右侧的思考层之间。它将传感器

    的原始读数转换成可解释的模型,这样思考层就可以完成它的工作。其中一

    些模型简单地总结了斯坦利需要遵循的高级路线,这是斯坦利在比赛开始时

    规划的路线。其他模型对数据进行处理,以此告诉斯坦利它的传感器看到了

    什么。中间层中持续运行着各种各样的机器学习模块,其中包括我们稍后会

    仔细研究的几个道路检测系统,这些模块解释混乱无序的传感器读数,并把

    它们转换成对世界更有意义的解释,然后传递给规划层。

    图3.1 斯坦利软硬件组织的简要总结,斯坦福车队曾凭借它获得 2005年无人车挑战赛冠

    军

    这些传感器读数以点云[2]

    的形式进入中间层,或称感知层。通过为右边

    的规划层解释它们,中间层使规划层更容易专注于其更高层次的推理。虽然

    运行在中间层的模块设计巧妙并使用复杂的机器学习算法,但它们并不是真

    正的智能。只有在与规划层共同工作时,它们才显得智能。现在,让我们一

    起仔细探讨中间层的感知模块。

    [1]这些层之间的界线可能是模糊的。例如,有时硬件层中现成的传感器会使用卡尔

    曼滤波器之类的东西,卡尔曼滤波器是属于硬件层还是软件层?这其实并不清楚。

    [2]点云是指在获取物体表面每个采样点的空间坐标后得到的点的集合。——译者注

    避开障碍物

    正如红色车队所做的那样,斯坦福车队也为他们的赛车装备了激光扫描

    仪,用来“观察”周围的地形。他们给斯坦利编写了程序,让它想象自己周围

    的网格,有点像图 3.2 中的网格(只是他们的地图中每个单元格的面积要小

    得多)。

    斯坦利使用激光扫描仪的数据估计网格中哪些单元格被物体占据(图

    3.2 中,被占据的单元格用深灰色表示)。然后,斯坦利的规划算法让它在

    没被占据的单元格上行驶,同时转向以避开被占据的单元格。

    但他们如何判断一个单元格是否被占据?塞巴斯蒂安和他的团队为斯坦

    利编写的程序是:测量每个单元格的特征,例如单元格中不同点的高度(这

    是他们可以从激光扫描仪获得的信息)以及距离上一次精确测量这些点的时

    间有多长。然后,他们使用这些测量值来估计单元格中包含两个不同高度的

    点的概率。如果单元格确实包含两个高度非常不同的点,那么斯坦利便会在

    地图上将这个单元格标记为已被占据。[1]

    图 3.2

    这种方法的思路很对,但塞巴斯蒂安和他的团队也发现他们标记这些单

    元格的算法不是很好。首先,他们的传感器测量结果往往会随时间的变化而

    浮动。如果斯坦利的激光扫描仪倾斜了几分之一度,斯坦利就会认为前面有

    障碍物,这就会导致最右边那一层的规划算法命令斯坦利转向。斯坦福车队

    本可以投资数十万美元购入一个由顶尖研究科学家设计的昂贵的人体姿态估

    计系统,但团队已经拥有了这样的科学家,所以他们自己建立了一个模型,这个模型对避免这类测量误差很有用。他们得到的模型是正确的,至少本质

    上是正确的,但仍然有许多参数需要调整。[2]

    《连线》杂志的记者乔舒亚· 戴维斯(Joshua Davis)注意到,塞巴斯蒂

    安非常清楚这些局限。比赛前几个月的一天,塞巴斯蒂安和斯坦利在沙漠里,他在路边沮丧地踢着沙土,因为斯坦利偏离了正确的路线,差点开进沟里。

    [3]

    塞巴斯蒂安发现斯坦利与第一次挑战赛中害怕影子和灌木丛的赛车有同样

    的问题。他仔细思考,试图找出哪些算法可以让汽车更好地利用传感器的数

    据。[4]

    随后,他开始应用机器学习。塞巴斯蒂安的解决方案是让一个人驾驶斯

    坦利,同时让它的激光扫描仪测量汽车周围的世界(有一种说法是塞巴斯蒂

    安亲自驾驶斯坦利收集这些测量数据),然后保存这些测量数据以便以后使

    用。这个想法的关键之处在于,无论谁驾驶斯坦利,他都只会在安全的路面

    上驾驶,所以斯坦利没有行驶过的一些路面则可能并不安全。塞巴斯蒂安的

    团队可以使用传感器的测量数据调整障碍检测模型中的许多参数,这样做实

    际上是用数据“训练”算法。

    塞巴斯蒂安的团队用来预测哪些路面可以安全行驶的方法,被称为监督

    分类。[5]

    我们将在接下来的几章仔细探讨这个方法,但是现在你需要知道的

    是,斯坦福车队使用的方法可以被称为一个分类器,这种分类器让计算机可

    以自动预测一个项目属于两个类别中的哪一个。分类器的主旨是使用一个可

    以生成预测的简单数学函数来组合你的测量结果。这个数学函数可能有许多

    可调整的“旋钮”,这便是我们引入机器学习的地方,因为这些“旋钮”可以通

    过数据进行调整,所以预测可以变得非常精确。

    斯坦福车队用数据驱动的调整将他们的地形检测算法精确度提高了几个

    数量级。在他们使用这一方法之前,斯坦利有 12.6%的概率会把安全的路面

    误认为不安全的路面,这种错误会让它离开道路。在将分类器与数据拟合后,斯坦福车队把这个概率降低到了原来的 16000。[6]

    这是他们改进红色车队使

    用的巨眼的第一个关键步骤。

    [1]Thrun et al.,“Stanley.”

    [2]Thrun et al.,“Stanley.”Davis,“Say Hello to Stanley.”

    [3]Davis,“Say Hello to Stanley.”

    [4]Davis,“Say Hello to Stanley.”

    [5]Thrun et al.,“Stanley”;Davis,“Say Hello to Stanley.”

    [6]Thrun et al.,“Stanley.”

    寻找道路的边缘

    斯坦利现在可以安全地沿着道路行驶了吗?不完全可以。这个分类器会

    告诉斯坦利,在它的视野范围内哪些路面是可以行驶的,但是分类器没有提

    供其他任何关于道路的信息,也没有强迫斯坦利保持在道路上行驶。使用上

    面的分类器,只要越野路也算是可以行驶的,斯坦利就会心甘情愿地离开正

    常道路。

    不过,这或许还说得过去。毕竟,从技术上讲,比赛并不要求斯坦利保

    持在道路上行驶,只要分类器说地形可以行驶,那么从原则上讲,驶过这里

    就是安全的,对吧?但斯坦福车队认识到,离开道路可能会有危险。正如他

    们在赛后总结中所写的那样:“障碍物(例如岩石、灌木丛和围栏桩)最常出

    现在道路两边。只要沿着道路中间行驶,斯坦利无须检测到沙漠道路上的大

    多数障碍物就可以避开它们!”[1]

    他们列出的一些条目正是红色车队的悍马撞

    上过的,这可能并非偶然。然而,他们的观点是明确的。所以他们为斯坦利

    的视觉系统开发了另一个算法,这个算法可以帮助斯坦利找到道路的边缘。

    斯坦福车队认为,道路的边缘通常应该与他们事先规划好的道路平行。

    因此,他们为斯坦利另外安装了激光扫描仪,激光扫描仪沿着与规划路径平

    行的直线扫描汽车附近的路面,寻找道路的边缘,如图3.3 所示。

    图 3.3

    然后,这个道路边缘探测模块会试探性地检测被激光扫描到的直线上是

    否有障碍物。在没有检测到障碍物的情况下,两边最靠外的直线会被认为是

    它“观测”到的道路边缘位置。所以当斯坦利前进的时候,这个模块会收集许

    多这样的观测结果。在原始的形式下,这些结果看起来就像是汽车两侧的一

    系列散点。但是,一旦它们通过另一个卡尔曼滤波器,斯坦利就能对道路的

    边缘进行准确的估算。[2]

    只要斯坦利估算出了道路的边缘,它就可以对道路

    的中央位置进行持续的估算。然后,斯坦利的路径规划算法(我们稍后会看

    到)会做出判断,如果道路上没有其他障碍,它就会让斯坦利沿着道路中央

    行驶。(机器人比赛时,其路线会禁止外部交通,所以没有迎面而来的车

    辆。)

    [1]Thrun et al.,“Stanley”;Davis,“Say Hello to Stanley.”

    [2]Thrun et al.,“Stanley”;Davis,“Say Hello to Stanley.”

    开眼看路

    斯坦利的视觉系统仍然存在问题。即使这些模块可以让斯坦利保持在道

    路上行驶,它的激光扫描仪也只能“看到”前方约30 米的路况。对斯坦利而言,这还不足以让它安全地以每小时 25 英里以上的速度行驶,因为沙漠道路常

    有急转弯,就像第一次比赛中让悍马抛锚的那个急转弯一样。[1]

    塞巴斯蒂安

    和他的团队计算出,每小时 25 英里的速度对他们而言太慢了,所以他们要

    寻找另一种方法,让斯坦利可以“看到”激光扫描仪检测范围以外的路况。

    他们的解决方案是在斯坦利的前部安装彩色摄像机。摄像机可以“看到”

    比激光扫描仪更远的距离,所以如果斯坦利能确定道路延伸到了前面很远的

    距离,那么它就会认为道路可以安全行驶,这样它就可以把车速从每小时 25

    英里提高到每小时45 英里。[2]

    当我们人类看到一条道路的照片时,一眼就能清楚地看出照片的哪一部

    分是道路,哪一部分是道路的边缘,哪一部分是天空。对计算机程序而言,这些细节一开始并不明显。同样,斯坦利需要一步步地从摄像机的图像中找

    到道路。为了做到这一点,斯坦利采用了机器学习中一种被称为聚类

    (clustering)的技术,把具有相似颜色的像素组织在一起。这样它才可以更

    好地判断一个像素是属于道路的一部分,还是属于道路边缘的一部分。

    为了理解斯坦利是如何做到这一点的,请想象你是一个刚洗了一大堆袜

    子的吸血鬼。因为吸血鬼最喜欢的颜色是红色和黑灰色,所以你的袜子是各

    种深浅不一的红袜子和有各种灰度的袜子。从洗衣店回家后,你开始整理这

    些袜子,将它们摊开放在床上,把同色系的袜子放在一起。一段时间后便会

    出现一堆红袜子和一堆黑灰袜子,它们可能会在深红色和深灰色相交的地方

    重叠。

    但是想象一下,你发现了一只亮绿色的袜子。这只袜子显然不属于两堆

    袜子中的任何一堆,所以你断定它肯定是从洗衣店混进来的,便扔掉了它。

    这正是斯坦利推理摄像机图像像素的方式。它通过查看代表汽车前方路

    面的像素来创建道路像素的聚类。在沙漠中,你可以想象代表这些道路的像

    素可能是灰色和棕色的混合,这会导致斯坦利最终得到一个灰色像素聚类和

    一个棕色像素聚类。[3]

    然后,斯坦利会测试图像中其他像素是否与这两个聚

    类匹配。[4]

    如果与聚类匹配,它们就是道路的一部分,否则,斯坦利就会拒

    绝它们,认为它们不是道路的一部分,就像你扔掉绿袜子一样。一旦斯坦利

    确定出哪些像素属于道路,它就可以用简单的几何方法估算出道路在前方延

    伸了多远。如果道路在斯坦利前方延伸了很长的一段距离,那么它就可以加

    速行驶。斯坦利的这个道路观察模块持续运行,定时重复,不断调整对道路

    颜色的估算。

    斯坦利能确定它选择了正确的像素来建立对道路颜色的估算吗?难道斯

    坦利不可能无意中选择了路边的像素来建立聚类,而没有选择道路上的像素?

    在确定哪些像素是道路时,算法当然可能会出错,就像任何算法都可能出错

    一样,但这个问题在一定程度上被缓解了。一是因为斯坦利还有其他模块,比如检测可行驶地形的模块;二是因为该算法只被用于控制速度,不控制转

    向。即使斯坦利离开道路一段时间,它仍然不会撞车。一旦斯坦利重新上路,它的道路观察模块就可以迅速调整到正确的道路颜色。

    [1]Thrun et al.,“Stanley”;Davis,“Say Hello to Stanley.””Davis,“Say Hello to Stanley.”

    [2]Thrun et al.,“Stanley”;Davis,“Say Hello to Stanley.”

    [3]RGB(红、绿、蓝色彩模式)是任意标度。在许多情况下,研究人员在使用 RGB

    之前将其转换为一组不同的数字,例如亮度、饱和度(即灰度)以及色相。

    [4]这个测试将天空视为例外,他们在预处理步骤中排除了这个例外。

    路径规划

    斯坦利检测道路和障碍物的模块位于图 3.1 所示架构中间的感知层。控

    制斯坦利速度的软件位于架构右边的规划层。右边的规划层不需要看传感器

    的原始数据,它只是利用感知层的信息来做决定。斯坦利规划层中的另一个

    算法是用来规划障碍物周围路径的软件。但在斯坦利能够有意避开障碍物之

    前,它需要有一条完整的路线可循。[书籍分 享V 信 iqiyi114]

    就像红色车队的悍马一样,斯坦利在比赛开始时就预先规划了全程路线。

    斯坦利的路线不像红色车队那样包含地形的外部信息。正如我们将看到的,斯坦福车队的感知算法非常好,足以让斯坦利在行驶过程中发现并避开障碍。

    相反,斯坦利的路线规划算法的主要目标只是提供一条接近赛事组织者给出

    的 GPS 坐标的路线,并且使 GPS 坐标之间用直线连成的路线中的急转弯变

    得平滑。这个算法在比赛开始后只花了斯坦利20 秒的时间。[1]

    一旦斯坦利规划好了这条平滑的路线,它需要做的就是沿着这条路线行

    进,用它的感知算法避开沿途发现的障碍。正如我们先前看到的,斯坦利通

    过寻找在障碍物周围哪些地方可以行驶来定位障碍物,而障碍物是被标记为

    不可行驶的方形单元格。为了绕过这些障碍物,斯坦利不断重新计算从当前

    位置(在给定的时刻无论它在哪里)到预定路线上稍微远一点的目标(比如

    10 秒后的位置)的最佳路径,无论那个目标在哪里。当斯坦利规划这条路径

    时,它只需要找到一种方法,让汽车在不撞上任何物体的情况下从当前位置

    到达目标位置。只要斯坦利能够继续规划并执行这些路径,汽车就会成功地

    沿着路线继续前进,而不会撞上任何物体。

    还记得吗,上一章中悍马的路径搜索算法使用了一个成本函数,这个函

    数表示了悍马在地图上的每个小方格上行驶所需要的时间。斯坦利需要类似

    的成本函数来避开障碍。一个可能的想法是,根据网格中每个单元格到最近

    的障碍物的距离,在单元格设置一些惩罚,斯坦利可以利用成本函数找到一

    条尽可能远离沿途障碍物的路径。事实上,这正是斯坦福车队最初的尝试。

    这个算法可以让斯坦利远离障碍物,但它也使斯坦利为了避开障碍物而毫无

    规则地拐来拐去。研究小组将这个算法称为“喝醉的松鼠”。[2]

    为了解决这个问题,他们对斯坦利进行了编程,让它沿着一条与赛前计

    算出的平滑路线平行的虚拟走廊行驶。他们的目标是让斯坦利尽可能快地沿

    着这条走廊行驶,只在走廊内向左或向右转以避开障碍物。这就好像斯坦利

    在玩一款经典的街机驾驶游戏,游戏中全部的控制就只有加速、刹车以及沿

    着固定的路线向左或向右滑动。在没有障碍物的情况下,斯坦利的程序还让

    它向道路边缘探测器探测到的道路中央移动。为了弄清楚它应该向左还是向

    右移动以及需要移动得多快,也就是说,它是否需要加速或快速转向,斯坦

    利仍然使用了搜索算法,但它只考虑其现在和片刻之后的位置之间的平滑路

    径。它的成本函数惩罚了一些事情,包括远离预先规划的路径行驶、驾车越

    过障碍物以及远离道路中央行驶。然后,路径规划算法会考虑其中的许多路

    径,并选择它找到的最佳路径。当汽车沿着路线高速前进时,这个算法会持

    续运行,每秒大约重复 10 次,这个速度足以让斯坦利发现并避开前方

    15~25 米的物体。[3]

    [1]Thrun,“Stanley.”

    [2]Russell,“DARPA Grand Challenge Winner.”

    [3]Thrun,“Stanley”(note that the distance depended on the speed).

    斯坦利大脑的各个部分如何相互交流

    当斯坦福车队设计斯坦利时,车队需要弄清楚所有这些算法应该如何相

    互通信。他们知道如何将它们连接起来,但这还不够,他们还需要弄清楚这

    些算法在相互交流时所遵循的协议。是否应该有一个集中的“主进程”来指挥

    一切?它应该被组织成某种层次结构吗?车队选择了完全相反的做法:他们

    将这些不同的软件模块组合在一起,让它们并行运行。没有“主进程”来指导

    这些模块该做什么。[1]

    你可以把这些模块想象成杂货店里的工人,他们每个人都有各自的工作。

    杂货店的理货员从停在后门的货车上卸货,然后把这些货物放到正确的货架

    上。收银员为顾客结账,经理定期把现金从收款机转到银行,为杂货店订购

    更多的商品。每个工人都在持续不断地做着自己的工作,而且大部分工作都

    是独立于其他人的。

    因为商品被源源不断地放到货架上,而且收银员总是在收款机旁为顾客

    结账,所以顾客可以很快地进出杂货店。我们可以说杂货店的服务是低延迟

    的。服务的速度很快,因为收银员只有一项工作——为顾客结账,他不负责

    往银行存钱,也不负责理货。

    同理,斯坦利也可以对事件做出快速反应:它的每个模块都可以快速反

    应,尤其是那些需要对环境做出反应的模块,因为每个模块只有一项工作要

    做。斯坦利的模块之所以可以对环境做出快速反应,是因为它们彼此从未进

    行过充分的对话。过多的对话可能导致参与者被锁定在对话中,这样的问题

    被称为死锁(deadlock)。如果两个组件陷入死锁,整个系统可能会突然停

    止,直到一个或多个组件重新启动后才能恢复。

    这并不意味着这些模块之间没有通信。它们始终通过向对方发送单向的、有时间戳的信息进行着通信。这类似于在杂货店设立公告系统,例如,经理

    可以提醒收银员,商店的 1 美元钞票快用完了,建议仅在必要时使用它们。

    如果收银员从不与经理陷入长时间的交谈,那么他就可以更可靠地为顾客服

    务。

    在自动驾驶汽车中,GPS 和加速计估算汽车的位置和方向,用当前的时

    间戳发布这些信息,并继续为余下的比赛获取和发布最新的位置信息,这是

    它们唯一的工作。负责像素聚类和寻路的模块获取了摄像机和激光扫描仪的

    数据,找到道路,然后发布这些信息,以便速度控制器和路径规划器可以方

    便地使用信息。与此同时,寻路模块根据机器人当前的位置和路上的障碍物

    估算出最佳路径,每秒钟重复10 次。总共大约30 个模块都是这样工作的。

    这些模块为斯坦福车队赢得了 200 万美元奖金,并使斯坦利在机器人历

    史上占据了一席之地。这支车队理应获胜,但按照现代自动驾驶汽车的标准,斯坦利仍然非常原始。事实上,完成第二次无人车挑战赛的 5 辆汽车都不能

    在城市街道上行驶。它们无法面对迎面而来的车流,无法寻找停车位、换车

    道以及处理交通堵塞的问题。

    这并不是设计上的缺陷。这些汽车只是为了参加比赛而存在的,比赛并

    不要求它们可以在城市街道上行驶。但是 DARPA 举办的下一届比赛——

    DARPA 城市挑战赛,将会改变这一切。该比赛要求机器人汽车在有车辆迎面

    驶来的城市街道上按照加利福尼亚州的交通法规行驶。这也给了克里斯和他

    在卡内基–梅隆大学的团队(那支打造悍马的车队)再度冲击第一名的机会,只要他们可以制造一辆汽车来完成所有这些事情。

    [1]Thrun,“Stanley”(note that the distance depended on the speed).

    4 在十字路口避让:自动驾驶汽车的大脑

    在这一点上,问题自然而然地出现了:为什么这么多独立设计的架构会

    有如此相似的结构?三个组成部分是充分必要的,还是一个漂亮的数字或一

    个巧合而已?

    埃伦· 加特(Erann Gat)[1]

    [1]Erann Gat,“Three-Layer Architectures,”in Artificial Intelligence and

    MobileRobots:Case Studies of Successful Robot Systems,ed.David Kortenkamp,R.Peter

    Bonasso,and Robin Murphy(Cambridge,MA:MIT Press,1998),195–210.

    城市挑战赛

    克里斯· 厄姆森的团队在接下来的两年里一直在为城市挑战赛做准备。这

    时,克里斯已经成为卡内基–梅隆大学的一名教授。他也是卡内基–梅隆大学

    车队的全权负责人,车队现在改名为格子车队(Tartan Racing)。克里斯的

    团队不仅做了相当大的调整,还让他们的悍马退役了,转而选择 2007 款雪

    佛兰塔霍汽车,他们将这辆赛车命名为 Boss(意为“老板”)。Boss 融合了他

    们先前设计的优点以及他们从前一年的斯坦福车队学到的很多东西。[1]

    这次挑战赛比前两次要困难得多。在前两次比赛中,所有机器人汽车都

    是单独行驶的,一个接一个地出发并被监控着,因此它们不会互相干扰。但

    城市挑战赛不同。这些自动驾驶汽车将在城市街道、十字路口和停车场与人

    类司机一起围着一座老军事基地行驶,共有大约 50 辆汽车同时在路上。而

    且这里也不允许越野行驶,因为那样汽车会因为违犯加利福尼亚州的交通法

    规而被扣分,甚至被取消比赛资格。[2]

    DARPA 在 2007 年 11 月的比赛之前举行了几轮预选赛。有一轮预选赛

    被称为“夹击”,它要求赛车小心地保持在自己的车道内行驶,同时还要避开

    停放的车辆和其他障碍物。另一轮预选赛测试了赛车的更高层次思维,赛车

    需要在十字路口停下来等待,并在轮到它们通行的时候继续前进,并且它们

    需要判断路径何时会被挡住,并在被挡住的时候找到另一条路径。

    还有一轮预选赛被称为“A 区”,它测试了汽车探测和避开移动物体的能

    力。这一轮预选赛需要自动驾驶汽车绕圈行驶,在迎面而来的车流前左转弯,如图 4.1 所示。自动驾驶汽车需要沿着环路右半部分的黑色箭头行驶,而专

    业人类驾驶员则在外环中绕圈行驶。

    图4.1 DARPA城市挑战赛中的―A区‖。当自动驾驶汽车在右半部分绕圈时,专业的人类

    驾驶员在外环中绕圈。自动驾驶汽车面临的主要挑战是在―停车让行‖标志处与沿外环行驶

    的车辆合流。比赛要求自动驾驶汽车在规定时间内尽可能多地绕圈

    [1]Chris Urmson et al.,“Autonomous Driving in Traffic:Boss and the Urban

    Challenge,”AI Magazine30,no.2(2009).

    [2]Urmson et al.,“Autonomous Driving in Traffic.”

    感知抽象

    为了理解 Boss 在这些环境中的操控方式,让我们更深入地了解一下克

    里斯的团队是如何开发汽车大脑的。就像斯坦利(斯坦福车队在第二次无人

    车挑战赛中的赛车)一样,克里斯及其团队在 Boss 的大脑中指定了一个层,用于综合来自 18 个传感器的数据。他们将这个中间层称为“感知和环境建模

    层”(如图 4.2 所示)。与斯坦利的感知层一样,Boss 的感知层也没有任何

    复杂的推理,它的唯一目的是解释来自各个传感器(包括激光扫描仪、雷达、摄像机、GPS 和加速度计等)的数据,并根据这些数据生成更高层次的环境

    模型。然后,该层生成的环境模型将被在更高层次上进行推理的模块用于执

    行更复杂的任务。[1]

    感知和环境建模层执行了我们在先前的比赛中看到的一些任务:估算道

    路边缘的位置、发现障碍物、根据 GPS 数据和加速度计跟踪汽车的位置。但

    是对于在城市环境中行驶,感知和环境建模层需要做更多工作。随着其他汽

    车来来往往,Boss 所处的环境可能会发生变化。因此,这一层要用地图上的

    网格表示树木和建筑物这些静态物体,当传感器检测到物体存在时就填充单

    元格,如果不存在就清空单元格。它还要理解 DARPA 提供的地图以及任务

    的说明,然后根据检测到的地图上路径的堵塞情况调整地图。[2]

    图4.2 Boss的简化版架构。硬件层、感知和环境建模层、规划和推理层,按照从左到右推

    理抽象层次不断提高的顺序组织起来。其最高层次的规划和推理层由三个模块组成:审议

    器(路线规划器模块)、定序器(大富翁棋盘模块)和控制器(运动规划器模块)。运动

    规划器可能会和大富翁棋盘放在一起

    Boss 的感知和环境建模层还需要检测和模拟移动物体的物理特性。检测

    移动物体的模块要遵守一个规则:它的传感器所做的每一次观察都应该与它

    的物体数据库中的一个固定的或移动的物体相关联。Boss 会为这种关联计算

    一个质量测评。如果测评结果和物体之间匹配良好,那么这个测评结果就会

    被整合到 Boss 对那个物体的建模中,这样,在 Boss 看来,物体就会改变一

    点点。但是如果 Boss 无法在测评结果和现有物体之间找到高质量的匹配,那么模块就会提出一个新的物体来解释这个测评结果。有时,它会判定有一

    个静态物体,然后将其转换为移动物体。例如,如果 Boss 遇到一辆停在停

    车位但随后开始移动的汽车,就会发生这种情况。

    一旦 Boss 探测到一个移动物体,它就可以使用传统的跟踪算法来跟踪

    这个物体。Boss 又一次使用了卡尔曼滤波器来跟踪移动物体。[3]

    它还假设物

    体或是像自行车一样移动(可以向前或向后移动,并且有目标),或是像漂

    移点一样移动(可以向任意方向移动,但没有目标),Boss 根据最适合数据

    的模型做出决定。然后,关于这些模型的假设被直接集成到卡尔曼滤波器中。

    卡尔曼滤波器非常通用,它们不仅可以跟踪物体的位置,还可以跟踪物体的

    速度和加速度。

    Boss 将这些物体想象成在它的虚拟环境中移动的矩形和其他多边形。[4]

    当然,Boss 并没有把它们视作场景的一部分,而是把它们视作网格上的坐标。

    对 Boss 而言,每个矩形间都应有足够的间隔,无论 Boss 是在车道上跟随矩

    形还是从对面车道朝着矩形前进。

    [1]Urmson et al.,“Autonomous Driving in Traffic.”

    [2]路线图是 DARPA 在比赛前两天提供的,任务说明是在比赛当天提供的。

    DARPA,“Urban Challenge Results,”accessed

    October22,2016.http:archive.darpa.milgrandchallenge;Chris Urmson et al.,“Tartan

    Racing:A Multi-modal Approach to the DARPA Urban Challenge,”Technical Report,Carnegie

    Mellon University,2007.

    [3]Urmson et al.,“Tartan Racing.”斯坦福大学的团队使用了一种类似的方法来跟踪物

    体,这种方法被称为“粒子过滤器”(参见下条 Michael Montemerlo et al.,“Junior”)。粒子

    过滤器实现了类似的目标,但所做的假设略有不同。

    [4]Michael Montemerlo et al.,“Junior:The Stanford Entry in the Urban

    Challenge,”Journal of Field Robotics29,no.9(2008):569–597.

    比赛

    经过几个月的测试和期待,城市挑战赛终于来了。在比赛期间,Boss 和

    其他车辆需要完成几个任务,从基地的一个检查站开到另一个检查站,它们

    自始至终都要在满是自动驾驶汽车和人类驾驶汽车的城市街道上行驶。

    DARPA 在比赛前几天向参赛选手提供了场地路线图,并在比赛开始前仅仅 5

    分钟的时候向参赛队伍提供了任务说明。这些任务要求车辆完全自主地在场

    地的街道上行驶、在停车场停车、穿过繁忙的十字路口。[电子书分 享微 信

    getvip365]

    DARPA 官员在赛后写道,他们仔细审查了参赛者的申请,通过预选赛将

    最后参加决赛的车队从 89 支减少到11 支,这意味着行驶在决赛赛道上的赛

    车都经过了仔细的审查。[1]

    但这并不意味着路上的人类驾驶员就安全了,他

    们都是职业驾驶员,都配备了安全护笼、赛车座椅和灭火系统,每辆自动驾

    驶汽车后都有一辆人类驾驶汽车尾随,车上的驾驶员能遥控电子灭火器的开

    关。自动驾驶汽车虽然经过了审查,但仍然很有可能威胁人类驾驶员的生命

    安全。[2]

    幸运的是,比赛当天没有发生重大事故。一辆赛车在停车场发生故障,并险些在 DARPA 官员按下电子灭火器开关之前开进一栋旧楼。另外两辆自

    动驾驶汽车之间发生了低速碰撞。到中午的时候,几乎半数赛车退出了比赛。

    [3]

    然而,包括 Boss 在内的几辆赛车还是成功完赛了。在三年的时间里,自动驾驶汽车从无法在沙漠中行驶超过 8 英里变成了可以在路上行驶数小时,成功穿过繁忙的十字路口。除了用感知和环境建模层进行观察外,Boss 和其

    他汽车还需要一种方法来推算它们的环境。在之前的两章中,我们看到的汽

    车全都无法做到这些,那么Boss 是如何做到的呢?

    [1]DARPA,“Urban Challenge Results.”

    [2]DARPA,“Urban Challenge Results.”

    [3]DARPA,“Urban Challenge Results.”

    Boss 的高层次推理层

    硬件的改进是一个因素吗?当然,硬件一直在改进,但是自第一次

    DARPA 无人车挑战赛以来的三年里,自动驾驶汽车的硬件并没有出现超越摩

    尔定律的显著革新。(摩尔定律当时预测,流行处理器的性能大约每 18~24

    个月翻一番。)这个问题的真正答案在于这些汽车软件架构的进步,但这也

    是Boss 在比赛中产生“幻觉”的原因。

    Boss 的大脑核心是三个模块,它们的抽象推理层次逐个降低。你可以在

    图 4.2 的架构最右边的板块中看到这一点。这个板块的顶部是路线规划器模

    块,它搜索 Boss 从当前位置到任务的下一个检查点的低成本路线。这很像

    斯坦利的模块,该模块在第二次无人车挑战赛开始的时候为斯坦利规划了平

    滑的路线。Boss 的路线规划器不是在比赛开始时规划一条单一的路线,而是

    不断地规划路线,一次又一次地重新估算从当前位置到目的地的最佳路线。

    为了估算路线,路线规划器在成本函数中使用了时间和风险的组合,相信感

    知和环境建模层总是向它提供最新的地图。因此,它需要做的就是规划路线,并告诉它下面的模块(即位于图 4.2 最右边的板块中间的模块)接下来需要

    做什么。[1]

    我们将路线规划器下面的抽象层称为大富翁棋盘模块,原因你很快就会

    清楚。[2]

    这一层可以说是最复杂的,因为它需要跟踪 Boss 正在做什么以及接

    下来需要做什么。它是用一种叫“有限状态机”的东西来实现这些的。[3]

    有限

    状态机为计算机程序提供了一种通过限制其需要处理的事情来推算环境的方

    法。它的工作原理很像《大富翁》游戏:你有一枚可以在棋盘上移动的棋子,在任意给定的时间,你的棋子都会在棋盘上精确地处于一个状态(即位置)。

    这个状态决定了你现在可以做什么以及下一步你可以移动到什么地方。如果

    在玩《大富翁》游戏时走到了一处没有人占领的公园,你就可以买下它。如

    果你进了监狱,要出去有三种方法:一是掷出点数一样的骰子,二是支付 50

    美元,三是弄到一张“免罪卡”。游戏的规则以及你的棋子在棋盘上的状态为

    你简化了《大富翁》玩家的世界,这样你就不会被各种可能性淹没。也就是

    说,当你在广场上时,任何不被明确允许做的事情,你都不能去做。如果你

    走到了公园,就无法购买木板路或收取 200 美元,除了购买公园(只要没人

    占领,而且你想要它),你什么都做不了。

    你在大富翁棋盘模块上的当前状态(依然是你的位置)也决定了你下一

    步可以移动几步。这取决于掷骰子的结果,有时你可能会向前移动多达 12

    个格,然后购买一处地产,有时你可能会直接进监狱。但是你不能跳到棋盘

    上的任意位置。

    克里斯及其团队设计 Boss 的时候,为大富翁棋盘模块创造了各种有限

    状态机,每一种分别适用于 Boss 可能会遇到的环境状态。当 Boss 驱车前行

    时,它的大富翁棋盘模块围绕着它的有限状态机移动一枚虚拟的大富翁棋子,以此记录汽车正在做什么以及需要做什么来实现下一个目标。

    根据 Boss 的现况,它的大富翁棋盘模块分别使用三个有限状态机(一

    个负责沿着道路行驶,比如监控是否需要换车道;一个负责十字路口;还有

    一个负责操控 Boss 进入某个特定的位置,例如停车位或拥挤的十字路口的

    另一侧)中的一个。这些有限状态机中的每一个都概述了模块为实现其目标

    应该遵循的一组简单规则。无论在哪里,Boss 的大富翁棋盘模块都会用它在

    棋盘上的虚拟棋子来追踪环境和它的目标。

    图 4.3 展示了简化版的 Boss 用于通过十字路口的有限状态机。[4]

    在这个

    有限状态机中,你可以理解 Boss 穿过十字路口的推理过程。当轮到 Boss 进

    入十字路口时,它会等待十字路口清空,并确保安全时间长到足以让它通过。

    Boss 通过使用另一个更小的叫“优先权估算器”的有限状态机来实现这一点。

    优先权估算器根据常见的驾驶规则来确定 Boss 是否有进入十字路口的优先

    权。Boss 如何知道这些驾驶规则?程序员只需将它们编码为有限状态机的一

    组状态和转换即可,就像《大富翁》游戏的发明者伊丽莎白· 马吉(Elizabeth

    Magie)最初为《大富翁》的前身《地主游戏》创建规则一样。这不仅是针

    对优先权估算器的,人们会为所有的有限状态机编码规则。

    大富翁棋盘模块执行了大部分你可能会联想到的与驾驶相关的人类推理,但 Boss 并不需要智能就能使用大富翁棋盘模块。人类玩《大富翁》游戏,可能会仔细慎重地计算应该采取哪些行动。但是大富翁棋盘模块实际上并不

    是真的在玩《大富翁》游戏,它没有任何关于成功或胜利的概念,所以它没

    有做出任何关于它应该做什么或下一步该去哪里的慎重的战略决策。它更像

    是《大富翁》游戏的规则手册。在每个状态下,大富翁棋盘模块只是遵循一

    组极其简单的规则,然后根据另一项简单测试的结果转换到下一个状态。

    Boss 确实进行了仔细审慎的规划,但这发生在它的路线规划器,即我们在几

    页前看到的用于搜索路径的模块中。

    图4.3 负责十字路口的有限状态机。大富翁棋盘模块按照上图中从―开始‖到―完成‖的顺序

    逐步执行。有限状态机等待优先权,然后 Boss尝试进入十字路口。如果十字路口有一部

    分被堵塞,Boss就将其视为一个―区域‖驶过,即将其视为停车场一样的复杂区域,而不

    是车道。有限状态机会创建一条通过十字路口的虚拟车道,并让 Boss在这条虚拟车道上

    行驶

    因此,大富翁棋盘模块的职责是,从路线规划器手中接过任务,跟踪任

    务完成进度,然后将行动委托给下一个层次——运动规划器,直到任务完成。

    运动规划器(图 4.2 右下角所示的模块)的职责是为汽车找到并执行一

    条路径,使其从当前位置安全地驶向大富翁棋盘指定的目标位置。例如,大

    富翁棋盘可能会命令运动规划器执行以下操作之一:

    ●规划并执行一条路径,把车停在那边的空地上(给运动规划器指定一

    个位置)。

    ●继续沿着这条车道直行。

    ●切换到左侧车道。

    ●穿过这个十字路口。

    一旦大富翁棋盘给运动规划器下了命令,运动规划器就会找到一条从当

    前位置到目标位置的路径。在这方面,运动规划器有点像路线规划器,只是

    运动规划器的目标是在更短的时间单位上规划运动。路线规划器以分钟和英

    里为单位规划运动,而运动规划器以秒和英尺为单位规划运动:运动规划器

    最大不过在约13 英里的范围内规划运动。[5]

    大富翁棋盘假设运动规划器会设法安全地实现目标,但是运动规划器可

    以告诉大富翁棋盘它失败了,例如,直到它试图停车时才看到停车位被一辆

    摩托车占了,在这种情况下,大富翁棋盘会寻找一个应急计划。[6]

    路线规划器和运动规划器之间的另一个区别是,在搜索路径的时候,路

    线规划器只需要考虑汽车在地图上的位置,而运动规划器需要跟踪汽车的位

    置、速度和方向,同时确保 Boss 不违反任何物理定律。汽车只能朝着车轮

    指向的方向行驶。除非出现问题,否则车轮不会侧向横移,运动规划器需要

    考虑到这一点(机器人专家将此称为汽车的运动学约束)。运动规划器还确

    保汽车不会过快地加速、转弯或停车,即它不应该猛烈地加速或刹车,也不

    应该高速转弯以致翻车。红色车队的悍马在测试期间发生过翻车,这次事故

    在第一次无人车挑战赛开赛前仅仅几周的时候摧毁了它的传感器,价值 25

    万美元的电子产品瞬间支离破碎。[7]

    后来,悍马的传感器再没能复原,这可

    能也对悍马在那次比赛中的表现有一些影响。

    Boss 的运动规划器的寻路算法要比它的路线规划算法复杂一些,因为它

    需要跟踪 Boss 的位置、速度和方向(我们可以把这三者统称为“状态”)。运

    动规划器无法在一个简单的网格中搜索路径,因为仅凭网格它无法跟踪所有

    这些东西。在停车场,运动规划器寻找从当前位置到目标位置的最佳路径的

    方法,是将非常小的路径片段连接成一条路线,每个路径片段确保 Boss 的

    速度和位置遵循物理定律。例如,如果一个路径片段的开头指示,Boss 处于

    当前位置,面朝前方,以每秒 5 英尺的速度前进,没有加速度,那么该路径

    片段的末端信息就需要与开头一致。它必须明确肯定,Boss 位于当前位置前

    方 5 英尺处,面朝前方,以每秒 5 英尺的速度前进。[8]

    我在图 4.4 的 4 张图

    中展示了这个过程的一个例子。这种规划可能需要时间,于是 Boss 使用第

    二个运动规划器同时规划它的后续路径,因而无须在运动中暂停。

    为了上路行驶,Boss 的运动规划器还使用了一种更像斯坦利的转向算法

    的搜索算法。首先,它为汽车生成了一组可能的轨迹。轨迹从汽车当前的位

    置和速度开始,在道路的远处结束,但在横向偏移和弯曲弧度方面有所变化。

    然后运动规划器根据这些路径的平滑度、它们与道路中央的距离以及它们与

    障碍物的距离等因素对这些路径进行评分。[9]

    随后,Boss 持续运行这个运动

    规划器,不断地通过它的当前状态寻找最佳路径。这意味着它会不断地调整

    路径,适当地纠正出现的小误差。

    图 4.4

    [1]Urmson et al.,“Tartan Racing.”

    [2]大富翁棋盘模块的正式名称是“行为执行模块”。

    [3]Urmson et al.,“Tartan Racing.”

    [4]Urmson et al.,“Tartan Racing.”

    [5]Chris Urmson et al.,“Autonomous Driving in Urban Environments:Boss and the

    Urban Challenge,”Journal of Field Robotics25,no.8(2008):425–466.

    [6]Urmson et al.,“Tartan Racing.”。

    [7]Joseph Hooper,“DARPA’s Debacle in the Desert,”Popular

    Science,June3,2004,accessed June16,2017,http:www.popsci.comscitecharticle2004-

    06darpa-grand-challenge-2004darpas-debacle-desert.

    [8]它使用一种叫“格点搜索”的方法来实现这一点。

    [9]Urmson et al.,“Autonomous Driving in Urban Environments.”

    攻克交通堵塞

    图 4.2 右侧板块中的三个高层次推理模块——路线规划器、大富翁棋盘

    以及运动规划器,让 Boss 能够在比赛当天行驶在老军事基地中。然而,当

    Boss 在比赛中开始出现“幻觉”时,到目前为止我所描述的系统都无法拯救它。

    在预选赛中,Boss 已经证明了它是准备最充分的选手之一。但是在城市

    挑战赛中,当在路上疾驰以完成其中一项任务时,它发现前面的车道被另一

    辆车挡住了。Boss 放慢速度,停了下来,等待着。它做了几次前进的尝试,但无法通过:道路完全被挡住了。[1]

    于是Boss 等待着,比赛计时器上的时间

    一秒一秒地过去。

    问题是,交通堵塞并不存在。Boss 面前空空如也,它所认为的车道被挡

    住只是“幻觉”。这并不是 Boss 第一次在比赛当天出现“幻觉”。[2]

    Boss 的“幻觉”是由它的感知算法中的一个问题引起的。如果它看到前面

    有一辆车,随后那辆车开走了,此时它并不总是清楚它对那辆车位置的估算

    是否正确,所以它偶尔会认为那里还有东西。改进感知算法可以避免这种“幻

    觉”,克里斯和他的团队在构建复杂软件方面经验丰富,他们知道所有软件都

    存在缺陷。幸运的是,他们有先见之明,让 Boss 能应对这样的问题。

    Boss 遇到的问题与悍马在第一次无人车挑战赛遇到的问题类似,当时悍

    马被困在了一块岩石后面。克里斯的团队在第二次无人车挑战赛中解决了这

    个问题,他们为悍马编写程序,让它在被困住时后退 10 米,清除它对障碍

    的估算,然后再试一次。但这只是应急之策,一种脆弱的解决方案,一种权

    宜之计,并不是很有效,而且在拥挤的十字路口可能根本行不通。克里斯的

    团队需要一个能够弥补缺陷或处理意外情况的系统,一个永不放弃的系统。

    通过在大富翁棋盘模块增加一个更通用的错误恢复系统,他们在 Boss 中实

    现了这一想法。这个系统有三个关键原则,让人联想到艾萨克· 阿西莫夫

    (Isaac Asimov)的机器人三定律:[3]

    ●在问题得到解决之前,汽车应该愿意承担越来越大的风险,并且不应

    该重复它的复位尝试。

    ●复位行为应适合驾驶环境。例如,Boss 在行车道上的复位行为应该不

    同于在停车场的复位行为。

    ●错误恢复应尽可能简单,以减少引入更多软件缺陷或不良行为的可能

    性。

    作为最后的努力,如果 Boss 在 5 分钟内移动不超过一米,它的错误恢

    复系统就会利用一个叫作“摆动”(wiggle)的算法随机选择一个附近的目标

    位置。这个想法认为 Boss 应该能够自行摆脱它所遇到的一切困境,然后清

    除记忆并再试一次。[4]

    当 Boss 在城市挑战赛中面对想象中被挡住的车道时,它就会开始五级

    错误恢复。第一,它会试图到达一个略微越过交通堵塞处的位置;第二,它

    会试图到达一个越过交通堵塞处稍远些的位置;第三,它会试图到达一个远

    远越过交通堵塞处的位置;第四,它会后退,并试图再次到达一个越过交通

    堵塞处的位置;第五,它会假设前面的路被完全堵住,然后掉头。当它假设

    道路完全被堵住时,它实际上是在感知和环境建模层的路线图中把这条路标

    记为无法通行,从而让路线规划器寻找另一条路。[5]

    在比赛中,Boss 出现了两次“幻觉”,结果那天多开了两英里,对一场耗

    时约 4 小时的比赛来说,这只是小麻烦。虽然遇到了些小麻烦,但 Boss 还

    是领先斯坦福车队的赛车 19 分钟完赛。[6]

    一个冗余的错误恢复系统是 Boss

    的架构中最重要的部分之一,其中更高层次的规划可以解决低层次规划或感

    知方面的问题,这让克里斯和他的团队赢得了期待已久的大奖。

    [1]Urmson et al.,“Autonomous Driving in Traffic.”

    [2]Urmson et al.,“Autonomous Driving in Urban Environments.”

    [3]Urmson et al.,“Autonomous Driving in Urban Environments.”

    [4]Urmson et al.,“Autonomous Driving in Urban Environments.”

    [5]Urmson et al.,“Autonomous Driving in Urban Environments.”20.Urmson et

    al.,“Autonomous Driving in Traffic.”。Marsha Walton,“Robots Fail to Complete Grand

    Challenge,”CNN,May6,2004,accessed

    October22,2016,http:www.cnn.com2004TECHptech0314darpa.race.

    [6]Urmson et al.,“Autonomous Driving in Traffic.”

    三层架构

    是什么让 Boss 和第三章中的斯坦利能够如此出色地工作?正如我们所

    见,这与它们的推理架构有很大关系。Boss 和斯坦利的一个关键设计原则是

    将架构组织成硬件层、感知和环境建模层、规划和推理层,即图 4.2 中从左

    到右的三层。正如我们所见,感知和环境建模层使图 4.2 右侧的规划和推理

    层能够专注于更高级别的任务。规划和推理层没有承担处理低层次传感器数

    据的任务,因为这是感知模块的任务。反过来,感知模块主要是通过机器学

    习模型实现的,这些模型将原始的传感器数据转化为可操作的信息,但它们

    并不关注任何高层次的规划或决策。正如我们在上一章看到的,每个感知模

    块都有一项工作要做,这意味着每个模块都可以快速完成各自的工作。

    但 Boss 还展示了自动驾驶汽车的其他一些更重要的特点,它能够执行

    复杂的行为,比如在城市环境中行驶数英里,把车停到停车位以及与其他正

    在行驶的汽车交互,同时它还能从容地应对意外情况。

    谷歌的母公司 Alphabet(字母表)的一辆自动驾驶汽车在加利福尼亚州

    山景城附近行驶时遇到了一个相当奇怪的情况。克里斯· 厄姆森在 2015 年

    TED(科技、娱乐、设计)大会演讲中描述了这一场景,他指着一段现场视

    频说:

    一位坐在电动轮椅上的妇女在路上追赶一只兜圈子的鸭子。事实证明,在车辆管理局的驾驶手册中,没有任何一处告诉你应该如何处理这种情况。

    但是我们的车辆能够处理这种情况,减速并安全行驶。[1]

    如果所有意外情况都像在街上遇到一位坐在电动轮椅上追赶鸭子的妇女

    那样罕见,那么自动驾驶汽车可能就不会有问题了。但总体来看,这些奇怪

    的意外情况的祸根是,它们经常发生,而且总是有点不同。它们可能是由施

    工区域的标志缺失,雪山路上的链条设施挡住了道路,甚至警察疏导十字路

    口的车流造成的。每一种情况都有自己的独特之处,自动驾驶汽车必须能够

    处理所有这些意外情况。那么,是什么让 Boss 能够处理这些情况的呢?

    我们可以通过研究克里斯团队在设计 Boss 时做出的第二个重要决策来

    回答这个问题:将更高层次的规划和推理层组织成抽象水平不断增强的三个

    层次,如图 4.2 最右边的板块中所示的三个模块。在机器人领域,这种组织

    智能体(agent)的方式有时被称为“三层架构”,它让斯坦利和 Boss 这样的

    自动驾驶汽车能够在实时环境中快速做出反应。需要强调的是,当我提到三

    层架构时,我指的是图 4.2 右侧的三个模块,而不是 Boss 大脑从左到右的

    三层组织。

    三层架构的顶层架构叫作审议器,它执行审议行为,这通常涉及缓慢仔

    细的规划。以 Boss 为例,这个缓慢的、深思熟虑的步骤正是由它的路线规

    划器完成的,这就是 Boss 规划最高层次目标的地方。路线规划器在城市环

    境中寻找路径,或许这就是它最“智能”的行为。制定这些目标是可能的,因

    为路线规划器不需要担心感知(感知模块负责处理),也不需要担心突发的

    意外事件(大富翁棋盘负责处理)。路线规划器只需要规划任务和路径。

    三层架构的底层叫作控制器。而在 Boss 的例子中,控制器就实际上包

    含了它的运动规划器以及转向和速度控制器。[2]

    这一层执行相对低级的操作,比如“停在那边的那个位置”。运动规划器与执行器相关联,执行器直接控制

    方向盘、刹车和油门。这一层还包括我们在第一章中看到的三规则控制器。

    传统上,控制器不会做任何非常智能的事情,它的目的是执行简单的操作并

    对简单的传感器读数做出反应。它对环境的一个典型反应可能是增加发动机

    扭矩或刹车,让汽车的速度达到目标速度。

    在审议器和控制器之间的是定序器。定序器的目标是通过给控制器一系

    列命令,执行来自最高层次的审议器的任务。Boss 的定序器就是它的大富翁

    棋盘模块。定序器不能只给控制器一个固定的命令序列,因为在执行整个序

    列之前,环境的状态可能会改变。如果一个机器人无法对不断变化的环境做

    出反应,那么它会出现什么问题呢?请想象,我设计了一个机器人管家给你

    倒酒。这个机器人可能会从厨房里拿出一瓶酒,来到你身边,伸出机械手拿

    起酒瓶给你倒酒。你可能会帮忙把你的酒杯从桌子上举到机器人面前,让它

    更容易倒。机器人管家却一直计划把酒直接倒进桌子上的酒杯里,于是便忽

    略了你的手势,直接把一杯酒倒在了桌子上。

    这样的机器人管家是不可接受的,更不用说这样的自动驾驶汽车了。实

    时人工智能系统需要对环境的变化做出反应。对 Boss 而言,有限状态机是

    用来跟踪控制器成功完成了哪些操作以及接下来应该尝试哪些操作的。如果

    在控制器执行其任务之前环境发生了变化,那么定序器就可以提出应急计划

    并向控制器发送更新的指令。

    埃伦· 加特是加州理工大学喷气推进实验室的一名研究员,他和其他几个

    研究团队在设计机器人时,同时发现了这种三层架构——审议器、定序器和

    控制器。基于他们的共同研究,他总结了定序器的作用:

    定序器的基本设计原则是一个叫―认知失效‖的概念。认知失效是系统可

    以以某种方式检测到的失效。我们并不是在设计永远不失效的算法,而是使

    用(几乎)永远都能成功检测出失效的算法。[3]

    为什么要费心设计有时会失效的算法,而不是设计永不失效的算法呢?

    首先,设计会出现认知失效的导航算法,要比设计永不失效的导航算法

    容易得多。其次,如果检测到失效,算法就可以采取纠正措施,从失效中恢

    复。因此,如果算法的失效属于认知失效,那么高失效率的算法就可以组合

    成一个整体失效率很低的算法。[4]

    三层架构现在看起来似乎很明显,但起初它并不那么显而易见。为了理

    解其中的原因,我们有必要了解一下三层架构之前的一些版本。正如埃伦· 加

    特回忆的那样,这样的架构之一是感知—计划—动作架构(Sense-Plan-Act,SPA),它在 1985 年之前一直被广泛应用于机器人中。[5]

    这种架构名副其实,机器人感知周围的环境,计划下一步,并执行这一步。信息在一个方向上流

    动,从传感器到规划器再到控制器。当然,这种架构的缺点在于它没有反馈。

    如果你的机器人管家采用的是感知—计划—动作架构,那么我建议你只让它

    给你倒清水。

    埃伦·加特发现,感知—计划—动作架构之后是各类包容式架构

    (subsumption architecture)。它们看起来像是感知—计划—动作架构,信

    息从传感器流向规划器再到控制器,但它们的不同之处在于,其模块可以通

    过“覆盖”较低层次的动作对环境做出反应。采用包容式架构设计的机器人可

    以在实验室里快速穿梭,比采用感知—计划—动作架构的前辈们更令人啧啧

    称奇,但机器人专家发现它们的架构变得非常复杂。层次之间的连接变得混

    乱,模块之间以不可预知的方式交互,对底层的小改动可能需要重新设计整

    个系统才能实现。这些系统的设计变成一团乱麻。另一方面,三层架构既让

    机器人能够快速做出反应,又在架构的不同部分之间提供了清晰的分离,因

    此我们仍然可以理解它。[6]

    作为控制器的一部分,Boss 的运动规划器相当复杂,它本身几乎就拥有

    一个三层架构,但没有定序器。这种复杂性还暗示了另一种可能性:如果我

    们嵌套三层架构,让其中一个充当另一个的控制器呢?我们甚至可以想象,有一天城市会使用人工智能来改善交通拥堵。在规划的最高层,一些模块可

    能会搜索最优的交通流量,在控制器中告诉每辆自动驾驶汽车它不能走的路

    线,以减少高峰时段的拥堵。城市的定序器可能会对事故和其他突发事件做

    出反应。

    被城市视为控制器的自动驾驶汽车本身可以采用三层架构来实现,根据

    城市的定序器强加的约束以及它们自己的目标,自动驾驶汽车会相应地规划

    各自的任务。

    [1]Chris Urmson,“How aDriverless Car Sees the Road,”TED2015Talk,accessed

    December29,2017,https:www.ted.comtalkschris_urmson_how_a_driverless_car_sees_t

    he_roadtranscript?language=ent-684924.

    [2]运动规划器也可以被认为是定序器的一部分。我选择将它与控制器放在一起,并

    将运动规划器解释为一种复杂的控制器,它本身几乎就是一个三层架构。

    [3]Erann Gat,“Integrating Planning and Reacting in aHeterogeneous Asynchronous

    Architecture for Controlling Real-World Mobile Robots,”Proceedings of the10th National

    Conference on Artificial Intelligence,June12–16,1992,809–815.

    [4]Erann Gat,“Integrating Planning and Reacting in aHeterogeneous Asynchronous

    Architecture for Controlling Real-World Mobile Robots,”Proceedings of the10th National

    Conference on Artificial Intelligence,June12–16,1992,809–815.

    [5]Gat,“Three-Layer Architectures.”

    [6]Gat,“Three-Layer Architectures.”

    自动驾驶汽车看到的物体

    机器学习在自动驾驶汽车中的作用已经颇受瞩目,以致许多人将执行感

    知的算法与执行高级规划的算法混淆在了一起。这在一定程度上可能是因为

    Alphabet 公司的自动驾驶汽车已经上路行驶,并在新闻报道机器学习的其他

    重大突破(许多突破也来自 Alphabet 旗下的公司,比如谷歌)时引起了媒体

    的关注。虽然智能的机器学习算法可以存在于自动驾驶汽车的规划层顶层,但是大部分高级推理层都源于已经在人工智能领域存在了数十年的思想,例

    如搜索算法和有限状态机,它们通常不被认为是机器学习(记住,机器学习

    主要是使用数据教导机器,而人工智能不一定需要数据)。相反,自动驾驶

    汽车中使用的机器学习大部分都位于它们的感知和环境建模层中。

    自动驾驶汽车重要的感知任务之一是对传感器看到的物体进行分类。

    Boss 并没有试图将看到的物体划分为精细的类别,它所在的城市环境是人造

    的,因此环境中唯一的移动物体是汽车。而在野外,自动驾驶汽车会遇到许

    多不同类型的物体,因此它必须将这些物体分为不同的类别,才能做出适当

    的反应。通过了解物体是汽车、自行车、行人,还是坐在电动轮椅上追赶鸭

    子的妇女,汽车可以更好地对其进行建模并预测路径。

    自动驾驶汽车如何对它的传感器看到的物体进行分类?有一类机器视觉

    算法在 2012 年前后出现了显著的进步。这类算法来自一个叫深度学习的领

    域,它可以使计算机像人类一样精确地对照片内容进行分类。在接下来的几

    年里,这些算法迅速发展,最终,英伟达等公司开发出了用于自动驾驶汽车

    视觉系统的定制硬件。在本书后面的章节,我们将更深入地研究这些算法的

    工作原理。

    自动驾驶汽车:复杂的系统

    对建造一辆自动驾驶汽车而言,还有很多我们未涉及的主题。下面就让

    我们简要了解一下其中的一小部分。

    在众多事项中,开发团队必须为自动驾驶汽车编写大量的软件。编写这

    种软件需要大量的人力投入。以往获奖团队的规模都很大,有 40~60 人,其中包括研究人员、工程师和大学生。这种大规模的工作需要仔细管理人们

    和各方之间的合作,以确保贡献者心情愉快且富有成效。但是,即使快乐高

    效的员工也会写出有缺陷的代码。

    正如我们所见,处理软件缺陷的一种方法是使用适当的错误恢复系统。

    无人车挑战赛中的成功团队也投入了大量精力进行此类测试和模拟。《连线》

    杂志的一位记者看到克里斯· 厄姆森展示了一个很像“硅谷特龙山区景观”的可

    视化效果。它详细到足以模拟自动驾驶汽车如何应付道路,甚至能模拟它的

    轮胎震动。[1]

    特别是在后来的几年里,这些团队开发了模拟环境,这让他们

    可以重放过去的驾驶记录,以便改进学习算法,提高处理异常状况的能力。

    [2]

    仅这个主题就足以写一本书,但我们还有其他主题要探讨。

    [1]Douglas McGray,“The Great Robot Race,”Wired,March1,2004,accessed

    October16,2016,https:www.wired.com200403robot-3.

    [2]Urmson et al.,“Autonomous Driving in Urban Environments”;Sebastian Thrun et

    al.,“Stanley:The Robot That Won the DARPA Grand Challenge,”Journal of Field

    Robotics23,no.9(2006):661–692.

    自动驾驶汽车的轨迹

    20 世纪 90 年代,自动驾驶汽车在经历了近 10 年的寒冬之后,DARPA

    无人车挑战赛重新点燃了这个领域。虽然自动驾驶汽车在这些比赛中取得了

    进步,但由于技术和法律方面的挑战,这些汽车要在没有人类驾驶员的情况

    下在公共道路上行驶还需要很多年。[1]

    在城市挑战赛举办 10 年之后,处理

    意外情况的能力仍然是这些汽车面临的最大问题之一。截至 2017 年,优步

    (Uber)仍在努力解决这个问题。他们用于实验的自动驾驶汽车始终需要人

    类驾驶员在车内,汽车平均只能行驶 0.8 英里就需要人类驾驶员干预。

    [2]

    Alphabet 公司旗下的自动驾驶汽车公司韦莫(Waymo)的产品在路上行驶

    的里程远远超过优步,它当时每行驶 1000 英里只有 0.2 英里需要人类驾驶

    员干预。[3]

    除此之外,这些汽车背后的团队必须建立并维护高度详细的地图。

    [4]

    在比赛结束后的几年里,DARPA 无人车挑战赛的许多竞争对手最终开始

    合作制造自动驾驶汽车。Alphabet 公司旗下自动驾驶汽车项目的负责人塞巴

    斯蒂安· 特龙最终聘请了克里斯· 厄姆森、自动驾驶摩托车的创造者安德鲁· 莱

    万多夫斯基(Andrew Levandowski)以及该领域的其他佼佼者。克里斯本人

    最终在 2013 年成为 Alphabet 公司自动驾驶汽车项目负责人。[5]

    这个项目或

    许是因为 2004 年 DARPA 精心组织的挑战赛而启动的,到克里斯 2016 年离

    开时,其自动驾驶汽车已经在路上行驶了超过120 万英里。[6]

    [1]Joshua Davis,“Say Hello to

    Stanley,”Wired,January1,2006,accessedOctober30,2016,https:www.wired.com200601

    stanley.

    [2]Taylor Hatmaker,“Leaked Internal Uber Documents Show Rocky SelfDriving Car

    Progress,”TechCrunch,March17,2017.

    [3]Johana Bhuiyan,“Self-Driving Cars Are Mostly Getting Better at Navigating

    California’s Public Roads,”Recode,February2,2017.

    [4]Timothy B.Lee,“Why Google and Car Companies Are About to Spend Billions

    Mapping American Roads,”Vox,September29,2008.

    [5]Heather Kelly,“Google Loses Lead Self-Driving Car Engineer Chris

    Urmson,”CNN,August5,2016.

    [6]Chris Urmson,The View from the Front Seat of the Google Self-Driving Car:A New

    Chapter,”August5,2016,accessed June16,2017,https:medium.com@chris_urmsonthe-

    view-from-the-front-seat-of-the-google-self-drivingcar-a-new-chapter-

    7060e89cb65f.9kwb5jsdr.

    5 网飞和推荐引擎的挑战

    那些研究如何预测建模的人们会关注网飞奖(Netflix Prize)很多年。

    克里斯· 沃林斯基(Chris Volinsky)

    ATT(美国电话电报公司)实验室资深科学家

    ―贝尔科‖(BellKor)团队成员[1]

    [1]Steve Lohr,“Netflix Competitors Learn the Power of Teamwork,”New York

    Times,July27,2009.

    百万美元大奖

    2006 年,当机器人团队正忙于为来年的 DARPA 城市挑战赛准备赛车时,网飞向新兴的数据科学界公布了他们自己的大奖。他们希望寻找可以创建电

    影推荐引擎的团队,愿意奖励最优秀的团队 100 万美元奖金。[电子书分 享

    微 信getvip365]

    当网飞发布公告时,他们的流媒体视频业务还不存在,公司的业务是提

    供 DVD(数字通用光盘)租赁服务。[1]

    用户可以向网飞索取 DVD,网飞会把

    DVD 邮寄给他们。但消费者需要放弃一张当前持有的 DVD 才能收到下一张,而且新 DVD 可能需要几天才能收到。糟糕的选择可能会让人错过观影的黄

    金时间,因此用户往往谨慎地提出他们的索取请求。这就是网飞想要电影推

    荐引擎的原因。

    作为服务的一部分,网飞允许他们的用户使用 1 星(最差)到 5 星(最

    佳)的整数等级对电影进行评分。网飞希望利用这些评分帮助用户决定他们

    应该租哪部电影。宣布比赛后,网飞向研究团体公布了一个数据集,其中包

    含了他们在 1998—2005 年搜集的 1 亿个星级评分。[2]

    第一个创造出比网飞

    自己的算法推荐效率高 10%的算法团队将获得大奖。[3]

    这个数据集对全职的和业余的数据科学家而言是天赐之物,他们兴致勃

    勃地着手解决这个问题。[4]

    在第一周中,一些团队就以 1%的优势击败了网

    飞自己的推荐引擎。[5]

    在第一年内,有 20000 支队伍报名参赛,其中有约

    2000 支队伍提交了参赛作品。[6]

    [1]在网飞宣布网飞奖一年后,公司的流媒体服务启动了,这改变了他们对奖项的计

    划。

    [2]为了保护用户的身份,这些评分是匿名的,但是这在后来的比赛中引起了争议。

    请见Andreas T?scher,Michael Jahrer,and Robert M.Bell,“The BigChaos Solution to the

    Netflix Grand Prize,”Technical Report,Commendo ResearchConsulting(for T?scher and

    Jahrer)and ATT Labs(for Bell),2009,accessed

    December10,2017,https:www.netflixprize.comassetsGrandPrize2009_BPC_BigChaos.p

    df.

    [3]官方称,规则规定,一旦某个团队把网飞算法的推荐效率提高了 10%,网飞就会

    发出“最后通牒”。在“最后通牒”发出后的 30 天内提交的最佳作品将赢得奖项,如果出现

    平局则按照提交日期的先后排名。

    [4]当时,“数据科学家”一词还没有被广泛使用。参赛者来自各个领域(其中一个领

    域是协同过滤推荐系统)。

    [5]Mung Chiang and Christopher Brinton,“Movie Recommendation on Netflix”(lecture

    from Networks Illustrated:Principles without Calculus),Coursera,Princeton

    University,accessed March2,2017,https:www.coursera.orglearnnetworks-

    illustratedlectureMx4zenetflix-prize-the-competition.

    [6]James Bennett and Stan Lanning,“The Netflix Prize,”Proceedings of the KDD Cup

    and Workshop,San Jose,CA,August12,2007.

    竞争者

    网飞奖的竞争者良莠不齐,但一个三人小组在排行榜上保持着强势地位。

    这个团队就是“贝尔科”,它由 ATT 实验室的三位研究科学家(其中一位在

    竞赛过程中跳槽到了雅虎)组成,他们在网络和推荐系统领域的专业知识使

    他们具备了研究这个项目的优秀技能。[1]

    另一个团队“ML@UToronto”由来自

    多伦多大学的一群著名的神经网络研究人员组成。[2]

    成员包括一位被广泛认

    为是神经网络之父的杰弗里· 辛顿(Geoffrey Hinton)。

    并非所有参赛者都拥有博士学位。其中一个看似实力较弱的团队中只有

    三名本科生,他们是来自普林斯顿大学的两名计算机科学专业的学生和他们

    的一名数学专业的室友。这两名计算机科学专业的学生很快就开始攻读顶尖

    的博士课程,学习机器学习领域的知识,虽然其中一名学生将会留在普林斯

    顿大学心理学系工作一年。那名数学专业的学生当时正准备去摩根大通从事

    利率衍生品交易工作。这个超出预期的青年三人组以他们的数据集中列出的

    第一部电影《恐龙星球》命名他们的团队。[3]

    从精神上讲,他们和几名匈牙

    利研究生很类似,后者把他们的团队命名为“地心引力”。

    比赛中甚至还有一些资历更浅的选手。最终,一个名为“实用主义理论”

    的二人团队出现了。这个法裔加拿大二人组一直用业余时间做这个项目。其

    中一人在他家的厨房里工作,从晚上 9 点一直到午夜,那时他的孩子们都在

    睡觉。由于在协同过滤领域没有任何经验,他们都很谦虚,自称是“两个毫无

    头绪的家伙”。

    参赛选手的人数还在增加,成千上万,其中包括来自看似完全不同领域

    (比如心理学)的人。虽然这些团队在相互竞争,但他们会发现自己在竞争

    中相互合作。事实上,正如我们将看到的,一个不愿意向其他团队学习并与

    之合作的团队想在竞争中取得成功几乎是不可能的。在接下来的两章中,我

    们将追踪其中几个团队的百万美元奖金探索之旅。

    [1]贝尔科(BellKor)这个名字是他们二人的名字贝尔(Bell)和科伦(Koren)的组

    合;也是对公司名 BellCore(Bell Communications Research)玩的一个文字游戏。

    Yehuda Koren and Robert Bell,“Advances in Collaborative Filtering,”in Recommender

    Systems Handbook,ed.F.Ricci,L.Rokach,B.Shapira,and P.B.Kantor(New York:Springer

    US,2011),145–186.

    [2]B.T.,“Underdogs in1Million Challenge,”Princeton Alumni Weekly

    Archives,January23,2008,accessed

    April8,2017,http:www.princeton.edu~pawarchive_newPAW07-0807-

    0123notebook.htmlNotebook10.

    [3]B.T.,“Underdogs”;Lester Mackey,Dinosaur Planet—Netflix Prize

    Team,2007,accessed

    April8,2017,https:web.stanford.edu~lmackeydinosaurplanet.html.

    如何训练分类器

    你可能想知道为什么我在这本书里加入有关电影推荐的章节。电影推荐

    引擎真的是人工智能的重大突破吗?

    试想,如果沃康松的长笛演奏者可以只根据观众喜欢的内容,准确地向

    他们推荐他们喜欢的书籍和歌曲,那它会有多么受欢迎?公众同样会啧啧称

    奇。实际上,推荐引擎是一种算法,旨在捕捉人们的偏好,正是偏好让我们

    成为人类。正如我们将在本章中看到的,推荐引擎可以很好地模拟人类的偏

    好,甚至可以在立法投票这一最重要的工作中与立法者抗争。如果有人说,推荐引擎对我们经济的影响已经远远超过了自动驾驶汽车和国际象棋程序,这肯定不是虚言,因为它们正在为在线商务提供动力。

    我把网飞奖写入这本书还有一个更重要的原因。比赛中发生的一些事情,包括选手们如何解决这些问题以及使用了什么工具,将直接影响我们如何看

    待这本书中的其他突破。正如我们将要看到的,这场比赛中涌现的诸多想法

    几乎触及我们稍后将看到的每一个主题。

    本着这一思路,让我们回顾一下前几章讨论过的斯坦福大学的自动驾驶

    汽车斯坦利的一个构件。斯坦利在很大程度上依赖于机器学习,机器学习使

    它能够在路上行驶,并能够感知周围的环境。正如我们所见,塞巴斯蒂安· 特

    龙和他的团队驾驶着斯坦利四处转悠,同时它的传 ......

您现在查看是摘要介绍页, 详见PDF附件(7948KB,547页)