• Learning to Drive in a Day


    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布!

    International Conference on Robotics and Automation, (ICRA 2019)

    Abstract

      我们展示了深度强化学习在自动驾驶中的首次应用。从随机初始化的参数中,我们的模型能够使用单个单目图像作为输入,在少数训练集中学习保持车道策略。我们提供了一个通用且易于获得的奖励:车辆在没有安全驾驶员控制的情况下行驶的距离。我们使用连续的、无模型的深度强化学习算法,所有的探索和优化都是在车上进行的。这展示了一个新的自动驾驶框架,该框架不再依赖于定义的逻辑规则、映射和直接监督。我们讨论了将这种方法扩展到更广泛的自动驾驶任务的挑战和机遇。

    I. INTRODUCTION

      自动驾驶是一个引起研究界和公司极大关注的话题,因为它有可能从根本上改变移动性和交通方式。从广义上讲,迄今为止的大多数方法都集中在形式逻辑上,它定义了带注释的3D几何地图中的驾驶行为。这可能难以扩展,因为它严重依赖外部地图基础设施,而不是主要使用对当地场景的了解。

      为了使自动驾驶成为一种真正无处不在的技术,我们提倡机器人系统能够解决在没有地图和明确规则的情况下驾驶和导航的能力,就像人类一样,依赖于对周围环境的全面理解[1],同时遵循简单的更高级别的指示(例如,转弯路线命令)。该领域最近的工作表明,这在乡村道路上是可能的,使用GPS进行粗略定位,使用LIDAR了解当地场景[2]。

      近年来,强化学习(RL) —— 一个专注于解决马尔可夫决策问题(MDP)[3]的机器学习子领域,其中智能体学习在环境中选择动作以尝试最大化某些奖励函数 —— 已经显示出一种在围棋[4]或国际象棋[5]等游戏中获得超人成绩的能力,在计算机游戏[6]等模拟环境中以及机器人操纵器[7]的简单任务中具有巨大潜力。我们认为强化学习的普遍性使其成为适用于自动驾驶的有用框架。最重要的是,它提供了一种纠正机制来改善学习到的自动驾驶行为。

      为此,在本文中,我们:

    • 将自动驾驶作为MDP,解释如何设计这个问题的各种元素,使其更易于解决,同时保持其通用性和可扩展性,
    • 表明典型的RL算法(深度确定性策略梯度[8])可以在模拟环境中快速学习简单的自动驾驶任务,
    • 讨论在现实世界的车辆上学习驾驶高效和安全所需的系统设置,
    • 仅使用车载计算,通过持续的深度强化学习算法在几个回合中学习驾驶真实世界的自动驾驶汽车。

      因此,我们首次展示了驾驶真车的深度强化学习智能体。

    II. RELATED WORK

      我们相信这是第一个表明深度强化学习是一种可行的自动驾驶方法的工作。我们对其超越模仿学习的潜力感到鼓舞,并希望研究界从强化学习的角度更仔细地研究自动驾驶。当前文献中最接近的工作主要可以归类为模仿学习或依赖映射的经典方法。

      a) Mapping approaches: 自早期示例[9][10]以来,自动驾驶汽车系统已被设计为使用先进的传感和控制算法[11][12][13]在复杂环境中安全导航。这些系统传统上由许多特定的独立工程组件组成,例如感知、状态估计、映射、规划和控制[14]。但是,由于每个组件都需要单独指定和调整,因此由于复杂的相互依赖关系,这可能难以扩展到更困难的驾驶场景。

      这种模块化方法的计算机视觉组件已经投入了大量精力。诸如[15]之类的定位有助于在映射环境中控制车辆[16],而诸如语义分割[1]之类的感知方法使机器人能够解释场景。这些模块化任务由[17]和[18]等基准测试支持。

      这些模块化映射方法在很大程度上是开发自动驾驶系统的商业努力的重点。然而,它们提出了一个非常复杂的系统工程挑战,尚未解决。

      b) Imitation learning: 一些驾驶任务的更新方法是模仿学习[19][20],旨在通过观察专家演示来学习控制策略。这种方法的一个重要优点是它可以使用端到端深度学习,针对最终目标联合优化模型的所有参数,从而减少调整每个组件的工作量。然而,模仿学习在规模上也具有挑战性。不可能获得专家示例来模拟智能体可能遇到的每个潜在场景,并且处理已证明策略的分布(例如,在每条车道上行驶)具有挑战性。

      c) Reinforcement learning: 强化学习是用于解决马尔可夫决策问题(MDP)[21]的一大类算法。MDP包括:

      在我们的设置中,我们使用有限时间范围 T 代替上述公式中的无穷大。这相当于其中一种状态是终结状态,即它无法逃脱,并且该状态下的任何动作都会产生零奖励。

      将上述方程重新排列为递归形式,我们得到两个贝尔曼方程之一:

    这里的期望只取自根据p(s1|s0, π(s0))采样的s1。作为参考,让我们提出另一个贝尔曼方程:

    其中Qπ(s0, a0)是从状态s0开始并采取动作a0并随后遵循策略π时收到的期望累积折扣奖励。期望再次接管根据(s1|s0, a0)采样的s1

      换句话说,强化学习算法旨在学习获得高累积奖励的策略。它们通常分为两类:基于模型的强化学习和无模型强化学习。在前一种方法中,学习了转换和奖励函数的显式模型,然后用于找到在这些估计函数下最大化累积奖励的策略。在后者中,我们直接估计在状态 s 中采取动作 a 的价值Q(s, a),然后遵循在每个状态中选择具有最高估计价值的动作的策略。

      无模型强化学习非常普遍。使用它,我们(理论上)可以学习我们可以想象的任何任务,而基于模型的算法只能与学习的模型一样好。另一方面,基于模型的方法往往比无模型的方法更有数据效率。进一步讨论,见[22]。

      在自动驾驶中,深度学习已被用于学习动态模型,以使用离线数据进行基于模型的强化学习[23]。强化学习也被用于学习视频游戏中的自动驾驶智能体。然而,这可以简单地解决问题,获得在现实世界中不可用的地面实况奖励信号,例如汽车与车道的角度[8]。

      与本文最接近的工作来自Riedmiller等人[24]训练了一个强化学习智能体,该智能体在无障碍环境中驾驶车辆遵循GPS轨迹。他们演示了使用基于GPS阈值跟踪误差的密集奖励函数在车辆上进行学习。我们以多种方式建立在这项工作的基础上;我们展示了通过深度学习学习驾驶,从基于图像的输入,使用稀疏奖励函数实现保持车道。

    III. SYSTEM ARCHITECTURE

    A. Driving as a Markov Decision Process

      本文的一个重点是将驾驶设置为MDP。我们的目标是自动驾驶,状态空间 S、动作空间 A 和奖励函数 R 的精确定义可以自由定义。一旦状态和动作表示固定,转换模型就隐含地固定,剩余的自由度——转换本身——由所使用的模拟器/车辆的机制决定。

      a) State space: 定义状态空间的关键是定义算法在每个时间步骤接收到的观测值Ot。已经开发了许多传感器,以便为驾驶算法提供复杂的观察,不仅限于激光雷达、IMU、GPS单元和红外深度​​传感器;可以将无穷无尽的预算花在先进的传感技术上。在本文中,我们展示了对于简单的驾驶任务,使用单目摄像头图像以及观察到的车速和转向角就足够了。理论上,状态st是所有先前观察的马尔可夫表示。可以通过例如使用循环神经网络递归地组合观察来获得近似马尔可夫状态的固定长度的近似值。然而,对于我们考虑的任务,观察本身可以很好地近似状态。

      第二个考虑是如何处理图像本身:原始图像可以通过一系列卷积直接输入到强化学习算法中[25];或者,可以使用例如变分自动编码器(VAE)[26][27]的图像的小型压缩表征。我们在第四节中比较了使用这两种方法的强化学习的性能。在我们的实验中,我们使用KL损失和L2重建损失[27]从五个纯随机探索集在线训练VAE。

      b) Action space: 驾驶本身具有人们可能认为的一组自然动作:油门、刹车、信号等。但是强化学习算法的输出应该是什么领域?油门本身可以被描述为离散的,开或关,或连续的,在等距到[0, 1]的范围内。另一种方法是根据速度设定点重新参数化节流阀,通过经典控制器输出节流阀以尝试匹配设定点。总体而言,在简单模拟器上的实验(第IV-A节)表明,连续动作虽然有些难以学习,但提供了更平滑的控制器。我们使用二维动作空间;[-1, 1]范围内的转向角和以km/h为单位的速度设定值

      c) Reward function: 奖励函数的设计可以接近监督学习——给定车道分类系统,可以根据最小化与车道中心的预测距离来设置学习保持车道的奖励,该方法在[8]中采用。这种方法在规模上是有限的:系统只能与手工奖励背后的人类直觉一样好。我们不采用这种方法。相反,我们将奖励定义为前进速度,并在违反交通规则时终止回合——因此给定状态V(st)的价值对应于违规前行进的平均距离。可以识别的错误是智能体可能选择避免更困难的操作,例如在英国右转(在美国左转)。在未来的工作中可以使用命令条件奖励来避免这种情况。

    B. Reinforcement Learning Algorithm – Deep Deterministic Policy Gradients

      我们选择了一种简单的连续动作域无模型强化学习算法:深度确定性策略梯度(DDPG)[8],以表明没有特定任务适应的现成强化学习算法能够解决在第III-A节中MDP提出的问题。

      DDPG训练是在线完成的。除了设置这种用于真实车辆的缓冲区的基础设施(这要求它能够容忍丢失/错误的回合并且随时可以停止),可以通过从回放缓冲区中选择最"信息丰富"的示例来加速强化学习。我们使用一种称为优先经验回放[30]的常用方法来做到这一点:我们对经验元组进行采样,其概率与critic所做的TD误差成正比。用于此采样的权重会在每个优化步骤中以最小的开销进行更新;新样本被赋予无限权重,以确保所有样本至少被看到一次。

      DDPG是一种异策学习算法,这意味着在训练期间执行的动作来自与actor学习最优策略不同的策略。发生这种情况是为了在最优策略可以看到的狭窄分布之外获得不同的状态动作数据,从而提高鲁棒性。我们在连续强化学习方法的背景下使用一种标准方法来实现这一点:我们的探索策略是通过将离散的Ornstein-Uhlenbeck过程噪声[31]添加到最优策略来形成的。因此,在每个步骤中,我们将由下式给出的噪声xt添加到最优动作:

    其中θ, μ, σ是超参数,{εt}t是i.i.d。从正态分布N(0, 1)中采样的随机变量。这些参数需要仔细调整,因为在噪声效用和安全驾驶员的舒适度之间存在直接的权衡。具有较低方差的强均值回归噪声更容易预测,而较高的方差噪声提供更好的状态-动作空间覆盖。

    C. Task-based Training Architecture

      在真实世界环境中运行的全尺寸机器人车辆上部署强化学习算法需要调整常见的训练程序,以考虑驾驶员干预和影响训练的外部变量。

      我们将该算法的架构构建为一个简单的状态机,如图2a所示,其中安全驱动程序控制不同的任务。我们定义了四个任务:train、test、undo和done。这些任务的定义允许系统既是交互式的又是有状态的,有利于按需执行回合而不是先验的固定时间表。

      train和test任务允许我们在自主模式下与车辆交互,执行当前策略。这两个任务之间的区别在于在train任务中噪声被添加到模型输出和模型被优化,而test任务直接运行模型输出动作。在早期的回合中,我们跳过优化以支持对状态空间的探索。我们继续实验,直到测试奖励停止增加。

      每个回合都会执行,直到系统检测到自动化丢失(即驱动程序干预)。在现实世界环境中,系统不能在回合之间自动重置,这与模拟或受限环境中的智能体不同。我们需要人类驾驶员将车辆重置为有效的启动状态。在回合终止时,当安全驱动程序执行此重置时,正在优化模型,最大限度地减少回合之间的时间。

      undo和done任务描述了架构中的关键差异。除了未能正确驾驶之外,系统可能会出于各种正当理由终止一个回合:这些回合不能被考虑用于训练目的。出于这个原因引入了undo任务,因为它允许我们撤消回合并将模型恢复到运行该回合之前的状态。在我们的实验中,一个常见的例子是遇到其他司机试图将道路用作环境。done任务允许我们在任何给定时刻优雅地退出实验,并且很有帮助,因为该过程是交互式的并且它不会运行固定数量的回合。

    IV. EXPERIMENTS

      我们用来展示车辆的主要任务是保持车道;这与[8]中解决的任务相同,但是在真实车辆和模拟上完成,并且在不知道车道位置的情况下通过图像输入完成。它是驾驶的任务核心,是开创性的ALVINN [19]的基石。我们首先在第IV-A节的模拟中完成这项任务,然后在第IV-B节使用这些结果和适当超参数的知识来演示真实车辆的解决方案。

      对于模拟和真实世界的实验,我们使用一个小型卷积神经网络。我们的模型有四个卷积层,有3×3个核,步长为2,特征维度为16,在actor和critic模型之间共享。然后,我们将编码状态展平并将向量连接到actor的标量状态,另外连接critic网络的动作。对于这两个网络,我们在回归到输出之前应用一个特征大小为8的全连接层。对于VAE实验,使用与编码器大小相同的解码器,将跨步卷积替换为转置卷积以对特征进行上采样。图形描述如图1所示。

    A. Simulation

      为了在图像输入的保持车道环境中测试强化学习算法,我们使用Unreal Engine 4开发了一个3D驾驶模拟器。它包含一个乡村道路的生成模型,支持不同的天气条件和道路纹理,并且未来将支持更多复杂的环境(参见图3的游戏截图)。

      模拟器被证明对于调整强化学习参数至关重要,包括:学习率、每个训练集之后要采取的梯度步骤数和正确的终止程序——保守的终止导致更好的策略。它证实了一个连续的动作空间是可取的——离散的导致了一个生涩的策略——并且DDPG是一种合适的强化学习算法。如第III-A节中的环境设置中所述,模拟器中授予的奖励对应于在离开车道之前行驶的距离,新的回合将汽车重置到车道的中心。

      我们发现,我们可以在10个训练集内可靠地学习从原始图像的模拟中学习跟随。此外,我们发现使用压缩状态表征(由变分自动编码器提供)几乎没有优势。我们发现以下超参数是最有效的,我们将其用于我们的真实世界实验:未来折扣因子为0.9,噪声半衰期为250个回合,噪声参数θ为0.6,σ为0.4,250个回合之间的优化步骤,批大小为64,梯度裁剪为0.005。

    B. Real-world driving

      我们在现实世界中的驾驶实验在许多方面模仿了在模拟中进行的实验。然而,在现实世界中执行这个实验更具挑战性。许多环境因素无法控制,必须实施实时安全和控制系统。对于这些实验,我们使用250米的路段。汽车从道路的起点开始,开始训练。当汽车偏离车道并进入无法恢复的位置时,安全驾驶员会控制车辆并结束这一回合。然后车辆返回车道中心开始下一回合。我们使用我们发现在模拟中有效的相同超参数,调整噪声模型以在车辆本身的动力学下使车辆行为类似于模拟中的行为。

      我们使用改装的雷诺Twizy车辆进行实验,这是一款两人座电动车辆,如图1所示。车辆重500公斤,最高时速为80公里/小时,一次充电可行驶100公里。 我们使用安装在车辆前部车顶中央的单个单目前向摄像机。我们使用改装后的电动机来驱动制动和转向,并以电子方式模拟油门位置来调节车轮的扭矩。所有计算均使用单台NVIDIA Drive PX2计算机在机上完成。如果安全驾驶员通过使用车辆控制装置(刹车、油门或转向)、切换自动化模式或按下紧急停止进行干预,车辆的线控自动化系统会自动脱离。当速度超过10公里/小时或线控自动驾驶系统脱离时,一个回合将终止,这表明安全驾驶员已经进行了干预。然后,安全驾驶员会将汽车重置到路中央并继续下一回合。

      表 I 显示了这些实验的结果。在此,主要发现是强化学习可以在少数试验中解决这个问题。使用批大小为64的250个优化步骤大约需要25秒,这使得实验非常易于管理,考虑到将汽车操纵到车道中心以开始下一回合大约需要10秒。我们还在现实世界中观察到,视觉复杂性比模拟要困难得多,由在线训练的变分自动编码器提供的压缩状态表征以及策略大大提高了算法的可靠性。我们将我们的方法与零策略(以恒定速度直线行驶)和随机探索噪声进行比较,以确认试验确实需要非平凡的策略。1

    1 我们的车辆使用有状态RL训练架构(第III-C节)学习驾驶250m长度的私家路的训练过程视频可在https://wayve.ai/blog/l2diad获得。

    V. DISCUSSION

      这项工作首次将深度强化学习应用于全尺寸自动驾驶汽车。 实验表明,我们能够通过不到 30 分钟的训练来学习车道跟随——所有这些都是在车载计算机上完成的。

      为了调整超参数,我们构建了一个简单的模拟驾驶环境,在其中我们试验了强化学习算法,使用DDPG作为规范算法在交通违规之前最大化距离。发现的参数友好地转移到了现实世界,在那里我们快速训练了在私家路上驾驶真实车辆的策略,奖励信号仅包括速度和控制驾驶员控制时的终止。值得注意的是,这种奖励不需要进一步的信息或环境地图。随着更多的数据、车辆和更大的模型,这个框架足够通用,可以扩展到更复杂的驾驶任务。

      虽然可行,但如果要成为扩展自动驾驶的领先方法,这种方法将需要转化强化学习研究的进展,以及研究核心强化学习算法。最后,我们讨论了我们对未来所需工作的想法。

      在这项工作中,我们提出了一个通用的奖励函数,它要求智能体在没有安全驾驶员干预的情况下最大化行驶距离。虽然这个奖励函数是通用的,但它有许多限制。它不考虑以给定的导航目标为条件。此外,它非常稀疏。随着我们的智能体改进,干预将变得不那么频繁,导致训练信号变弱。可能需要进一步的工作来设计更有效的奖励函数来学习超人类驾驶智能体。这将涉及对许多安全性[32]和伦理问题[33]的仔细考虑。

      这里的结果建议的第二个发展领域是更好的状态表征。我们的实验表明,一个简单的变分自动编码器在驾驶真实车辆的情况下极大地提高了DDPG的性能。除了像素空间自动编码器之外,还有大量解决图像有效压缩的计算机视觉研究:在语义分割、深度、自我运动和像素流等领域的现有工作为驾驶场景中的重要内容提供了极好的先验[34][1][35]。这项研究需要与针对实际任务的强化学习方法相结合,无论是无模型的还是基于模型的。

      然而,单独的无监督状态编码可能是不够的。为了以一种简单的方式压缩状态,以便仅使用少量样本来学习策略,需要有关状态的哪些元素(图像观察)很重要的信息。这些信息应该来自奖励和终端信号。奖励和终端信息可以通过多种方式合并到编码中,但始终存在一个困难:信度分配。在特定时间步骤获得的奖励可能与过去许多时间步骤收到的观察有关。因此,用于此应用程序的良好模型将包含时间组件。

      半监督学习[35]和域迁移[36]可以极大地提高将强化学习应用于真正自动驾驶的数据可用性的两个领域。虽然只有一小部分驾驶数据可能具有与之相关的奖励和终端,但获取这些数据的成本很高,但图像嵌入——也许还有模型的其他方面——可以受益于从日常车辆中的行车记录仪捕获的驾驶数据。这些可用于预训练图像自动编码器。在基于模型的RL系统的上下文中,这些也可以用于近似状态转换函数,而半监督学习的进步可能允许我们在没有奖励/终端标签数据的情况下利用这些数据。另一方面,域转移可以让我们创建足够令人信服的模拟,这些模拟可以用来训练可以直接转移到真实汽车上的策略。

      这里使用的算法故意是一种常见的规范方法,选择它是为了证明强化学习可以轻松应用于驾驶。在更广泛的文献中已经对其进行了许多改进,包括使用自然梯度[37]。其他研究着眼于更好地将观察结果转换为状态,通常使用RNN [38][39]以及执行多步规划的方法,如[40]。毫无疑问,这些可以提供卓越的性能。

      基于模型的强化的新进展为自动驾驶研究提供了另一种令人兴奋的途径,例如[22]等工作在直接观察物理系统的状态时显示了模型的出色性能。这可以为基于图像的域提供显著的好处。替代的基于模型的方法包括[41],它学习模拟回合并在想象中学习。

      我们希望这篇论文能激发更多的研究,将强化学习研究应用于自动驾驶,或许可以将其与其他机器学习技术的元素(如模仿学习和控制理论)结合起来。这里的方法在半小时内解决了一个简单的驾驶任务——一天还能完成什么?

  • 相关阅读:
    技巧积累
    时间戳
    mysql删除表中重复数据,只保留一个最小的id的记录
    navicat 将自增长字段重置(重新从1开始)的方法
    python3 正则表达式点星问号(.*?)能不能匹配换行符?不能的话应该怎么写
    mysql解决select * from 表名 (where + 约束条件为空)
    InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised.解决办法
    windows下scrapy安装问题,以及Twisted安装报错(error: Microsoft Visual C++ 14.0 is required.)完美解决办法
    tesseract-ocr安装问题
    python设计模式之单例模式(转)
  • 原文地址:https://www.cnblogs.com/lucifer1997/p/16172074.html
Copyright © 2020-2023  润新知