深度强化学习课程文档

Unity ML-Agents 如何工作?

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

Unity ML-Agents 如何工作?

在训练我们的智能体之前,我们需要了解 ML-Agents 是什么以及它是如何工作的

什么是 Unity ML-Agents?

Unity ML-Agents 是游戏引擎 Unity 的一个工具包,它允许我们使用 Unity 创建环境或使用预设环境来训练我们的智能体

它由 Unity Technologies 开发,Unity Technologies 是 Unity 的开发者,Unity 是《看火人》、《茶杯头》和《城市:天际线》的创作者所使用的最著名的游戏引擎之一。

Firewatch
《看火人》是使用 Unity 制作的。

六个组成部分

Unity ML-Agents 有六个基本组成部分

MLAgents
来源:Unity ML-Agents 文档
  • 第一个是 学习环境,它包含 Unity 场景(环境)和环境元素(游戏角色)。
  • 第二个是 Python 低级 API,它包含 用于与环境交互和操纵环境的低级 Python 接口。它是我们用来启动训练的 API。
  • 然后,我们有 外部通信器,它 连接学习环境(用 C# 制作)和低级 Python API(Python)
  • Python 训练器用 PyTorch 制作的强化学习算法(PPO、SAC 等)
  • Gym 封装器:将 RL 环境封装在 gym 封装器中。
  • PettingZoo 封装器:PettingZoo 是 gym 封装器的多智能体版本。

学习组件内部

在学习组件内部,我们有 两个重要元素

  • 第一个是 智能体组件,场景中的参与者。我们将 通过优化其策略来训练智能体(这将告诉我们在每个状态下采取什么行动)。该策略被称为 大脑
  • 最后是 学院。该组件 协调智能体及其决策过程。将此学院视为处理 Python API 请求的老师。

为了更好地理解其作用,让我们回顾一下强化学习过程。这可以建模为一个循环,其工作方式如下

The RL process
强化学习过程:状态、动作、奖励和下一个状态的循环
来源:《强化学习:导论》,Richard Sutton 和 Andrew G. Barto

现在,让我们想象一个智能体学习玩平台游戏。强化学习过程如下所示

The RL process
  • 我们的智能体从 环境 中接收 状态 S0S_0 — 我们接收到游戏的第一帧(环境)。
  • 根据该 状态 S0S_0 智能体采取 行动 A0A_0 — 我们的智能体将向右移动。
  • 环境进入一个 状态 S1S_1 — 新帧。
  • 环境给智能体一些 奖励 R1R_1 — 我们没有死 (正奖励 +1)

这个强化学习循环输出一个 状态、行动、奖励和下一个状态 的序列。智能体的目标是 最大化预期累积奖励

学院将是 向我们的智能体发送指令并确保智能体同步 的机构

  • 收集观察
  • 使用你的策略选择你的行动
  • 采取行动
  • 如果达到最大步数或完成,则重置。
The MLAgents Academy

现在我们了解了 ML-Agents 的工作原理,我们已经准备好训练我们的智能体了。

< > 在 GitHub 上更新