前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Deepmind的星际争霸2强化学习教程(1):建立环境与训练模型

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

作者头像
AiTechYun
发布2018-03-05 14:43:53
2.3K0
发布2018-03-05 14:43:53
举报

去年,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

这是最重要的一步!

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,并且打开我们克隆的项目文件夹。

然后设置Project Structure.

选择[File > Project Structure]菜单.

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

7)运行训练脚本

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

然后在执行星际争霸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’]菜单。

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

结论

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

未来的教程

  • 了解Deep Q-Network算法
  • 了解星际争霸2的环境(观察和行动)
  • 在星际争霸2的迷你游戏中,开发Deep Q-Network
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-09-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ATYUN订阅号 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前提
  • 教程大纲
  • 结论
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档