【如何安装DeepMind星际争霸2环境训练强化学习模型?】
近日,DeepMind 开源了星际争霸 2 的强化学习环境,为大家了解强化学习提供了一个极好的机会。本文是一篇教程,讲解了如何设置 DeepMind 的环境并训练强化学习模型。
预先准备
- IntelliJ (或者 PyCharm)
- Python3
- StartCraft II (新手包也可以)
- GIT
该教程基于 Mac 环境。在此文章中,我们将使用深度 Q 网络训练脚本来解决 CollectMineralShards 小游戏。
训练结果的演示视频如下:
(视频地址)https://youtu.be/xpdQYnnxAko
教程大纲
- 安装 pysc2
- Star & Fork pysc2-examples
- 复制 pysc2-examples repository
- 下载星际争霸 2 地图
- 安装 TensorFlow、基线库
- 用 IntelliJ(或者 PyCharm)开始该项目
- 运行训练脚本
- 运行预训练模型
开始
1. 安装 Pysc2
首先,安装 pysc2 库。你可以直接在终端上输入指令行(我们使用的是 python3):
pip3 install pysc2
2.Star & Fork pysc2-examples
然后打开 Github 项目地址:https://github.com/chris-chris/pysc2-examples,Star 并 fork 该 repository,哈哈。
3. 复制该 pysc2-examples repository
你可以使用以下简单命令行直接复制该 repository:
git clone https://github.com/chris-chris/pysc2-examples
然后你就能在电脑上看到「pysc2-examples」目录了。
4. 下载星际争霸 2 地图
在运行该训练脚本之前,我们需要下载 mini-game 地图,并将这些地图保存到 StarCraft II/Maps 目录下。
下载地址:https://github.com/deepmind/pysc2/releases/download/v1.0/mini_games.zip
我使用的是 Mac,我电脑上星际争霸地图的位置是:
/Applications/StarCraft II/Maps/mini_games
如果你是 Windows 用户,可以在 StartCraft II/Maps/mini_games 目录下保存图片。
对 Linux 用户而言,存储目录可以是~/StarCraft II/Maps/mini_games。
5. 安装 TensorFlow、基线库
我们需要安装谷歌 TensorFlow 和 OpenAI 基线库。你可以输入以下命令行进行安装:
pip3 install tensorflow
pip3 install baselines
我使用 OpenAI 的基线库实现了强化学习模型。此外由于 OpenAI 的基线库依赖 TensorFlow,所以也需要安装 TensorFlow。我认为 OpenAI 的 baseline 是对深度 Q 网络的完美实现。
6. 用 IntelliJ(或 Pycharm)开始该项目
输入以下命令行就能开始训练:
python3 train_mineral_shards.py
我目前在 IntelliJ 上运行该项目。
执行 IntelliJ 或者 PyCharm,打开我们复制的项目文件夹。
设置 Project Structure,选择 [File > Project Structure]。
在 Module SDK 上选择 Python3 SDK。如果你找不到 SDK,点击 [New…] 按钮,添加 Python3 binary。
7. 运行训练脚本
接下来就是运行训练脚本。右键单击 train_mineral_shards.py,选择 [Run ‘train_mineral_shards’]。
然后你能在控制台看到运行星际争霸 2 的日志。
以下是对控制台日志的简单解释:
steps:我们向 marine 发送的命令行数量;
episodes:我们玩的游戏局数;
mean 100 episode reward:之前 100 episode 的平均奖励
mean 100 episode min…:之前 100 episode 的平均矿量
% time spent exploring:探索时间所占的比率 (Exploration & Exploit)
我设定的运行 step 量是 2 千万。
8. 运行预训练模型
我将该项目编码为:所有训练步完成后,训练的模型保存至 mineral_shards.pkl 文件夹。
act.save(“mineral_shards.pkl”)
如果你想使用该预训练模型,可以执行 enjoy script。
右键单击 enjoy_mineral_shards.py,选择 [Run ‘enjoy_mineral_shards’]。
然后可以看到 CollectMineralShards 地图的预训练代理。
结语
在此文章中,我们介绍了设定 DeepMind 星际争霸 2 环境和训练模型的方法。