稳定基线:易于使用的强化学习库
这是强化学习的美妙之处,你需要很少的假设(这里只设计奖励功能),它会直接优化你想要的东西(在赛道上快速赢得比赛!)。
注意:这不是第一篇关于小型自动驾驶汽车强化学习的博客文章,但与之前的方法相比,所提出的技术只需几分钟 (而非数小时)即可学习良好而顺畅的控制政策(~5到10)平滑控制器的分钟,非常平滑的控制器约20分钟)。
现在我们已经简要介绍了什么是RL,我们将详细介绍,从解剖Wayve.ai方法开始,这是我们方法的基础。
学习驾驶一天 - Wayve.ai方法的关键要素Wayve.ai描述了一种在简单的道路上训练现实世界中的自动驾驶汽车的方法。该方法由几个关键元素组成。
首先,他们训练特征提取器(这里是变分自动编码器或VAE)将图像压缩到较低维度的空间。该模型经过训练以重建输入图像,但包含一个瓶颈,迫使其压缩信息。
从原始数据中提取相关信息的这一步骤称为状态表示学习(SRL),是我的主要研究课题。这显然可以减少搜索空间,从而加快培训速度。下面的图表显示了SRL和端到端强化学习之间的联系,也就是说,从像素直接学习控制策略。
注意:训练自动编码器不是提取有用功能的唯一解决方案,您也可以训练例如逆动力学模型。
政策学习中的特征提取解耦
第二个关键要素是使用名为Deep Deterministic Policy Gradient(DDPG)的RL算法,该算法使用VAE特征作为输入来学习控制策略。每个剧集后都会更新此政策。该算法的一个重要方面是,它有一个记忆,被称为重播缓冲区,在那里它与它的环境之间的相互作用被记录下来,可以“回放”之后。因此,即使汽车不与世界互动,它也可以从这个缓冲区中获取经验来更新其政策。
对汽车进行培训,以便在人为干预之前最大化行驶的米数。这是最后的关键因素:一旦汽车开始离开,人类操作员就会结束这一事件。这种提前终止非常重要(如Deep Mimic所示)并且可以防止汽车探索无法解决任务的区域。
学会在几分钟内开车 - 更新的方法尽管Wayve.ai技术原则上可以起作用,但是它有一些问题需要解决,以便将其应用于自动驾驶的RC车。
首先,因为在每集之后训练特征提取器(VAE),所以特征的分布不是静止的。也就是说,这些特征随着时间的推移而发生变化,并可能导致政策培训的不稳定性。此外,在笔记本电脑上(没有GPU)训练VAE的速度非常慢,因此我们希望避免在每集后重新训练VAE。
为了解决这两个问题,我决定事先训练VAE并使用Google Colab笔记本来保存我的电脑。这样,策略就会使用固定的特征提取器进行训练。
在下图中,我们将探讨VAE学到了什么。我们在其潜在空间中导航(使用滑块)并观察重建的图像。
探索 VAE学到的潜在空间
然后,已知DDPG是不稳定的(从某种意义上说,它的性能在训练期间可能会发生灾难性的下降)并且很难调整。幸运的是,最近的一个名为Soft Actor-Critic(SAC)的算法具有相同的性能,并且更容易调整 。
使用了稳定基线编写的Soft Actor-Critic(SAC)实现 (如果你正在使用RL,我绝对建议你去看看;)),它有最新的算法改进它。
最后,更新了奖励功能和动作空间,以平滑控制并最大化速度。
奖励功能:快速前进但保持在轨道上!机器人车没有任何里程计(也没有速度传感器),因此行驶的米数(也不是速度)不能用作奖励。
因此,在每个时间步骤给予“生命奖励”(即,留在赛道上的 1奖励)并使用“崩溃罚款”(-10奖励)惩罚机器人以离开赛道。此外,我发现在太快的情况下惩罚车辆也是有益的:与油门成比例的额外负面奖励会增加到撞车罚款中。
最后,因为 我们想要快速行驶,因为它是一辆赛车,我添加了一个与当前油门成比例的“油门奖励”。 这样,机器人将尝试保持在轨道上并同时最大化其速度。
把它们加起来: