type
Post
status
Published
date
May 13, 2026
slug
ppo
summary
本文从PPO提出的motivation出发,系统介绍了PPO-Penalty和PPO-CLIP两种变体。总体来说,PPO 用更简单的方式近似TRPO的trust region约束,在保证策略更新稳定性的同时,大幅降低计算复杂度。
tags
强化学习
category
学习分享
icon
password

1 前言

回顾一下TRPO的链路:传统的策略梯度,由于目标函数的非凸性,无法很好的确定更新的步长。TRPO的核心目标是:沿着性能提升的方向,走最大的一步。为此TRPO算法先从性能提升引理出发,结合新旧状态分布近似、importance sampling技巧改写了优化目标:
并证明了改写的优化目标是原始优化目标的下界。
通过优化能保证单调不减。
但实践中,上面优雅的理论式子面临两个问题:
  • 单个iteration只有有限条轨迹,难以遍历所有的状态找到
  • 惩罚因子过大,使得KL divergence项的梯度过大,模型更新过于保守。
为此TRPO做了2个工程上的优化:
  • 利用拉格朗日对偶性,将惩罚项转为约束。
  • 用average KL而非max。具体而言,我们不要求,而是要求
由此可得到TRPO的工程化后的优化目标
等同于优化
⚠️注意符号区分:是advantage function,是trust region radius
最后通过对目标函数、约束条件分别进行泰勒一阶近似和二阶近似后,将一个复杂的非线性优化问题转化为一个经典的二次约束线性优化问题,用拉格朗日乘子法求得解析解,最后用共轭梯度法进行求解。由于前面的一些工程trick和近似处理在一定程度上破坏了单调不减的理论保证,于是结合了回溯的linear search操作。
总体而言:TRPO数学理论上非常优雅,它系统的解决了强化学习中策略更新的方向和步长问题。但从上面的简短回顾不难看出,TRPO算法的工程实现还是偏于繁杂:每一次策略更新都需进行CG算法得到更新方向,再用linear search确定更新步长。
这就是PPO提出核心的motivation:在尽可能的满足策略性能单调不减下,解决TRPO计算复杂度过高的问题。

2 PPO算法

作者给出了PPO-Penalty和PPO-CLIP两种变体。

2.1 PPO-Penalty

从TRPO的推导我们得出通过优化下式能保证新的策略性能单调不减
PPO沿用了TRPO用averge KL来代替max KL得工程trick,但没有沿用拉格朗日对偶性将惩罚转为约束。作者是引入了一个超参数来取代的惩罚系数
由此,可得PPO-Penalty的目标函数
超参数的定义是个难题,作者采取了一种动态修正的策略,首先令
  • ,说明策略更新较为保证,KL散度的期望低于预设值,为了加快学习,可以减少惩罚力度,
  • ,说明策略变化太剧烈,KL散度的期望超过安全区。为了稳定学习,增大惩罚力度,
  • ,说明新旧策略的KL散度在安全区,无需调整

2.2 PPO-clip

PPO-CLIP是PPO算法的另一种变体(也是主流的变体),它采用悲观估计(lower bound optimization)的策略来定义tust-region。其形式为:
分几种情况讨论上述目标函数的直觉意义
notion image
的符号
has gradient?
直觉解释
True
在目标区间内,说明新旧策略表现接近,正常优化。
True
在目标区间内,说明新旧策略表现接近,正常优化。
True
说明这是一个能带来正向收益的好动作,但新策略居然不愿意接受这个动作(和就策略的比值小于),因此需要优化新策略。
False
坏动作,新策略接受的概率较大幅度低于旧策略,说明在这个场景下新策略已经优化的足够好,无需再优化了。
False
好动作,新策略接受的概率较大幅度高于旧策略,说明在这个场景下新策略已经优化的足够好,无需再优化了。
True
说明这是一个负向收益的动作,应当抑制。但新策略确非常倾向接受这个动作(和旧策略的比值大于),因此需要优化新策略。
虽然相比PPO-Penalty,PPO-CLIP没有严格的理论推导,但在实践中,PPO-CLIP不论从性能还是效果都有优势。
notion image
notion image

小结

本文从PPO提出的motivation出发,系统介绍了PPO-Penalty和PPO-CLIP两种变体。总体来说,PPO 用更简单的方式近似TRPO的trust region约束,在保证策略更新稳定性的同时,大幅降低计算复杂度。由于笔者水平有限,若有不当之处,欢迎指出~
 
RL学习小结 (005): TRPO理论剖析Feeling after reading The Little Prince 
Loading...