Unity ML-Agents 是如何工作的?
在训练我们的智能体之前,我们需要了解**什么是 ML-Agents 以及它是如何工作的**。
什么是 Unity ML-Agents?
Unity ML-Agents 是游戏引擎 Unity 的一个工具包,**允许我们使用 Unity 创建环境或使用预制环境来训练我们的智能体**。
它由Unity Technologies 开发,Unity Technologies 是 Unity 的开发者,Unity 是 Firewatch、Cuphead 和 Cities: Skylines 等游戏开发者使用的最著名的游戏引擎之一。
六个组件
使用 Unity ML-Agents,您拥有六个基本组件
- 第一个是学习环境,其中包含**Unity 场景(环境)和环境元素**(游戏角色)。
- 第二个是Python 底层 API,其中包含**用于交互和操作环境的底层 Python 接口**。这是我们用来启动训练的 API。
- 然后,我们有外部通信器,它**将学习环境(使用 C# 制作)与底层 Python API(Python)连接起来**。
- Python 训练器:**使用 PyTorch 制作的强化学习算法 (PPO、SAC…)**。
- Gym 包装器:将 RL 环境封装在 Gym 包装器中。
- PettingZoo 包装器:PettingZoo 是 Gym 包装器多智能体版本。
学习组件内部
在学习组件内部,我们有两个重要的元素
- 第一个是智能体组件,场景中的行动者。我们将通过**优化其策略来训练智能体**(这将告诉我们在每个状态下采取什么行动)。策略称为大脑。
- 最后,是学院。此组件**协调智能体及其决策过程**。可以将此学院视为处理 Python API 请求的老师。
为了更好地理解其作用,让我们记住 RL 过程。这可以建模为一个循环,其工作方式如下
现在,让我们想象一个智能体学习玩平台游戏。RL 过程如下所示
- 我们的智能体从**环境**接收**状态 ** — 我们收到游戏的第一帧(环境)。
- 基于该**状态 **,智能体采取**动作 ** — 我们的智能体将向右移动。
- 环境进入一个新的状态 — 新帧。
- 环境给予智能体一些奖励 — 我们没有死亡(正向奖励 +1)。
这个强化学习循环输出一系列的状态、动作、奖励和下一个状态。智能体的目标是最大化预期累积奖励。
Academy 将会发送指令给我们的智能体并确保智能体同步。
- 收集观察结果
- 使用策略选择你的动作
- 采取行动
- 如果达到最大步数或完成任务,则重置。
现在我们了解了 ML-Agents 的工作原理,我们准备训练我们的智能体了。
< > GitHub 更新