路口是自动驾驶系统面临的难点之一。今年5月,来自宾夕法尼亚大学、本田研究所和佐治亚理工学院的研究人员提出了一种使用深度强化学习来帮助自动驾驶汽车通过十字路口的方法。机器之心的技术分析师谷世新对这项研究进行了解读。论文原文可访问:https://arxiv.org/abs/1705.01196对无人驾驶汽车的研究不再局限于识别红绿灯或交通标志的简单过程,而是扩展到了很多生活场景。用于衡量自动驾驶汽车的一个关键指标是它们是否可以在无信号的十字路口行驶。在本文中,作者为我们提供了一种使用深度强化学习的新策略。与目前基于规则的方法相比,该方法可以存储和操纵知识并以有用的方式解释信息,从而在任务完成时间和目标成功率等指标上取得更好的性能。该论文还表明,将深度强化学习与这种新策略结合使用可以获得更好的结果,平均成功率为99.64%,并且成功地进行试验的时间减少到平均5.5秒。该论文还指出,需要做出更多努力来提高鲁棒性。1.介绍即使是人类司机,也有高达20%的交通事故发生在十字路口[1]。这意味着自动驾驶汽车要学会在十字路口导航并不容易。要成功通过十字路口需要三件事:1)了解汽车的动态行为,2)解释其他司机的意图,以及3)以可预测的方式行事,以便其他司机能够做出适当的反应。这需要在许多相互冲突的目标之间找到平衡,包括安全、效率和尽量减少对交通流的干扰。基于规则的处理交集任务的方法主要分为两类:合作方法[2]和启发式方法[3]。由于车对车通信的需要,协作方法不能扩展到一般的路口处理。目前最好的方法是基于碰撞时间(TTC/time-to-collision)的基于规则的方法[4]。TTC具有可靠性等诸多优点,但也有一些局限性。首先是TTC,由于假定车速恒定,TTC模型忽略了几乎所有关于驾驶员意图的信息。其次,人类驾驶员不可预测的行为使得基于规则的算法使用起来非常复杂。最后,在很多情况下,TTC可以过于谨慎地使用,从而引入不必要的延迟。论文中提到,处理交集任务的机器学习方法主要有三种:模仿学习、在线规划和离线学习。论文作者选择了离线学习方式,也解释了为什么模仿学习和在线规划不适合。对于模仿学习,当代理处于从未学习过的状态时,它无法提供解决方案。在线规划模型依赖于现有的准确生成模型。图1显示了通过繁忙十字路口的过程。图1:经过繁忙的十字路口。红色汽车是自动驾驶汽车,黄色汽车是当前的交通状况。目标是确定沿途如何加速。2.方法在本节中,论文的作者将交叉路口处理任务定义为强化学习问题。他们使用深度Q网络(DQN)来学习状态-动作-价值Q函数。该方法可以分为5个部分:强化学习(RL):这部分是对强化学习的介绍,我将用最简单的方法来描述强化学习的过程。在强化学习模型中,处于状态st的代理在时间t根据策略p采取行动,然后代理转换到状态st+1并获得奖励rt。这被形式化为马尔可夫决策过程(MDP),然后使用Q学习来执行优化。Q-learning:本节介绍Q-learning。我建议读者先学习Q-learning,阅读本文会更容易。Q-learning的本质是利用动作价值函数Qp(s,a)的平均值来估计实际值,并随着数据的增加而更新。DynamicFrameSkipping(动态跳帧):DynamicFrameSkipping是选项[5]的简化版本,它允许代理在更长的时间范围内选择动作,这可以提高代理的学习时间。优先经验回放:本文使用经验回放来打破代理连续步骤之间的相关性。经验回放缓冲区(experiencereplaybuffer)保存了之前的痕迹,这意味着出现频率较低的重要序列也会被采样。这将避免计算排序列表,而是可以使用平衡各种轨迹的奖励样本。状态-动作表示:因为自动驾驶汽车使用传感器,这允许大量的状态和动作表示。本文提出了两种表示法。第一种是顺序动作,在这种情况下,智能体获得所需的路径并决定选择加速、减速或保持速度。第二个是Time-to-Go,代理决定何时等待或离开。前者让我们看看更复杂的行为是否更好,后者让我们关注出发时间,这让我们了解出发时间的变化如何影响汽车的性能。3.实验在这一部分中,作者根据各种路口场景训练了两个DQN(SequenceAction和Time-to-Go)。然后,他们将所得性能与启发式碰撞时间(TTC)算法进行了比较。TTC策略使用单一阈值来决定何时通过十字路口,这是本文分析的基准。本文使用相扑模拟器[6]来运行实验。该仿真软件包可以帮助用户模拟不同场景下的各种交通情况。它可以帮助对道路网络、道路标志、交通信号灯、大量汽车进行建模,还可以方便在线交互和车辆控制。如图2所示,有5种不同的路口场景。本文的作者给出了一系列参数来设置场景,还给出了4个指标来评估该方法:成功百分比、碰撞百分比、平均时间和平均制动时间。对于TTC和Time-to-GoDQN,所有状态表示都忽略遮挡并假设所有汽车始终可见。顺序动作网络是一个具有泄漏ReLU激活函数的全连接网络。有3个隐藏层,每个隐藏层有100个节点;最后是一个具有12个输出的线性层,对应于3个动作(加速、减速和保持速度)。Time-to-GoDQN网络使用具有两个卷积层和一个全连接层的卷积神经网络。第一个卷积层有32个6×6的过滤器,步幅为2;第二个卷积层有64个3×3的过滤器,步幅为2;全连接层有100个节点。所有层都使用leakyReLU激活函数。最终的线性输出层有5个输出:4个时间尺度(1、2、4、8个时间步长)的执行动作和等待动作。在这个实验中,经验回放缓冲区存储了100,000个时间步长,并且有两个缓冲区,一个用于碰撞,一个用于成功和超时。对于奖励,论文使用+1表示成功,-10表示碰撞,-0.01表示步骤成本。图2:不同路口场景的可视化4.结果表1:不同算法的对比结果见表1、图3、图4,我们可以看到如下结果:(1)TTC方法在任何情况下都没有碰撞场景。在DQN方法中,DQNTime-to-Go的碰撞率比DQN-sequential低得多。(2)与TTC相比,DQN方法在实现目标方面更有效。平均而言,DQNTime-to-Go实现目标的速度比TTC快28%,DQNSequential比TTC快19%。这意味着DQN方法具有减少交通拥堵的潜力。(3)除一种情况外,DQNTime-to-Go获得最佳结果的概率最高,见图3。图3:所有方法和场景的结果比较(4)尽管DQN方法明显更有效,它们不如TTC擅长最小化碰撞。(5)在图4中,我们可以看到当论文的作者在速度和安全性之间寻求权衡时,DQN优于TTC。这表明设计一个零冲突率的算法是可能的。图4:随着TTC阈值的变化,权衡时间-碰撞率注意力DQN在每种情况下都表现最佳。由于规模原因,高难度场景未包含在内,但结果相似。由于DQN没有达到0%的碰撞率,本文的作者试图找到解决这个问题的方法,因为0的碰撞率非常重要。根据多任务学习的核心原理[7],作者认为在多个场景上进行训练可以提高性能。图5展示了迁移性能,具体数据见表2和表3,有助于作者理解深度网络系统的泛化方法。我们可以看到,更难的场景可以迁移到更容易的场景,但是车道数量的变化会产生干扰。图5:迁移性能。在一个场景中训练的网络在不同的场景中运行,以评估每种方法的泛化能力。表2:DQNSequential的迁移性能;表3:DQNTime-to-Go的迁移性能然后论文作者给出了定性分析。在此分析中,作者表明,当当前车辆经过车道时,DQN可以准确预测远处车道的交通状况。此外,DQN驾驶员可以预测迎面而来的交通是否有足够的时间刹车。作者也解释了为什么会出现一些碰撞。当汽车几乎错过迎面而来的交通时,这种由离散化引起的碰撞会产生影响。论文还指出,TTC往往要等到道路完全畅通后才能通过,如图6所示,这在实际情况下还不够好。图6:DQNTime-to-Go预测何时出现开放空间,然后开始在预期的畅通路径上加速。TTC会等到所有汽车都通过,但这是一个错失的机会。5.结论对于这篇论文,作者提到了三个贡献。第一个贡献是结合当前多种深度学习技术提高水平的新思路。第二个贡献是对比分析了DQN和TTC在5种不同路口模拟场景中的性能。第三个贡献是分析了经过训练的DQN策略迁移到不同场景的能力。在我看来,未来还有两个方面需要改进。一种是卷积神经网络的架构。当有更复杂的场景时,更深的神经网络可以取得更好的效果。我们可以在参考文献[8]中找到相同的结论,一家自动驾驶公司将深度学习视为打造值得信赖的自动驾驶汽车的唯一可行方法,因为驾驶涉及到如此多的情况,许多事情都是艰难而微妙的。另一方面是关于碰撞率。我觉得应该有另一种方法让碰撞率变成0,因为安全无疑是人类选择自动驾驶汽车最重要的一环。在这里,这个目标不能仅仅通过这个模型或算法来实现,应该有其他的方法来解决这个问题。在奥迪汽车中,工程师们利用毫米波雷达、激光雷达、摄像头、超声波探头等设备相互补偿和验证,可以帮助汽车做出正确的选择【本文为专栏《车之心》原创文章机器》,微信公众号《机器之心(id:almosthuman2014)》】点此查看该作者更多好文
