这是 2017 年的一篇文章,可以说是 DRL 自动驾驶方向的基础文章。文章的主要贡献是提出了一个端到端自动驾驶模型的框架,该模型接收原始传感器输入并输出驾驶动作。很可惜本文没有提供开源代码。

1. 简介

1.1 任务介绍

创建一个自动驾驶 AI 可以被分解为 3 个子任务:

  • 认知 (Recognition)
    • 感谢深度学习的发展,此部分的内容目前已经不是什么难题了。对于交通环境中的行人,车辆,指示牌的识别都可以通过 CNN 轻松完成。
  • 感知 (rediction)
    • 自动驾驶代理仅识别其环境是不够的,它还必须能够构建预测环境未来状态的内部模型,以完成例如构建环境地图或跟踪对象的目标。 为了能够预测未来,善于整合过去的信息的递归神经网络 (RNN) 在此展现了其优势。其中长短期记忆 (LSTM) 网络在端到端场景标签系统中表现出色。
  • 规划 (Planning)
    • 在感知的基础上,规划未来的驾驶动作顺序,使车辆能够成功导航。此部分是三者之中最难的。

高等级自动驾驶的三个任务

对于整个自动驾驶系统来说,车辆需要先经过传感器融合,状态指标信息提取和过滤,最后是通过状态指标创建一系列的动作。这其中,我比较感兴趣的是后两者。自动驾驶系统的状态指标通常会非常的多,但在特定模式(例如高速公路)下,很多指标是不重要,过多的信息往往会影响驾驶系统的准确性和效率。因此在驾驶决策阶段我们往往只关注以自我车辆为中心的一个极坐标(或笛卡尔坐标)范围的关键性指标,行驶中的车辆、前方道路上的自由空间。为此,我们可以创建一个注意力模型,使用 RL 与 RNN 混合的方式,从原始感官信息中提取低级信息以执行自动驾驶。

1.2 使用强化学习的原因

交通环境是一个充满不确定性的动态系统,这要求我们的代理可以预测其他交通参与者的行为。并且交通场景具有多样性,使得监督式学习难以覆盖所有的场景。因此使用 RL 范式对未知领域进行建模,并通过采取行动从自己的经验中学习,可以更好的解决自动驾驶难题。

2. 为自动驾驶提出的 DRL 框架

DRL 框架

2.1 空间融合 (Spatial aggregation)

第一步是空间聚合网络。此阶段包含两个网络:1)传感器融合和 2)空间特征,如下所述。汽车状态包括它的位置、方向、速度和加速度。在自动驾驶的情况下,还需要对周围环境状态进行编码。环境状态可能包括对象、它们的位置、方向、运动矢量、尺寸等。比如在我们的系统中,环境输入来自摄像头,然后通过 CNN 提取特征。

2.1.1 传感器融合 (Sensor fusion)

该过程使用 CNN 将所有传感器的原始信息转换成与自动驾驶决策有关的特征量。

2.1.2 空间特征 (Spatial features)

在得到特征量后使用注意力过滤器将于当前驾驶环境无关的特征量去掉,以减少计算量。

空间融合模块的方框图

2.2 循环时间聚合 (Recurrent temporal aggregation)

随着时间的推移,从环境中获得的特征会形成一个特征集。为了使用这个基于时间的特征集,我们使用 贝叶斯滤波器算法 (Bayes filter algorithm)。这个算法是基于 马尔可夫决策模型 提出的。此外,我们使用 LSTM算法 来解决 RNN 无法记忆长期依赖关系的问题。

该部分内容我缩减的有些多,因为其中很多算法我没有用过。想要具体了解的请看原文。

2.3 决策

此部分的内容使用 DQN 实现。就是普通的 DQN 并没有什么特别的。

3. 结果与讨论

实现测试的一个简单车道保持任务。使用的模拟器是 Torcs,外加 Simulated Car Rac-ing (SCR) 插件。可以访问汽车控制有:如转向、速度、加速度、刹车等。汽车状态为:位置、速度、加速度、油位等。DQN 的输入为 track Possensor 输出是转向、档位、加速度和制动值。

结果表明无论是将动作离散化还是连续化,都可以完成车道保持的任务。但是,在 DQN 的情况下,消除了重放记忆技巧(Q-learning) 有助于更快的收敛和更好的性能。此外,DQN情况下的动作平铺编码使转向动作更加突兀。但使用 DDAC 连续策略有助于平滑动作并提供更好的性能。

本文使用 Zhihu On VSCode 创作并发布