简介

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将强化学习算法分为以下几类:

  1. 传统的强化学习算法,如Sarsa;
  2. 只基于值函数的深度强化学习算法,如DQN;
  3. 基于策略函数和值函数的深度强化学习算法,如AC;
  4. 模仿强化学习算法,如BC;
  5. 离线强化学习算法,如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相关推荐

  1. AgentWeb , 一个简洁易用的 Android Web 库

    转自:http://www.jianshu.com/p/c80da1c41af7 AgentWeb 介绍 AgentWeb 是一个高度封装的 Android WebView ,简单易用 , 带有进度条 ...

  2. 【重磅推荐】哥大开源“FinRL”: 一个用于量化金融自动交易的深度强化学习库

    深度强化学习实验室 官网:http://www.neurondance.com/ 论坛:http://deeprl.neurondance.com/ 编辑:DeepRL 一.关于FinRL 目前,深度 ...

  3. OpenAI Gym 是一个优秀开发和比较强化学习算法的工具

    OpenAI Gym 是一个优秀开发和比较强化学习算法的工具. gym的核心接口是Env方法: reset(self):重置环境的状态,返回观察.     step(self, action):推进一 ...

  4. DeepMind开源了强化学习库“松露”,团队自身也严重依赖它

    强化栗 发自 凹非寺  量子位 报道 | 公众号 QbitAI 今天,DeepMind开源了一个基于TensorFlow的强化学习库,名字叫TRFL. 思路是模块化,强调灵活度:如果把造智能体想象成搭 ...

  5. 7. 强化学习之——基于模型的强化学习

    目录 课程大纲 基于模型的强化学习概要 基于环境模型的价值函数优化 model-based value-based RL 基于环境模型的策略优化 model-based policy-based RL ...

  6. 蒙特卡洛方法求解强化学习任务——基于离轨策略的蒙特卡洛策略评估

    蒙特卡洛方法求解强化学习任务--基于离轨策略的蒙特卡洛策略评估 目录 基于离轨策略的蒙特卡洛策略评估 基于普通重要性采样的离轨策略方法 基于普通重要性采样的离轨策略方法总结 基于加权重要性采样的离轨策 ...

  7. 深度强化学习:基于Python的理论及实践(英文版)

    深度强化学习结合了深度学习和强化学习,使人工智能体能够在没有监督的情况下学习如何解决顺序决策问题.在过去的十年中,深度强化学习在一系列问题上取得了显著的成果,涵盖从单机游戏和多人游戏到机器人技术等方方 ...

  8. 【深度学习】基于Pytorch多层感知机的高级API实现和注意力机制(一)

    [深度学习]基于Pytorch多层感知机的高级API实现和注意力机制(一) 文章目录 1 概述 2 从线性到非线性-激活函数2.1 ReLU函数2.2 sigmoid函数2.3 tanh函数 3 注意 ...

  9. Python深度学习:基于PyTorch [Deep Learning with Python and PyTorch]

    作者:吴茂贵,郁明敏,杨本法,李涛,张粤磊 著 出版社:机械工业出版社 品牌:机工出版 出版时间:2019-11-01 Python深度学习:基于PyTorch [Deep Learning with ...

最新文章

  1. 某程序员吐槽一程序员大佬竟然放弃百度offer,回老家进烟草公司!是不是脑子有坑?网友:你才脑子有坑!...
  2. R语言ggplot2可视化:为图像中的均值竖线、中位数竖线、 geom_vline添加图例(legend)
  3. 页面用ajax实现简单的连接数据库
  4. Sublime Text 3 安装Go语言相关插件gosublime时 搜不到gosublime
  5. win10系统更新补丁时进度条一直卡在0%不动的解决方案
  6. Linux Kernel 5.13 稳定版发布:初步支持 M1 芯片
  7. 做人做事,就两个字!
  8. 2. laravel 创建第一条路由
  9. SVN MKACTIVITY
  10. ajax iframe的使用方法,使用jQuery和ajax代替iframe的方法(详解)
  11. 《AutoCAD全套园林图纸绘制自学手册》一2.4 文件管理
  12. IDEA git 切换分支注意事项
  13. 维基百科的语料库下载以及信息提取笔记
  14. 漏洞挖掘——实验9 SQL Injection Attack Lab
  15. 抽象类可用于创建对象吗_蜈蚣兰,见过吗?可用于口腔炎,鼻窦炎,气管炎,肾盂肾炎...
  16. 北大计算机研究生有多神仙,北大考研成绩公布,还上“热搜”,这都是些什么“神仙分数”?...
  17. 【备战NOIP】专题复习1-动态规划-背包问题
  18. 谁在用生命为错误买单?
  19. 视频转gif(源码)
  20. TADF材料的机制原理;TADF的机理;热活化延迟荧光如何产生?

热门文章

  1. 基于FPGA的VGA控制输出显示(使用GM7123高清视频编码芯片)
  2. 中国各城市经纬度数据
  3. Kali渗透测试:使用browser_autopwn2模块进行渗透攻击
  4. 【Unity植物大战僵尸】太阳花功能基本完善(八)
  5. 企业微信应用实战踩坑之路
  6. YOLOV8-gradcam 热力图可视化 即插即用 不需要对源码做任何修改!
  7. Windows安装arm64架构的麒麟V10
  8. 【原创】解决AD账户被莫名其妙的锁定问题
  9. 3D游戏建模师到底做什么工作?使用哪些软件?就业前景如何?该选择什么方式学习游戏建模?
  10. 5分钟征服面试官系列-云计算方向