摘要——我们展示了深度强化学习在自动驾驶中的首次应用。从随机初始化的参数中,我们的模型能够使用单个单眼图像作为输入,在少数训练集中学习车道跟随策略。我们提供一个通用且易于获得的奖励:车辆在没有安全驾驶员控制的情况下行驶的距离。我们使用一种连续的、无模型的深度强化学习算法,所有的探索和优化都在车辆上进行。这证明了自动驾驶的一个新框架,它摆脱了对定义的逻辑规则、映射和直接监督的依赖。我们讨论了将这种方法扩展到更广泛的自动驾驶任务的挑战和机遇。
一、简介
自动驾驶是一个吸引了研究界和公司大量关注的话题,因为它有可能从根本上改变移动性和交通。从广义上讲,迄今为止,大多数方法都侧重于在标注的3D几何地图中定义驾驶行为的形式逻辑。这可能很难扩展,因为它严重依赖外部映射基础设施,而不是主要使用对本地场景的理解。
为了使自动驾驶成为一种真正普遍的技术,我们提倡机器人系统,该系统能够解决在没有地图和明确规则的情况下驾驶和导航的能力,就像人类一样,依靠对直接环境的全面理解[1],同时遵循简单的更高级别的方向(例如,转弯路线命令)。该领域的最新工作表明,使用GPS进行粗略定位和LIDAR了解当地场景,这在农村乡村道路上是可行的[2]。
近年来,强化学习(RL)——一个专注于解决马尔可夫决策问题(MDP)[3]的机器学习子领域,其中智能体学习在环境中选择动作以试图最大化某些奖励函数——已经显示出在围棋[4]或国际象棋[5]等游戏中实现超人结果的能力,在计算机游戏[6]等模拟环境中具有巨大的潜力, 以及使用机器人操纵器的简单任务 [7]。我们认为,强化学习的普遍性使其成为应用于自动驾驶的有用框架。最重要的是,它提供了一种纠正机制来改善习得的自动驾驶行为。为此,在本文中,我们:
1)将自动驾驶作为MDP,解释如何设计这个问题的各种元素,使其更容易解决,同时保持其通用性和可扩展性,
2)表明规范RL算法(深度确定性策略梯度[8])可以在仿真环境中快速学习简单的自动驾驶任务,
3)讨论在真实车辆上学习高效和安全驾驶所需的系统设置,
4)在几集中学习驾驶现实世界的自动驾驶汽车,使用连续的深度强化学习算法,仅使用车载计算。
因此,我们首次展示了驱动真实汽车的深度强化学习代理。
二、相关工作
我们相信这是第一项证明深度强化学习是自动驾驶可行方法的工作。我们被它超越模仿学习的潜力所激励,并希望研究界从强化学习的角度更仔细地研究自动驾驶。当前文献中最接近的工作主要可以归类为模仿学习或依赖映射的经典方法。
a)映射方法:自早期示例[9]、[10]以来,自动驾驶汽车系统已被设计为使用先进的传感和控制算法[11]、[12]、[13]在复杂环境中安全导航。这些系统传统上由许多特定的独立工程组件组成,如感知、状态估计、映射、规划和控制[14]。然而,由于每个组件都需要单独指定和调整,因此由于复杂的相互依赖性,这很难扩展到更困难的驾驶场景。
为实现这一模块化方法,已将大量精力集中在计算机视觉组件上。诸如[15]的定位有助于在映射环境中控制车辆[16],而诸如语义分割[1]的感知方法使机器人能够解释场景。这些模块化任务得到了[17]和[18]等基准的支持。
这些模块化映射方法在很大程度上是开发自动驾驶系统的商业努力的重点;然而,它们提出了一个极其复杂的系统工程挑战,这一挑战尚未解决。
b)模仿学习:一些驾驶任务的最新方法是模仿学习[19],[20],其目的是通过观察专家演示来学习控制策略。这种方法的一个重要优点是,它可以使用端到端深度学习,针对最终目标联合优化模型的所有参数,从而减少每个组件的调整工作量。然而,模仿学习在规模上也具有挑战性。对于代理可能遇到的每个潜在场景,不可能获得专家示例来模拟,而且处理已演示策略的分布(例如,在每条车道上行驶)是一项挑战。
c)强化学习:强化学习是一类用于解决马尔可夫决策问题 (MDP) 的宽泛算法 [21]。MDP 包括:
• 一组状态 S,
• 一组 A 动作,
• 转移概率函数 p:S × A → P(S),它为每对 (s,a) ∈ S × A 分配一个概率分布 p(·|s,a)表示概率使用操作 A 从状态 S 进入状态,
• 奖励函数 R:S ×S ×A → R,它描述了与使用操作从状态 st 进入状态 st+1 相关的奖励 R(st+1,st,at),
• 未来折扣系数γ ∈ [0,1] 表示我们对未来奖励的关心程度。
MDP的解决方案是一个策列π: S→ A对每一个s0 ∈ S 最大化:
式中根据 p(st+1|st,π(st))对st+1采样计算期望值。
在我们的设置中,我们使用有限时间范围T代替上述公式中的无穷大。这相当于其中一个状态是终端,即它不能被转义,并且在该状态下的任何操作都不会给出任何奖励。
将上述方程重新排列为递归形式,我们得到两个Bellman方程之一:
(2)
这里期望根据 p(s1|s0,π(s0))对s1进行采样计算。作为参考,让我们给出另一个Bellman方程:
(3)
其中 Qπ(s0,a0)是从状态 s0 开始,遵循策略 π,执行操作 a0 开始收到的预期累积折扣奖励。再次根据 p(s1|s0,a0) 对s1 进行采样计算期望值。
换句话说,强化学习算法旨在学习获得高累积奖励的策略 π。它们通常分为两类:基于模型的强化学习和无模型的强化学习。在前一种方法中,学习转换和奖励函数的显式模型,然后用于查找在这些估计函数下最大化累积奖励的策略。在后者中,我们直接估计在状态 s 中执行操作 a 的值 Q(s,a),然后遵循选择每个状态中估计值最高的操作的策略。
无模型强化学习非常普遍。使用它,我们可以(理论上)学习我们可以想象的任何任务,而基于模型的算法只能像学习的模型一样好。另一方面,基于模型的方法往往比无模型的方法更有数据效率。有关进一步讨论,请参见[22]。
在自动驾驶中,深度学习已用于使用离线数据学习基于模型的强化学习的动力学模型[23]。强化学习也被用于学习视频游戏中的自动驾驶代理。然而,这可能只是一个问题,因为可以获得真实世界中无法获得的地面真实奖励信号,例如汽车与车道的角度[8]。
与本文最接近的工作来自Riedmiller等人[24],他们训练了一个强化学习代理,该代理在无障碍环境中驾驶车辆遵循GPS轨迹。他们演示了使用基于GPS阈值跟踪误差的密集奖励函数在车上学习。我们在这项工作的基础上采取了多种方式;我们通过基于图像的输入,使用稀疏奖励函数进行车道跟踪,演示了如何通过深度学习学习驾驶。
三、 系统体系结构
A.作为马尔可夫决策过程的驾驶
本文的一个重点是将驾驶作为MDP进行设置。我们的目标是自动驾驶,状态空间S、动作空间A和奖励函数R的精确定义由我们自由定义。一旦状态和动作表示被固定,过渡模型就被隐式固定,剩余的自由度——过渡本身——由所使用的模拟器/车辆的力学决定。
a) 状态空间:定义状态空间的关键是算法在每个时间步接收的观察值 Ot 的定义。为了为驾驶算法提供复杂的观察,已经开发了许多传感器,不仅限于激光雷达、IMU、GPS 单元和红外深度传感器;无穷无尽的预算可以花在先进的传感技术上。在本文中,我们表明,对于简单的驾驶任务,使用单眼摄像头图像以及观察到的车速和转向角就足够了。从理论上讲,状态st是所有先前观测值的马尔可夫表示。固定长度近似马尔可夫状态可以通过例如使用递归神经网络递归组合观测值来获得。但是,对于我们考虑的任务,观察本身可以作为状态的足够好的近似。
第二个考虑因素是如何对待图像本身:原始图像可以通过一系列卷积直接输入强化学习算法[25];或者,可以使用图像的小压缩表示,例如使用变分自动编码器(VAE)[26] [27]。我们在第四节中使用这两种方法比较了强化学习的性能。在我们的实验中,我们使用KL损失和L2重建损失从五个纯随机探索事件中在线训练VAE [27]。
b) 动作空间:驾驶本身有一组人们可能认为是自然的动作:油门、刹车、信号等。但是强化学习算法的输出应该是什么领域?节气门本身可以被描述为在与[0,1]等距的范围内的离散、开或关或连续。另一种方法是根据速度设定点重新调整节气门的参数,通过经典控制器的节气门输出来匹配设定点。总之,在一个简单的模拟器上进行的实验(第IV-a节)表明,连续的动作虽然有些难以学习,但提供了一个更平滑的控制器。我们使用二维动作空间;转向角在[-1,1]范围内,速度设定值以km/h为单位。
c) 奖励功能:奖励功能的设计可以接近监督学习–给定车道分类系统,可以根据最小化距车道中心的预测距离来设置学习车道跟随的奖励,即[8]中的方法。这种方法在规模上是有限的:系统只能像手工制作的奖励背后的人类直觉一样好。我们不采取这种做法。相反,我们将奖励定义为前进速度,并在违反交通规则时终止事件——因此,给定状态V(st)的值对应于违反交通规则前的平均行驶距离。可以识别的一个故障是,代理人可能选择避免更困难的操作,例如在英国右转(在美国左转)。在未来的工作中可以使用命令条件奖励来避免这种情况。
B. 强化学习算法——深度确定性策略梯度
我们选择了一个简单的连续动作域无模型强化学习算法:深度确定性策略梯度(DDPG)[8],以表明没有特定于任务的适应的现成强化学习算法能够解决III-A节中提出的MDP。
DDPG 由两个函数逼近器组成:一个评论家 Q:S × A → R,它估计在状态 s 中使用动作 a 时预期累积折扣奖励的值 Q(s,a),经过训练以满足贝尔曼方程
通过演员给出的策略π:S->A,该策略尝试预估一个Q优化的策略;这里(st,at,rt+1,dt+1,st+1)是一个经验元组,从过去经验中选择一个从使用动作at状态st到st+1并获得奖励rt+1和“done”标志dt+1的转移格式。评论家试图最小化的Belllman等式中的误差,被称为时差(TD)误差。存在许多演员-评论家方法的变体,参见[28],[29]。
DDPG训练在线完成。除了在真实车辆上设置这样的缓冲区的基础设施之外(这要求它能够容忍缺失/故障事件,并且可以随时停止),通过从回放缓冲区中选择最“信息丰富”的示例,可以加快强化学习。我们使用一种通常建立的称为优先体验回放的方法[30]来实现这一点:我们对经验元组进行采样,其概率与评论家的TD误差成比例。用于此采样的权重在每个优化步骤时以最小开销进行更新;新的样本被赋予无限的权重,以确保所有样本至少被看到一次。
DDPG 是一种非策略学习算法,这意味着在训练期间执行的操作来自与参与者的学习最优策略不同的策略。这样做是为了在最优策略看到的狭隘分布之外获得不同的状态操作数据,从而提高稳健性。我们在连续强化学习方法的背景下使用标准方法来实现这一目标:我们的勘探策略是通过将离散的Ornstein-Uhlenbeck过程噪声[31]添加到最佳策略中形成的。因此,在每一步中,我们都会添加最佳动作噪声xt,如下所示:
(4)
其中 θ,μ,σ 是超参数,是从正态分布 N(0,1) 采样的 i.i.d. 随机变量。这些参数需要仔细调整,因为在噪音效用和安全驾驶员的舒适性之间需要直接权衡。强烈均值还原噪声具有较低的方差更容易预测,而方差较高的噪声提供更好的状态-动作空间覆盖范围。
while True do
Request task
Waiting for environment reset
if task is train then
Run episode with noisy policy
if exploration time is over then
Optimize model
end if
else if task is test then
Run episode with optimal policy
else if task is undo then
Revert previous train/test task
else if task is done then
Exit experiment
end if
end while
(a) 基于任务的车载训练或测试工作流
C.基于任务的培训架构
在真实世界环境中运行的全尺寸机器人车辆上部署强化学习算法需要调整常见的训练程序,以考虑驾驶员干预和影响训练的外部变量。
我们将算法的架构构建为一个简单的状态机,如图 2a 所示,其中安全驾驶员控制不同的任务。我们定义了四个任务:训练、测试、撤消和完成。这些任务的定义允许系统既是交互式的,又是有状态的,有利于按需执行剧集,而不是先验的固定时间表。
训练和测试任务允许我们在自主模式下与车辆交互,执行当前策略。这两个任务之间的区别在于将噪声添加到模型输出中,并在训练任务中优化模型,而测试任务直接运行模型输出操作。在早期的剧集中,我们跳过了优化,转而探索状态空间。我们继续实验,直到测试奖励停止增加。
每一集都会被执行,直到系统检测到自动化丢失(即驾驶员进行了干预)。在真实环境中,系统无法在剧集之间自动重置,这与模拟或受限环境中的代理不同。我们需要人类驾驶员将车辆重置为有效的启动状态。剧集终止后,当安全驾驶员执行此重置时,模型正在优化,从而最大限度地减少剧集之间的时间。
撤消和已完成任务描述了体系结构中的主要差异。系统可能会因各种正当原因终止发作,而不是无法正确驾驶:这些发作不能用于培训目的。因此引入了撤消任务,因为它允许我们撤消剧集并将模型恢复到运行该剧集之前的状态。在我们的实验中,一个常见的例子是遇到其他司机试图将道路用作环境。完成任务允许我们在任何给定时刻优雅地退出实验,并且很有帮助,因为该过程是交互式的,并且不会运行固定数量的集数。
四、实验
我们用来展示车辆的主要任务是车道跟随;这与[8]中提到的任务相同,但是在真实车辆和仿真中完成,并且通过图像输入完成,而无需了解车道位置。它是驾驶的任务核心,也是开创性ALVINN的基石[19]。我们首先在IV-A节的仿真中完成这项任务,然后利用这些结果和适当超参数的知识在IV-B节中演示真实车辆的解决方案。
对于模拟和真实世界的实验,我们使用一个小的卷积神经网络。我们的模型有四个卷积层,有 3 × 3 个内核,跨度为 2 和 16 个特征维度,在演员和评论家模型之间共享。然后,我们将编码状态展平,并将向量与Actor的标量状态连接起来,另外连接批评者网络的动作。对于这两个网络,我们在回归到输出之前应用一个特征大小为 8 的全连接层。在VAE实验中,使用与编码器相同尺寸的解码器,用转置卷积代替跨步卷积,对特征进行上采样。图形描述如图 1 所示。
A. 模拟
为了在图像输入的车道跟随环境中测试强化学习算法,我们使用虚幻引擎4开发了一个3D驾驶模拟器。它包含乡村道路的生成模型,支持各种天气条件和道路纹理,并且将来将支持更复杂的环境(游戏屏幕截图见图 3)。
事实证明,模拟器对于调整强化学习参数至关重要,包括:学习率、每次训练后要采取的梯度步骤数以及正确的终止程序——保守终止会导致更好的策略。它确认了连续动作空间是可取的 - 离散导致生涩的策略 - 并且DDPG是一种合适的强化学习算法。如第 III-A 节中的环境设置中所述,模拟器中授予的奖励对应于离开车道前行驶的距离,新情节将汽车重置到车道中央。
我们发现,我们可以在 10 个训练集中可靠地学习从原始图像中学习模拟中的跟随。此外,我们发现使用压缩状态表示(由变分自动编码器提供)几乎没有优势。我们发现以下超参数是最有效的,我们将其用于现实世界的实验:未来折扣因子为0.9,噪声半衰期为250集,噪声参数θ为0.6,σ为0.4,批次大小为64的剧集之间的250个优化步骤和0.005的梯度裁剪。
B. 真实世界的驾驶
我们现实世界的驾驶实验在许多方面都模仿了模拟实验。然而,在现实世界中执行这个实验更具挑战性。许多环境因素无法控制,必须实施实时安全和控制系统。对于这些实验,我们使用250米的道路。汽车从道路的起点开始训练。当汽车偏离车道并进入不可恢复的位置时,安全驾驶员将控制车辆结束这一集。然后车辆返回车道中央开始下一集。我们使用在仿真中发现有效的相同超参数,调整噪声模型,使车辆行为类似于车辆本身动力学下的仿真。
我们使用改装的雷诺 Twizy 车辆进行实验,这是一款双座电动汽车,如图 1 所示。该车重500kg,最高时速80km/h,单次充电续航里程100km。我们使用安装在车辆前部车顶中央的单目前置摄像机。我们使用改装的电动机来驱动制动和转向,并以电子方式模拟节气门位置以调节车轮的扭矩。所有计算均使用一台 NVIDIA Drive PX2 计算机在板上完成。如果安全驾驶员通过使用车辆控制(制动、油门或转向)、切换自动化模式或按下紧急停止进行干预,车辆的线控驱动自动化会自动脱离。当速度超过 10 公里/小时或线控自动化脱离时,事件将终止,表明安全驾驶员已进行干预。然后,安全驾驶员会将汽车重置到道路中央,并继续下一集。
表I显示了这些实验的结果。在这里,主要发现是强化学习可以在少数试验中解决这个问题。使用 250 个优化步骤(批量大小为 64)大约需要 25 秒,这使得实验非常易于管理,考虑到将汽车操纵到车道中央开始下一集无论如何都需要大约 10 秒。我们还观察到,在现实世界中,视觉复杂性比模拟困难得多,由在线训练的变分自动编码器提供的压缩状态表示与策略一起大大提高了算法的可靠性。我们将我们的方法与零策略(以恒定速度直行)和随机探索噪声进行比较,以确认试验确实需要一个非平凡的策略。
五、讨论
这项工作首次将深度强化学习应用于全尺寸自动驾驶汽车。实验表明,我们能够在不到三十分钟的训练中学会跟随车道——所有这些都是在车载计算机上完成的。
为了调整超参数,我们构建了一个简单的模拟驾驶环境,在那里我们尝试了强化学习算法,使用 DDPG 作为规范算法在交通违规之前最大化距离。发现的参数友好地转移到现实世界中,在那里我们迅速训练了一个策略,在私人道路上驾驶真实车辆,奖励信号仅包括速度和控制驾驶员控制时的终止信号。值得注意的是,此奖励不需要进一步的环境信息或地图。有了更多的数据、车辆和更大的模型,这个框架足够通用,可以扩展到更复杂的驾驶任务。