Deepmind的pysc2星际争霸2强化学习教程(1):建立环境与训练模型

2017年09月05日 由 yining 发表 112373 0
去年,DeepMind开源将星际争霸II的强化学习环境公之于众,很多人都为之兴奋。

https://deepmind.com/blog/deepmind-and-blizzard-release-starcraft-ii-ai-research-environment/

我是暴雪游戏的忠实粉丝,尤其是星际争霸2,所以我把强化学习环境看成是一个学习的好机会,而且也有很多乐趣。我这篇文章将利用星际争霸2写一份建立环境和训练一些模型的入门教程。

前提



  • IntelliJ (或者PyCharm)

  • Python3

  • 星际争霸2 (甚至启动包也在工作)

  • GIT


本教程是基于Mac环境的。

在文章中,我们将运行训练脚本,以使用深度Q-Network来解决CollectMineralShards的迷你游戏。

当我们运行训练脚本时,你可以在如下视频中看到训练结果。
https://m.youtube.com/watch?v=xpdQYnnxAko&ebc=ANyPxKpYz12v2bTrItOMkx_0vJfOp7RM9Eh2d2JedrlgTQSx2jKElQYgkorgvlAFdWmaXCEeFJ7oNG3qyrSfq1CA0_mcpBdf4Q

教程大纲


1)安装pysc2

2)Star & Fork pysc2-examples

3)克隆pysc2-examples库

4)下载迷你游戏星际争霸2地图

5)安装Tensorflow,基线库

6)使用IntelliJ(或PyCharm)打开项目

7)运行训练脚本

8)运行预先训练的模型

现在开始。

1)安装pysc2

首先,我们将安装pysc2库。你可以在终端上输入命令。(因为我们使用的是python3,所以你必须输入pip3)
pip3 install pysc2

然后pysc2安装完毕。

2)Star & Fork pysc2-examples


接下来,打开右边的Github链接。https://github.com/chris-chris/pysc2-examples

这是最重要的一步!

Deepmind的pysc2星际争霸2强化学习教程

3)克隆pysc2-examples库


让我们克隆这个项目。你可以使用下面这个简单的命令克隆存储库。
git clone https://github.com/chris-chris/pysc2-examples

然后,你将在计算机上看到“pysc2-examples”目录。

4)下载迷你游戏星际争霸2地图


在运行训练脚本之前,我们必须下载迷你游戏地图。并将这些地图保存到StarCraft II/Maps目录中。

下载迷你游戏地图:https://github.com/deepmind/pysc2/releases/download/v1.0/mini_games.zip

我是Mac用户,下面是我的星际争霸2地图的位置

/Applications/StarCraft II/Maps/mini_games

如果你是一个Windows用户,可以在StarCraft II/Maps/mini_games目录中保存地图。

对于Linux用户,在 ~/StarCraft II/Maps/mini_games目录中保存地图。

5)安装Tensorflow,基线库


我们需要更多的库!比如Google Tensorflow和OpenAI基线库。你可以通过键入下面的命令来安装这些库。
pip3 install tensorflow

pip3 install baselines

我使用OpenAI的基线库实现了增强模型。因为OpenAI的基线库依赖于Tensorflow,所以我们需要安装Tensorflow。
我认为OpenAI的基线是Deep Q-Network的最好的实现,这也是我使用它的原因!

我希望阅读本文的大多数读者已经安装了Tensorflow库:)

6)使用IntelliJ(或PyCharm)打开项目

通过键入下面的命令,训练将开始。
python3 train_mineral_shards.py

我强烈建议你在IDE(集成开发环境)中开发你的强化学习。这是因为我将使用调试模式来解释细节环境变量:)我现在在IntelliJ上运行这个项目。

执行IntelliJ或PyCharm,并且打开我们克隆的项目文件夹。

Deepmind的pysc2星际争霸2强化学习教程

然后设置Project Structure.

选择[File > Project Structure]菜单.

Deepmind的pysc2星际争霸2强化学习教程

在Module SDK上选择Python3 SDK。
如果你找不到SDK,请单击[New...]按钮并添加你的python3二进制文件。

Deepmind的pysc2星际争霸2强化学习教程

7)运行训练脚本


然后,让我们运行训练脚本。右键单击train_mineral_shards.py,然后选择[Run 'train_mineral_shards']菜单。

Deepmind的pysc2星际争霸2强化学习教程

然后在执行星际争霸2的时候,你会看到控制台上的日志。

Deepmind的pysc2星际争霸2强化学习教程

这是控制台日志的简要说明。

  • steps:我们发送给海军陆战队(marines)的命令的数量。

  • episodes: 我们玩的游戏的集数。

  • mean 100 episode reward:上100集的平均奖励。

  • mean 100 episode min…:上100集的平均矿物。

  • % time spent exploring:探索(探索和开发)的百分比。


目前,我设置了运行2000万步的训练脚本。(它花费了很多时间,所以如果你想在你的笔记本上运行,我建议你将训练步骤设置为50万步)。

8)运行预先训练的模型


我编写了程序,在所有训练步骤之后将训练过的模型保存到mineral_shards.pkl文件中。
act.save("mineral_shards.pkl")

如果你想使用这种预先训练的模型,你可以执行enjoy脚本。右键单击 enjoy_mineral_shards.py,然后选择[Run 'enjoy_mineral_shards']菜单。

Deepmind的pysc2星际争霸2强化学习教程

然后你就可以看到预先训练的CollectMineralShards地图。

结论


在本文中,我介绍了设置环境和对模型进行训练的方式。

未来的教程

  • 了解Deep Q-Network算法

  • 了解星际争霸2的环境(观察和行动)

  • 在星际争霸2的迷你游戏中,开发Deep Q-Network


Deepmind的pysc2星际争霸2强化学习教程

 

 
欢迎关注ATYUN官方公众号
商务合作及内容投稿请联系邮箱:bd@atyun.com
评论 登录
热门职位
Maluuba
20000~40000/月
Cisco
25000~30000/月 深圳市
PilotAILabs
30000~60000/年 深圳市
写评论取消
回复取消