一篇读懂自动驾驶汽车决策层算法的新思路
Posted 机器学习算法与Python实战
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一篇读懂自动驾驶汽车决策层算法的新思路相关的知识,希望对你有一定的参考价值。
如果说过去是算法根据芯片进行优化设计的时代,那么英特尔对 Mobileye 的收购,预示着一个新时代的到来:算法和芯片协同进化的时代。今天我们着重了解下智能驾驶发展驱动下,「算法」这一细分技术领域都有哪些创新和进步。
决策算法成为竞争焦点
从技术角度讲,自动驾驶分为感知定位、规划决策、执行控制三个部分。随着 ADAS 系统的广泛部署和以及长时间的技术开发,可以说感知技术已经不是主要瓶颈;控制则是主机厂和 Tier1 非常擅长的领域,自不必多说,显然自动驾驶技术实现的真正门槛就落在了决策层上。
事实是,要区分一套系统是 ADAS 还是自动驾驶,主要是看该系统是否有决策部分。而无论谷歌还是特斯拉,它们的核心竞争力基本体现在决策算法方面。
传统车企的研发是基于功能安全的设计方法学建立的,渗透到开发流程的每一个环节,在过去的一个世纪,将汽车的安全性提高到了极高的水准。如今,顶尖的公司已经可以确保汽车发动机能使用一百万公里。尽管如此,面对汹涌而至的机器学习热潮,主机厂突然发现自己严重缺乏技术储备,这已经成为制约传统车厂开发自动驾驶的最大短板。因此,很多 OEM 选择或收购或合作的方式,试图尽快补足自身的缺陷。
传统车厂出身的 John Krafcik 显然深知这一点。在他出任 Waymo CEO 之后,谷歌一改之前模棱两可的商业策略,明确表示要向车厂提供解决方案,这其实是将自己定位成 Tier 1 的角色。在该解决方案中,外购的硬件无法成为谷歌的竞争壁垒,最有价值的,还是一整套经过验证的软件,尤其是其中的决策算法。可以想象的是,谷歌将会向业界提供软件授权,就像它之前在安卓系统上所做的一样。
如何解决智能汽车的路径规划问题
路径规划是智能汽车导航和控制的基础,是从轨迹决策的角度考虑的,可分为局部路径规划和全局路径规划。
全局路径规划的任务是根据全局地图数据库信息规划出自起始点至目标点的一条无碰撞、可通过的路径。目前正在研究的有准结构化道路环境多种约束条件下的路径规划技术,自然地形环境下的路径规划技术,以及重规划技术等。由于全局路径规划所生成的路径只能是从起始点到目标点的粗略路径,并没有考虑路径的方向、宽度、曲率、道路交叉以及路障等细节信息,加之智能车辆在行驶过程中受局部环境和自身状态的不确定性的影响,会遇到各种不可测的情况。因此,在智能车辆的行驶过程中,必须以局部环境信息和自身状态信息为基础,规划出一段无碰撞的理想局部路径,这就是局部路径规划。通常路径规划的方法有 : 空间搜索法、层次法、动作行为法、势场域法、栅格法、模糊逻辑法和神经网络法等。
汽车自动驾驶任务可以分为三层,如下图所示,每层执行不同任务,包括上层路径规划、中层行驶行为规划和下层轨迹规划。车辆路径规划问题中还包括路网模型、路径规划算法和交通信息的智能预测这几个关键点,下文主要针对决策层中路径规划算法做简单探讨。
汽车自动驾驶任务执行示意图
车辆路径规划算法
根据车辆导航系统的研究历程 , 车辆路径规划算法可分为静态路径规划算法和动态路径算法。静态路径规划是以物理地理信息和交通规则等条件为约束来寻求最短路径,静态路径规划算法已日趋成熟 , 相对比较简单 , 但对于实际的交通状况来说 , 其应用意义不大。动态路径规划是在静态路径规划的基础上 , 结合实时的交通信息对预先规划好的最优行车路线进行适时的调整直至到达目的地最终得到最优路径。下面介绍几种常见的车辆路径规划算法。
1. Dijkstra 算法
Dijkstra(迪杰斯特拉)算法是最短路算法的经典算法之一,由 E.W.Dijkstra 在 1959 年提出的。该算法适于计算道路权值均为非负的最短路径问题,可以给出图中某一节点到其他所有节点的最短路径,以思路清晰,搜索准确见长。相对的,由于输入为大型稀疏矩阵,又具有耗时长,占用空间大的缺点。其算法复杂度为 O ( n ² ) ,n 为节点个数。
2. Lee 算法
Lee 算法最早用于印刷电路和集成电路的路径追踪,与 Dijkstra 算法相比更适合用于数据随时变化的道路路径规划,而且其运行代价要小于 Dijkstra 算法。只要最佳路径存在,该算法就能够找到最佳优化路径。Lee 算法的复杂度很难表示,而且对于多图层的路径规划则需要很大的空间。
3. Floyd 算法
Floyd 算法是由 Floyd 于 1962 年提出的,是一种计算图中任意两点间的最短距离的算法。可以正确处理有向图或负权的最短路径问题,同时也被用于计算有向图的传递闭包,Floyd-Warshall 算法的时间复杂度为 O ( n ³ ) ,空间复杂度为 O ( n ² ) ,n 为节点个数。与对每一节点作一次 Dijkstra 算法的时间复杂度相同,但是实际的运算效果比 Dijkstra 算法要好。
4. 启发式搜索算法—— A* 算法
启发式搜索有很多的算法,如 : 局部择优搜索法、最好优先搜索法、A* 算法等。其中 A* 算法是由 Hart、Nilsson、Raphael 等人首先提出的,算法通过引入估价函数,加快了搜索速度,提高了局部择优算法搜索的精度,从而得到广泛的应用,是当前较为流行的最短路算法。A* 算法所占用的存储空间少于 Dijkstra 算法。其时间复杂度为 O ( bd ) ,b 为节点的平均出度数,d 为从起点到终点的最短路的搜索深度。
5. 双向搜索算法
双向搜索算法由 Dantzig 提出的基本思想,Nicholson 正式提出算法。该算法在从起点开始寻找最短路径的同时也从终点开始向前进行路径搜索,最佳效果是二者在中间点汇合,这样可缩短搜索时间。但是如果终止规则不合适,该算法极有可能使搜索时间增加 1 倍,即两个方向都搜索到最后才终止。
6. 蚁群算法
蚁群算法是由意大利学者 M.Dorigo 等于 1991 年提出的,它是一种随机搜索算法 , 是在对大自然中蚁群集体行为的研究基础上总结归纳出的一种优化算法,具有较强的鲁棒性,而且易于与其他方法相结合,蚁群算法的复杂度要优于 Dijkstra 算法。
此外 , 还有实时启发式搜索算法、基于分层路网的搜索算法、神经网络、遗传算法及模糊理论等,由于实际需求不同对算法的要求和侧重点也会有所不用,所以也出现了许多以上算法的各种改进算法。大多数算法应用于求解车辆路径规划问题时都会存在一定的缺陷,所以目前的研究侧重于利用多种算法融合来构造混合算法。
主流决策算法的利弊相随
从上部分的内容我们不难发现,决策算法面临的最大挑战,就是如何达到自动驾驶所需要的极高的安全性和可靠性。自动驾驶决策的结果会输出到控制器,根据 ISO26262 已有的功能安全的规定,这会反过来要求决策系统也需要达到 ASIL-D 的标准。目前,ISO 组织专门针对自动驾驶的功能安全标准还在制定中,有可能会用一种新的标准进行考量,但功能安全的基本原则依然有效。
由于自动驾驶所要处理的场景极其复杂,必须考虑已知和未知的所有极端情况,以及适应各个国家和地区的交通状况。目前在识别和决策算法部分也有多条技术路线,最主要的是深度学习(Deep Learning)加增强学习(Reinforcement Learning),也就是 AlphaGo 使用的方法。不过这些算法路线并非万金油,各自都有自己明显的优缺点。
△端到端的深度学习算法有隐患
深度学习适合大数据时代,只要大量训练就比较容易调校出可用的算法,因此专门用来处理复杂场景。不过深度学习受到质疑的点在于,它的算法是端到端(输入数据,输出结果)的决策系统,计算过程不能被解释,即没有透明度,无法 debug。
△基于规则的专家系统不灵活
专家系统(Expert System)是基于独立知识库(如地图、交通规则),让条件 IF(输入)产生出相应的动作或结论 THEN(输出)的系统;还可以用 AND、OR、NOT 运算来复合输入、输出。但专家系统的缺点在于:一、采访 " 专家 " 来建模所需时间过长,成本过高;第二,知识库可能有错误,多条规则可能出现矛盾,从而造就脆弱系统。所以,这种方法不能单独用于构建自动驾驶的决策算法。
因此,我们需要在自动驾驶领域引入新的决策机制。自动驾驶决策技术路线的一个重大趋势,就是从相关推理到因果推理。
理性决策是必然趋势
上世纪 80 年代初,Judea Pearl 为代表的学术界出现了一种新的思路:从基于规则的系统转变为贝叶斯网络。贝叶斯网络是一个概率推理系统,贝叶斯网络在数据处理方面,针对事件发生的概率以及事件可信度分析上具有良好的分类效果。它具有两个决定性的优势:模块化和透明性。
图灵奖得主、贝叶斯之父朱迪亚 · 珀尔(Judea Pearl)
模块化的优势非常重要。我们可以把深度学习的系统作为一个子模块融入到其中,专家系统可以是另一个子模块,也融入其中,这意味着我们有了多重的冗余路径选择,这种冗余构成了贝叶斯网络的子节点,将有效强化输出结果的可靠性,避免一些低级错误的发生。
透明性是贝叶斯网络的另一个主要优势。对于自动驾驶而言,这尤为关键,因为你可以对整个决策的过程进行分析,了解出错的哪一个部分。可以说贝叶斯网络是理性决策的极佳实现,适合用于设计整个决策的顶层框架。
因果推理的另一个典型范例就是基于增强学习的决策框架,它把一个决策问题看作是一个决策系统跟它所处环境的一个博弈,这个系统需要连续做决策,就像开车一样。优化的是长期总的收益,而不是眼前收益。这有点像巴菲特的价值投资,优化的目标不是明天的收益,而是明年或者十年以后的长期总收益。
谷歌把这样的框架用在下围棋上,取得了革命性的成功。自动驾驶的场景也非常适合应用这样的决策系统。比如说要构建价值网络,评估当前的驾驶环境风险,评估的是从现在时间到未来时间的整体风险;然后利用策略网络输出本车的控制决策,选择最优的驾驶路径和动力学输出。
同时,我们还可以构建一个基于模拟路况的仿真环境,通过增强学习去做虚拟运行,获得最优的决策模型,并且还将产生大量的模拟数据,这对决策算法的成熟至关重要。可以说,向因果推理型决策模型转化是自动驾驶技术迈向成熟的重大标志。
小结
在训练和测试自动驾驶汽车决策能力的过程中,其实收集到的绝大部分数据都是正常路况下的行车数据,极端情况极其罕见。深度学习加增强学习的算法只能无限趋近于处理所有场景,贝叶斯网络的因果推理逻辑可以在一定程度上处理未知的极端情况。决策层的不同技术路线也各有优缺点,可能包括深度学习、增强学习、专家系统、贝叶斯网络在内的多种方法融合,将是下一步的主流方案。
以上是关于一篇读懂自动驾驶汽车决策层算法的新思路的主要内容,如果未能解决你的问题,请参考以下文章