深度强化学习课程文档

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 上