分类 AWS-DeepRacer 下的文章


当您的 AWS DeepRacer 车辆沿着轨道行驶时,它会使用安装在正面的摄像头捕捉环境状态,并根据观测结果采取行动。您的 AWS DeepRacer 模型是一个将观察结果和行动映射到预期回报的函数。训练您的模型是要找到或学习最大化预期奖励的函数,这使得经优化的模型能够规定您的车辆可以采取哪些行动(速度和转向角对)以便车辆从头到尾都沿赛道行驶。

在实际应用中,该函数由一个神经网络表示,该网络的训练包括找到给定观察到的环境状态序列下的最佳网络权重和相应的车辆行动。最优性的基本标准由模型的奖励函数描述,该函数鼓励车辆在不造成交通事故或违规的情况下合法而有效地行驶。简单的奖励函数可以返回 0(如果车辆在赛道上)、-1(如果车辆不在赛道上)和 +1(如果车辆到达终点)。利用此奖励函数,车辆会因离开赛道而收到惩罚,并因到达目的地而获得奖励。如果时间或速度不是问题,这可能是一个很出色的奖励函数。

假设您想让车辆在不偏离直线赛道的情况下尽可能快速地行驶。当车辆加速和减速时,车辆可左右转向以避开障碍物或保持在赛道内。在高速行驶时转向过大很容易导致车辆偏离赛道。转向过小可能无法帮助避免与障碍物或其他车辆相撞。一般来说,最佳操作是以较低的速度进行较大的转向或沿较锐利的曲线较小转向。为了鼓励这种行为,您的奖励函数必须分配一个正分数来奖励高速下的较小转向,或分配一个负分数来惩罚高速下的大转向。类似地,奖励函数可以对沿着更直的路线加速或接近障碍物时减速返回正奖励。

奖励功能是您的 AWS DeepRacer 模型的重要组成部分。在训练 AWS DeepRacer 模型时,您必须提供该信息。训练涉及在赛道上从起点到终点的重复情节。在一个情节中,代理将与赛道交互以通过最大化预期的累积奖励来了解最佳的行动方案。最后,训练将产生一个强化学习模型。在训练之后,代理通过对模型运行推断来实施自动驾驶,以在任何给定状态下采取最佳行动。这可以在使用虚拟代理的模拟环境中完成,也可以在具有物理代理的真实环境中完成,例如 AWS Sc DeepRacer ale Vearce。

要在实践中训练强化学习模型,您必须选择一种学习算法。目前,AWS DeepRacer 控制台仅支持近端策略优化 (PPO) 和软行为体批判算法 (SAC) 算法。然后,你可以选择一个支持所选算法的深度学习框架,除非你想从头开始写一个。AWS 与 DeepRacer 集成 SageMaker ,使一些流行的深度学习框架(例如 TensorFlow)在 AWS DeepRacer 控制台中随时可用。使用框架可以简化训练作业的配置和执行,并使您能够专注于创建和增强特定于您的问题的奖励函数。

训练强化学习模型是一个迭代过程。首先,定义一个奖励函数来一次性覆盖代理在环境中的所有重要行为,这是很有挑战性的。其次,通常会调整超参数以确保令人满意的训练绩效。两者都需要试验。谨慎的方法是从一个简单的奖励功能开始,然后逐步增强它。AWS 使您能够克隆经过训练的模型,然后使用它来启动下一轮训练,从而 DeepRacer 促进了这一迭代过程。在每次迭代中,您可以向奖励函数引入一个或多个更复杂的处理方法来处理之前忽略的变量,也可以系统地调整超参数直到结果收敛。

与机器学习中的一般实践一样,您必须先评估一个训练后的强化学习模型以确定其有效性,然后再将它部署到物理代理以在实际情况中运行推理。对于自动驾驶,评估可以基于车辆从开始到结束在指定赛道上停留的频率或车辆在不偏离赛道的情况下完成路线的速度。AWS DeepRacer 模拟在 AWS RoboMaker 模拟器中运行,允许您运行评估并在排行榜上发布性能指标,以便与其他 AWS DeepRacer 用户训练的模型进行比较。

主题

  • 了解赛车类型并启用 AWS 支持的传感器 DeepRacer
  • 使用 AWS DeepRacer 控制台训练和评估 AWS DeepRacer 模型
  • AWS DeepRacer 奖励函数参考

在模拟中评估您的 AWS DeepRacer 模型

训练作业完成后,您应评估训练后的模型以评估其融合行为。评估方式是:在选定赛道上完成多项预赛,并根据训练后的模型推断出的可能操作让代理在赛道上移动。性能指标包括赛道完成百分比以及每个赛道从开始到结束或偏离赛道的时间。

要评估您的训练模型,您可以使用 AWS DeepRacer 控制台。为此,请按照本主题中的步骤操作。

在 AWS DeepRacer 控制台中评估经过训练的模型

  1. 通过 https://console.aws.amazon.com/deepracer 打开 AWS DeepRacer 控制台。
  2. 在主导航窗格中,选择 Models (模型),然后从 Models (模型) 列表中选择刚才训练的模型以打开模型详细信息页面。
  3. 选择 “评估” 选项卡。
  4. 在评估详细信息中,选择开始评估。

evaluation_details_start.png
如果训练作业未完成,您可以在训练作业状态更改为 Completed (已完成) 或模型的状态更改为 Ready (就绪) 后开始评估。

训练作业完成后,模型便已就绪。如果训练未完成,并且训练最终为失败状态,模型也可能处于 Ready (就绪) 状态。

  1. 在评估模型页面的竞赛类型下,输入评估名称,然后选择用于训练模型的赛车类型。

为了进行评估,您可以选择与训练中使用的赛事类型不同的赛事类型。例如,您可以为 head-to-bot 比赛训练模型,然后对其进行计时试验。一般来说,如果训练用赛事类型与评估用赛事类型不同,模型必须很好地推广运用。第一次运行时,您应该使用相同的赛事类型进行评估和训练。

  1. 在评估模型页面的评估标准下,选择要运行的试验数量,然后选择评估模型的轨道。

evaluation_select_track.png
通常情况下,您希望选择与在训练模型时所用赛道相同或相似的赛道。虽然您可以选择任何跑道来评估您的模型,但您只能期望在与训练所用赛道最相似的赛道上获得最佳成绩。

要查看您的模型能否很好地推广运用,请选择与训练中使用的赛道不同的评估赛道。

  1. 在 Evaluate model (评估模型) 页面的Virtual Race Submission (模拟赛提交)下,对于您的第一个模型,关闭 Submit model after evaluation (评估后提交模型) 选项。稍后,如果您想参加赛车赛事,请保持此选项处于启用状态。

deepracer-get-started-evaluate-virtual-race-submit.png

  1. 在 Evaluate model (评估模型) 页面上,选择 Start evaluation (开始评估) 以开始创建和初始化评估作业。

此初始化过程需要大约 3 分钟才能完成。

  1. 随着评估的进展,评估结果,包括试验时间和跟踪完成率,将显示在每次试验后的评估详细信息下方。在 Simulation video stream (模拟视频流) 窗口中,您可以查看代理在所选赛道上的表现。
  2. 您可以在评估作业完成之前停止评估作业。要停止评估作业,请选择评估卡右上角的停止评估,然后确认停止评估。

评估作业完成后,在 Evaluation results (评估结果) 下检查所有计时赛的绩效指标。随附的模拟视频流不再可用。

评估选择器中提供了模型评估的历史记录。要查看特定评估的详细信息,请从评估选择器列表中选择评估,然后从评估选择卡的右上角选择负载评估。

evaluation_selector_complete.png

对于这项特定的评估工作,经过训练的模型在完成试验时会产生显著的偏离轨道时间。作为第一次,这并不罕见。可能的原因包括训练没有融合,训练需要更长时间,需要扩大操作空间以便为代理提供更多的反应空间,或者需要更新奖励函数以处理不同的环境。

在这种情况下,您可以通过克隆之前训练的模型、更改奖励函数、调整超参数,然后重复该过程,直到总奖励融合并且改进了性能指标,以此来改进模型。有关如何改进训练的更多信息,请参阅训练和评估 AWS DeepRacer 模型。

要将经过完全训练的模型传输到您的 AWS DeepRacer 设备以便在物理环境中驾驶,您需要下载模型构件。为此,请在模型的详细信息页面上选择 Download model (下载模型)。如果您的 AWS DeepRacer 物理设备不支持新传感器,并且您的模型已使用新的传感器类型进行训练,则在现实环境中在 AWS DeepRacer 设备上使用模型时,您将收到一条错误消息。有关使用物理设备测试 AWS DeepRacer 模型的更多信息,请参阅操作您的 AWS DeepRacer 车辆 。

在与 AWSDeepRacer League 赛车赛事或 AWS DeepRacer 社区竞赛中指定的赛道相同或相似的赛道上训练模型后,即可将模型提交到 AWS DeepRacer 控制台中的虚拟竞赛。为此,请在主导航窗格上关注AWS虚拟赛道或社区竞赛。有关更多信息,请参阅加入 AWS DeepRacer 竞赛:

要训练模型以避障或 head-to-bot 竞赛,可能需要向模型和物理设备添加新的传感器。有关更多信息,请参阅 了解赛车类型并启用 AWS 支持的传感器 DeepRacer。

训练您的第一个 AWS DeepRacer 模型

本演练演示了如何使用 AWS DeepRacer 控制台训练您的第一个模型。


使用 AWS DeepRacer 控制台训练强化学习模型

了解如何在 AWS DeepRacer 控制台中找到 “创建模型” 按钮,开始您的模型训练之旅。

训练强化学习模型

  1. 如果这是您第一次使用 AWS DeepRacer,请从服务登录页面选择创建模型,或者在主导航窗格的 “强化学习” 标题下选择 “开始”。
  2. 在强化学习入门页面的步骤 2:创建模型下,选择创建模型。

    或者,在主导航窗格的强化学习标题下选择您的模型。在 Your models (您的模型) 页面上,选择 Create model
    (创建模型)。


指定模型名称和环境

为您的模型命名,并学习如何选择适合您的仿真轨道。

指定模型名称和环境

  1. 在创建模型页面的训练详细信息下,输入模型的名称。
  2. 或者,添加培训任务描述。
  3. 要了解添加可选标签的更多信息,请参阅Tagging。
  4. 在环境模拟下,选择一条轨道作为您的 AWS DeepRacer 代理的培训环境。在 “轨道方向” 下,选择 “顺时针” 或
    “逆时针”。然后选择下一步。

    第一次运行时,请选择具有简单形状和平滑转弯的赛道。在以后的迭代中,您可以选择更复杂的赛道来逐步改进模型。要为特定赛车活动训练模型,请选择最类似于活动赛道的赛道。

  5. 选择 Next (下一步)。

选择比赛类型和训练算法

AWS DeepRacer 控制台有三种竞赛类型和两种训练算法可供选择。了解哪些适合您的技能水平和训练目标。

选择比赛类型和训练算法

  1. 在创建模型页面的竞赛类型下,选择计时赛、物体回避或 Head-to-bot。

    对于您的第一次跑步,我们建议选择计时赛。有关针对该竞赛类型优化代理传感器配置的指导,请参阅为计时赛量身定制 AWS DeepRacer
    培训。

  2. 或者,在以后的运行中,选择物体避让绕过放置在所选轨道上固定或随机位置的静止障碍物。有关更多信息,请参阅为避物竞赛量身定制 AWS
    DeepRacer 训练:

    • a. 选择 Fixed Location 可在轨道两条车道上的用户指定位置生成盒子,或选择 “随机位置”
      生成在训练模拟的每一集开始时随机分布在两条车道上的物体。
    • b. 接下来,为轨道上的对象数量选择一个值。
    • c. 如果选择“固定位置”,则可以调整每个对象在轨道上的位置。对于车道布局,请在内部车道和外部车道之间进行选择。默认情况下,对象均匀分布在轨道上。要更改物体起点和终点线之间的距离,请在起点和终点之间的位置
      (%) 字段中输入 7 到 90 之间的距离的百分比。
  3. 或者,要想进行更雄心勃勃的跑步,可以选择 H read-to-bot ac ing
    与最多四辆以恒定速度行驶的机器人车辆竞速。要了解更多信息,请参阅 为 head-to-bot 比赛量身定制 AWS DeepRacer
    训练。

    • 在 “选择机器人载具的数量” 下,选择你希望你的代理训练多少个机器人载具。
    • 接下来,选择您希望机器人车辆在轨道上行驶的速度(以毫米每秒为单位)。
    • (可选)选中 “启用换道” 复选框,让机器人载具能够每 1-5 秒随机更改车道。
  4. 在训练算法和超参数下,选择软角色批判算法 (SAC) 或近端策略优化 (PPO) 算法。在 AWS DeepRacer 控制台中,SAC
    模型必须在持续的操作空间中进行训练。PPO 模型可以在连续或离散的动作空间中训练。
  5. 在训练算法和超参数下,按原样使用默认的超参数值。

    稍后,为了提高训练性能,请展开 Hyperparameters (超参数) 并按如下所示修改默认超参数值:

    • 对于 Gradient descent batch size (梯度下降批大小),选择可用选项。
    • 对于 Number of epochs (纪元数),设置有效值。
    • 对于 Learning rate (学习速率),设置有效值。
    • 对于 SAC 阿尔法值(仅限 SAC 算法),设置有效值。
    • 对于 Entropy (熵),设置有效值。
    • 对于Discount factor (折扣系数),设置有效值。
    • 对于 Loss type (损耗类型),选择可用选项。
    • 对于 Number of experience episodes between each policy-updating
      iteration (每次策略更新迭代之间的经验情节数),设置有效值。

    有关超级参数的更多信息,请参阅系统地调整超参数。

  6. 选择下一步。

定义动作空间

在 “定义动作空间” 页面上,如果您选择使用 Soft Actor Critic (SAC) 算法进行训练,则您的默认动作空间是连续动作空间。如果您选择使用近端策略优化 (PPO) 算法进行训练,请在连续动作空间和离散动作空间之间进行选择。要详细了解每种动作空间和算法如何塑造代理的训练体验,请参阅AWS DeepRacer 行动空间和奖励功能。

定义连续动作空间(SAC 或 PPO 算法)

  1. 在 “定义连续动作空间” 下,选择左转向角度范围和右转向角度范围的角度。

尝试为每个转向角度范围输入不同的角度,并观察范围变化的可视化效果,以在动态扇区图上表示您的选择。
deepracer-dynamic-sector-graph.png

  1. 在 “速度” 下,输入代理的最小和最大速度,以毫米每秒为单位。

注意您的更改是如何反映在动态扇区图上的。

  1. 可选)选择 “重置为默认值” 以清除不需要的值。我们鼓励在图表上尝试不同的值来进行实验和学习。
  2. 选择下一步。

定义离散动作空间(仅限 PPO 算法)

  1. 从下拉列表中选择转向角度粒度值。
  2. 为代理的最大转向角度选择 1 到 30 度之间的值。
  3. 在下拉列表的 Speed(精度)选择一个选择一个选择一个选择一个选择一个选择一
  4. 为代理的最大速度选择 0.1-4 之间的以毫米每秒为单位的值。
  5. 使用操作列表上的默认操作设置,或者,也可以选择开启高级配置来微调设置。如果在调整值后选择 “以前配置” 或关闭 “高级配置”,则会丢失所做的更改。
    deepracer-advanced-configuration-toggle.png
  • a. 在转向角度列中输入一个介于 -30 和 30 之间的度值。
  • b. 在 “速度” 列中输入一个介于 0.1 到 4 之间的值(以毫米/秒为单位),最多可执行九个动作。
  • c. (可选)选择添加操作以增加操作列表中的行数。

deepracer-add-an-action.png

  • d.(可选)在某行上选择 X 将其删除。
  1. 选择下一步。

选择一辆选择一辆车

了解如何开始使用虚拟汽车。每月参加公开组比赛,赚取新的定制汽车、油漆和改装工作。

选择虚拟汽车

  1. 在选择车辆外壳和传感器配置页面上,选择与您的竞赛类型和行动空间兼容的外壳。如果你的车库里没有匹配的汽车,请前往主导航窗格的 “强化学习” 标题下的 “你的车库” 创建一辆车。

对于计时赛训练,你只需要The DeepRacer O riginal的默认传感器配置和单镜头摄像头,但只要动作空间匹配,所有其他外壳和传感器配置就可以正常工作。有关更多信息,请参阅为计时赛量身定制 AWS DeepRacer 培训:

对于物体避开训练,立体摄像头很有帮助,但单个摄像头也可以用于避开固定位置的静止障碍物。LiDAR 传感器是可选的。请参阅AWS DeepRacer 行动空间和奖励功能。

对于 Head-to-bot 训练,除了单个摄像头或立体摄像头外,LiDAR 单元最适合在通过其他移动车辆时检测和避开盲点。要了解更多信息,请参阅 为 head-to-bot 比赛量身定制 AWS DeepRacer 训练。

  1. 选择下一步。

自定义您的奖励功能

奖励功能是强化学习的核心。学会用它来激励你的汽车(代理人)在探索赛道(环境)时采取具体行动。就像鼓励和劝阻宠物的某些行为一样,你可以使用这个工具来鼓励你的汽车尽可能快地完成一圈,并阻止它驶出赛道或与物体碰撞。

自定义您的奖励功能

  1. 在Create model (创建模型) 页面上的Reward function (奖励函数) 下,按原样使用第一个模型的默认奖励函数示例。

deepracer-reward-function-example-editor.png

稍后,您可以通过选择 Reward function examples (奖励函数示例) 来选择另一个示例函数,然后选择 Use code (使用代码) 接受选定的奖励函数。

有四个示例函数可供您开始。它们说明了如何跟随轨道中心(默认)、如何将代理保持在轨道边界内、如何防止曲折行驶,以及如何避免撞上静止的障碍物或其他移动的车辆。

要了解有关奖励函数的更多信息,请参阅AWS DeepRacer 奖励函数参考。

  1. 在停止条件下,保持默认的最大时间值不变,或者设置一个新值来终止训练作业,以帮助防止长时间运行(以及可能失控的)训练作业。

在训练的早期阶段进行试验时,您应该从此参数的较小的值开始,然后逐渐延长训练的时间。

  1. 在 “自动提交到 AWS” 下 DeepRacer,默认情况下,在完成培训并有机会赢取奖品后 DeepRacer 自动将此模型提交到 A WS。或者,您可以通过选择复选标记来选择不输入您的模型。
  2. 在联赛要求下,选择您的居住国并选中复选框接受条款和条件。
  3. 选择创建模型开始创建模型并配置训练作业实例。
  4. 提交后,等待训练作业完成初始化,然后运行。

初始化过程需要几分钟才能从 “初始化” 更改为 “进行中”。

  1. 观看 Reward graph (奖励图) 和 Simulation video stream (模拟视频流) 以了解训练作业的进度。您可以每隔一段时间选择 Reward graph (奖励图) 旁边的刷新按钮来刷新 Reward graph (奖励图),直到训练作业完成。

deepracer-training-in-progress.png
训练作业在AWS云端运行,因此您无需保持 AWS DeepRacer 控制台处于打开状态。在作业进行期间,您可以随时返回控制台检查您的模型。

如果模拟视频直播窗口或奖励图表显示无响应,请刷新浏览器页面以更新训练进度。

AWS DeepRacer入门

要开始使用 AWS DeepRacer,让我们先了解以下步骤:使用 AWS DeepRacer 控制台为代理配置适合您的自动驾驶要求的传感器,使用指定传感器为代理训练强化学习模型,并评估经过训练的模型以确定模型的质量。训练完模型后,您可以对其进行迭代并将其提交到竞赛。
包含下面两个主题,训练模型和评估模型

主题

  • 训练您的第一个 AWS DeepRacer 模型
  • 在模拟中评估您的 AWS DeepRacer 模型

Simulated-to-real 性能差距

由于模拟无法准确收集真实环境的所有方面,在模拟中训练的模型可能在真实环境中的表现不如人意。此类差异通常被称为 simulated-to-real (sim2real)性能差距。

AWS 已努力最大限度 DeepRacer 地减少 sim2real 的性能差距。例如,模拟代理设计为每秒执行 10 个操作。这与 AWS DeepRacer 设备运行推理的频率相匹配,大约每秒 10 次推理。再例如,在训练的每个情节的开始时,代理的位置是随机的。这可以最大限度提升代理平均地学习赛道所有部分的可能性。

为了帮助减少 real2sim 性能差距,对于模拟赛道和真实赛道,请确保使用相同或相似的颜色、形状和尺寸。为减少视觉干扰,请在真实赛道周围使用隔板。此外,还要仔细校准设备的速度范围和转向角度,以使训练中使用的动作空间与现实世界相匹配。在与训练所用赛道不同的模拟赛道中评估模型性能可以展示出 real2real 性能差距的程度。

有关在训练 AWS DeepRacer 模型时如何缩小 sim2real 差距的更多信息,请参阅针对真实环境优化训练 AWS DeepRacer 模型。