深度强化学习课程文档

Huggy 的工作原理

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

Huggy 的工作原理

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

Huggy

在此环境中,我们的目标是训练 Huggy 捡起我们扔的棍子。这意味着他需要正确地朝棍子移动

状态空间,Huggy 的感知。

Huggy 不会“看”他的环境。相反,我们向他提供有关环境的信息

  • 目标(棍子)位置
  • 他与目标之间的相对位置
  • 他腿的方向。

有了所有这些信息,Huggy 可以使用他的策略来决定下一步采取什么行动以实现他的目标

动作空间,Huggy 可以执行的动作

Huggy action

关节马达驱动 Huggy 的腿。这意味着要达到目标,Huggy 需要学习正确地旋转他每条腿的关节马达,以便他能够移动

奖励函数

奖励函数旨在使 Huggy 实现他的目标:捡到棍子。

请记住,强化学习的基础之一是奖励假设:目标可以描述为最大化预期累积奖励

在这里,我们的目标是 Huggy 走向棍子但不要旋转太多。因此,我们的奖励函数必须实现此目标。

我们的奖励函数

Huggy reward function
  • 方向奖励:我们奖励他接近目标
  • 时间惩罚:每次行动都会给予固定的时间惩罚,以迫使他尽快到达棍子
  • 旋转惩罚:如果 Huggy 旋转过多或转动过快,我们将惩罚他。
  • 到达目标奖励:我们奖励 Huggy 到达目标

如果您想了解此奖励函数在数学上是什么样子,请查看 Puppo the Corgi 演示文稿

训练 Huggy

Huggy 的目标是学习正确地以最快速度跑向目标。为此,在每一步中,根据环境观察,他需要决定如何旋转他腿的每个关节马达,以便正确地移动(不过度旋转)并朝向目标。

训练循环如下所示

Huggy loop

训练环境如下所示

Huggy training env

这是一个随机生成棍子的地方。当 Huggy 拿到它时,棍子会生成在其他地方。我们为训练构建了环境的多个副本。这有助于通过提供更多样化的经验来加速训练。

现在您已经对环境有了大致的了解,您就可以训练 Huggy 去捡棍子了。

为此,我们将使用 MLAgents。如果您以前从未使用过它,请不要担心。在此单元中,我们将使用 Google Colab 训练 Huggy,然后您将能够加载您训练好的 Huggy 并直接在浏览器中与他玩耍。

在未来的一个单元中,我们将更深入地研究 MLAgents 并了解其工作原理。但目前,我们通过只使用提供的实现来保持简单。

< > 在 GitHub 上更新