深度强化学习课程文档

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 上更新