转载 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。
MuJoCoMuJoCo 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-pycd mujoco-pypip install -e . --no-cache如果在后面有其它项目依赖到更高版本 如1.50.1 可以从官方release页面下载源码包 https://github.com/openai/mujoco-py/releases 然后用上面方法安装即可。然后运行下readme中的例子看是否运行正常。
OpenAI GymOpenAI 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.gitcd gympip 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-devpip 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-kengzgit clone https://github.com/pybox2d/pybox2d.gitcd pybox2dpython setup.py cleanpython 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.shrllab使用的是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 LabDeepMind 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.7source 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 realpathgit clone https://github.com/deepmind/labcd labbazel build :deepmind_lab.so --define headless glxbazel 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-numpysudo ~/.local/bin/pip2.7 uninstall numpy
接下来 按readme说明 通过下面命令可以分别跑agent玩家和人类玩家的迷宫场景
bazel run :random_agent --define headless false -- --length 10000 --width 640 --height 480bazel run :game -- --level_script tests/demo_map
然后通过python api https://github.com/deepmind/lab/blob/master/docs/python_api.md 就可以让强化学习算法利用该环境进行训练了。
假设已安装了上面提到的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
按照readme最简单的安装方法就是
pip install pysc2然后需要根据https://github.com/Blizzard/s2client-proto中readme说明安装StarCraft II的环境。主要那几个包都比较大 下载要些时间 下载完成后按readme中解压到指定path下即可。然后就可以测试下了。按readme用以下命令可以分别起agent玩家和人类玩家的环境
python -m pysc2.bin.agent --map Simple64python -m pysc2.bin.play --map Simple64
按readme中使用下面命令安装
pip install baselines或者用源码中的setup.py安装
git clone https://github.com/openai/baselinescd baselinespython setup.py install除了列出来的依赖 还可能依赖下面的库 使用conda或pip安装
conda install Pillow atari-py
另外如果用GPU加速但不幸碰到memory分不出的情况 CUDA_OUT_OF_MEMORY 可以强制TensorFlow使用CPU
export CUDA_VISIBLE_DEVICES
-------------------------------------------------
欢迎关注微信公众号 AITBOOK





本文链接: http://mdresearchlab.immuno-online.com/view-770892.html