深度强化学习课程文档

雪球目标环境

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

雪球目标环境

SnowballTarget

SnowballTarget 是我们使用 Kay Lousberg 的资产在 Hugging Face 创建的一个环境。本单元末尾有一个可选章节,如果您想学习使用 Unity 并创建自己的环境

智能体的目标

您将要训练的第一个智能体叫做 Julien 这只熊 🐻。Julien 被训练来用雪球击中目标

在这个环境中,Julien 的目标是在有限的时间内(1000 步)击中尽可能多的目标。它需要正确地调整自己与目标的关系并射击来实现这一点。

此外,为了避免“雪球乱扔”(即每一步都射击雪球),Julien 有一个“冷却”系统(它在射击后需要等待 0.5 秒才能再次射击)。

Cool Off System
智能体需要等待 0.5 秒才能再次射击雪球

奖励函数与奖励工程问题

奖励函数很简单。每当智能体的雪球击中目标时,环境会给予 +1 的奖励。因为智能体的目标是最大化预期的累积奖励,所以它会尝试击中尽可能多的目标

Reward system

我们可能有一个更复杂的奖励函数(例如,为了促使智能体更快地移动而施加惩罚)。但是,在设计环境时,您需要避免奖励工程问题,即为了强制智能体按照您希望的方式行动而设计过于复杂的奖励函数。为什么?因为这样做,您可能会错过智能体通过更简单的奖励函数发现的有趣策略

用代码来说,它看起来是这样的

Reward

观察空间

关于观察,我们不使用正常的视觉(帧),而是使用射线投射

可以将射线投射视为激光,它们会检测是否穿过物体。

Raycasts
来源:ML-Agents 文档

在此环境中,我们的智能体有多组射线投射

Raycasts

除了射线投射,智能体还会获得一个“我能射击吗”的布尔值作为观察。

Obs

动作空间

动作空间是离散的

Action Space < > 在 GitHub 上更新