Deep-Reinforcement-Learning-Algorithms-with-PyTorch
PyTorch 实现的 18 种深度强化学习算法合集,覆盖 DQN/PPO/SAC/DDPG 等主流算法,适合强化学习研究与教学
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
PyTorch 实现的 18 种深度强化学习算法合集,覆盖 DQN/PPO/SAC/DDPG 等主流算法,适合强化学习研究与教学
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象你正在训练一只小狗学会玩一个从未接触过的游戏。小狗最初完全是随机摸索,碰巧做对了动作就得到奖励,做错了就被忽略。随着练习次数越来越多,它逐渐摸清了什么情况下应该做什么动作——强化学习(Reinforcement Learning, RL)的核心逻辑正是如此,只不过"小狗"变成了神经网络,而"奖励"变成了精心设计的数学信号。
2013年,DeepMind 发表论文《Playing Atari with Deep Reinforcement Learning》,首次证明深度神经网络可以学习如何玩转 Atari 游戏,从此掀起了深度强化学习的研究热潮。此后十年,DQN、PPO、SAC、DDPG、TD3 等算法相继涌现,各自在不同场景下展现出独特优势。然而,这些算法的官方实现往往分散在不同的代码库中,论文代码与生产代码之间存在巨大鸿沟,给研究者和工程师的学习、复现和迁移带来了不少障碍。
p-christ/Deep-Reinforcement-Learning-Algorithms-with-PyTorch 正是为了解决这一痛点而生——这是一个高度结构化的 PyTorch 实现合集,将主流深度强化学习算法统一到一个代码框架下,覆盖从基础 DQN 到前沿的分层强化学习(HRL)方法,既是学习资料,也是科研起点。
该仓库由独立开发者 p-christ 创建并维护,2018年9月首发,至今(2024年7月)仍有活跃更新,在 GitHub 上积累了 5,934 颗星 和 1,210 个 Fork,是强化学习领域最受关注的 PyTorch 实现库之一。
作者在 README 中透露了一个有趣细节:仓库名中的 "Deep_RL_Implementations" 与实际仓库名不一致,实际使用时需注意访问正确的地址。仓库的定位非常明确——为强化学习研究者和学生提供一个易于理解、可直接运行的算法实现合集,所有代码均附有对应论文引用,兼具学术严谨性和工程可读性。
该项目采用模块化分层架构,整体代码组织清晰,便于按需研究和扩展。
顶层目录结构如下:
├── agents/ # 所有强化学习算法的核心实现
│ ├── DQN_agents/ # 基于值函数(Value-based)算法
│ ├── actor_critic_agents/ # Actor-Critic 策略梯度算法
│ ├── policy_gradient_agents/ # 纯策略梯度算法
│ ├── hierarchical_agents/ # 分层强化学习算法
│ ├── Base_Agent.py # 所有算法的基类,定义训练循环框架
│ └── Trainer.py # 统一训练器,管理实验配置与执行
├── environments/ # 自定义 Gym 环境(Four Rooms、Long Corridor 等)
├── exploration_strategies/ # 探索策略(ε-greedy、熵正则等)
├── utilities/ # 通用工具(TensorBoard、噪声生成、经验回放等)
├── results/ # 各算法的运行脚本与结果图
└── requirements.txt # 依赖声明
这种架构的优势在于:新增算法只需继承 Base_Agent.py,实现少量核心方法,无需从头搭建训练循环,代码复用率极高。
项目实现了 18 种深度强化学习算法,覆盖了从 2013 年到 2019 年间几乎所有里程碑式的工作:
经典 DQN 系列(Value-based):
策略梯度与 Actor-Critic 系列:
先进经验回放机制:
分层强化学习(HRL)系列:
特别值得一提的是 HER(Hindsight Experience Replay)——这是 2018 年由 OpenAI 提出的技术,核心思想是"即使任务失败了,智能体也可以从中学到东西":当智能体未能达成目标时,把这次经历的目标改成实际达成的状态,作为一条成功的经验来学习。这一招让原来几乎不可能解决的多目标任务(如 FetchReach 机械臂)变得可学习,相关实验结果与论文高度一致。
除了复用 OpenAI Gym 标准环境外,项目还实现了 4 个自定义环境:
这些环境覆盖了强化学习研究中最经典也最具挑战性的场景,Four Rooms 和 Long Corridor 专门设计用来暴露普通 DQN 的局限性,验证分层算法的必要性。
项目 requirements.txt 中指定了 torch==0.4.1.post2 和 gym==0.10.9——这两个版本分别发布于 2018 年中,对应 PyTorch 早期 API 设计。虽然 PyTorch 版本较旧,但也意味着代码依赖关系简单清晰,没有新版 PyTorch 引入的各种破坏性变更,学习成本较低。当然,这也意味着在新环境中安装可能遇到兼容性问题,需要通过 conda 或虚拟环境隔离管理。
Base_Agent.py(18,279 字符)和 Trainer.py(15,144 字符)是整个项目的核心。训练流程遵循标准的 RL 循环:
收集经验(Interact) → 存储到 Replay Buffer
→ 采样批次(Sample) → 计算 TD Error / Policy Gradient
→ 反向传播更新网络(Learn) → 定期评估策略(Evaluate)
Trainer.py 负责将配置文件(环境、算法超参数、随机种子)映射为实际可运行的脚本,results/ 目录下的每个 .py 文件(如 Cart_Pole.py、Mountain_Car.py)都是 Trainer 的具体调用示例。
exploration_strategies/ 目录实现了多种探索机制:ε-greedy、OU 噪声(Ornstein-Uhlenbeck process,适用于连续控制)、高斯噪声等。这些策略与不同算法配合——DQN 系列通常用 ε-greedy,Actor-Critic 系列(尤其是 DDPG/TD3)则用 OU 噪声或高斯噪声。
utilities/Tensorboard.py 提供了训练过程可视化支持,可以实时监控 Q 值、策略熵、Episode 回报等指标的变化曲线,帮助判断训练是否收敛以及超参数是否合理。
项目提供了完整的上手流程:
git clone https://github.com/p-christ/Deep_RL_Implementations.git
cd Deep_RL_Implementations
conda create --name myenvname
conda activate myenvname
pip3 install -r requirements.txt
python results/Cart_Pole.py
安装过程相对顺畅(需要注意的是项目依赖 gym 0.10.9,与最新 gym 版本 API 不兼容,建议严格使用 requirements.txt 中指定版本)。运行时需要屏幕显示环境(PyVirtualDisplay 提供虚拟显示支持),训练结果会实时绘制学习曲线。
更换为其他环境(如 Mountain Car、Fetch Reach)只需修改配置文件中的 config.environment 字段,参考对应脚本即可。项目还支持自定义 Gym 环境,只需创建一个继承自 gym.Env 的类,参考 Environments/Four_Rooms_Environment.py 的实现即可。
这是一款面向研究和学习的工具包,而非生产级部署框架。 具体来说:
局限性方面:
优势方面:
该项目代表了 2018-2020 年间强化学习工程化的一个重要方向:将分散的论文代码整合为统一框架,降低研究门槛。类似的趋势还体现在 Stable-Baselines3、RLlib、Stable-Projer 等更成熟的库上,但本项目的独特价值在于代码的透明度和可读性——没有任何隐藏的优化或抽象层,每个算法的实现逻辑都完整呈现在面前。
从发展趋势看,当前强化学习领域正在向以下方向演进:
本项目虽然尚未覆盖这些前沿方向,但其架构为基础算法的扩展研究提供了良好的模板。
p-christ/Deep-Reinforcement-Learning-Algorithms-with-PyTorch 是强化学习领域一份难得的"一站式"学习资源。它以清晰的模块化架构、完整的算法覆盖和高度可读的代码著称,将深度强化学习从学术论文中"翻译"为可直接运行的 Python 代码。无论是想入门强化学习的研究生、需要快速原型验证的工程师,还是希望复现论文结果的科研人员,都能从中受益。
需要注意的是,由于依赖版本较旧、缺乏容器化部署支持,它更适合本地开发和研究实验,而非生产环境使用。如果你正在寻找一个深度强化学习的"活的教科书",这个项目值得放入你的收藏夹。
项目信息
- GitHub:https://github.com/p-christ/Deep-Reinforcement-Learning-Algorithms-with-PyTorch
- Stars:5,934 | Forks:1,210 | 语言:Python | 协议:MIT
- 核心依赖:PyTorch 0.4.1, Gym 0.10.9, NumPy, Matplotlib
- 支持算法:18种(DQN/DDQN/PPO/SAC/TD3/DDPG/A3C/A2C/REINFORCE/HER等)