新智元编译
来源:chris-chris.ai
作者:Chris Song
编译:文强
【新智元导读】DeepMind此前开源了《星际争霸2》机器学习训练平台,这个平台对于state-of-the-art的深度强化学习算法来说是极好的测试平台。希望下面这份教程能帮你更快更好地上手。
DeepMind 之前开源了《星际争霸2》的深度强化学习平台,这是个很好的训练环境,学起来也很有趣。下面是一份有关设置环境和训练模型的教程,基于Mac环境。我们会跑一遍训练脚本,使用Deep Q-Network解决CollectMineralShards这个mini-game。享受学习吧~
在开始之前,你需要准备好:
IntelliJ ( or PyCharm)
Python3
StarCraft II (even Starter Pack is working)
GIT
先上结果:
这篇教程的结构:
1)安装pysc2
2)Star&Fork pysc2样本
3)克隆pysc2-examples库
4)下载《星际争霸2》地图
5)安装Tensorflow和baseline库
6)用IntelliJ(或PyCharm)打开项目
7)运行训练脚本
8)运行预训练模型
接下来,我们就开始吧!
首先,我们要安装pysc2库。
在终端上输入命令就好了(由于我们使用的是python3,必须输入pip3)。
pip3 install pysc2
然后,你的pysc2就安装好了。
接下来,打开下面的Github链接:
https://github.com/chris-chris/pysc2-examples
这是最重要的一步!记得给我的库加星哦☺
Fork也来一下(译注:现在Star和Fork的数量都有所增长,Star已经超过150啦)~
简单一行命令就能克隆这个库了
git clone https://github.com/chris-chris/pysc2-examples
然后你就能在计算机上看见“pysc2-examples”的目录了。
在运行训练脚本之前,我们必须下载mini-game的游戏地图,并将这些地图保存到星际争霸2D的地图目录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
我们需要更多库!我们需要Google Tensorflow 和 OpenAI baselines这些库。
使用以下命令:
pip3 install tensorflow
pip3 install baselines
我使用OpenAI's baselines库实现了强化模型。OpenAI's baselines库依赖于Tensorflow,因此我们需要安装Tensorflow。 我认为OpenAI的基线是Deep Q-Network实现里最漂亮的,这也是我用它的原因!
我猜,看这篇文章的人,你们大多数都已经安装TensorFlow库了吧:)
输入下面的命令行,训练就开始了
python3 train_mineral_shards.py
提醒一下,我强烈建议你在IDE(集成开发环境)上开发强化学习,因为我接下来会使用Debug mode来解释环境变量:) 我目前在IntelliJ上运行这个项目。
运行 IntelliJ 或 PyCharm,打开我们刚刚克隆的项目的文件夹。
设定Project Structure
选择菜单 [File > Project Structure]
在Module SDK上选择Python3 SDK。如果你找不到SDK,单击[New...]添加你自己的python3二进制文件。
好,接下来开始跑训练脚本。右键点击train_mineral_shards.py,选择菜单[Run 'train_mineral_shards']
然后,你就能在控制台看见运行《星际争霸2》的日志了。
对上面的日志做个简短的说明。
steps:发送到海军陆战队的命令数The number of commands
episodes:我们玩的游戏数The number of games
mean 100 episode reward:最近100次游戏获得的平均奖励
mean 100 episode min…:最近100次游戏采矿的平均值
% time spent exploring:花在探路上的时间比(探路/采矿)
我设置训练脚本运行20,000,000步(如果你想在笔记本电脑上运行,建议你将训练步长设置在50万的样子)
我编码程序在完成所有训练步骤后,将训练好的模型保存在文件夹mineral_shards.pkl里。
act.save("mineral_shards.pkl")
如果你想用这个预训练模型,只要运行enjoy script就行啦☺
右键enjoy_mineral_shards.py,选择菜单[Run 'enjoy_mineral_shards']
然后,你就能在CollectMineralShards地图上看到预训练好的智能体啦~
原文地址:http://chris-chris.ai/2017/08/30/pysc2-tutorial1/