Life——一个简洁易用的强化学习库,基于pytorch
简介
Life是一个基于pytorch实现的强化学习库,实现了多种强化学习算法。
项目地址:https://github.com/HanggeAi/Life
目前包含的强化学习算法
- Sarsa
- multi-Sarsa
- Q-Learning
- Dyna-Q
- DQN
- Double-DQN
- Dueling-DQN
- REINFORCE策略梯度
- Actor-Critic
- PPO
- DDPG
- SAC
- BC
- GAIL
- CQL
主要特征
- 基于目前主流的深度学习框架pytorch,支持gpu加速。
- 覆盖面广,从传统的QLearning,到一些最新的强化学习算法都有实现。
- 封装程度低,支持自定义结构的深度神经网络。
- 简洁易用,仅需寥寥几行代码,即可实现强化学习算法的构建与训练。
结构
图解Life的结构
Life将强化学习算法分为以下几类:
- 传统的强化学习算法,如Sarsa;
- 只基于值函数的深度强化学习算法,如DQN;
- 基于策略函数和值函数的深度强化学习算法,如AC;
- 模仿强化学习算法,如BC;
- 离线强化学习算法,如CQL。
对于每一类强化学习算法,都配有一个训练器
训练器的名称和算法的名称是一一对应的,如要训练DQN
,则其训练函数的名称为:
train_dqn
以DQN为例,其结构如下
其中:
- dqn.py中为传统DQN算法
- dqn_improved.py中为一些改进的DQN算法
- trainer中包含了以上各种dqn算法的训练函数
Get Started
要使用Life进行强化学习,仅需简单的三步,下面以DQN在CartPole环境上的训练为例进行快速入门:
第一步,导入相关的模块
from life.dqn.dqn import DQN # 导入模型
from life.dqn.trainer import train_dqn # 导入训练器
from life.envs.dis_env_demo import make # 环境的一个例子
from life.utils.replay.replay_buffer import ReplayBuffer # 回放池
import torch
import matplotlib.pyplot as plt
第二步,设置超参数,并构建模型
# 设置超参数
lr = 2e-3
num_episodes = 500
hidden_dim = 128
gamma = 0.98
epsilon = 0.01
target_update = 10
buffer_size = 10000
minimal_size = 500
batch_size = 64
device = torch.device("cpu") # 也可指定为gpu : torch.device("cuda")env=make() # 建立环境,这里为 CartPole-v0
replay_buffer = ReplayBuffer(buffer_size) # 回放池
state_dim = env.observation_space.shape[0]
action_dim = env.action_space.n# 建立模型
agent = DQN(state_dim, hidden_dim, action_dim, lr, gamma, epsilon,target_update, device) # DQN模型
注意,如果你足够细心,你会发现在上述建立DQN的过程中,我们没有传入一个Neural Network,这是因为在建立深度强化学习时,Life提供了一个默认的双层神经网络作为建立DQN的默认神经网络。当然,你也可以使用自己设计的神经网络结构:
class YourNet:"""your network for your task"""passagent = DQN(state_dim, hidden_dim, action_dim, lr, gamma, epsilon,target_update, device, q_net=YourNet) # DQN模型
第三步,使用训练器训练模型
result=train_dqn(agent,env,replay_buffer,minimal_size,batch_size,num_episodes)
上述训练函数返回的是:训练过程中每个回合的汇报,如果你想的话,可以将其可视化出来:
episodes_list = list(range(len(result)))
plt.figure(figsize=(8,6))
plt.plot(episodes_list, result)
plt.xlabel("Episodes")
plt.ylabel("Returns")
plt.title("DQN on {}".format("Cart Pole v1"))
plt.show()
得到:
当然,如果你需要智能体的话,也可以设置return_agent=True
,这会返回一个元组(return_list, agent)
其中,return_list
为:训练过程中每个回合的汇报,agent
为训练好的智能体。
return_agent
默认为False
可见,除了超参数的设置之外,我们构建DQN算法只使用了两行代码:
from life.dqn.dqn import DQN
agent = DQN(state_dim, hidden_dim, action_dim, lr, gamma, epsilon,target_update, device)
我们训练DQN同样只使用了两行代码:
from life.dqn.trainer import train_dqn
result=train_dqn(agent,env,replay_buffer,minimal_size,batch_size,num_episodes)
这让我们的强化学习实现的相当简洁和方便!
上述的例子在项目的examples中
关于名称与LOGO
- Life的中文含义为:生命,生活,强化学习本来就是人生的一个过程,我们无时无刻不在进行着强化学习。强化学习不仅是一种科学的决策方法,各种算法的思想也给予我们很多人生的哲理,使人受益匪浅。
- LOGO 底色采用深蓝色,图案和文字采用浅蓝白色,整体端庄严谨,富有科技感。文字部分由项目名称LIFE字样和寄语:RL IS THE PROCESS OF LIFE 即可以理解为强化学习是人生的过程,也可以理解为强化学习是Life库的程序,一语双关。
- LOGO图案部分为4个伸长了的F,同时将F上面一个笔画伸长,使其左旋90°时形成L字样,为LIFE的简写LF; 同时致敬OpenAI的LOGO.
Life——一个简洁易用的强化学习库,基于pytorch相关推荐
- AgentWeb , 一个简洁易用的 Android Web 库
转自:http://www.jianshu.com/p/c80da1c41af7 AgentWeb 介绍 AgentWeb 是一个高度封装的 Android WebView ,简单易用 , 带有进度条 ...
- 【重磅推荐】哥大开源“FinRL”: 一个用于量化金融自动交易的深度强化学习库
深度强化学习实验室 官网:http://www.neurondance.com/ 论坛:http://deeprl.neurondance.com/ 编辑:DeepRL 一.关于FinRL 目前,深度 ...
- OpenAI Gym 是一个优秀开发和比较强化学习算法的工具
OpenAI Gym 是一个优秀开发和比较强化学习算法的工具. gym的核心接口是Env方法: reset(self):重置环境的状态,返回观察. step(self, action):推进一 ...
- DeepMind开源了强化学习库“松露”,团队自身也严重依赖它
强化栗 发自 凹非寺 量子位 报道 | 公众号 QbitAI 今天,DeepMind开源了一个基于TensorFlow的强化学习库,名字叫TRFL. 思路是模块化,强调灵活度:如果把造智能体想象成搭 ...
- 7. 强化学习之——基于模型的强化学习
目录 课程大纲 基于模型的强化学习概要 基于环境模型的价值函数优化 model-based value-based RL 基于环境模型的策略优化 model-based policy-based RL ...
- 蒙特卡洛方法求解强化学习任务——基于离轨策略的蒙特卡洛策略评估
蒙特卡洛方法求解强化学习任务--基于离轨策略的蒙特卡洛策略评估 目录 基于离轨策略的蒙特卡洛策略评估 基于普通重要性采样的离轨策略方法 基于普通重要性采样的离轨策略方法总结 基于加权重要性采样的离轨策 ...
- 深度强化学习:基于Python的理论及实践(英文版)
深度强化学习结合了深度学习和强化学习,使人工智能体能够在没有监督的情况下学习如何解决顺序决策问题.在过去的十年中,深度强化学习在一系列问题上取得了显著的成果,涵盖从单机游戏和多人游戏到机器人技术等方方 ...
- 【深度学习】基于Pytorch多层感知机的高级API实现和注意力机制(一)
[深度学习]基于Pytorch多层感知机的高级API实现和注意力机制(一) 文章目录 1 概述 2 从线性到非线性-激活函数2.1 ReLU函数2.2 sigmoid函数2.3 tanh函数 3 注意 ...
- Python深度学习:基于PyTorch [Deep Learning with Python and PyTorch]
作者:吴茂贵,郁明敏,杨本法,李涛,张粤磊 著 出版社:机械工业出版社 品牌:机工出版 出版时间:2019-11-01 Python深度学习:基于PyTorch [Deep Learning with ...
最新文章
- 某程序员吐槽一程序员大佬竟然放弃百度offer,回老家进烟草公司!是不是脑子有坑?网友:你才脑子有坑!...
- R语言ggplot2可视化:为图像中的均值竖线、中位数竖线、 geom_vline添加图例(legend)
- 页面用ajax实现简单的连接数据库
- Sublime Text 3 安装Go语言相关插件gosublime时 搜不到gosublime
- win10系统更新补丁时进度条一直卡在0%不动的解决方案
- Linux Kernel 5.13 稳定版发布:初步支持 M1 芯片
- 做人做事,就两个字!
- 2. laravel 创建第一条路由
- SVN MKACTIVITY
- ajax iframe的使用方法,使用jQuery和ajax代替iframe的方法(详解)
- 《AutoCAD全套园林图纸绘制自学手册》一2.4 文件管理
- IDEA git 切换分支注意事项
- 维基百科的语料库下载以及信息提取笔记
- 漏洞挖掘——实验9 SQL Injection Attack Lab
- 抽象类可用于创建对象吗_蜈蚣兰,见过吗?可用于口腔炎,鼻窦炎,气管炎,肾盂肾炎...
- 北大计算机研究生有多神仙,北大考研成绩公布,还上“热搜”,这都是些什么“神仙分数”?...
- 【备战NOIP】专题复习1-动态规划-背包问题
- 谁在用生命为错误买单?
- 视频转gif(源码)
- TADF材料的机制原理;TADF的机理;热活化延迟荧光如何产生?