当前位置: 首页 > 科技观察

清华本科生开发强化学习平台「天授」:千行代码实现,刚刚开源

时间:2023-03-17 10:21:46 科技观察

清华本科生开发强化学习平台“天书”:千行代码实现,开源才子代代相传,开源一波比一波强。就在最近,一个完全基于Pytorch的干净、轻量级、快速的深度强化学习平台在Github上开源。如果你也是强化学习的同行,路过千万不要错过。而作者是独立开发“天寿”平台的清华大学本科生——翁佳怡。没错,名字就是“天赐”。为什么是天赐?主要有四大优点:1、速度快。整个平台仅用约1500行代码实现。它在现有玩具场景上优于所有其他平台,例如在3秒内训练倒立摆(CartPole)。2.模块化,将所有策略拆分成4个模块:init:策略初始化。process_fn:处理函数,处理来自播放缓存的数据。call:Calculateoperationsbasedonobservationslearn:learnfromagivendatapackage只要完善这些给定的接口,一个强化学习算法可以在100行以内完全实现。3、天首平台目前支持的算法有:PolicyGradient(PG)DeepQ-Network(DQN)DoubleDQN(DDQN)withn-stepreturnsAdvantageActor-Critic(A2C)DeepDeterministicPolicyGradient(DDPG)ProximalPolicyOptimization(PPO))TwinDelayedDDPG(TD3)SoftActor-Critic(SAC)随着项目的发展,天寿会加入更多的强化学习算法。4、接口灵活:用户可以自定义多种训练方式,仅需少量代码即可实现。如何使用天手以DQN(Deep-Q-Network)算法为例,我们使用天手平台上的CartPole小游戏来训练它的agent。配置环境习惯使用OpenAIGym。如果使用Python代码,只需要简单调用天寿即可。CartPole-v0是一个可以应用DQN算法的简单环境,具有离散的操作空间。在配置环境时需要注意其运行空间是连续的还是离散的,从而选择适用的算法。设置多个环境层,可以使用现成的gym.Env:也可以选择天神提供的三个矢量环境层:VectorEnv、SubprocVectorEnv和RayVectorEnv,如下图:8层和100层环境分别为在示例中分别设置。建立网络天寿支持任意自定义网络或优化器,但有接口限制。这是一个正确的例子:setpolicy我们使用定义的net和optim(带有额外的策略超参数)来定义一个策略。下面我们使用一个目标网络来定义DQN算法策略。设置收集器收集器是天府的一个关键概念,它使策略能够有效地与不同的环境交互。在每一步,收集器都会在重放缓存中记录策略的操作数据。训练天寿提供训练函数onpolicy_trainer和offpolicy_trainer。当策略达到终止条件时,它们会自动停止训练。由于DQN是一种off-policy算法,我们使用offpolicy_trainer。训练器支持TensorBoard记录。方法如下:将参数编写器输入到训练器中,训练结果将记录在TensorBoard中。记录显示我们在将近4秒内完成了DQN的训练。保存/加载策略因为我们的策略是继承自torch.nn.Module,所以保存/加载策略的方法和torch模块是一样的。观察模型性能收集器支持渲染功能。以35帧率观察模型的方法如下:使用自己的代码训练策略。不想用天寿提供的训练器也没问题。下面是自定义训练器的使用方法。天手入门需要Python3环境。以CartPole训练DQN模型为例,输入test_dqn.py代码进行训练,结果统计如下:可以看出整个训练过程耗时7.36秒,与训练时间相符开发商给的。模型训练结果如下:作者介绍天书的开发者:清华大学大四本科生翁佳怡。福州一中高中毕业,前NOI选手。大二时,作为团队的主要贡献者,左某获得了国际强化学习竞赛vizdoom的冠军。他希望进一步发展天寿平台,成为强化学习平台的标杆。开源也希望有更多的小伙伴加入这个项目。传送门:PyPI提供天守平台下载,也可以在Github上找到天守最新版本等资料。PYPI:https://pypi.org/project/tianshou/Github天手主页:https://github.com/thu-ml/tianshou