枢纽
输入模态proprioception

PPO:给「策略更新」装一个不会摔倒的护栏

John Schulman, Filip Wolski, Prafulla Dhariwal, Alec Radford, Oleg Klimov(OpenAI)。arXiv:1707.06347(2017 年 7 月,v2 8 月)。 policy gradientRL 通用引擎 T06

🧠 一句话心智模型:策略梯度 RL 的老毛病是「一步走太远,全盘崩」——同一条采样轨迹上做多步梯度更新,策略就会被推到一个截然不同的地方,性能突然塌掉。PPO 的做法极其朴素:用一个 clip 把「单步更新的幅度」按概率比 $r_t=\pi_\theta/\pi_{\theta_{\text{old}}}$ 截在 $[1-\varepsilon, 1+\varepsilon]$ 之内($\varepsilon=0.2$)。这一行 clip 解决了 TRPO 复杂的二阶约束,又保留了 trust region 的「单调不退化」性质。

🎯 为什么重要:在「稳」和「快」之间找到了第一个工程上能用的折中

2017 年前后,深度 RL 的策略优化有三大主流,每一个都有明显短板(论文 §1):

核心矛盾
vanilla policy gradient(A3C 等):每个 batch 只能做一次梯度更新——复用样本就破坏 i.i.d. 假设、训练崩坏。样本效率低
TRPO:用 KL 硬约束保证单调改进——但需要共轭梯度 + Fisher 矩阵,实现复杂、与 dropout / 参数共享不兼容。
DQN:离散动作好用,但连续控制基本不工作。

要的是:一个能像 vanilla PG 一样用一阶 SGD 多轮复用样本(数据效率高),又能像 TRPO 一样保证每步不把策略改得太狠(稳定)的方法。PPO 的回答就是「把约束从硬变软」——不求解 KL,而是直接把概率比 clip 掉

💡 核心思想:Clipped Surrogate Objective

策略梯度的目标可以写成「概率比 × 优势」的形式(TRPO 称之为 surrogate objective):

$$L^{\text{CPI}}(\theta)=\mathbb{\hat E}_t\!\left[r_t(\theta)\,\hat A_t\right],\qquad r_t(\theta)=\frac{\pi_\theta(a_t\mid s_t)}{\pi_{\theta_{\text{old}}}(a_t\mid s_t)}$$

无约束最大化 $L^{\text{CPI}}$ 会让 $r_t$ 跑得离 1 太远(策略骤变)。PPO 加了一个 clip,只允许它在 $[1-\varepsilon, 1+\varepsilon]$ 内获益

$$\boxed{\;L^{\text{CLIP}}(\theta)=\mathbb{\hat E}_t\!\Big[\min\!\big(r_t(\theta)\hat A_t,\ \text{clip}(r_t(\theta),1\!-\!\varepsilon,1\!+\!\varepsilon)\hat A_t\big)\Big]\;}$$

L_CLIP 单步项作为概率比 r 的函数(论文 Fig.1) 优势 A>0(好的动作) r L 1-ε 1 1+ε 起点 r=1 clip 在 1+ε 封顶 优势 A<0(坏的动作) r L 1-ε 1 1+ε 起点 r=1 clip 在 1-ε 兜底
图 1:A>0 时把上界 clip 在 1+ε——好动作也不允许被「无限放大」;A<0 时把下界 clip 在 1-ε——坏动作也只罚到一定下限。min 操作保证 L_CLIP 是 L_CPI 的悲观下界

关键是取 min:它让目标成为 unclipped 版本的下界(pessimistic bound)。「有利可图时不再加分,吃亏时照实记」——这就是 trust region 思想的廉价一阶替代。

🛠️ PPO 完整流程:在 vanilla PG 上改 3 行

组件怎么做为什么必要(论文依据)
① Clipped 目标把 $L^{PG}=\log\pi\cdot A$ 换成 $L^{CLIP}$§3:允许在同一 batch 上做多轮 minibatch SGD 而不破坏策略
② 多 epoch 复用每条轨迹采 $T$ 步,$K$ 个 epoch、minibatch $M$ 重复训练§5 算法:这是与 vanilla PG 「一次更新」最根本的区别
③ 联合损失$L^{CLIP+VF+S}=L^{CLIP}-c_1 L^{VF}+c_2 S[\pi]$§5 Eq.(9):policy + value function 误差 + 熵 bonus(防过早收敛、保探索)
④ GAE 优势估计$\hat A_t=\delta_t+(\gamma\lambda)\delta_{t+1}+\cdots$,$\delta_t=r_t+\gamma V(s_{t+1})-V(s_t)$§5 Eq.(11):用 truncated GAE 降低优势估计方差
(备选)自适应 KL 惩罚若 $dd_{\text{targ}}\cdot1.5$ → $\beta\leftarrow\beta\cdot2$§4:作为 clip 的备选方案,论文 §6.1 实测它不如 clip
🔮 直觉:为什么不用硬 KL 约束(TRPO 那套)?
TRPO 每步要解「目标线性 + 约束二次」的小优化,得算 Fisher 矩阵向量积 + 共轭梯度 + line search——工程又重又难与参数共享 / dropout 兼容。PPO 的洞察是:直接把概率比 clip 死就能近似达到 trust region 效果,复杂度只剩一阶 SGD。论文 §7 原话:「只需对 vanilla PG 改几行代码」。

📊 关键结果:clip ε=0.2 是甜点,Atari 胜 30/49

消融:clip vs KL penalty(论文 Table 1,7 个 MuJoCo 任务 × 3 seeds)

算法变体平均归一化得分
无 clip 无 penalty-0.39(half-cheetah 上灾难性发散)
Clip $\varepsilon=0.1$0.76
Clip $\varepsilon=0.2$0.82(最佳)
Clip $\varepsilon=0.3$0.70
Adaptive KL $d_{\text{targ}}=0.01$0.74
Fixed KL $\beta=1$0.71

与同期方法对比(论文 Table 2,49 个 Atari 游戏,3 个 seed 平均后比较胜数)

评分口径A2CACERPPOTie
全程训练平均奖励118300
最后 100 episode 平均奖励128191
原文结论(§6.2):在 7 个 MuJoCo 连续控制任务上,PPO 在几乎所有环境上超过 TRPO / CEM / vanilla PG / A2C / A2C+Trust Region;在 3D humanoid(RoboschoolHumanoid / Flagrun / FlagrunHarder)上能学会跑、转向、被立方体砸倒后爬起(§6.3,Fig.5)。在 Atari 上 PPO 在「样本效率」上显著优于 A2C,与 ACER 相当但实现简单得多。

常用超参(论文 Table 3,MuJoCo 1M 步基准)

超参
Horizon $T$2048
Adam stepsize$3\times10^{-4}$
Num. epochs $K$10
Minibatch size $M$64
Discount $\gamma$0.99
GAE $\lambda$0.95

🌐 在领域中的位置

vanilla PG / A3C(一步一更新) TRPO(KL 硬约束、二阶) PPO(clip 软约束、一阶)⭐ PPO + GAE(DeepMimic/AMP 默认 RL 内核) GRPO / DAPO(去掉 critic,PPO 思想搬进 LLM RL)

PPO 是过去近十年机器人 / 游戏 / 物理动画 RL 的事实默认算法:OpenAI Five、Dota、DeepMimic、AMP、humanoid locomotion 几乎清一色用 PPO 训练策略。它的地位直到 2024 年 GRPO(PPO 去掉 value network 用于 LLM)出现才有形态上的继任者——但目标函数的「clip 思想」原封不动保留。

❓ 常见误区

PPO 是 on-policy 还是 off-policy?

On-policy。每条轨迹采自当前 $\pi_{\theta_{\text{old}}}$,做完 $K$ 个 epoch 的更新就丢弃。clip 之所以必要,正是因为多次更新会让 $\pi_\theta$ 偏离 $\pi_{\theta_{\text{old}}}$,必须限制这个偏离。

ε=0.2 是怎么选的?

论文 §6.1 Table 1 实测:$\varepsilon\in\{0.1, 0.2, 0.3\}$ 中 $\varepsilon=0.2$ 在 MuJoCo 7 任务平均上最佳(0.82 vs 0.76 vs 0.70)。这是经验值,论文并未给理论证明。

有了 clip 还需要 entropy bonus 吗?

需要。clip 只管「别更新太大」,不保证探索。论文 §5 Eq.(9) 加 $c_2 S[\pi]$ 项就是为了防止策略过早塌缩到确定性动作(参考 Williams 1992 / Mnih 2016)。

PPO 一定单调改进吗?

理论上 $L^{CLIP}$ 是 $L^{CPI}$ 的下界,但只是经验上稳定,不提供 TRPO 那种「真实回报单调不退化」的硬保证。所以仍需早停、check-point、roll back 等工程兜底。

PPO 和 SAC / TD3 比哪个好?

论文未涉及(SAC/TD3 在 PPO 之后才成熟)。经验上:sample-efficient 选 SAC(off-policy),wall-clock / 大规模并行选 PPO(on-policy 但易并行)。