深度强化学习课程文档
Huggy 的工作原理
并获得增强的文档体验
开始使用
Huggy 的工作原理
Huggy 是由 Hugging Face 制作的深度强化学习环境,基于 Unity MLAgents 团队的 Puppo the Corgi 项目。此环境是使用 Unity 游戏引擎 和 MLAgents 创建的。ML-Agents 是 Unity 游戏引擎的工具包,它允许我们使用 Unity 创建环境或使用预制环境来训练我们的智能体。

在此环境中,我们的目标是训练 Huggy 捡起我们扔的棍子。这意味着他需要正确地朝棍子移动。
状态空间,Huggy 的感知。
Huggy 不会“看”他的环境。相反,我们向他提供有关环境的信息
- 目标(棍子)位置
- 他与目标之间的相对位置
- 他腿的方向。
有了所有这些信息,Huggy 可以使用他的策略来决定下一步采取什么行动以实现他的目标。
动作空间,Huggy 可以执行的动作

关节马达驱动 Huggy 的腿。这意味着要达到目标,Huggy 需要学习正确地旋转他每条腿的关节马达,以便他能够移动。
奖励函数
奖励函数旨在使 Huggy 实现他的目标:捡到棍子。
请记住,强化学习的基础之一是奖励假设:目标可以描述为最大化预期累积奖励。
在这里,我们的目标是 Huggy 走向棍子但不要旋转太多。因此,我们的奖励函数必须实现此目标。
我们的奖励函数

- 方向奖励:我们奖励他接近目标。
- 时间惩罚:每次行动都会给予固定的时间惩罚,以迫使他尽快到达棍子。
- 旋转惩罚:如果 Huggy 旋转过多或转动过快,我们将惩罚他。
- 到达目标奖励:我们奖励 Huggy 到达目标。
如果您想了解此奖励函数在数学上是什么样子,请查看 Puppo the Corgi 演示文稿。
训练 Huggy
Huggy 的目标是学习正确地以最快速度跑向目标。为此,在每一步中,根据环境观察,他需要决定如何旋转他腿的每个关节马达,以便正确地移动(不过度旋转)并朝向目标。
训练循环如下所示

训练环境如下所示

这是一个随机生成棍子的地方。当 Huggy 拿到它时,棍子会生成在其他地方。我们为训练构建了环境的多个副本。这有助于通过提供更多样化的经验来加速训练。
现在您已经对环境有了大致的了解,您就可以训练 Huggy 去捡棍子了。
为此,我们将使用 MLAgents。如果您以前从未使用过它,请不要担心。在此单元中,我们将使用 Google Colab 训练 Huggy,然后您将能够加载您训练好的 Huggy 并直接在浏览器中与他玩耍。
在未来的一个单元中,我们将更深入地研究 MLAgents 并了解其工作原理。但目前,我们通过只使用提供的实现来保持简单。
< > 在 GitHub 上更新