

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 训练和评估 AWS DeepRacer 模型
<a name="create-deepracer-project"></a>

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

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

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

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

 要在实践中训练强化学习模型，您必须选择一种学习算法。目前，AWS DeepRacer 控制台仅支持近端策略优化 ([PPO](https://arxiv.org/pdf/1707.06347.pdf)) 和软角色批评者 (SAC) 算法。然后，您可以选择支持所选算法的深度学习框架，除非您想从头开始编写。AWS DeepRacer 与 A SageMaker I 集成，使一些常用的深度学习框架（例如 [TensorFlow](https://www.tensorflow.org/)）在 AWS DeepRacer 控制台中随时可用。使用框架可以简化训练作业的配置和执行，并使您能够专注于创建和增强特定于您的问题的奖励函数。

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

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

**Topics**
+ [了解赛车类型并启用 AWS 支持的传感器 DeepRacer](deepracer-choose-race-type.md)
+ [使用 AWS DeepRacer 控制台训练和评估 AWS DeepRacer 模型](deepracer-console-train-evaluate-models.md)
+ [AWS DeepRacer 奖励功能参考](deepracer-reward-function-reference.md)