Intro
强化学习中的一项挑战是创建环境。幸运的是,可以使用游戏引擎来完成这项工作。
这些引擎,如 Unity、Godot 或虚幻引擎,是用于创建视频游戏的程序。它们非常适合创建环境:它们提供物理系统、2D/3D 渲染等。
其中之一 Unity,创建了 Unity ML-Agents Toolkit,这是一个基于游戏引擎 Unity 的插件,允许我们使用 Unity 游戏引擎作为环境构建器来训练智能体。在第一个附加单元中,这就是我们用来训练 Huggy 接住木棍的方式!Source: ML-Agents documentation
https://github.com/Unity-Technologies/ml-agents
Unity ML-Agents Toolkit 提供了许多优秀的预制环境,包括踢足球(足球)、学习行走以及跳过大墙等。
- 第一个智能体将学习将雪球射向一个生成目标。
- 第二个智能体需要按下按钮生成金字塔,然后导航到金字塔,将其推倒,并移动到金字塔顶部的金砖。为此,它需要探索其环境,这将通过一种称为好奇心的技术来完成。
Unity ML-Agents 如何工作?
什么是 Unity ML-Agents?
Unity ML-Agents 是游戏引擎 Unity 的一个工具包,它允许我们使用 Unity 创建环境,或者使用现成的环境来训练我们的智能体。
六个组件

- 学习环境,它包含 Unity 场景(环境)和环境元素(游戏角色)。
- Python 低级 API,它包含用于交互和操作环境的低级 Python 接口。这是我们用来启动训练的 API。
- 外部通信器,它将学习环境(用 C#制作)与低级 Python API(Python)连接起来。
- Python 训练器:使用 PyTorch 编写的强化算法(PPO、SAC 等)。
- Gym 封装器:将 RL 环境封装在 gym 封装器中
- PettingZoo 封装器:PettingZoo 是 gym 封装器的多智能体版本。
学习组件内部
- 智能体组件,场景中的执行者。我们将通过优化其策略(这将告诉我们在每个状态下采取什么行动)来训练智能体。该策略被称为大脑。
- Academy—该组件协调智能体及其决策过程。将这个Academy视为处理 Python API 请求的。
<aside>
💡

- 智能体从环境中接收到状态$S_0$— 接收到游戏的第一帧(环境)
- 基于状态$S_0$,智能体采取行动$A_0$— 智能体会向右移动
- 环境进入新的状态$S_1$— 新的帧
- 环境给予智能体一些奖励$R_1$— 没有死亡(正奖励 +1)
</aside>

ML-Agents 的工作原理
Academy将向Agent发送指令并确保Agent同步:
- 收集观察
- 使用策略选择动作
- 执行动作
- 如果达到了最大步数或已完成—重置。
雪球目标环境
Agent的目标