原文地址:http://blog.csdn.net/jinzhuojun/article/details/77144590

和其它的机器学习方向一样,强化学习(Reinforcement Learning)也有一些经典的实验场景,像Mountain-Car,Cart-Pole等。话说很久以前,因为没有统一的开发测试平台,大家都会自己实现,有用C/C++的,有用Python,还有用Matlab的。所以大家论文中看到的场景虽然相似,但很多时候不完全一样。这样一方面重新造轮子,另一方面还有可能因为实验环境的差别影响结果的比较。于是后面大家渐渐开始建立统一的实验平台,另一方面,由于近年来深度强化学习(Deep Reinforcement Learning)的兴起,各种新的更复杂的实验场景也在不断涌现。于是出现了OpenAI Gym,MuJoCo,rllab, DeepMind Lab, TORCS, PySC2等一系列优秀的平台。你会在大量的强化学习相关论文中看到它们的身影。下面就简单介绍下这些平台在Ubuntu下的搭建过程。关于一些基础环境(如Cuda, Anaconda, TensorFlow)的搭建可参考前面的文章:http://blog.csdn.net/jinzhuojun/article/details/77140806。

MuJoCo
MuJoCo(Multi-Joint dynamics with Contact)是一个物理模拟器,可以用于机器人控制优化等研究。官方网站为http://www.mujoco.org/index.html。最新版本为1.50。下载地址为https://www.roboti.us/index.html。如果是Linux系统可以点mjpro150 linux。下载完成后解压到~/.mujoco下。注意要用是需要license的,可以在https://www.roboti.us/license.html上申请试用版30天免费license。先下载网站上提供的getid_linux,加执行权限在本地运行得到机器id连同其它信息填到申请页面,提交后会收到邮件包含key文件mjkey.txt。下载key文件后,放到~/.mujoco目录下。之后可以运行解压目录下bin里的simulate试下是否正常(需要将key文件也拷到simulate同级目录)。运行后将model目录下的模型拖入窗口,会看到类似下面的输出:

OpenAI对MuJoCo引擎做了Python 3的binding-mujoco-py,源码位于https://github.com/openai/mujoco-py。按readme中你可以通过下面命令安装:

pip3 install -U 'mujoco-py<1.50.2,>=1.50.1'

如果安装过程中出现下面这种错误:
sh: 2: Syntax error: "(" unexpected
       ERROR: Invalid activation key
你可以下载源码安装:

git clone https://github.com/openai/mujoco-py
cd mujoco-py
pip install -e . --no-cache

如果在后面有其它项目依赖到更高版本(如1.50.1),可以从官方release页面下载源码包(https://github.com/openai/mujoco-py/releases),然后用上面方法安装即可。然后运行下readme中的例子看是否运行正常。

OpenAI Gym
OpenAI Gym是OpenAI出的研究强化学习算法的toolkit,它里边cover的场景非常多,从经典的Cart-Pole, Mountain-Car到Atar,Go,MuJoCo都有。官方网站为https://gym.openai.com/,源码位于https://github.com/openai/gym,它的readme提供了安装和运行示例,按其中的安装方法:
最小安装:

git clone https://github.com/openai/gym.git
    cd gym
    pip install -e .

完全安装:

apt-get install -y python-numpy python-dev cmake zlib1g-dev libjpeg-dev xvfb libav-tools xorg-dev python-opengl libboost-all-dev libsdl2-dev swig Pillow  libglfw3-dev
pip install -e '.[all]'

然后可以跑readme中的例子,如SpaceInvaders, Go, LunarLander, CarPole, MuJoCo等等:

通过源码下的examples/scripts/list_envs可以列出所有支持的场景。

如果装了Anaconda,过程中出现下面错误的话:
OSError: /home/jzj/anaconda2/envs/py35/bin/../lib/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /home/jzj/anaconda2/envs/py35/lib/python3.5/site-packages/atari_py/ale_interface/build/libale_c.so)
可以通过在Anaconda环境中安装libgcc解决:

conda install libgcc

如果在运行依赖Box2d引擎的sample时出现下面错误:
AttributeError: module 'Box2D._Box2D' has no attribute 'RAND_LIMIT'
可以先uninstall已有版本(如有),然后安装pybox2d:

pip uninstall Box2D-kengz
git clone https://github.com/pybox2d/pybox2d.git
cd pybox2d
python setup.py clean
python setup.py install

Gym中也可以通过mujoco-py集成MuJoCo。如果出现下面错误,说明mujoco-py版本不对。目前Gym中支持MuJoCo 1.31和mujoco-py 0.5。按前面说明装上相应版本后即可。
DependencyNotInstalled: No module named 'mujoco_py.mjlib'. (HINT: you need to install mujoco_py, and also perform the setup instructions here: https://github.com/openai/mujoco-py/.)

rllab
和OpenAI Gym类似,rllab也是一个研究强化学习算法的框架。官方网站为https://github.com/openai/rllab。官方支持python 3.5+,基于Theano。与OpenAI Gym的区别在于OpenAI Gym支持更广泛的环境,且提供在线的scoreboard可以用于共享训练结果。rllab自己也提供一个基于pygame的可视环境,同时它也可兼容OpenAI Gym。除此之外,它提供了一些强化学习算法的实现,这些参考实现和一些组件可以使得强化学习算法的开发更快上手。安装步骤可按照官方网站:https://rllab.readthedocs.io/en/latest/user/installation.html。

export PYTHONPATH=path_to_rllab:$PYTHONPATH
./scripts/setup_linux.sh

如果要想要在rllab中用MuJoCo的话再用下面脚本安装。

./scripts/setup_mujoco.sh

rllab使用的是mujoco 1.31版本,这个脚本里会让指定相应的mujoco包和license key文件。以上安装脚本中会创建Anaconda环境,名为rllab3。通过下面命令进入环境:

source activate rllab3

然后就可以运行例子了。比如用TRPO算法训练Cart-Pole场景的话,运行:

python examples/trpo_gym_cartpole.py

这些sample中默认是无UI的,如果要有UI,可以搜索其中的plot=True,将之反注释即可。

如果你很和我一样穷,用的是贫民版GPU,加速时分不出memory的话:
RuntimeError: Cuda error: kernel_reduce_ccontig_node_m28488bfe450723ef20f18edd8e611eb0_0: out of memory. (grid: 1 x 1; block: 256 x 1 x 1)
可以退一步让Theano用纯CPU跑:

export THEANO_FLAGS=device=cpu

DeepMind Lab

DeepMind Lab(原Labyrinth)是由DeepMind发布的3D迷宫场景强化学习平台。之前是DeepMind内部使用的,后来开源了。官方介绍https://deepmind.com/blog/open-sourcing-deepmind-lab/。论文 https://arxiv.org/pdf/1612.03801.pdf。源码位于https://github.com/deepmind/lab。
最好在Python 2.7环境下编译运行。比如用Anaconda创建Python 2.7环境并进入:

conda create --name py27 python=2.7
source activate py27

然后按官方readme中的说明(https://github.com/deepmind/lab/blob/master/docs/build.md)安装。由于编译是基于bazel,所以需要先安装bazel。

sudo apt-get install lua5.1 liblua5.1-0-dev libffi-dev gettext freeglut3-dev libsdl2-dev libosmesa6-dev python-dev python-numpy realpath
git clone https://github.com/deepmind/lab
cd lab
bazel build :deepmind_lab.so --define headless=glx
bazel run :python_module_test --define headless=glx

如果在Anaconda环境中,有可能碰到下面错误:
ImportError: cannot import name multiarray
表面上是缺少numpy,可以先看下numpy有没有装,没有的话可以用conda install numpy安装。如果装了有可能是串到~/.local或者/usr/lib/下的python package了(可以通过python -c "import sys; from pprint import pprint as p; p(sys.path)"检查)。简单点的方法就是将除了Anaconda环境下的numpy删除。

sudo apt-get remove python-numpy
sudo ~/.local/bin/pip2.7 uninstall numpy

接下来,按readme说明,通过下面命令可以分别跑agent玩家和人类玩家的迷宫场景:

bazel run :random_agent --define headless=false --  --length=10000 --width=640 --height=480
bazel run :game -- --level_script tests/demo_map

然后通过python api(https://github.com/deepmind/lab/blob/master/docs/python_api.md)就可以让强化学习算法利用该环境进行训练了。

TORCS
TORCS(The Open Racing Car Simulator)是一个跨平台的赛车游戏模拟器,也可作为强化学习的研究平台。官方网站:http://torcs.sourceforge.net/。但我们不需直接从官网下。gym_torcs是一个TORCS的强化学习环境,提供类似前面OpenAI Gym的接口,网站为https://github.com/ugo-nama-kun/gym_torcs。

假设已安装了上面提到的OpenAI Gym。还需要安装依赖:

sudo apt-get install xautomation

官方声明依赖Python 3.5,那就进入Python 3的环境(假设已创建Python 3.5的Anaconda环境py35):

source activate py35

然后用conda install numpy安装numpy。
下载源码:

git clone https://github.com/ugo-nama-kun/gym_torcs.git

然后进入其vtorcs-RL-color子目录,按其中readme编译安装定制版torcs。安装完了运行torcs命令就能看到界面了。注意按readme说明需要进行一些设置,如赛道以及分辨率,因为实现中只支持64x64分辨率。运行示例代码可以跑一个随机选取动作的agent。

python example_experiment.py 


ps:截图还是用了默认分辨率,因为64x64太小看不清。

Readme中的Simple How-To示例了如何在Python中与该环境交互,然后就可以开发测试强化学习算法了。网上有个实现DDPG算法的例子可以参考:https://yanpanlau.github.io/2016/10/11/Torcs-Keras.html

PySC2(StarCraft II)
DeepMind的AlphaGo把围棋搞定之后,业界开始把目光投向即时策略游戏,如StarCraft II(星际争霸II)。最近DeepMind和Blizzard合作出了个StarCraft II的研究平台,称为PySC2。介绍网站:https://deepmind.com/blog/deepmind-and-blizzard-open-starcraft-ii-ai-research-environment/。论文:https://deepmind.com/documents/110/sc2le.pdf。PySC2是基于Blizzard的StarCraft II Machine Learning API(https://github.com/Blizzard/s2client-proto)的Python下强化学习环境。源码位于:https://github.com/deepmind/pysc2 。 按照readme最简单的安装方法就是: pip install pysc2 然后需要根据https://github.com/Blizzard/s2client-proto中readme说明安装StarCraft II的环境。主要那几个包都比较大,下载要些时间,下载完成后按readme中解压到指定path下即可。然后就可以测试下了。按readme用以下命令可以分别起agent玩家和人类玩家的环境: python -m pysc2.bin.agent --map Simple64
python -m pysc2.bin.play --map Simple64


OpenAI Baselines 
严格来说它本身不是一个开发环境。它是OpenAI出的一些深度强化学习算法(DQN, PPO, TRPO, DDPG)的实现,基于TensorFlow和OpenAI Gym,最新版需要Python 3。源码位于:https://github.com/openai/baselines。
按readme中使用下面命令安装: pip install baselines 或者用源码中的setup.py安装: git clone https://github.com/openai/baselines
cd baselines
python setup.py install 除了列出来的依赖,还可能依赖下面的库,使用conda或pip安装: conda install Pillow atari-py 另外如果用GPU加速但不幸碰到memory分不出的情况(CUDA_OUT_OF_MEMORY),可以强制TensorFlow使用CPU: export CUDA_VISIBLE_DEVICES=""

常用增强学习实验环境 I (MuJoCo, OpenAI Gym, rllab, DeepMind Lab, TORCS, PySC2) (转载)的更多相关文章

  1. Ubuntu下常用强化学习实验环境搭建(MuJoCo, OpenAI Gym, rllab, DeepMind Lab, TORCS, PySC2)

    http://lib.csdn.net/article/aimachinelearning/68113 原文地址:http://blog.csdn.net/jinzhuojun/article/det ...

  2. 常用增强学习实验环境 II (ViZDoom, Roboschool, TensorFlow Agents, ELF, Coach等) (转载)

    原文链接:http://blog.csdn.net/jinzhuojun/article/details/78508203 前段时间Nature上发表的升级版Alpha Go - AlphaGo Ze ...

  3. 【强化学习】百度云BCC openai gym 环境配置

    openai gym是RL算法的测试床.为了直观和便于调试,我们需要可视化界面.然而远程服务器使用openGL的问题比较棘手,这篇博客记录在百度云BCC上配置openai gym环境的注意事项. 按照 ...

  4. 【MySQL】MySQL无基础学习和入门之一:数据库基础概述和实验环境搭建

    数据库基础概述  大部分互联网公司都选择MySQL作为业务数据存储数据库,除了MySQL目前还有很多公司使用Oracle(甲骨文).SQLserver(微软).MongoDB等. 从使用成本来区分可以 ...

  5. 包含深度学习常用框架的Docker环境

    相关的代码都在Github上,请参见我的Github,https://github.com/lijingpeng/deep-learning-notes 敬请多多关注哈~~~ All in one d ...

  6. 增强学习 | Q-Learning

    "价值不是由一次成功决定的,而是在长期的进取中体现" 上文介绍了描述能力更强的多臂赌博机模型,即通过多台机器的方式对环境变量建模,选择动作策略时考虑时序累积奖赏的影响.虽然多臂赌博 ...

  7. 马里奥AI实现方式探索 ——神经网络+增强学习

    [TOC] 马里奥AI实现方式探索 --神经网络+增强学习 儿时我们都曾有过一个经典游戏的体验,就是马里奥(顶蘑菇^v^),这次里约奥运会闭幕式,日本作为2020年东京奥运会的东道主,安倍最后也已经典 ...

  8. Nginx配置多个基于域名的虚拟主机+实验环境搭建+测试

    标签:Linux 域名 Nginx 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://xpleaf.blog.51cto.com/9 ...

  9. 谷歌重磅开源强化学习框架Dopamine吊打OpenAI

    谷歌重磅开源强化学习框架Dopamine吊打OpenAI 近日OpenAI在Dota 2上的表现,让强化学习又火了一把,但是 OpenAI 的强化学习训练环境 OpenAI Gym 却屡遭抱怨,比如不 ...

随机推荐

  1. c++ 查找容器中不满足条件的元素,返回iterator(find_if_not)

    #include <iostream> // std::cout #include <algorithm> // std::find_if_not #include <a ...

  2. Qt加载OSg视图例子

    //QT += core gui opengl //LIBS += -losgViewer -losgDB -losgUtil -losg -lOpenThreads -losgGA -losgQt ...

  3. BIOS和CMOS【转载】

    在我们的电脑中,都有一块黑色的小芯片.但是请千万不要小看它,如果它损坏或者数据错误乱套的话,恭喜,如果不会“救回”这个小芯片,那么这台电脑可以挂闲鱼卖零件了……这个小芯片是什么呢?对,它就是BIOS芯 ...

  4. 简明Docker教程

    Docker基础 这篇基础文章是方便用户在使用cSphere平台之前,了解docker基础知识. 针对已经有一定的Linux基础知识的用户. Docker是什么 Docker是一个改进的容器技术.具体 ...

  5. 使用cocos创建的项目,如何进行源码调试?

    环境cocos3.10,里面包含了cocos2dx 3.10引擎.但是用cocos创建出来的项目,使用的lib和dll是文件夹Cocos\Cocos2d-x\cocos2d-x-3.10\prebui ...

  6. Codeforces 447C - DZY Loves Sequences

    447C - DZY Loves Sequences 思路:dp 代码: #include<bits/stdc++.h> using namespace std; #define ll l ...

  7. unity中实现静态的3D对象对其他对象的跟随

    using UnityEngine; public class FollowPosition : MonoBehaviour { public Transform targetTrans; publi ...

  8. 新概念 Lesson 5 How are you today

    How is Emma? 艾玛身体还好吗? 短语:very well How's Emma? She's very well, too. Emma is very well today   adv. ...

  9. 一个SQL调优/优化(SQL TUNING)“小把戏”“哄得”小朋友挺满意

    前几天,去一个用户那里,解决完问题,和一个小朋友闲聊,他有点愁眉不展.郁郁寡欢的样子,似乎没心情和我说话,之前,他的话是最多的,见此状,我就问:怎么了?小朋友?,他说,这几天应用人员说他的某个模块的性 ...

  10. JavaScript学习总结(十九)——使用js加载器动态加载外部Javascript文件

    今天在网上找到了一个可以动态加载js文件的js加载器,具体代码如下: JsLoader.js 1 var MiniSite=new Object(); 2 /** 3 * 判断浏览器 4 */ 5 M ...