

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

# AWS DeepRacer 行动空间和奖励功能
<a name="deepracer-how-it-works-action-space"></a>

**操作空间**  
在强化学习中，代理与环境交互时可用的所有有效操作或选择的集合称为操作空间。在 AWS DeepRacer 控制台中，您可以在离散或连续的操作空间中训练代理。

**离散的操作空间**  
离散的操作空间表示代理在有限集合中每种状态下可能执行的所有操作。对于 AWS 来说 DeepRacer，这意味着对于每种逐渐不同的环境情况，代理的神经网络会根据来自其摄像头和（可选）激光雷达传感器的输入来选择汽车的速度和方向。选择仅限于一组预定义的转向角度和油门值组合。

在接近转弯处的离散动作空间中的 AWS DeepRacer 汽车可以选择加速或刹车，然后向左、向右或直行。这些操作被定义为转向角度和速度的组合，为代理创建了 0-9 的选项菜单。例如，0 可以表示 -30 度，0.4 m/s, 1 could represent -30 degrees and 0.8 m/s, 2 could represent -15 degrees and 0.4 m/s, 3 could represent -15 degrees and 0.8 m/s 等到 9。负度数使汽车向右转，正度数使汽车向左转，0 保持车轮直行。

AWS DeepRacer 默认的离散操作空间包含以下操作：


**AWS DeepRacer 默认的离散操作空间**  

| 操作数量 | 操控方向 | 速度 | 
| --- | --- | --- | 
| 0 | -30 度 | 0.4 米/秒 | 
| 1 | -30 度 | 0.8 米/秒 | 
| 2 | -15 度 | 0.4 米/秒 | 
| 3 | -15 度 | 0.8 米/秒 | 
| 4 | 0 度 | 0.4 米/秒 | 
| 5 | 0 度 | 0.8 米/秒 | 
| 6 | 15 度 | 0.4 米/秒 | 
| 7 | 15 度 | 0.8 米/秒 | 
| 8 | 30 度 | 0.4 米/秒 | 
| 9 | 30 度 | 0.8 米/秒 | 

**连续操作空间**  
连续的操作空间允许代理从每个状态值的范围中选择一个操作。就像离散的操作空间一样，这意味着对于每种渐进不同的环境情况，代理的神经网络都会根据来自摄像头和（可选）LiDAR 传感器的输入为赛操选择速度和方向。但是，在连续的操作空间中，您可以定义代理从中选择其操作的选项范围。

在此示例中，在接近转弯的连续动作空间中的 AWS DeepRacer 汽车可以选择从 0.75 m/s 到 4 m/s 的速度，然后通过选择 -20 到 20 度的转向角度来向左、向右或直行。

**离散与连续**  
使用连续动作空间的好处是，你可以编写奖励函数，训练模型以激励在轨道上特定时刻的 speed/steering 动作，从而优化性能。从一系列操作中进行选择也有可能平稳改变速度和转向值，在训练有素的模型中，这可能会在现实生活中产生更好的结果。

在离散操作空间设置中，将代理的选择限制在有限数量的预定义操作上，这使您有责任了解这些操作的影响，并根据环境（赛道、赛车形式）和您的奖励函数来定义它们。但是，在连续的动作空间设置中，代理会学会从你通过训练提供的 min/max 界限中选择最佳速度和转向值。

尽管提供一系列值供模型选择似乎是更好的选择，但代理必须训练更长的时间才能学会选择最佳操作。成功还取决于奖励函数的定义。

**奖励函数**  
当代理探索环境时，代理会学习一个价值函数。价值函数可帮助您的代理在观察环境后判断所采取的操作有多好。值函数使用您在 AWS DeepRacer 控制台中编写的奖励函数对操作进行评分。例如，在 AWS DeepRacer 控制台的跟随中心线示例奖励功能中，一个好的动作会使代理保持在轨道中心附近，并且获得的分数高于不良动作，后者会使代理远离轨道中心。

随着时间的推移，函数可以帮助代理学习增加总奖励的策略。最优或最佳策略是在代理人花在探索环境上的时间与其利用或充分利用策略从经验中学到的知识所花费的时间之间取得平衡。

在遵循中心线 [AWS DeepRacer 示例奖励函数](deepracer-reward-function-examples.md#deepracer-reward-function-example-0)示例中，代理首先采取随机操作来探索环境，这意味着它在保持轨道中心方面做得不太好。随着时间的推移，代理开始了解哪些操作会使其保持在中心线附近，但是如果它通过继续采取随机操作来做到这一点，则需要很长时间才能学会整圈保持在赛道中心附近。因此，当策略开始学习良好的行动时，代理开始使用这些操作，而不是随机采取行动。但是，如果它总是使用或利用良好的行动，则代理将不会取得任何新的发现，因为它不再探索环境。这种做法被称为勘探和开发权衡。

尝试使用默认的操作空间和奖励函数示例。探索完所有内容后，通过设计自己的[自定义操作空间](deepracer-console-train-evaluate-models.md#deepracer-define-action-space-for-training)和[自定义奖励函数](deepracer-console-train-evaluate-models.md#deepracer-train-models-define-reward-function)，将您的知识付诸实践。