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 方法;对奖励尺度与截断设置敏感;但调试友好、文档与示例多,适合环境设计验证阶段。

关键信息

核心特性

概念类必填项

  • 定义:一类带信任域风格约束的策略梯度算法,用裁剪目标近似限制策略步长,交替采样与多 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_meantrain/losstrain/value_loss
  • 注意事项:奖励建议压缩到约 [-10,10];超时用 truncated;扩展方向可用 SAC/TD3 做连续动作对照实验

相关页面