自主学习库:用于构建强化学习智能体的PyTorch库
自主学习库(autonomous-learning-library)是一个面向PyTorch的面向对象的深度强化学习(DRL)库。该库的目标是提供必要的组件,以快速构建和评估新型强化学习智能体,同时提供现代DRL算法的高质量参考实现。完整文档可在以下网址找到:https://autonomous-learning-library.readthedocs.io。
构建新智能体的工具
自主学习库的主要目标是通过提供用于构建和评估智能体的常用工具,促进新型强化学习智能体的快速开发,例如:
- 灵活的函数
Approximation
API,集成了目标网络、梯度裁剪、学习率调度、模型检查点、多头网络、损失缩放、日志记录等功能。 - 各种内存缓冲区,包括优先经验回放(PER)、广义优势估计(GAE)等。
- 基于
torch
的Environment
接口,通过消除numpy
中间人简化了智能体实现。 - 用于复制标准基准的常见包装器和智能体增强功能。
- 集成Slurm以运行大规模实验。
- 绘图和日志记录工具,包括
tensorboard
集成和用于生成常见图表的实用程序。
有关自主学习库提供的功能的完整描述,请参阅文档指南。此外,我们还提供了一个示例项目,展示了构建新智能体的最佳实践。
高质量参考实现
自主学习库将强化学习智能体分为两个模块:all.agents
提供了许多常见算法的灵活、高级实现,可以适应新的问题和环境;all.presets
提供了这些智能体的特定实例,针对特定环境集进行了调优,包括Atari游戏、经典控制任务和MuJoCo/Pybullet机器人模拟。以下是一些基准测试结果,显示与已发表结果相当的结果:
截至今天,all
包含以下深度强化学习算法的实现:
- 优势演员-评论家(A2C)
- 分类DQN(C51)
- 深度确定性策略梯度(DDPG)
- 深度Q学习(DQN)+ 扩展
- 近端策略优化(PPO)
- Rainbow(Rainbow)
- 软演员-评论家(SAC)
它还包含以下"原始"智能体的实现,这些智能体提供了有用的基准,并且表现可能比您预期的更好:
- 原始演员-评论家
- 原始策略梯度
- 原始Q学习
- 原始Sarsa
安装
首先,您需要新版本的PyTorch(>1.3)以及Tensorboard。然后,您可以通过PyPi安装核心自主学习库:
pip install autonomous-learning-library
您也可以使用以下命令安装所有额外功能(如Gym环境):
pip install autonomous-learning-library[all]
最后,您可以直接从此存储库安装,包括开发依赖项:
git clone https://github.com/cpnota/autonomous-learning-library.git
cd autonomous-learning-library
pip install -e .[dev]
运行预设
如果您只想测试一些很酷的智能体,该库包含了几个用于此目的的脚本:
all-atari Breakout a2c
您可以使用以下命令观察训练进度:
tensorboard --logdir runs
并在浏览器中打开http://localhost:6006。模型完全训练后,您可以使用以下命令观看训练好的模型玩游戏:
all-watch-atari Breakout "runs/a2c_[id]/preset.pt"
其中id
是您特定运行的ID。您应该能够使用Tab补全或查看runs
目录找到它。自主学习库还包含经典控制和PyBullet环境的预设和脚本。
如果您想测试自己的智能体,您需要定义自己的脚本。一些示例可以在examples
文件夹中找到。有关构建自己的智能体的信息,请参阅文档!
注意
该库由马萨诸塞大学阿默斯特分校的自主学习实验室(ALL)开发。它由Chris Nota(@cpnota)编写并目前维护。本存储库中表达或暗示的观点不一定反映ALL的观点。
引用自主学习库
我们建议使用以下引用:
@misc{nota2020autonomous,
author = {Nota, Chris},
title = {The Autonomous Learning Library},
year = {2020},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/cpnota/autonomous-learning-library}},
}