一句话总结
PPO 通过引入裁剪概率比率的代理目标函数,用简单的一阶优化方法实现了类似 TRPO 的信赖域策略更新效果,在样本效率、实现简洁性和实际性能之间取得了优异的平衡。
背景与前置知识
▼策略梯度方法(Policy Gradient Methods)
策略梯度方法是强化学习中一类直接参数化策略并对其参数进行优化的方法。其核心思想是:通过计算策略梯度的估计量,然后将其代入随机梯度上升算法来更新策略参数。最常用的梯度估计量形式为 g_hat = E_t [ nabla_theta log pi_theta(a_t | s_t) * A_hat_t ],其中 pi_theta 是随机策略,A_hat_t 是时间步 t 处的优势函数估计值。对应的优化目标为 L_PG(theta) = E_t [ log pi_theta(a_t | s_t) * A_hat_t ]。然而,如果对同一批轨迹数据多次执行梯度更新,会导致策略发生破坏性的大幅变动,训练不稳定。
信赖域策略优化(Trust Region Policy Optimization, TRPO)
TRPO 在代理目标函数上添加了策略更新的 KL 散度约束,确保每次更新不会偏离旧策略太远。其优化问题为:最大化 E_t [ (pi_theta(a_t|s_t) / pi_theta_old(a_t|s_t)) * A_hat_t ],约束 E_t [ KL[pi_theta_old, pi_theta] ] <= delta。TRPO 通过共轭梯度法近似求解该约束优化问题,需要计算二阶信息(Hessian 矩阵),实现复杂且不兼容 dropout 和参数共享等架构。
重要性采样(Importance Sampling)
在策略梯度中,利用旧策略收集的数据来估计新策略下的期望奖励时,需要使用重要性权重 r_t(theta) = pi_theta(a_t|s_t) / pi_theta_old(a_t|s_t) 来校正分布偏差。TRPO 的代理目标正是基于此重要性比率构建的。
核心思想详解
▼PPO 的核心目标是在保持 TRPO 的稳定性和可靠性的同时,大幅简化算法实现。TRPO 使用硬约束限制策略更新幅度,需要复杂的二阶优化(共轭梯度法),而 PPO 的核心创新是:用一个简单的裁剪(clipping)操作来替代 TRPO 的约束优化。
具体来说,PPO 定义概率比率 r_t(theta) = pi_theta(a_t|s_t) / pi_theta_old(a_t|s_t)。当策略未发生变化时,r = 1。PPO 的关键在于:当 r_t 偏离 1 过远时,直接裁剪目标函数的梯度信号,从而阻止策略过度更新。
这种设计的巧妙之处在于:
- 悲观估计:通过取 min 操作,PPO 的目标函数始终是未裁剪目标的下界(悲观估计),确保不会高估策略性能
- 只在有益时忽略变化:当概率比率的变动使目标改善时,裁剪生效(忽略进一步改善的激励);当变动使目标恶化时,不裁剪(保留惩罚信号)
- 一阶优化即可:无需计算二阶导数,可以直接使用 SGD 或 Adam 优化器