Hugging Face 深度强化学习课程 第8单元:近端策略优化(PPO)详解

TL;DR

Hugging Face 发布了一个关于近端策略优化(PPO)的完整教程,解释了限制策略更新以实现更稳定学习的裁剪代理目标,并提供了在 CartPole‑v1 和 LunarLander‑v2 上评估的完整 PyTorch 实现。


为什么 PPO 很重要

PPO 通过将每次策略更新约束在一个小的、预定义的范围 ([1-\epsilon,,1+\epsilon]) 内来提升强化学习的稳定性。经验表明,更小的更新收敛更快,并且可以避免灾难性的“策略悬崖”,即大幅度的步伐会产生难以恢复的糟糕策略。


核心技术思想:裁剪代理目标

策略目标回顾

经典的 REINFORCE 目标通过对 (\log \pi_\theta(a_t|s_t) A_t) 进行梯度上升来最大化期望回报。若没有约束,过大的步长会导致学习缓慢(若步长太小)或方差过高(若步长太大)。

比率函数

PPO 用概率比率取代对数概率项:

[ r_t(\theta) = \frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)} ]

  • 若 (r_t > 1),则在当前策略下该动作更可能发生。
  • 若 (0 < r_t < 1),则在当前策略下该动作的可能性更低。

该比率直接衡量新旧策略之间的差异。

未裁剪目标

未裁剪的部分将比率与优势 (A_t) 相乘:

[ r_t(\theta) \cdot A_t ]

若没有界限,较大的 (r_t) 会产生过大的梯度,导致破坏性的更新。

裁剪目标

PPO 将比率裁剪到区间 ([1-\epsilon,,1+\epsilon])(论文使用 (\epsilon=0.2))。裁剪后的代理目标为:

[ \min\big(r_t(\theta) A_t,; \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon) A_t\big) ]

  • 最小值 选择更保守的估计。
  • 当比率位于裁剪范围内时,使用未裁剪的项,允许正常的策略改进。
  • 当比率超出范围时,梯度变为零,因为裁剪项是常数,从而防止过于激进的更新。

与 TRPO 的比较

  • TRPO 在损失之外强制执行 KL 散度约束,这在计算上成本高且实现复杂。
  • PPO 通过裁剪将约束直接嵌入损失中,提供了更简洁、更快速的替代方案。

目标可视化

六种情况展示了最小操作的行为:

  1. 比率在范围内,优势为正 – 增加动作概率。
  2. 比率在范围内,优势为负 – 降低动作概率。
  3. 比率低于范围,优势为正 – 增加概率(梯度非零)。
  4. 比率低于范围,优势为负 – 梯度为零(不再降低)。
  5. 比率高于范围,优势为正 – 梯度为零(防止过度贪婪的更新)。
  6. 比率高于范围,优势为负 – 降低概率。

在所有情况下,只要选择了裁剪项,梯度即为零,确保策略不会进一步偏离旧策略。


完整的 PPO 损失(Actor‑Critic)

最终的损失由三个部分组成:

  1. 裁剪代理目标(策略损失)。
  2. 价值损失(预测回报与经验回报之间的均方误差)。
  3. 熵奖励(鼓励探索)。

文章的最终图示展示了该组合损失。


从理论到代码

Hugging Face 提供了逐步的 PyTorch 实现:

  • 使用 CleanRL 单文件风格(Costa Huang)。
  • 参考了 13 条实现细节的详细列表(ICLR 博客文章)。
  • 在两个经典的 Gym 环境上训练智能体:
    • CartPole‑v1 – 一个简单的平衡任务。
    • LunarLander‑v2 – 一个更复杂的二维着陆问题。
  • 训练完成后,模型可以推送到 Hugging Face Hub 进行评估和可视化。

完整教程的 notebook 位于: https://github.com/huggingface/deep-rl-class/blob/main/unit8/unit8.ipynb


对实践者的意义

  • 稳定性 – PPO 的裁剪机制提供了一种实用、低开销的方式来实现稳定的策略学习,无需 TRPO 的高计算成本。
  • 易用性 – 文章的代码优先方法使 PPO 对初学者友好,同时仍然展示了研究级工作所需的细节。
  • 可扩展性 – 通过将训练好的模型推送到 Hub,实践者可以在社区中共享、基准测试并迭代 PPO 智能体。

深度强化学习课程的后续步骤

本教程是八单元系列的一部分,涵盖:

  • Advantage Actor‑Critic (A2C) – 混合价值/策略方法。
  • PPO – 本单元的重点。
  • 未来的单元将探讨多智能体设置、离线强化学习、Decision Transformers 以及更深入的论文解释。

保持学习,保持精彩 🤗

Sources