深度强化学习课程文档
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 上