GenRL 是一个基于 PyTorch 的强化学习库,专注于可重现、可推广的算法实现,并提高强化学习的易用性
GenRL 当前版本为 v0.0.2,可能会有重大变化
强化学习研究的发展速度比以往任何时候都要快。为了跟上不断增长的趋势,并确保 RL 研究的可重现性,GenRL 旨在通过提供以下主要功能来帮助更快地再现论文和基准测试:
- 以 PyTorch 为主:模块化、可扩展且符合 Python 习惯用法
- 教程和示例:超过 20 个从基础 RL 到先进深度 RL 算法的教程(附带解释)!
- 统一的训练器和日志记录类:代码重用性和高级用户界面
- 现成的算法实现:流行 RL 算法的现成实现
- 更快的基准测试:自动超参数调优、环境实现等
通过将这些功能集成到 GenRL 中,我们的目标是最终支持 在 100 行以内实现任何新算法。
如果您有兴趣贡献代码,可以查看问题并为代码、文档、测试等打开 PR。如有任何问题,请查看 贡献指南
安装
GenRL 兼容 Python 3.6 及以上版本,并依赖于 pytorch
和 openai-gym
。最简单的安装 GenRL 的方法是使用 pip,即 Python 首选的包管理器。
$ pip install genrl
请注意,GenRL 是一个活跃的项目,经常发布新版本。要升级到最新版本的 GenRL,可以按以下方式使用 pip。
$ pip install -U genrl
如果您打算安装最新的未发布版本(即从源码),可以简单地运行:
$ git clone https://github.com/SforAiDl/genrl.git
$ cd genrl
$ python setup.py install
用法
要从零开始在 Pendulum-v0
gym 环境下训练一个 Soft Actor-Critic 模型,并在 tensorboard 上记录奖励
import gym
from genrl.agents import SAC
from genrl.trainers import OffPolicyTrainer
from genrl.environments import VectorEnv
env = VectorEnv("Pendulum-v0")
agent = SAC('mlp', env)
trainer = OffPolicyTrainer(agent, env, log_mode=['stdout', 'tensorboard'])
trainer.train()
要从零开始在 FrozenLake-v0
gym 环境下训练一个 Tabular Dyna-Q 模型并绘制奖励:
import gym
from genrl.agents import QLearning
from genrl.trainers import ClassicalTrainer
env = gym.make("FrozenLake-v0")
agent = QLearning(env)
trainer = ClassicalTrainer(agent, env, mode="dyna", model="tabular", n_episodes=10000)
episode_rewards = trainer.train()
trainer.plot(episode_rewards)
教程
算法
深度强化学习
- DQN(深度 Q 网络)
- DQN
- Double DQN
- Dueling DQN
- Noisy DQN
- 分类 DQN
- VPG(原始策略梯度)
- A2C(优势行为者-评论者)
- PPO(近端策略优化)
- DDPG(深度确定性策略梯度)
- TD3(双重延迟 DDPG)
- SAC(软行为者-评论家)
经典强化学习
- SARSA
- Q 学习
赌博机强化学习
- 多臂赌博机
- Eps Greedy
- 上置信度界
- 汤普森采样
- 贝叶斯赌博机
- Softmax 探索
- 情境赌博机
- Eps Greedy
- 上置信度界
- 汤普森采样
- 贝叶斯赌博机
- Softmax 探索
- 深度情境赌博机
- 变分推断
- 神经网络参数的噪声采样
- 带神经网络的 Epsilon 贪婪
- 后验推断的贝叶斯回归
- Bootstrap 集成
感谢与类似库:
- Gym - 环境
- Ray
- OpenAI Baselines - 日志记录器
- Stable Baselines 3: Stable Baselines 旨在提供深度 RL 算法的基线。
- pytorch-a2c-ppo-acktr
- Deep Contextual Bandits