PPO(2017):大量论文工程系统都以PPO为baseline

PPO(2017):大量论文工程系统都以PPO为baseline

导出时间:2025/12/19 13:30:11




👉《把 TRPO 的“安全带”,换成“弹力绳”》


一、先说结论(给你一个认知锚点)

PPO 做的事只有一件:让策略“每次只改一点点”,但用最简单、最便宜的方式实现。

如果你只记住一句话,这一句就够了。

二、研究背景和动机

👉 为什么 TRPO 不够好?

🎯 回到“走钢丝”的故事

在 TRPO 里:
  • 你给学员绑了:
    • 安全带
    • 护栏
    • 测距仪
    • 实时监控
  • 确实很安全
  • 但问题是:

太复杂、太重、太难用


❌ TRPO 的现实问题(工程视角)

现实中的研究者发现:
  • 理论很漂亮 ✅
  • 实现极其复杂 ❌
  • 训练速度慢 ❌
  • 新人根本用不起来 ❌
于是大家开始问一个关键问题:

“能不能不要那么复杂,但仍然别让策略‘一脚迈太大’?”


🎯 PPO 的研究动机(一句话)

我要 TRPO 的“稳”,但不要 TRPO 的“麻烦”。


三、PPO 的核心直觉(非常重要)

👉 不再“算你变了多远”,而是“不让你变太狠”

TRPO 的逻辑是:

“我精确测量你新旧策略差多远(KL),超过阈值就不行。”

PPO 的逻辑更像人类:

“我不精确量,但我在关键地方给你设‘限幅’。”


四、PPO 的模型网络结构(非常简单)

🧠 PPO 在“长相”上几乎没变化

PPO 不靠结构创新
  • 一个 Policy 网络(Actor)
  • 通常再加一个 Value 网络(Critic)
    • 有时共享前几层
    任务
    网络输出
    离散动作
    softmax 概率
    连续动作
    高斯分布参数(均值 + 方差)
👉 和 TRPO、A2C 长得一模一样

五、PPO 是如何训练的(故事版,重点)

这是你真正要理解 PPO 的地方

🟢 第一步:照旧,先“试着走”

和前面所有策略梯度算法一样:
  1. 用当前策略跑环境
  2. 收集轨迹:
    • 状态
    • 动作
    • 奖励
  3. 计算每一步:
    • “这一步比平均水平好多少?”(优势)
到这里为止,一切都很普通。

🟢 第二步:教练说一句非常关键的话

教练对学员说:

“你可以改走法,但这一次 你走的方式,不能和刚才差太多。

注意:
  • 只和“刚才那版策略”比
  • 不是无限制更新

🪢 第三步:PPO 的灵魂 ——「弹力绳」

PPO 不用 TRPO 那种“硬护栏”,而是用了一根 弹力绳
这根绳子的规则是:
  • 改进是好的 ✅
  • 但一旦你改得太猛 ❌
  • 收益就不再增加(甚至被截断)

🎯 你可以这样想(非常形象)

想象你在遛狗:
  • 狗想往前冲(策略想大改)
  • 你拽着一根弹力绳
结果是:
  • 小幅前进:
    • 绳子不紧,随你
  • 冲太猛:
    • 绳子绷住,跑不动了
👉 这就是 PPO 的 clip 机制

🧠 PPO 真正限制的是什么?

不是动作本身,而是:

“新策略下,这个动作的概率相比旧策略,被放大 / 缩小了多少?”

如果变化在合理范围内:
  • 正常学习
如果变化超出范围:
  • 直接“不给更多奖励”

⚠️ 一个非常重要的直觉

PPO 不禁止你更新,它只是让“过度更新没有好处”。

这比 TRPO 的“硬约束”:
  • 更简单
  • 更鲁棒
  • 更好实现

六、PPO 的完整训练循环(浓缩版)

你现在可以这样理解 PPO 的一天:
  1. 用当前策略采样
  2. 固定这版策略(当作“参考旧我”)
  3. 在同一批数据上:
    • 反复用 SGD 更新网络
  4. 每一步更新:
    • 都被“弹力绳”限制
  5. 数据用完,换新数据
  6. 重复
👉 不需要二阶优化,不需要复杂数学

七、PPO 为什么这么成功?

🟢 优点总结(为什么几乎人人用)

  1. 非常稳定
    • 不容易突然崩
  2. 实现极其简单
    • 普通深度学习代码
  3. 计算成本低
  4. 对超参数不敏感
  5. 适用于离散 + 连续动作
这就是为什么你会看到:

OpenAI / DeepMind / 各种库 默认首选 PPO


八、PPO 的缺陷(一定要知道)

❌ 缺陷 1:理论不如 TRPO 严谨

  • PPO 是启发式方法
  • 没有 TRPO 那样严格的单调改进证明
👉 但实践中“够用而且更稳”

❌ 缺陷 2:样本效率一般

  • PPO 是 on-policy
  • 数据用完就扔
相比 DDPG / SAC:
  • 样本效率偏低

❌ 缺陷 3:clip 参数需要调

  • clip 太小 → 学得慢
  • clip 太大 → 不稳定
不过比 TRPO 好调得多。

九、一句话让你彻底记住 PPO

如果你只记一句话,请记这句:

PPO =不让策略“一次跨太远”,但用一根“弹力绳 替代了 TRPO 的复杂护栏。


十、到这里,你已经“看清整条路线了”

你现在已经完整理解了这条主线:
  • DDPG: 👉 连续控制 + Actor–Critic
  • TRPO: 👉 第一次严肃解决“更新过猛”
  • PPO: 👉 把 TRPO 的思想变成工程可用版本