在强化学习中,PPO(Proximal Policy Optimization)是 OpenAI 提出的基于策略梯度(Policy Gradient)的方法,用于解决连续动作或离散动作空间上的控制任务。它的核心思想在于:在每次策略更新时,既希望尽量增大目标函数(获得更高的回报),又要避免像早期策略梯度方法那样大幅度地更新策略,导致不稳定或收敛困难。下面对 PPO 的原理进行分步分析:
1. 背景与动机
-
策略梯度方法(Policy Gradient)
在策略梯度框架下,我们定义一个可参数化的策略 πθ(a∣s)(例如用神经网络近似),目标是最大化期望回报。直接使用策略梯度更新时,容易出现训练不稳定甚至发散的现象。
-
信任域策略优化(TRPO)
为了在更新策略时进行约束,使得新旧策略的差异不过大,提出了 TRPO(Trust Region Policy Optimization)。TRPO 在每一步更新时显式限制了新旧策略间的 KL 散度,但实现起来较为复杂,且需要二阶导数等运算。
-
PPO 的动机
PPO 希望在保证新旧策略“相似”的前提下,使实现和计算更简单。它通过定义一个**截断的目标函数(clipped objective)**来限制新旧策略之间的更新步幅,从而达到“折中”稳定训练的目的。
2. 核心思想
2.1 策略更新中的比率(Probability Ratio)
PPO 关注在数据采样时使用的旧策略 πθold 和在更新时使用的新策略 πθ 的比值:
r(θ)=πθold(a∣s)πθ(a∣s)。
- 若 r(θ)>1,代表新策略在给定状态 s 下增加了选择动作 a 的概率;
- 若 r(θ)<1,则代表新策略减少了选择动作 a 的概率。
2.2 优势函数(Advantage Function)
PPO 同样需要估计优势函数 At,来衡量在状态 st 执行动作 at 相对于平均水平的好坏程度。优势函数可以使用类似 GAE(Generalized Advantage Estimator)等方法进行估计。
2.3 截断的目标函数(Clipped Objective)
PPO 的关键在于引入了一个截断的目标函数来约束新旧策略的差别。其形式一般如下:
LCLIP(θ)=Et[min(r(θ)At,clip(r(θ),1−ϵ,1+ϵ)At)],
其中:
- r(θ)=πθold(at∣st)πθ(at∣st);
- ϵ 是一个超参数,通常取 0.1 或 0.2,用于限制比率的偏离程度;
- clip(⋅) 操作保证比率 r(θ) 在 [1−ϵ,1+ϵ] 范围内。
这个目标函数会在两种情况下取较小的那个值:
- 不使用截断的原目标 r(θ)At;
- 使用截断版 clip(r(θ),1−ϵ,1+ϵ)⋅At。
这样做的意义是:
- 如果新旧策略比率 r(θ) 没有超出 [1−ϵ,1+ϵ] 的范围,那么 PPO 可以和普通的优势加权策略梯度类似地更新;
- 如果 r(θ) 超过了上述区间,说明新策略和旧策略偏离过大,就会受到“截断”惩罚,避免过大的梯度更新。
2.4 策略与价值函数的联合优化
PPO 一般会同时优化策略网络和价值函数网络(或者共享部分网络结构)。价值函数部分通常使用均方误差(Mean Squared Error)损失:
LV(θ)=(Vθ(st)−Vttarget)2,
其中 Vttarget 可用蒙特卡洛回报或引入 TD(λ)、GAE 等估计来得到更平滑的目标。
最终的 PPO 损失函数综合了策略部分的损失 LCLIP 和价值函数损失 LV 以及熵项(鼓励探索):
LPPO(θ)=Et[LCLIP(θ)−c1⋅LV(θ)+c2⋅S(πθ(⋅∣st))],
其中:
- c1,c2 为权衡系数;
- S(πθ(⋅∣st)) 为策略的熵(Entropy),用来鼓励多样化探索。
3. 算法流程概要
-
从环境中采样
使用旧策略 πθold 运行若干个时间步,收集状态、动作、回报等序列数据。
-
计算优势函数
利用收集到的数据,通过 GAE 等方法估计各时间步的优势函数 At。
-
更新策略
- 计算策略比率 r(θ);
- 使用截断目标函数 LCLIP 计算梯度并进行若干次小批量(mini-batch)的优化;
- 同时更新价值函数网络。
-
重复
- 更新完策略后,令 θold←θ;
- 继续从环境中采样新数据并进行下一次迭代。
4. PPO 相比其他方法的优点
-
实现相对简单
不需要显式计算二阶梯度或做复杂的线性搜索,代码实现和调参比 TRPO 更容易。
-
稳定性与效率
通过“截断”对新旧策略差异进行限制,能在一定程度上保证策略的稳定更新,同时保留较好的样本效率。
-
应用广泛
PPO 在 Atari 游戏、MuJoCo 机器人控制等任务上都展示了强大的性能,成为近几年非常常用的基准算法之一。
5. 小结
PPO 核心是利用“截断策略比率”来优化目标函数,平衡了策略更新幅度与训练稳定性之间的矛盾。它在实践中兼顾了收敛稳定与实现简单两方面的优点,因此被广泛应用于各类连续控制和离散控制任务中。
- 关键词:策略梯度,截断目标函数,优势函数,信任域约束,价值函数,熵正则化。
这就是 PPO(Proximal Policy Optimization)算法的基本原理与流程。