这是 19 年的一篇来自 CMU 的文章。文章中使用了 TORCS 模拟器,和 DDPG 算法。作者没有开源代码,但有一个韩国人做了类似的项目,其 Github 仓库为:github.com/NOHYC/autono

1. 简介

现在深度强化学习 (DRL) 在自动驾驶 (AD) 领域 依然有很多挑战。比如在控制方面的高纬度的状态空间,和复杂的动态环境,从离散空间控制连续空间等。视觉方面的物体检测和追踪,深度估计,行为预测还有场景理解。更重要的是,我们的控制器必须在如此困难的情况下正确和快速地行动,以避免撞到物体并保持安全。

本文的主要贡献是修改了深度确定性策略梯度(DDPG)算法 [1] 使其在 Open Racing Car Simulator (TORCS) 环境,自主汽车可以快速运行并保持车道。并且为了证明方法的有效性,本章在 TORCS 中以包含不同的视觉信息模式评估代理。

参考:

2. State-of-the-art DRL

名称 种类
DQN [2] value-based method
Double DQN [3] value-based method
Dueling DQN [4] value-based method
A3C [5] value-based method
deterministicpolicy gradient [6] policy-based method
deepdeterministic policy gradient [1] policy-based method
PGQL [7] policy-based method

参考:

3. 方法

关于算法这里不做详细的介绍,只写一些理念上的理解

由于自动驾驶的动作空间处于是连续的,所以不适合使用值迭代。因此这里选用基于策略迭代的 DDPG 算法。此外,该算法使用决定性的动作,而不是随机动作函数,因此可以快速收敛。

TORCS 除了可以获取图像之外,还有很多其他的传感器参数。实验使用了 29 个参数,具体如下:

名称 范围(单位) 描述
ob.angle [-pi, pi] 小车方向与轨迹轴线方向的夹角
ob.track (0,200)(m) 200 米范围内轨迹边缘与汽车之间的距离
ob.trackPos (-inf,inf) 小车到轨迹中心线的距离
ob.speedX (-inf,inf)(km/h) 纵轴速度
ob.speedY (-inf,inf)(km/h) 横轴速度
ob.speedZ (-inf.inf)(km/h) Z轴的速度

动作空间共三维:加速度(0 - 1),刹车(0 - 1),方向(-1 - +1)。

整个模型由一个actor网络和一个critic network组成,如下图所示。actor网络作为策略,将输出动作。 两个隐藏层都由 ReLU 激活函数组成。 批评者模型作为 Q 函数,因此将动作和观察作为输入,并输出每个动作的估计奖励。

小车的奖励方程为:

[公式]

其中 [公式] 是沿着轨迹方向的速度,而 [公式] 是偏离轨迹方向的速度。

模拟器截图

作者表示,由于模拟器中存在很多不鲁棒的判断,导致了他们的算法在评估阶段表现的并不稳定。但是从整体趋势上来看,从 1 到 150 episode,代理是由明显进步的。

结果评估

本文作者的实验条件实在艰苦,只有 4 块 GTX-780 显卡,但做出来的实验效果不错。文章中实验过程和方法都描述的非常清楚,是值得复现的一篇论文。刚刚在领英上看到了其中一个作者目前在英伟达工作,希望往后的实验可以有更好的设备支持,再创佳作!

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