当前位置: 首页 > article >正文

深度解读:近端策略优化算法(PPO)

论文地址:https://arxiv.org/pdf/1707.06347

本文将深入解读 OpenAI 提出的近端策略优化(Proximal Policy Optimization,PPO)算法,并结合论文中的图表进行图文并茂的总结。

一、 背景与动机

1. 强化学习中的策略优化方法:

近年来,强化学习领域涌现出多种基于神经网络函数逼近器的策略优化方法,主要包括:

  • 深度 Q 学习(DQN): 适用于离散动作空间,但在许多简单问题上表现不佳,且理论理解不足。
  • “原始”策略梯度方法: 数据效率低,稳健性差。
  • 信任区域/自然策略梯度方法(如 TRPO):
    • 优势: 数据效率高,性能可靠。
    • 缺点:
      • 实现复杂,需要二阶优化。
      • 与包含噪声(如 dropout)或参数共享(策略与价值函数之间,或与辅助任务之间)的架构不兼容。

2. PPO 的目标:

PPO 的目标是在保持 TRPO 数据效率和可靠性能的同时,简化算法实现,使其更易于应用并适用于更广泛的场景。

二、 PPO 算法核心思想

PPO 是一种基于策略梯度的算法,其核心思想是:

  1. 交替进行环境交互采样数据和优化目标函数
  2. 提出了一种新的目标函数,允许对采样数据进行多次小批量更新。

三、 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(atst)πθ(atst)
    其中, π θ \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ϵ以内。

    图 1:截断概率比的目标函数示意图

  • 图 2 展示了在连续控制问题中,PPO 沿策略更新方向插值时,不同目标函数的变化情况:

    • (L^{CLIP}) 是 (L^{CPI}) 的下界,并对过大的策略更新施加惩罚。

    图 2:不同目标函数随策略更新方向的变化情况

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 惩罚系数方法的效果不如截断概率比的目标函数,但作为基线方法仍然具有重要意义。

四、 PPO 算法流程

PPO 算法流程如下:

  1. 并行采集数据: 使用 (N) 个(并行)智能体与环境交互,采集 (T) 个时间步的数据。
  2. 计算优势估计: 使用广义优势估计(GAE)等方法计算优势估计 (\hat{A}_t)。
  3. 构建目标函数: 构建包含截断概率比、价值函数误差项和熵奖励项的综合目标函数:
    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是价值函数误差的平方损失。
  4. 多次小批量更新: 使用 Adam 等优化器对目标函数进行 (K) 个 epoch 的小批量随机梯度下降(SGD)更新。

五、 实验结果

1. 连续控制任务
  • 基准测试: 在 OpenAI Gym 的 7 个模拟机器人任务上,PPO 优于其他在线策略梯度方法。

  • 与其他算法比较:

    • PPO 在几乎所有连续控制环境中均优于 TRPO、CEM、vanilla 策略梯度、A2C 和带信任区域的 A2C。
    • 图 3 展示了 PPO 与其他算法在多个 MuJoCo 环境中的比较结果。

    图 3:PPO 与其他算法在 MuJoCo 环境中的比较

  • 高维连续控制任务:

    • PPO 在 3D 人形机器人控制任务中表现出色,能够完成跑步、转向和从地面爬起等复杂动作。
    • 图 4 和图 5 展示了 PPO 在 RoboschoolHumanoid 任务中的学习曲线和策略示例。

    图 4:PPO 在 3D 人形机器人控制任务中的学习曲线

    图 5:PPO 在 RoboschoolHumanoidFlagrun 任务中学到的策略示例

2. Atari 游戏
  • 基准测试: 在 49 款 Atari 游戏上,PPO 总体表现优于 A2C 和 ACER。

    • 图 6 展示了 PPO 与 A2C 在所有 49 款 Atari 游戏中的学习曲线。

    图 6:PPO 与 A2C 在 Atari 游戏中的比较

  • 具体游戏表现:

    • 在大多数游戏中,PPO 的平均 episode 奖励高于 A2C 和 ACER。
    • 表格 6 展示了 PPO、A2C 和 ACER 在 49 款 Atari 游戏中的平均表现。

    表格 6:PPO、A2C 和 ACER 在 49 款 Atari 游戏中的平均表现

六、 总结

PPO 是一种高效且易于实现的策略优化算法,其主要优势在于:

  • 简化实现: 只需对原始策略梯度方法进行少量代码修改。
  • 适用性广: 可用于更广泛的架构,包括策略和价值函数共享参数的情况。
  • 性能优越: 在连续控制和 Atari 游戏任务中均表现出色。

PPO 的成功在于其创新的目标函数设计,通过截断概率比和自适应 KL 惩罚系数,有效解决了传统策略梯度方法中策略更新过大的问题,同时保持了良好的数据效率和性能。

七、 未来展望

PPO 的出现推动了强化学习的发展,未来研究方向包括:

  • 更高效的优势估计方法: 进一步提高 PPO 的数据效率。
  • 更复杂的策略和价值函数架构: 探索 PPO 在更复杂的神经网络架构中的应用。
  • 多智能体强化学习: 将 PPO 应用于多智能体系统,探索其在合作和竞争环境中的表现。
  • 与其他算法结合: 将 PPO 与其他强化学习算法(如 DQN)结合,探索其在混合模型中的潜力。

通过不断改进和完善,PPO 将在更多领域和场景中发挥重要作用。


http://www.kler.cn/a/519917.html

相关文章:

  • Linux(Centos、Ubuntu) 系统安装jenkins服务
  • C++小病毒-1.0勒索(更新次数:2)
  • 第20篇:Python 开发进阶:使用Django进行Web开发详解
  • 数据融合的经典模型:早期融合、中期融合与后期融合的对比
  • SPP蓝牙串口
  • vulnhub靶场【kioptrix-3】靶机
  • 浅谈在AI时代GIS的发展方向和建议
  • Elasticsearch 性能测试工具 Loadgen 之 004——高级用法示例
  • c语言函数(详解)
  • Vue.js 高级组件开发
  • 任务一:Android逆向
  • 泷羽Sec-Powershell3
  • 设计模式思想的元规则
  • Python从0到100(八十五):神经网络与迁移学习在猫狗分类中的应用
  • 数据结构day02
  • go安全项目汇总表
  • 神经网络|(三)线性回归基础知识
  • Leetcode - 周赛433
  • 【算法学习】分治法应用—归并排序
  • Springboot 的启动流程【超级详细 | 附带思维导图】
  • 左右互博02-unidbg主动调用外层so函数
  • 【MQ】RabbitMq的可靠性保证
  • dmfldr实战
  • 云计算架构学习之LNMP架构部署、架构拆分、负载均衡-会话保持
  • 从传统桌面应用到现代Web前端开发:技术对比与高效迁移指南20250122
  • 【Rust自学】14.4. 发布crate到crates.io