CleanRL 深度强化学习算法实现总览9 大算法、27 个单文件变体完整索引【免费下载链接】cleanrlHigh-quality single file implementation of Deep Reinforcement Learning algorithms with research-friendly features (PPO, DQN, C51, DDPG, TD3, SAC, PPG)项目地址: https://gitcode.com/GitHub_Trending/cl/cleanrlCleanRL 是一个以「高质量单文件实现」为核心理念的深度强化学习Deep RL算法库每一个算法实现都独立成.py文件不依赖自定义网络层或复杂抽象同时内置实验追踪、模型管理、视频录制等面向科研的工程特性。本文以仓库的 docs/rl-algorithms/overview.md 为骨架结合cleanrl/目录下的真实源码完整梳理 CleanRL 当前实现的 9 类算法与其全部变体并逐算法给出默认超参、适用场景与源码定位帮助你快速定位该用哪个文件、改哪些参数、对应哪篇论文。CleanRL 算法版图一张总表overview.md 以一张总表的方式列出了全部算法与其变体实现。整理如下各变体的详细文档见对应小节算法已实现的变体源码文件详细文档Proximal Policy Optimization (PPO)ppo.py、ppo_atari.py、ppo_continuous_action.py、ppo_atari_lstm.py、ppo_atari_envpool.py、ppo_atari_envpool_xla_jax.py、ppo_atari_envpool_xla_jax_scan.py、ppo_procgen.py、ppo_atari_multigpu.py、ppo_pettingzoo_ma_atari.py、ppo_continuous_action_isaacgym/ppo_continuous_action_isaacgym.pyppo.mdDeep Q-Learning (DQN)dqn.py、dqn_atari.py、dqn_jax.py、dqn_atari_jax.pydqn.mdCategorical DQN (C51)c51.py、c51_atari.py、c51_jax.py、c51_atari_jax.pyc51.mdSoft Actor-Critic (SAC)sac_continuous_action.py、sac_atari.pysac.mdDeep Deterministic Policy Gradient (DDPG)ddpg_continuous_action.py、ddpg_continuous_action_jax.pyddpg.mdTwin Delayed Deep Deterministic Policy Gradient (TD3)td3_continuous_action.py、td3_continuous_action_jax.pytd3.mdPhasic Policy Gradient (PPG)ppg_procgen.pyppg.mdRandom Network Distillation (RND)ppo_rnd_envpool.pyppo-rnd.mdQdaggerqdagger_dqn_atari_impalacnn.py、qdagger_dqn_atari_jax_impalacnn.pyqdagger.md从这张表可以看到三条清晰的演进主线同一种算法适配不同环境范式离散/连续动作、Atari/经典控制/MuJoCo/Procgen/IsaacGym、同一种算法提供 PyTorch 与 JAX 双后端如dqn_jax.py、c51_atari_jax.py、面向吞吐量与多卡训练的高性能变体ppo_atari_envpool.py、ppo_atari_multigpu.py。PPO覆盖最广的基准算法11 个变体PPO 是 CleanRL 中变体最丰富、生态最完整的算法从经典控制到 IsaacGym 仿真从单卡到多卡从 PyTorch 到 JAX 均有覆盖。核心实现ppo.pycleanrl/ppo.py面向离散动作的经典控制环境默认CartPole-v1是理解其余所有 PPO 变体的地基。其核心超参在Argsdataclass 中定义环境与训练规模env_idCartPole-v1、total_timesteps500000、num_envs4并行环境数、num_steps128每轮 rollout 每个环境采集的步数。PPO 核心超参gamma0.99折扣因子、gae_lambda0.95GAE 广义优势估计系数、num_minibatches4mini-batch 数、update_epochs4每批数据上更新 K 轮、clip_coef0.2surrogate clipping 系数、clip_vlossTrue对价值函数使用裁剪损失、ent_coef0.01熵正则系数、vf_coef0.5价值函数损失系数、max_grad_norm0.5梯度裁剪范数、anneal_lrTrue学习率退火、target_klNone可选的 KL 早停阈值。运行时推导参数batch_size、minibatch_size、num_iterations在脚本内由num_envs × num_steps与num_minibatches计算得出无需手动指定。从源码结构看ppo.py采用「actor-critic 共享 MLP 骨干两层 64 隐层 Tanh」的网络设计layer_init使用正交初始化actor 输出层用std0.01缩小初始策略熵。策略更新部分使用Categorical分布计算策略损失配合 GAE 与 mini-batch SGD构成标准的 PPO-Clip 训练循环。面向不同环境的 PPO 变体变体默认环境关键差异ppo_atari.pyBreakoutNoFrameskip-v4total_timesteps1e7、num_envs8、clip_coef0.1引入cleanrl_utils.atari_wrappersNoopResetEnv、MaxAndSkipEnv、EpisodicLifeEnv、FireResetEnv、ClipRewardEnv使用 CNN 处理帧堆叠ppo_continuous_action.pyHalfCheetah-v4total_timesteps1e6、num_steps2048、num_minibatches32、update_epochs10、ent_coef0.0使用Normal高斯分布输出连续动作环境侧叠加FlattenObservation、ClipAction、NormalizeObservation、NormalizeReward、TransformObservation/Rewardclip 到 ±10等 wrapper兼容 Gymnasium MuJoCo 与 dm_controlppo_atari_lstm.pyAtari在 actor-critic 中引入 LSTM 处理部分可观测POMDP序列ppo_atari_envpool.pyBreakout-v5用envpool向量环境替代 Gym 向量环境大幅提升环境吞吐ppo_atari_envpool_xla_jax.py/ppo_atari_envpool_xla_jax_scan.pyAtariJAX 后端 envpool配合 XLA 编译scan 变体用jax.lax.scan重写 rollout 以进一步降低开销ppo_procgen.pyProcgen 套件面向通用 RLProcgen benchmark可配合requirements-procgen.txtppo_atari_multigpu.pyBeamRiderNoFrameskip-v4等多卡配置数据并行多 GPU 训练支持--n_gpu等参数ppo_pettingzoo_ma_atari.pyPettingZoo 多智能体 Atari基于ppo_pettingzoo_ma_atari环境的多智能体 PPOppo_continuous_action_isaacgym.py位于cleanrl/ppo_continuous_action_isaacgym/IsaacGym 仿真如 Ant、Humanoid 等面向 IsaacGym 大规模并行仿真配套独立的pyproject.toml依赖声明对应基准脚本可参考 benchmark/ppo.sh、benchmark/ppo_trxl.sh运行与复现说明见 docs/benchmark/ppo.md、docs/benchmark/ppo_atari.md。DQN 家族从经典 DQN 到分布强化学习DQNdqn.py与 Atari/JAX 变体cleanrl/dqn.py是面向经典控制默认CartPole-v1的深度 Q 网络实现其Args完整保留了 DQN 的核心机制参数网络与经验回放buffer_size10000回放池大小、batch_size128采样批大小、train_frequency10训练频率。回放池来自cleanrl_utils.buffers.ReplayBuffer。目标网络tau1.0硬拷贝系数、target_network_frequency500每 500 步整权重拷贝一次目标网络。探索调度start_e1、end_e0.05、exploration_fraction0.5即在前 50% 的总步数内将 ε-greedy 探索率从 1.0 线性退火到 0.05。学习启动learning_starts10000预热步数之前只采集不学习。Q 网络采用 120→84 的两层 MLPReLU 激活。变体方面dqn_atari.py面向 AtariBreakoutNoFrameskip-v4使用卷积网络与 Atari wrappersdqn_jax.py、dqn_atari_jax.pyJAX/Flax 后端实现需参考requirements-jax.txt安装依赖。cleanrl_utils/evals/dqn_eval.py提供独立评估函数tests/test_classic_control.py中也有对dqn.py的冒烟测试可作运行验证。C51Categorical DQN分布价值学习cleanrl/c51.py在 DQN 基础上把「价值期望」改为「价值分布」核心差异参数n_atoms101分布的原子支撑点数量v_min-100、v_max100回报分布的上下界用于构造均匀支撑集。其余参数buffer_size、gamma、tau、target_network_frequency、start_e/end_e/exploration_fraction、learning_starts、train_frequency与 DQN 一致仅损失函数替换为分类分布投影F.cross_entropy计算交叉熵。变体c51_atari.py适配 Atari 像素环境c51_jax.py、c51_atari_jax.py提供 JAX 实现。连续控制三件套DDPG、TD3、SAC三个面向连续动作空间默认 MuJoCo-v4环境的 off-policy 算法共享相似结构actor-critic 经验回放 目标网络默认环境均为Hopper-v4total_timesteps1e6、buffer_sizeint(1e6)、gamma0.99、tau0.005、batch_size256。特性ddpg_continuous_action.pytd3_continuous_action.pysac_continuous_action.py学习率learning_rate3e-4单优化器learning_rate3e-4policy_lr3e-4、q_lr1e-3分离优化器探索机制exploration_noise0.1动作空间高斯噪声exploration_noise0.1 目标策略平滑policy_noise0.2、noise_clip0.5熵正则alpha0.2默认autotuneTrue自动调节延迟更新policy_frequency2policy_frequency2policy_frequency2、target_network_frequency1学习启动learning_starts25e3learning_starts25e3learning_starts5e3DDPGddpg_continuous_action.py是确定性策略梯度的基础实现单个 Q 网络 单个确定性 actor靠exploration_noise探索。TD3td3_continuous_action.py在 DDPG 之上加入论文提出的三项改进——双 Q 网络取最小clipped double-Q、目标策略平滑正则policy_noisenoise_clip、延迟策略更新policy_frequency2。SACsac_continuous_action.py采用随机策略 熵正则默认开启autotune自动学习温度系数alpha目标熵按动作维度自适应样本效率通常优于 DDPG/TD3。JAX 变体为ddpg_continuous_action_jax.py、td3_continuous_action_jax.pyAtari 像素版见sac_atari.py。基准复现脚本见 benchmark/sac.sh、benchmark/td3.sh、benchmark/ddpg.sh。PPG、RND 与 QdaggerCleanRL 的进阶算法矩阵PPGPhasic Policy Gradientcleanrl/ppg_procgen.py是唯一一个 PPG 实现面向 Procgen 通用 RL benchmark默认starpilot。它把 PPO 的训练拆分为策略阶段与辅助阶段参数上在标准 PPO 超参num_envs64、num_steps256、gamma0.999、adv_norm_fullbatchTrue之外新增n_iteration32N_pi策略阶段迭代数e_policy1E_pi策略阶段内策略更新次数v_value1E_V策略阶段价值更新次数e_auxiliary6E_aux辅助阶段价值函数更新次数。其网络设计为「actor 与 critic 共享特征提取层」的经典 PPG 结构辅助阶段仅更新价值头以最小化对策略的干扰。RND随机网络蒸馏cleanrl/ppo_rnd_envpool.py面向稀疏奖励探索任务默认环境MontezumaRevenge-v5total_timesteps2e9、num_envs128、gamma0.999、clip_coef0.1、ent_coef0.001。实现要点使用envpool提供 128 路并行环境训练一个随机初始化且固定不动的目标网络与一个可学习的预测网络用两者输出特征的均方误差作为内在奖励引入RunningMeanStd对奖励做归一化并维护IntrinsicReward与ExtrinsicReward的加权组合相关权重可在脚本中调整。Qdagger从专家教师策略蒸馏cleanrl/qdagger_dqn_atari_impalacnn.py与 JAX 版qdagger_dqn_atari_jax_impalacnn.py面向 Atari默认BreakoutNoFrameskip-v4total_timesteps1e7是 DQN 与行为克隆的结合体从 Hugging Face Hub 下载预训练教师模型dqn_atari的QNetwork作为TeacherModel代码中通过hf_hub_download获取权重训练学生策略时以一定概率从教师策略采样动作sample_action并将教师行为克隆损失与 DQN 的 Q 学习损失联合优化同时引入n-step自举与分布式经验回放dequeReplayBuffer评估环节复用cleanrl_utils/evals/dqn_eval.py的evaluate函数。所有实现共享的通用工程参数无论选择哪个算法文件Args中都包含一组完全一致的通用科研参数参数默认值说明--seed1实验随机种子另可通过torch_deterministic开启确定性计算--cudaTrue是否启用 GPU--trackFalse是否用 Weights Biases 追踪实验--wandb-project-name/--wandb-entitycleanRL/Nonewandb 项目名与团队--capture-videoFalse录制 agent 表现视频到videos/{run_name}目录--save-model/--upload-model/--hf-entityFalse/False/保存模型到runs/{run_name}并可上传到 Hugging Face HubDQN/C51/SAC/DDPG/TD3/PPO 连续动作等多数文件支持从tests/目录如 tests/test_classic_control.py、tests/test_atari.py、tests/test_mujoco.py可以看到这些参数与算法逻辑共同保证了脚本可以开箱即用并接受--env-id、--total-timesteps等标准 CLI 覆盖。如何选择实现决策速查离散动作、快速验证经典控制选ppo.py或dqn.pyAtari 基准选ppo_atari.py/dqn_atari.py/c51_atari.py。连续控制、MuJoCo/dm_control优先sac_continuous_action.py样本效率高需要确定性与复现可控时选td3_continuous_action.py最小实现看ddpg_continuous_action.py。追求环境吞吐Atari 场景用ppo_atari_envpool.pyenvpool 向量化进一步压榨性能可上 JAX 的ppo_atari_envpool_xla_jax.py/_scan.py。多卡训练ppo_atari_multigpu.py。稀疏奖励 / 探索困难ppo_rnd_envpool.pyRND Montezuma 系列。通用 RL / 泛化能力ppo_procgen.py、ppg_procgen.py。样本蒸馏 / 从专家学习qdagger_dqn_atari_impalacnn.py。仿真到现实 / IsaacGymppo_continuous_action_isaacgym/ppo_continuous_action_isaacgym.py。安装依赖时可按需选用 requirements/ 下的拆分文件基础训练用requirements.txtAtari 用requirements-atari.txtJAX 用requirements-jax.txtMuJoCo 用requirements-mujoco.txtProcgen 用requirements-procgen.txtenvpool 用requirements-envpool.txt多智能体用requirements-pettingzoo.txt。结语通过 overview.md 这张索引可以快速定位 CleanRL 在9 个算法族、27 个实现变体上的完整布局既有从 CartPole 到 Atari、从离散到连续的横向覆盖也有 PyTorch/JAX 双后端、envpool 加速、多 GPU、IsaacGym 仿真、稀疏奖励与专家蒸馏的纵向深入。每个变体的详细设计、超参说明与实验曲线均可通过上述各算法文档页ppo.md、dqn.md、c51.md、sac.md、ddpg.md、td3.md、ppg.md、ppo-rnd.md、qdagger.md继续深入研读并结合 docs/rl-algorithms/overview.md 交叉检索所需实现。【免费下载链接】cleanrlHigh-quality single file implementation of Deep Reinforcement Learning algorithms with research-friendly features (PPO, DQN, C51, DDPG, TD3, SAC, PPG)项目地址: https://gitcode.com/GitHub_Trending/cl/cleanrl创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考