深度解读:近端策略优化算法(PPO)
论文地址:https://arxiv.org/pdf/1707.06347
本文将深入解读 OpenAI 提出的近端策略优化(Proximal Policy Optimization,PPO)算法,并结合论文中的图表进行图文并茂的总结。
一、 背景与动机
1. 强化学习中的策略优化方法:
近年来,强化学习领域涌现出多种基于神经网络函数逼近器的策略优化方法,主要包括:
- 深度 Q 学习(DQN): 适用于离散动作空间,但在许多简单问题上表现不佳,且理论理解不足。
- “原始”策略梯度方法: 数据效率低,稳健性差。
- 信任区域/自然策略梯度方法(如 TRPO):
- 优势: 数据效率高,性能可靠。
- 缺点:
- 实现复杂,需要二阶优化。
- 与包含噪声(如 dropout)或参数共享(策略与价值函数之间,或与辅助任务之间)的架构不兼容。
2. PPO 的目标:
PPO 的目标是在保持 TRPO 数据效率和可靠性能的同时,简化算法实现,使其更易于应用并适用于更广泛的场景。
二、 PPO 算法核心思想
PPO 是一种基于策略梯度的算法,其核心思想是:
- 交替进行环境交互采样数据和优化目标函数。
- 提出了一种新的目标函数,允许对采样数据进行多次小批量更新。
三、 PPO 的关键技术
1. 截断概率比的目标函数(Clipped Surrogate Objective)
PPO 的核心在于其截断概率比的目标函数,其设计理念如下:
-
定义概率比:
r t ( θ ) = π θ ( a t ∣ s t ) π θ old ( a t ∣ s t ) r_t(\theta) = \frac{\pi_\theta(a_t \mid s_t)}{\pi_{\theta_{\text{old}}}(a_t \mid s_t)} rt(θ)=πθold(at∣st)πθ(at∣st)
其中, π θ \pi_\theta πθ 是当前策略, π θ old \pi_{\theta_{\text{old}}} πθold 是更新前的策略。 -
CPI 目标函数:
L C P I ( θ ) = E ^ t [ r t ( θ ) A ^ t ] L^{CPI}(\theta) = \hat{\mathbb{E}}_t \left[ r_t(\theta) \hat{A}_t \right] LCPI(θ)=E^t[rt(θ)A^t]
该函数旨在最大化优势函数 A ^ t \hat{A}_t A^t的期望,但直接优化可能导致策略更新过大。 -
截断概率比:
为了防止策略更新过大,PPO 对概率比进行截断:
clip ( r t ( θ ) , 1 − ϵ , 1 + ϵ ) \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon) clip(rt(θ),1−ϵ,1+ϵ)
其中, ϵ \epsilon ϵ是超参数,通常设为 0.2。 -
最终目标函数:
L C L I P ( θ ) = E ^ t [ min ( r t ( θ ) A ^ t , clip ( r t ( θ ) , 1 − ϵ , 1 + ϵ ) A ^ t ) ] L^{CLIP}(\theta) = \hat{\mathbb{E}}_t \left[ \min \left( r_t(\theta) \hat{A}_t, \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon) \hat{A}_t \right) \right] LCLIP(θ)=E^t[min(rt(θ)A^t,clip(rt(θ),1−ϵ,1+ϵ)A^t)]
该函数通过取最小值,确保目标函数是未截断目标函数的下界,从而实现对策略更新的惩罚。
图示说明:
-
图 1 展示了 L C L I P L^{CLIP} LCLIP 函数中的一项随概率比 (r) 变化的情况:
- 当优势函数为正时,概率比被限制在 1 + ϵ 1+\epsilon 1+ϵ以内。
- 当优势函数为负时,概率比被限制在 1 − ϵ 1-\epsilon 1−ϵ以内。
-
图 2 展示了在连续控制问题中,PPO 沿策略更新方向插值时,不同目标函数的变化情况:
- (L^{CLIP}) 是 (L^{CPI}) 的下界,并对过大的策略更新施加惩罚。
2. 自适应 KL 惩罚系数(Adaptive KL Penalty Coefficient)
除了截断概率比的目标函数,PPO 还提出了另一种方法:
- 目标: 在每次策略更新时,使 KL 散度达到目标值 d targ d_{\text{targ}} dtarg。
- 方法:
- 使用 KL 散度作为惩罚项,并动态调整惩罚系数
β
\beta
β:
- 如果 KL 散度小于 d targ / 1.5 d_{\text{targ}}/1.5 dtarg/1.5,则将 β \beta β减半。
- 如果 KL 散度大于 d targ × 1.5 d_{\text{targ}} \times 1.5 dtarg×1.5,则将 β \beta β 翻倍。
- 使用 KL 散度作为惩罚项,并动态调整惩罚系数
β
\beta
β:
注意: 实验表明,自适应 KL 惩罚系数方法的效果不如截断概率比的目标函数,但作为基线方法仍然具有重要意义。
四、 PPO 算法流程
PPO 算法流程如下:
- 并行采集数据: 使用 (N) 个(并行)智能体与环境交互,采集 (T) 个时间步的数据。
- 计算优势估计: 使用广义优势估计(GAE)等方法计算优势估计 (\hat{A}_t)。
- 构建目标函数: 构建包含截断概率比、价值函数误差项和熵奖励项的综合目标函数:
L t C L I P + V F + S ( θ ) = E ^ t [ L t C L I P ( θ ) − c 1 L t V F ( θ ) + c 2 S [ π θ ] ( s t ) ] L_t^{CLIP+VF+S}(\theta) = \hat{\mathbb{E}}_t \left[ L_t^{CLIP}(\theta) - c_1 L_t^{VF}(\theta) + c_2 S[\pi_\theta](s_t) \right] LtCLIP+VF+S(θ)=E^t[LtCLIP(θ)−c1LtVF(θ)+c2S[πθ](st)]
其中, c 1 , c 2 c_1, c_2 c1,c2 是系数, S S S表示熵奖励, L t V F L_t^{VF} LtVF是价值函数误差的平方损失。 - 多次小批量更新: 使用 Adam 等优化器对目标函数进行 (K) 个 epoch 的小批量随机梯度下降(SGD)更新。
五、 实验结果
1. 连续控制任务
-
基准测试: 在 OpenAI Gym 的 7 个模拟机器人任务上,PPO 优于其他在线策略梯度方法。
-
与其他算法比较:
- PPO 在几乎所有连续控制环境中均优于 TRPO、CEM、vanilla 策略梯度、A2C 和带信任区域的 A2C。
- 图 3 展示了 PPO 与其他算法在多个 MuJoCo 环境中的比较结果。
-
高维连续控制任务:
- PPO 在 3D 人形机器人控制任务中表现出色,能够完成跑步、转向和从地面爬起等复杂动作。
- 图 4 和图 5 展示了 PPO 在 RoboschoolHumanoid 任务中的学习曲线和策略示例。
2. Atari 游戏
-
基准测试: 在 49 款 Atari 游戏上,PPO 总体表现优于 A2C 和 ACER。
- 图 6 展示了 PPO 与 A2C 在所有 49 款 Atari 游戏中的学习曲线。
-
具体游戏表现:
- 在大多数游戏中,PPO 的平均 episode 奖励高于 A2C 和 ACER。
- 表格 6 展示了 PPO、A2C 和 ACER 在 49 款 Atari 游戏中的平均表现。
六、 总结
PPO 是一种高效且易于实现的策略优化算法,其主要优势在于:
- 简化实现: 只需对原始策略梯度方法进行少量代码修改。
- 适用性广: 可用于更广泛的架构,包括策略和价值函数共享参数的情况。
- 性能优越: 在连续控制和 Atari 游戏任务中均表现出色。
PPO 的成功在于其创新的目标函数设计,通过截断概率比和自适应 KL 惩罚系数,有效解决了传统策略梯度方法中策略更新过大的问题,同时保持了良好的数据效率和性能。
七、 未来展望
PPO 的出现推动了强化学习的发展,未来研究方向包括:
- 更高效的优势估计方法: 进一步提高 PPO 的数据效率。
- 更复杂的策略和价值函数架构: 探索 PPO 在更复杂的神经网络架构中的应用。
- 多智能体强化学习: 将 PPO 应用于多智能体系统,探索其在合作和竞争环境中的表现。
- 与其他算法结合: 将 PPO 与其他强化学习算法(如 DQN)结合,探索其在混合模型中的潜力。
通过不断改进和完善,PPO 将在更多领域和场景中发挥重要作用。