开源报道 || 清华开源「天授」强化学习平台(纯PyTorch实现)

2020 年 3 月 31 日 深度强化学习实验室

深度强化学习实验室报道

本文转载自:机器之心(almosthuman2014)

编辑:DeepRL


训练模型的极速,与 1500 行源代码的精简,清华大学新开源强化学习平台「天授」。值得注意的是,该项目的两位主要作者目前都是清华大学的本科生。
是否你也有这样的感觉,成熟 ML 工具的源码很难懂,各种继承与处理关系需要花很多时间一点点理清。 在清华大学开源的「天授」项目中,它以极简的代码实现了很多极速的强化学习算法。重点是,天授框架的源码很容易懂,不会有太复杂的逻辑关系

项目地址: https://github.com/thu-ml/tianshou

天授(Tianshou)是纯 基于 PyTorch 代码的强化学习框架,与目前现有基于 TensorFlow 的强化学习库不同,天授的类继承并不复杂,API 也不是很繁琐。最重要的是,天授的训练速度非常快,我们试用 Pythonic 的 API 就能快速构建与训练 RL 智能体。

目前天授支持的 RL 算法有如下几种:

  • Policy Gradient (PG)

  • Deep Q-Network (DQN)

  • Double DQN (DDQN) with n-step returns

  • Advantage Actor-Critic (A2C)

  • Deep Deterministic Policy Gradient (DDPG)

  • Proximal Policy Optimization (PPO)

  • Twin Delayed DDPG (TD3)

  • Soft Actor-Critic (SAC)


另外,对于以上代码天授还支持并行收集样本,并且所有算法均统一改写为基于 replay-buffer 的形式。

速度与轻量:「天授」的灵魂

天授旨在提供一个高速、轻量化的 RL 开源平台。下图为天授与各大知名 RL 开源平台在 CartPole 与 Pendulum 环境下的速度对比。所有代码均在配置为 i7-8750H + GTX1060 的同一台笔记本电脑上进行测试。值得注意的是,天授实现的 VPG(vanilla policy gradient)算法在 CartPole-v0 任务中,训练用时仅为 3 秒。


以上测试使用了 10 个不同的 seed。CartPole 和 Pendulum 任务中的累积奖赏阈值分别设置为 195.0 与-250.0。可能会有读者感觉这两个任务比较简单,不太能突出框架的优势。该项目也表示,在这几天内,他们会更新天授在 Atari Pong / Mujoco 任务上的性能。

天授,只需 1500 行代码

非常令人惊讶的是,天授平台整体代码量不到 1500 行,其实现的 RL 算法大多数都少于百行代码。单从数量上来说,这样的代码量已经非常精简了,各种类与函数之间的关系应该也容易把握住。

项目表示,天授虽然代码量少,但可读性并不会有损失。我们可以快速浏览整个框架,并理解运行的流程与策略到底是什么样的。该项目提供了很多灵活的 API,例如可以便捷地使用如下代码令策略与环境交互 n 步:

result = collector.collect(n_step=n)

或者,如果你想通过采样的批量数据训练给定的策略,可以这样写:

result = policy.learn(collector.sample(batch_size))

正是通过大量精简的 API 构造 RL 模型,天授才能保持在 1500 行代码内。例如我们可以看看 DQN 的模型代码,它是非常流行的一种强化学习模型,在天授内部,DQN 模型真的只用了 99 行代码就完成了。当然,这 99 行代码是不包含其它公用代码块的。

如下为 DQN 的主要代码结构,我们省略了部分具体代码,各个 RL 策略都会继承基本类的结构,然后重写就够了。可以发现,在常规地定义好模型后,传入这个类就能创建策略。DQN 策略的各种操作都会写在一起,后续配置 Collector 后就能直接训练。


项目作者把所有策略算法都模块化为 4 部分:

  • __init__:初始化策略

  • process_fn:从 replay buffer 中处理数据

  • __call__:给定环境观察结果计算对应行动

  • learn:给定批量数据学习策略


实际体验

天授很容易安装,直接运行「pip install tianshou」就可以。下面我们将该项目克隆到本地,实际测试一下。

!git clone https://github.com/thu-ml/tianshou
!pip3 install tianshou
import os
os.chdir('tianshou')

该项目在 test 文件夹下提供了诸多算法的测试示例,下面我们在 CartPole 任务下逐个测试一番。

!python test/discrete/test_pg.py



!python test/discrete/test_ppo.py



!python test/discrete/test_a2c.py


!python test/discrete/test_dqn.py


以上分别为 VPG、PPO、A2C 与 DQN 在 P100 GPU 上的训练结果。可以看到,我们的测试结果与项目提供的结果出入不大。

由于 CartPole 任务在强化学习中相对简单,相当于图像识别中的 MNIST。为更进一步测试该 RL 框架的性能,我们也在 MinitaurBulletEnv-v0 任务中对其进行了测试。

Minitaur 是 PyBullet 环境中一个四足机器人运动控制任务,其观测值为该机器人的位置、姿态等 28 个状态信息,控制输入为电机的转矩(每条腿 2 个电机,总共 8 个电机),策略优化的目标为最大化机器人移动速度的同时最小化能量消耗。也就是说,agent 需要根据奖赏值自主地学习到由 28 个状态信息到 8 个控制输入的映射关系。


使用 SAC 算法在 Minitaur 任务中的训练结果如下图所示:



需要注意的是,天授的 SAC 实现在 Minitaur 任务中仅训练了不到 200k 步即能获得以上控制策略,效果可以说是很不错的。

项目作者,清华本科生

在 GitHub 中,其展示了该项目的主要作者是 Jiayi Weng 与 Minghao Zhang,他们都是清华的本科生。其中 Jiayi Weng 今年 6 月份本科毕业,在此之前作为本科研究者与清华大学苏航、朱军等老师开展强化学习领域的相关研究。Minghao Zhang 目前是清华大学软件学院的本科二年级学生,同时还修了数学专业。


作为本科生,该项目的两位作者已经有了非常丰富的研究经验,Jiayi Weng 去年夏季就作为访问学生到访 MILA 实验室,并与 Yoshua Bengio 开展了关于意识先验相关的研究。在 Jiayi Weng 的主页中,我们可以看到在本科期间已经发了 IJCAI 的 Oral 论文。


Minghao Zhang 也有丰富的研究经验,之前他在软件学院 iMoon Lab 做关于 3D 视觉相关的研究,而后目前在清华交叉信息学院做研究助理,从事强化学习方面的研究。尽管离毕业还有不短的时间,Minghao Zhang 已经做出了自己的研究成果。


所以综合来看,因为在本科已经有了丰富的科研经验,并且做过多个项目,那么在这个阶段能做一个非常不错的强化学习开源项目也就理所当然了。

接下来的工作

天授目前还处于初期开发阶段,尚有一些未实现的功能或有待完善的地方。项目作者表示今后主要在以下几个方面来完善该 RL 框架:

  • Prioritized replay buffer

  • RNN support

  • Imitation Learning

  • Multi-agent

  • Distributed training


它们分别是提供更多 RL 环境的 benchmark、优先经验回放、循环神经网络支持、模仿学习、多智能体学习以及分布式训练。



总结1:周志华 || AI领域如何做研究-写高水平论文

总结2:全网首发最全深度强化学习资料(永更)

总结3:  《强化学习导论》代码/习题答案大全

总结4:30+个必知的《人工智能》会议清单

总结52019年-57篇深度强化学习文章汇总

总结6:  万字总结 || 强化学习之路


第57篇:Google发布"强化学习"框架"SEED RL"

第56篇:RL教父Sutton实现强人工智能算法的难易

第55篇:内推 ||  阿里2020年强化学习实习生招聘

第54篇:顶会 || 65篇"IJCAI"深度强化学习论文汇总

第53篇:TRPO/PPO提出者John Schulman谈科研

第52篇:《强化学习》可复现性和稳健性,如何解决?

第51篇:强化学习和最优控制的《十个关键点》

第50篇:微软全球深度强化学习开源项目开放申请

第49篇:DeepMind发布强化学习库 RLax

第48篇:AlphaStar过程详解笔记

第47篇:Exploration-Exploitation难题解决方法

第46篇:DQN系列(2): Double DQN 算法

第45篇:DQN系列(1): Double Q-learning

第44篇:科研界最全工具汇总

第43篇:起死回生|| 如何rebuttal顶会学术论文?

第42篇:深度强化学习入门到精通资料综述

第41篇:顶会征稿 ||  ICAPS2020: DeepRL

第40篇:实习生招聘 || 华为诺亚方舟实验室

第39篇:滴滴实习生|| 深度强化学习方向

第38篇:AAAI-2020 || 52篇深度强化学习论文

第37篇:Call For Papers# IJCNN2020-DeepRL

第36篇:复现"深度强化学习"论文的经验之谈

第35篇:α-Rank算法之DeepMind及Huawei改进

第34篇:从Paper到Coding, DRL挑战34类游戏

第33篇:DeepMind-102页深度强化学习PPT

第32篇:腾讯AI Lab强化学习招聘(正式/实习)

第31篇:强化学习,路在何方?

第30篇:强化学习的三种范例

第29篇:框架ES-MAML:进化策略的元学习方法

第28篇:138页“策略优化”PPT--Pieter Abbeel

第27篇:迁移学习在强化学习中的应用及最新进展

第26篇:深入理解Hindsight Experience Replay

第25篇:10项【深度强化学习】赛事汇总

第24篇:DRL实验中到底需要多少个随机种子?

第23篇:142页"ICML会议"强化学习笔记

第22篇:通过深度强化学习实现通用量子控制

第21篇:《深度强化学习》面试题汇总

第20篇:《深度强化学习》招聘汇总(13家企业)

第19篇:解决反馈稀疏问题之HER原理与代码实现

第18篇:"DeepRacer" —顶级深度强化学习挑战赛

第17篇:AI Paper | 几个实用工具推荐

第16篇:AI领域:如何做优秀研究并写高水平论文?

第15篇: DeepMind开源三大新框架!
第14篇: 61篇NIPS2019DeepRL论文及部分解读
第13篇: OpenSpiel(28种DRL环境+24种DRL算法)
第12篇: 模块化和快速原型设计Huskarl DRL框架
第11篇: DRL在Unity自行车环境中配置与实践
第10篇: 解读72篇DeepMind深度强化学习论文
第9篇: 《AutoML》:一份自动化调参的指导
第8篇: ReinforceJS库(动态展示DP、TD、DQN)
第7篇: 10年NIPS顶会DRL论文(100多篇)汇总
第6篇: ICML2019-深度强化学习文章汇总
第5篇: 深度强化学习在阿里巴巴的技术演进
第4篇: 深度强化学习十大原则
第3篇: “超参数”自动化设置方法---DeepHyper
第2篇: 深度强化学习的加速方法
第1篇: 深入浅出解读"多巴胺(Dopamine)论文"、环境配置和实例分析


第14期论文:  2020-02-10(8篇)

第13期论文:2020-1-21(共7篇)

第12期论文:2020-1-10(Pieter Abbeel一篇,共6篇)

第11期论文:2019-12-19(3篇,一篇OpennAI)

第10期论文:2019-12-13(8篇)

第9期论文:2019-12-3(3篇)

第8期论文:2019-11-18(5篇)

第7期论文:2019-11-15(6篇)

第6期论文:2019-11-08(2篇)

第5期论文:2019-11-07(5篇,一篇DeepMind发表)

第4期论文:2019-11-05(4篇)

第3期论文:2019-11-04(6篇)

第2期论文:2019-11-03(3篇)

第1期论文:2019-11-02(5篇)

登录查看更多
0

相关内容

【IJCAI2020-华为诺亚】面向深度强化学习的策略迁移框架
专知会员服务
28+阅读 · 2020年5月25日
《强化学习》简介小册,24页pdf
专知会员服务
275+阅读 · 2020年4月19日
专知会员服务
110+阅读 · 2020年3月12日
《动手学深度学习》(Dive into Deep Learning)PyTorch实现
专知会员服务
120+阅读 · 2019年12月31日
MIT新书《强化学习与最优控制》
专知会员服务
279+阅读 · 2019年10月9日
17种深度强化学习算法用Pytorch实现
新智元
31+阅读 · 2019年9月16日
Github 项目推荐 | PyTorch 实现的 GAN 文本生成框架
AI研习社
35+阅读 · 2019年6月10日
【代码集合】深度强化学习Pytorch实现集锦
机器学习算法与Python学习
8+阅读 · 2018年10月23日
强化学习十大原则
专知
12+阅读 · 2018年9月17日
从基础概念到实现,小白如何快速入门PyTorch
机器之心
13+阅读 · 2018年2月26日
Arxiv
4+阅读 · 2018年10月5日
Arxiv
7+阅读 · 2018年9月27日
VIP会员
相关VIP内容
【IJCAI2020-华为诺亚】面向深度强化学习的策略迁移框架
专知会员服务
28+阅读 · 2020年5月25日
《强化学习》简介小册,24页pdf
专知会员服务
275+阅读 · 2020年4月19日
专知会员服务
110+阅读 · 2020年3月12日
《动手学深度学习》(Dive into Deep Learning)PyTorch实现
专知会员服务
120+阅读 · 2019年12月31日
MIT新书《强化学习与最优控制》
专知会员服务
279+阅读 · 2019年10月9日
相关资讯
17种深度强化学习算法用Pytorch实现
新智元
31+阅读 · 2019年9月16日
Github 项目推荐 | PyTorch 实现的 GAN 文本生成框架
AI研习社
35+阅读 · 2019年6月10日
【代码集合】深度强化学习Pytorch实现集锦
机器学习算法与Python学习
8+阅读 · 2018年10月23日
强化学习十大原则
专知
12+阅读 · 2018年9月17日
从基础概念到实现,小白如何快速入门PyTorch
机器之心
13+阅读 · 2018年2月26日
Top
微信扫码咨询专知VIP会员