购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.3 自动驾驶中的人工智能

微课视频09

1.3.1 实现自动驾驶的智能系统

当前实现自动驾驶的主流技术是人工智能,自动驾驶系统是一个典型的智能系统,该智能系统运行自动化程序替代驾驶员的“智力”完成车辆驾驶任务。自动驾驶系统能够观察车辆所处道路及周围车辆、行人等诸多要素构成的复杂环境,决定车辆接下来需要的行动路线,并通过一系列的操作,最终完成将车辆安全行驶到目的地的任务。

自动驾驶系统完全(或部分)替代驾驶员处理车辆的行驶信息,如果将信息处理流程中的信息传输隐含在其他环节中,那么信息采集、信息识别、信息决策和信息输出就可以分别对应自动驾驶系统的四个主要部分,即传感(sense)、感知(perceive)、决策(decide)和执行(actuate)。

这四部分代表着信息处理的主要过程,而从人工智能计算的角度来看,其分别需要完成不同的功能。

(1)传感:该环节是用不同的传感器技术将物理世界的状态信息转换成电子信号,最终转换成计算机可以理解的数字信号。例如,自动驾驶领域最常见的激光雷达传感器可以提取周围物体的距离信息并将其转换为计算机能够处理的点云信息。

(2)感知:该环节是对传感器数据进行理解的过程,它是后续决策的计算依据。感知所解决的问题是:如何将原始的底层数据解读为更高层次的环境信息?例如在自动驾驶场景里,输入给感知模块的往往是激光雷达的点云或摄像头得到的图像信息,感知需要解决的任务是从这些原始数据里提取出车辆周围的道路、其他车辆、障碍物等环境信息。

(3)决策:该环节是基于感知到的高层次环境信息,对车辆后续需要执行的行为做出决策。决策通常包含多个层面的操作,例如预测其他交通参与者(车辆、行人等)的运动轨迹、规划自身的行驶路径和速度等。例如,如果前方是通畅的高速公路,相应决策则是将车辆加速到最高限速并巡航前进;如果前方出现侧向车道的车辆正在进行变道操作,相应决策则可能是适当减速并准备避让。

(4)执行:该环节的作用是将决策最终落实到汽车的执行机构上。对汽车的简化模型而言,执行的过程就是通过方向盘、油门和刹车控制车辆的转向角和加速度,从而实现按规划好的轨迹和速度完成行驶任务,而实际车辆是一个复杂的机电系统,系统要控制的执行机构远不止方向盘和油门,还包括变速箱的挡位、指示灯等所有原本需要由驾驶员控制的装置,甚至还需要接管一部分驾驶员都没有权限控制的底层模块,例如车身稳定系统等。

在实际的自动驾驶系统中,上述四部分的功能都一定存在,但并不一定可以清晰地界定出与实际系统中功能部件的对应关系。不同的系统可能会对功能部件做出不同的划分,例如有些系统在具体实现中把传感器部件独立在处理框架之外,将人工智能的处理框架划分为“感知—决策—执行”三部分。在当前以深度学习为主导的感知技术中,具体功能的划分具有多样性,由于神经网络既具有感知处理能力,也能实现高度复杂的决策逻辑映射,所以在一些自动驾驶系统实现方案中也会将感知和决策的功能进行合并。

事实上,是否将功能进行合并设计,存在两种不同的设计思路:一种是细致地将系统拆分成不同的功能模块,并且分别对每个功能模块进行优化;另一种是“端到端”地解决问题,即从原始的输入端经过一个“黑盒子”系统直接形成最终的输出。采用功能模块拆分思路的优点是可以分别单独优化每个模块,并且在功能实现时让不同的研发团队负责不同的模块,但如果拆分不合理的话,复杂系统的分块可能反而使得软件在运行效率和研发效率上都降低。采用“端到端”思路的优点是能够直接对最终目标进行优化,可以避免不同模块参数协同调优(调整参数以优化性能)的复杂问题,但代价是几乎无法对模型的中间环节进行独立调整,当系统出现问题时对问题进行定位和解决相对更为困难。在实际系统研发中,一般不会单纯地采用上述任何一种思路进行设计,而是需要恰当地取舍,找到平衡点,进行综合考虑。对于一些业界普遍采用的功能模块,例如摄像头数据的图像分割这种已经具有业界普遍认可的评估体系和性能参考的模块,就应当作为一个独立功能模块进行设计;而对于一些零散的传感器信息,其输出的中间结果并没有多少实际的参考意义,此时就可以将这些传感器整合为一个更大的功能模块。而本书后续章节所给出的示例程序则直接用一个深度学习模型合并实现了“端到端”的所有功能。

1.3.2 自动驾驶与人工智能

微课视频10

自动驾驶技术属于人工智能技术范畴。近年来,自动驾驶技术的快速发展很大程度上受益于人工智能在计算机视觉等方面的技术突破。人工智能使机器可以从大量数据中学习,在面对新的输入信息时能够像人一样执行多种任务。今天大多数人工智能应用(例如AI围棋选手、自动驾驶汽车)都高度依赖于深度学习技术。使用深度学习技术,可以训练模型通过处理大量数据并识别数据中的模式完成特定任务。人工智能是计算机科学的一个分支,涉及多门学科,目的是构建智能机器使其能够执行通常需要人类智能才能执行的任务。在过去的二十多年中,科学家已经做了大量人工智能方面的研究并取得了很多成就,但是直到最近人们才深刻意识到人工智能的发展发生了巨大的转变,这些转变源自时代所展现出的以下新特征。

(1)大数据:随着进入后信息化时代,越来越多的信息被转换为数据,这使得人工智能的发展有了算法所需要的海量数据,从海量数据中提取知识,并且这些知识能够被计算机理解和深度处理。

(2)技术进步:不断提高的计算能力与存储能力、先进的算法、更快速的数据传输和更低的技术成本等因素使深度学习有能力充分“消化”掉海量的数据。

(3)商业模式:人工智能技术在垂直行业和应用领域中的深度探索,及其在很多应用场景中的规模部署,使得商业服务效率不断得到提升,头部企业逐步形成核心竞争力并建立技术壁垒,在获取超额利润的同时不断加大人工智能技术的研发投入。

自动驾驶正是这个巨大转变的获益者之一。当前实现自动驾驶系统中人工智能的主流路径是:通过机器学习(machine learning,ML)模仿驾驶员的感官形成对环境的认知,参照驾驶员的大脑思考方式形成控制车辆行驶的决策。机器学习被视为人工智能的一部分,机器学习算法用样本数据(训练数据)训练模型,将模型用于预测或决策。机器学习算法按大类通常可以分为以下三类(这里仅做简要的介绍,供读者进行初步了解)。

(1)监督学习(supervised learning):该算法基于有标签的样本数据对模型进行训练,即在输入样本数据时告知训练模型其对应的期望输出,通过大量训练完成函数(模型)的学习。该函数能将输入空间(特征空间)映射到输出空间(标签空间),学习算法根据训练样本持续迭代映射函数的参数(模型参数),直到达到设定的置信水平(最小化出错概率)。监督学习主要分为回归(regression)与分类(classification)两种算法。

(2)无监督学习(unsupervised learning):与监督学习不同,样本数据没有为算法提供标签,仅靠算法来查找输入中的结构。无监督学习本身可以是目标(发现数据中的隐藏模式),也可以是监督学习的预处理步骤(特征学习)。无监督学习可分为关联规则学习(rule learning)和聚类(clustering)两种。

(3)强化学习(reinforcement learning):强化学习是一边获得样例一边进行学习,在获得样例后更新自身模型,再利用当前模型指导下一步的行动,下一步的行动则是继续获得反馈再依据反馈结果更新模型,这个学习过程不断迭代重复,直到模型收敛。

近年来,机器学习中的深度学习逐步兴起,深度学习算法模型有很强大的表示能力和函数拟合能力,应用于自动驾驶的早期深度学习算法属于典型的监督学习。利用深度学习实现自动驾驶的信息识别和决策,从融合了所有传感器信息的数据中以驾驶员的操作行为作为标签学习出有效的函数(模型)映射,借此替代驾驶员的部分功能,这是目前解决自动驾驶技术问题的一种非常可行的方案。例如利用深度学习理解驾驶的场景,即利用深度学习的算法模型对车载摄像头中的图像进行障碍物检测(object detection)和分类等,检测和分类算法可以使用大量被标注了实体的图像作为深度学习的训练数据,经过训练的模型可以从新接收到的图像中识别出类似的障碍物。

然而车辆在行驶中所处的交通环境千变万化,自动驾驶的算法模型即使在前期进行了海量数据的训练,在行驶中也很难应对所有的情况。为解决这个问题,研究者提出了一种改进的方法:利用强化学习的思路对算法模型不断做出调整。强化学习的主要特征包括:①没有监督数据,只有反馈(reward)信号;②反馈信号不一定是实时的,很可能是延后的,有时甚至是延后很长时间的;③时间(序列)很重要;④智能体当前的行为会影响后续接收到的数据。为应对车辆复杂的行驶环境,自动驾驶的算法模型需要具有自主探索的能力以及自主适应的能力,这些要求恰好符合强化学习的特征。

根据强化学习所应对场景的复杂程度不同,其算法主要分为基于模型的(model-based)算法和无模型的(model-free)算法两大类。如果场景很简单(例如方格游戏、简单迷宫等场景),能够遍历出所有的情况,并同时可以给出明确的反馈以及策略,则此类场景可以进行完整建模。然而大多数真实场景无法满足完整建模所需的理想条件,此时只能使用非完整建模的算法。非完整建模需要使用一些估计方法在新情况出现时提供“估计”的反馈作为结果更新模型。显然,自动驾驶的算法模型所处的应用场景非常复杂,只能使用无模型的强化学习策略。

强化学习中常会遇到计算无法收敛的问题,计算无法收敛会导致学习的失败,无法形成合适的算法模型。为解决这个问题,研究者提出了模仿学习(imitation learning)算法。模仿学习是基于专家给出的示范(demonstration)样例(例如游戏高手先通关几次,把通关的过程记录下来形成示范样例)进行强化学习的一类算法,与强化学习本质上的区别是模仿学习会给训练者一组示范,而传统强化学习则是让训练算法自己去探索,在探索过程中仅需要保证训练向着对的方向前进即可。在模仿学习中,常见的方法有行为克隆(behaviour cloning)和逆强化学习(inverse reinforcement learning,IRL)两种,目前出现的另外一些相关算法也是基于这两种方法的拓展。

以自动驾驶为例,首先需要收集大量的数据作为示范,这些示范数据中包含着驾驶员在不同交通环境中的操作记录,通过机器学习使自动驾驶的算法模型模仿驾驶员的操作逐步形成自身的功能。换言之,是让自动驾驶算法模型克隆驾驶员的行为。如果仅仅克隆训练数据中所包含的交通环境场景及相应驾驶行为,这样的自动驾驶算法模型是有缺陷的,因为该模型并不能很好地应对未知交通环境场景中出现的新问题。在通常情况下,通过增加训练数据的方法,即不断加入新的示范数据,可以较好地改进算法模型,但如果新加入的数据与原有数据的来源比较相似,则改进的效果就十分有限。此时逆强化学习的方法被提出,这种方法不再单纯地对算法模型进行行为克隆,而是期望寻找示范样例的背后原因,让最终训练出的算法模型具备解决未知场景问题的能力。对相关算法本书不再深入展开介绍,有兴趣的读者可另行查阅相关资料。 8f5oEwtaSuZHgYrYmC1qe1LHOWJRO7oV56cOf3bjsJBGYcmTRnZIp4rqAWUFWbRi

点击中间区域
呼出菜单
上一章
目录
下一章
×