PPO
Proximal Policy Optimization(近端策略优化):通过裁剪策略更新幅度约束新旧策略偏离,是离散/连续控制中最常用的 on-policy 深度强化学习算法之一。
简介
PPO 由 OpenAI 提出,目标是在策略梯度方法中取得「样本效率 / 实现复杂度 / 训练稳定性」的实用折中。核心思想是:用 clipped surrogate objective 限制单次更新时概率比偏离 1 太远,避免一次更新毁掉已学策略。实践中常配合 GAE(广义优势估计)、价值网络与可选的优势归一化。
在工程栈上,PPO 几乎是自定义 Gymnasium 环境的默认第一选择:Stable Baselines3 提供开箱实现;对 Dict 观测可用 MultiInputPolicy。GridWorld 悬崖行走教程表明:在稠密塑形奖励 + 明确事件奖惩下,PPO 约 60k 步即可从随机撞墙行为收敛到绕崖到达目标。
PPO 不是万能:样本效率通常弱于 SAC/TD3 等 off-policy 方法;对奖励尺度与截断设置敏感;但调试友好、文档与示例多,适合环境设计验证阶段。
关键信息
- 类型:算法 / 概念
- 领域:强化学习、策略优化
- 官方网站/地址:原论文 arXiv:1707.06347;实现见 SB3 文档
- 定价/开源状态:算法公开;常用实现开源
- 相关概念:Stable Baselines3、Gymnasium、势能奖励塑形、GridWorld悬崖行走
核心特性
概念类必填项
- 定义:一类带信任域风格约束的策略梯度算法,用裁剪目标近似限制策略步长,交替采样与多 epoch 更新
- 核心组成:
- Actor(策略)与 Critic(价值)
- 概率比 (r_t(\theta)=\pi_\theta/\pi_{\theta_{old}}) 与 clip
- 优势估计(如 GAE)与可选
normalize_advantage - 价值损失与熵正则(实现相关)
- 典型应用:离散网格导航、机器人控制、游戏、作为 LLM RLHF 中的历史方案变体(工程语境不同)
- 常见误区:
- 把训练失败一律归因于「PPO 不行」,实际常是观测未归一化、奖励爆炸、terminated/truncated 混用
- 认为步数越多越好而不看
ep_rew_mean是否已平台 - Dict 观测未换 MultiInputPolicy
与本教程相关的训练现象
- S 形奖励曲线:0–15k 负奖励(撞墙/坠崖)→ 15k–40k 快速上升 → 40k–60k 平台约 4+
- loss 波动:10k–25k 学悬崖规避时 policy/value loss 同步剧烈波动,之后单调下降——Actor/Critic 难度接近
- 满分锚点:最短约 8 步时理论回报约 4.6,用于判断是否「还在瞎走」还是「已接近最优」
不同素材中的观点
- 2026-07-19-juejin-gridworld-cliff-ppo:PPO 配置强调三点——
MultiInputPolicy适配 Dict 观测;normalize_advantage=True稳住小批量;60k timesteps 对 5×5 任务绰绰有余。评估时用deterministic=True可视化,避免随机探索掩盖策略质量。曲线解读把算法行为与环境奖励设计绑定:收敛值约 4.38 与完美回合 ~4.6 吻合,说明塑形未严重扭曲最优路径。
实用信息
- 相关资源:
- SB3:
from stable_baselines3 import PPO - 训练前:
check_env(env) - 日志:TensorBoard 关注
rollout/ep_rew_mean、train/loss、train/value_loss
- SB3:
- 注意事项:奖励建议压缩到约 [-10,10];超时用 truncated;扩展方向可用 SAC/TD3 做连续动作对照实验