a reinforce learning library, support both win and linux
Project description
Life
Life is a library for reinforce learning implemented by PyTorch.
目前,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模型
第三步,使用训练器训练模型
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()
得到:
可见,除了超参数的设置之外,我们构建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:
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
rllife-1.0.3.tar.gz
(19.5 kB
view details)
File details
Details for the file rllife-1.0.3.tar.gz.
File metadata
- Download URL: rllife-1.0.3.tar.gz
- Upload date:
- Size: 19.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b7aab9a92b91cfd19d9ebf64d606b2d699dc0192b545e833a5014bfa7e72948f
|
|
| MD5 |
1df23e3fb3cad4d0618f157a4ee6dee5
|
|
| BLAKE2b-256 |
bd3082330d8c700aec62b681d5e60d0918c312837af85f5d6fa78768e0a4e711
|