拓冰建站拓冰建站
首页 / 资讯中心 / 正文

第一个强化学习实验:Hands-On Modern RL CartPole之PPO训练与训练曲线分析完整教程

第一个强化学习实验Hands-On Modern RL CartPole之PPO训练与训练曲线分析完整教程【免费下载链接】hands-on-modern-rl An open-source, hands-on curriculum bridging the gap from basic RL concepts to LLM alignment, RLVR, and advanced Agentic systems.项目地址: https://gitcode.com/gh_mirrors/ha/hands-on-modern-rl如果你正在寻找一个零显卡门槛、CPU 上几十秒就能跑完的强化学习入门实验开源教程项目Hands-On Modern RL的第一章就是最佳起点用PPO 算法训练 CartPole 倒立摆并手把手带你分析训练曲线——奖励怎么从 20 分涨到 500 分、四个关键诊断指标分别说明了什么、训练异常时按什么顺序排查。本文带你完成第一次 CartPole PPO 训练读懂每一条曲线背后的含义。为什么从 CartPole 开始强化学习的Hello WorldCartPole 是强化学习的经典入门任务一根杆子通过关节连在小车上智能体每一步只能选择向左推或向右推小车目标是让杆子尽可能久地保持竖直。观测每一步环境返回 4 个数——小车位置、小车速度、杆子角度、杆子角速度动作只有 2 个——向左0或向右1没有不推也没有力度调节奖励每存活 1 步得 1 分回合最长 500 步杆子倒下角度超过约 ±12°或小车越界位置超过 ±2.4立即结束这意味着回合奖励 存活步数随机策略平均撑 20 步左右而满血策略能撑满 500 步上限。任务足够简单到 30 秒就能训练完却完整包含了强化学习的全部核心要素——状态、动作、奖励、策略。快速上手用 PPO 跑通第一次 CartPole 训练整个实验不需要独立显卡普通笔记本的 CPU 即可完成。Hands-On Modern RL 提供了两个版本的 PPO 实现可以按需选择实现版本代码文件特点Stable-Baselines3 版1-ppo_cartpole.py调用 SB3 的PPO约 30 行即可完成训练带 SwanLab 指标记录纯 PyTorch 版2-pytorch_ppo.py手写 Actor-Critic、GAE、裁剪更新每轮指标导出为 CSV适合逐行理解原理安装依赖并运行以纯 PyTorch 版为例固定随机种子便于复现cd code/chapter01_cartpole pip install -r requirements.txt python 2-pytorch_ppo.py \ --seed 42 \ --iterations 40 \ --steps-per-rollout 2048 \ --log-csv output/training_metrics_seed42.csv训练共与环境交互40 × 2048 81,920步。运行结束后output/目录中会留下两个关键文件训练后的模型参数以及每一轮未经平滑的训练指标 CSV仓库中已预置一份可直接查看training_metrics_seed42.csv。 每章目录都自带独立的requirements.txt只装当前章节所需的最小依赖即可。更多章节代码的用法可在 code/README.md 中找到总览。解读训练曲线奖励如何从 20 分涨到 500 分训练完成后用仓库自带的绘图脚本 plot_curves.py 从 CSV 生成曲线图上的每个点都能追溯到原始记录。下面是这次 seed42 运行的实测奖励曲线结合 metrics.md 中的原始日志这条曲线呈现典型的三段式形态阶段采样步数平均奖励现象解读探索期0 ~ 8k21 → 87策略接近随机杆子平均撑 20 步左右就倒下曲线在低位震荡上升期8k ~ 26k87 → 500PPO 连续迭代第 10 轮约 20k 步首次触及 500 分上限平台期26k ~ 82k500 附近稳定满分但会出现 460 这样的短暂回落——随机动作采样导致的正常波动两个关键读数解决阈值 475经典控制任务中常以平均奖励 475 作为已解决标准200k 步内达到。本次运行约在 25k 步就提前跨过说明 PPO 在 CartPole 上样本效率很高。训练奖励 ≠ 最终水平训练时使用随机采样即使向右概率 70%也可能抽到向左所以曲线有毛刺。最终要用确定性策略独立评估 20 个回合本次结果为500.0 ± 0.0——每个回合都撑满 500 步上限。训练曲线深度分析4 个关键诊断指标回合奖励只告诉你结果好不好训练出问题时它给不出原因。PPO 的四个辅助指标正好对应训练流程的三个环节本次运行的实测数值如下数据来自同一份 CSV指标含义seed42 实测健康信号策略熵Entropy动作选择的分散程度0.685 → 0.421缓慢下降说明策略逐渐确定但仍保留状态差异价值损失Value LossCritic 对长期回报的预测误差64.1 → 0.00014持续走低中途回弹表示策略进入了新状态分布近似 KLApprox KL一次更新中新旧策略的偏移量最大 0.00871数值很小说明裁剪机制约束住了更新幅度裁剪比例Clip Fraction触发概率比裁剪的样本占比14.5% → 0%前期有裁剪属正常后期归零表示更新已收敛训练异常时的排查顺序源自 training.md先查数据是否正确——terminated杆子倒下后续价值取 0和truncated500 步截断仍要用 $V(s)$是否区分、GAE 是否在每次 reset 处切断再查指标——策略熵是否过早塌缩、价值损失是否发散、KL 是否过大。错误的回合边界会直接改变训练目标仅调学习率无法修正这类问题。对比两种 PPO 实现SB3 与纯 PyTorch 的曲线差异Hands-On Modern RL 特意保留了 SB3 版和纯 PyTorch 版两套完整记录各 80k 步两者的六项指标总览如下可以直观看到同一算法、不同实现的样本效率差异纯 PyTorch 版约 25k 步解决橙色曲线每轮 2048 步大 batch收敛更快SB3 版约 65k 步达到满分蓝色曲线n_steps2048默认配置下样本效率略低但工程封装完善自带评估与日志两版曲线最终都收敛到 500 分平台价值损失都降到接近 0——这验证了实现细节影响收敛速度但不影响最终能力这一重要认知也为后续章节做超参数对比实验提供了方法论基础统一环境版本、网络结构、训练量与随机种子集合一次只改一个变量。实验看板与复现指南如果希望实时查看曲线而不是事后读 CSV仓库的 SB3 脚本 1-ppo_cartpole.py 已内置 SwanLab 本地记录训练结束后执行swanlab watch swanlog即可在浏览器打开实验看板复现提示单种子曲线只能验证代码和配置能完成任务不能代表所有随机种子的表现。做算法或超参数比较时请运行多个随机种子并报告完整原始曲线——这一原则贯穿 Hands-On Modern RL 全部实验章节。总结与下一步你学到的对应资源CartPole 环境规则与奖励设计principles.mdPPO 原理GAE 优势、概率比与裁剪目标metrics.md从 CSV 生成曲线与捕获环境帧training.md两版 PPO 实现源码code/chapter01_cartpole/至此你已经完成了强化学习的第一个完整实验闭环固定配置训练 → 导出原始指标 → 生成可追溯的曲线 → 用诊断指标解释训练过程。下一章将从多臂老虎机出发把这次跑过的状态、动作、奖励和策略写成更正式的 MDP 表述docs/chapter03_mdp/再逐步走向 DQN、Actor-Critic直到 LLM 对齐中的 RLVR 与 Agentic RL——这条学习路线的完整代码索引见 code/README.md。【免费下载链接】hands-on-modern-rl An open-source, hands-on curriculum bridging the gap from basic RL concepts to LLM alignment, RLVR, and advanced Agentic systems.项目地址: https://gitcode.com/gh_mirrors/ha/hands-on-modern-rl创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门