推荐RL开源库
参考:https://www.zhihu.com/question/49230922
- 主流开源强化学习框架推荐如下。提供的强化学习算法较为全面,如Q-learning、Sarsa、DQN、PG、DPG、DDPG、PPO等算法。
- OpenAI提供的Baselines:openai/baselines 6.6k stars(Gym环境)
- 百度提供的PARL:PaddlePaddle/PARL 0.2k stars 集成PaddlePaddle (Gym环境)
- 谷歌提供的Dopamine:google/dopamine 7.0k stars 集成TensorFlow(Gym环境)
- DeepMind提供的TRFL:deepmind/trfl 2.2k stars(Gym环境)
- 伯克利提供的RLlab:rll/rllab 2.0k stars(一个类似于Gym的工具包)
- reinforceio提供的Tensorforce:reinforceio/tensorforce 1.2k stars(Gym环境)
- Intel提供的Coach:NervanaSystems/coach 1.1k stars(Gym环境)
- keras-rl:keras-rl/keras-rl 3.4k stars 集成深度学习库Keras(Gym环境)
RL库简介
Baseline
- 基于 OpenAI Gym 和 TensorFlow 的实现了经典的(深度) 强化学习算法
- OpenAI、DeepMind,伯克利三个可以说是强化学习的推动者,其中OpenAI 为很多算法都写了baselines,放在github库中供开发者学习参考。
- 提供两个基准测试
(1)Example 1. PPO with MuJoCo Humanoid (1M timesteps)
(2)Example 2. DQN on Atari (10M timesteps) - 实现多个算法
- A2C、ACER、ACKTR、DDPG、DQN、GAIL、HER、PPO1 (obsolete version, left here temporarily)、PPO2、TRPO
PARL
- 在成为NIPS2018的AI for Prosthetics Challenget挑战赛第一名后,百度在2019年1月推出的一个基于PaddlePaddle的灵活高效的强化学习框架。
- 特点:
(1)Reproducible:可以稳定地再现许多有影响力的强化学习算法的结果
(2)Large Scale:能够支持数千个CPU和多GPU的高性能并行培训
(3)Reusable:存储库中提供的算法可以通过定义转发网络直接适应新任务,并且将自动构建培训机制。
(4)Extensible:通过在框架中继承抽象类来快速构建新算法。 - 在agent的基础上抽象了Model、Algrithm、Agent,方便递归构建agent。
- 目前实现的算法:QuickStart、DQN、DDPG、PPO、Winning Solution for NIPS2018: AI for Prosthetics Challenge
Dopamine
- 谷歌早2018年8月推出了一款全新的开源强化学习框架 Dopamine,该框架基于 TensorFlow,主打灵活性、稳定性、复现性,能够提供快速的基准测试。包括:
(1)一个基于 Arcade 学习环境(一个成熟的、易于理解的基准)
(2)四种不同的机器学习模型:DQN、C51、简化版的 Rainbow 智能体和 IQN(Implicit Quantile Network)四个基于值的代理 DQN、C51、Rainbow 代理的简化版本以及隐式分位数网络代理。
相比 OpenAI 的强化学习基准,Dopamine 更多关注 off-policy 方法。 为了实现可重复性,Github 代码包括 Arcade Learning Environment 支持的全部 60 个游戏的完整测试和训练代码,并遵循标准化经验评估结果的最佳实践。 除此之外,谷歌还推出了一个可视化网站,允许开发人员将训练中的多个智能体的运行情况快速可视化。
特点
易用性
清晰和简洁是这个框架的两个关键设计考虑因素。
代码紧凑(大约 15 个 Python 文件),并且有详细的文档。代码简洁,能够让研究人员轻松了解代理的内部运作并快速尝试新的想法。可重现性
可重现性在强化学习研究中的作用很重要。代码通过了完整的测试覆盖,这些测试用例也可作为某种形式的文档使用。此外,其实验框架遵循了 Machado 等人给出的使用 Arcade 学习环境标准化进行经验评估的建议。基准测试
对于研究人员来说,能够根据已有方法快速对想法进行基准测试是非常重要的。因此,Dopamine以 Python pickle 文件(用于使用我们的框架训练的代理)和 JSON 数据文件(用于与其他框架训练的代理进行比较)的形式提供了受 Arcade 学习环境支持的 60 个游戏的完整训练数据。还提供了一个网站,可以在上面快速查看所有的训练运行情况。
谷歌还提供利用这些智能体训练的深度网络、原始统计日志以及用于 Tensorboard 可视化的 TensorFlow 事件文件。相关地址:https://github.com/google/dopamine/tree/master/docs#downloads
TRFL
- TRFL(读作「truffle」)一个用于在 TensorFlow 环境中开发强化学习智能体的代码库
- DeepMind 自己用来开发 DQN、DDPG 以及 IMPALA(重要性加权行动者-学习者架构)等知名强化学习技术的许多关键算法组件都包含在其中。
RLlab
- 伯克利大学和 openai 的学者开发的强化学习算法框架
- 不是一个RL库,而是与Gym类似一个比较完整的强化学习开源工具包。基于Theano。与OpenAI Gym的区别在于OpenAI Gym支持更广泛的环境,且提供在线的scoreboard可以用于共享训练结果。
- pytorch是一个python优先的深度学习框架
Tensorforce
- 强化学习组件开发者 reinforce.io 于2017年提出的一个开源深度强化学习框架,强调模块化灵活的库设计和直观的可用性。
- 构建于Google的TensorFlow框架之上,与Python 3兼容(Python 2支持在0.5版本中删除)
- 特点:
(1)基于模块化组件的设计:功能实现尽可能地普遍适用和可配置。
(2)RL算法和应用的分离:算法与输入(状态/观察)和输出(动作/决策)的类型和结构,与应用环境的交互无关。
(3)Full-on TensorFlow模型:整个强化学习逻辑(包括控制流)在TensorFlow中实现,以实现独立于应用程序编程语言的便携式计算图形,并促进模型的部署。 - 通过配置文件快速运行不同的算法
python examples/openai_gym.py CartPole-v1 --agent examples/configs/ppo.json --network examples/configs/mlp2_network.json
- 支持DDPG和PPO等算法的实现,详见配置文件
tensorforce/examples/configs/
Coach
- Intel 收购的 Nervana 公司(还开发了Neon) 推出的强化学习框架
- Coach包含一些领先的增强学习算法的多线程实现,可以方便地实现并行算法,充分利用cpu gpu多核。
- 主要针对2016年以来许多算法通过在许多CPU内核中并行运行多个实例,能够更快地实现更好的策略。包括A3C 、DDPG、PPO、DFP和NAF等。
- 所有的算法都是使用英特尔优化的TensorFlow来实现的,也可以通过Intel的neon™框架来实现。
- Coach可与如OpenAI Gym、Roboschool和ViZDoom等顶级环境进行集成
- 可视化调试工具:Intel还发布了Coach Dashboard作为可视化和调试的补充工具。Dashboard是Coach的一个图形用户界面,通过展示训练过程中的不同信号,可以让用户以简单易懂的方式比较不同方式运行的训练质量。在训练期间,Coach可跟踪任何有意义的内部信息并存储,以便在执行期间和完成后可视化进度。
图片来源:雷锋网
keras-rl
- 集成深度学习库Keras实现了一些最先进的深度强化学习算法,可使用在Gym环境上。
- 目前实现的算法:
(1)Deep Q Learning (DQN)
(2)Double DQN
(3)Deep Deterministic Policy Gradient (DDPG)
(4)Continuous DQN (CDQN or NAF)
(5)Cross-Entropy Method (CEM)
(6)Dueling network DQN (Dueling DQN)
(7)Deep SARSA
RL库使用方法
如果是以gym为基础的RL库,用起来更便于对比,毕竟环境一致
直接import开源库,并调用其API
包括两部分
(1)训练部分:初始化算法需要的参数,比如学习率,steps,episode以及他们的最大值
(2)测试部分:act接受当前状态obs后给出action,将其传给环境的step()函数,得到下一时间步的状态、回报、是否结束。循环打印每轮的总回报和时间步数。如果总回报为正且时间步数较少,则表明我们的算法取得了较好的效果。测试基准
(1)在连续控制场景主要用mujoco环境游戏来评估,在离散控制场景主要用atatri环境评估,也有一些其他环境。
(2)Mujoco(1M时间步长)和Atari(10M时间步长)
(3)评估指标主要看分数还有steps。
参考
知乎上的RL开源项目:
https://www.zhihu.com/question/49230922
开源RL库推荐(最下面)
https://github.com/aikorea/awesome-rl/tree/master
参考https://www.itcodemonkey.com/article/3646.html
其他
- OpenAi universe
openai 开发的开源人工智能软件平台 1000 多个环境
可以让一个程序变为openai gym 环境,将程序封装成docker 容器
https://github.com/openai/universe
模拟很多的游戏场景
- DeepMind Lab
DeepMind 发布的 3d强化学习平台
最初是DeepMind 内部使用 之后开源了
https://github.com/deepmind/lab
模拟一些走迷宫之类的3d实验环境。
附:一张不错的对比图
图来源:https://zhuanlan.zhihu.com/p/60241809