跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
编程语言AI算法

PPO 论文深度解读:近端策略优化算法原理与实践

PPO 算法通过裁剪概率比实现稳定更新,结合 TRPO 优势与简单实现。在连续控制及 Atari 任务中表现优异,样本效率高,适用于多种架构。该算法简化了实现过程,代码改动少,适用范围更广,在样本复杂度和整体性能上优于其他在线策略梯度方法。

GRACE Grace发布于 2025/2/14更新于 2026/10/888 浏览
PPO 论文深度解读:近端策略优化算法原理与实践

PPO 算法示意图

引言

近年来,基于神经网络的强化学习方法取得了显著进展,但在可扩展性、数据效率和鲁棒性上仍有提升空间。Q-learning 在简单问题上表现不佳,传统策略梯度方法数据效率低且不稳定,而信任区域策略优化(TRPO)虽然效果好,但实现复杂且不兼容某些架构。

本文介绍了一种新的策略优化算法——近端策略优化(PPO)。它旨在保持 TRPO 的数据效率和可靠性的同时,简化实现过程,并在样本复杂度上表现更好。PPO 通过交替采样数据和优化代理目标函数来提高策略的效率和可靠性。

核心方法

策略梯度与信任区域

策略梯度方法通过计算策略梯度的估计值并使用随机梯度上升算法进行优化。公式如下:

$$ g = \hat{E}t [\nabla\theta \log \pi_\theta(a_t|s_t) \hat{A}_t] $$

其中,$\pi_\theta$ 是随机策略,$\hat{A}_t$ 是优势函数的估计值。

TRPO 通过最大化代理目标函数并受策略更新大小的限制来实现。其约束条件涉及 KL 散度:

$$ \max_\theta \hat{E}t [\frac{\pi\theta(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)} \hat{A}_t] $$

受限于:

$$ \hat{E}t [KL[\pi{\theta_{old}}(\cdot|s_t), \pi_\theta(\cdot|s_t)]] \le \delta $$

PPO 的代理目标

PPO 提出了一个新的代理目标,通过裁剪概率比来形成对策略性能的悲观估计。公式如下:

$$ L^{CLIP}(\theta) = \hat{E}_t [\min(r_t(\theta)\hat{A}_t, \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon)\hat{A}_t)] $$

其中,$r_t(\theta)$ 是概率比,$\epsilon$ 是超参数(通常设为 0.2)。裁剪的目的是防止策略更新过大,从而避免破坏性变化。最小值内的第一项是原始目标,第二项通过裁剪概率比消除了使 $r_t$ 移动到区间之外的动机。最终目标是未剪辑目标的下界。

自适应 KL 惩罚系数

另一种方法是使用 KL 惩罚项,并自适应地调整惩罚系数以保持目标 KL 散度值。具体步骤包括:

  1. 使用若干小批量 SGD 优化 KL 惩罚目标。
  2. 计算 KL 散度 $d$。
  3. 根据 $d$ 与目标值 $d_{target}$ 的关系调整惩罚系数 $\beta$。

实验表明,裁剪替代目标的表现优于 KL 惩罚方法,但后者仍是一个重要的基线。

算法实现

PPO 算法通过在固定长度的轨迹段上运行策略并收集数据,然后对这些数据进行多轮小批量 SGD 优化来实现。具体流程如下:

  1. 每个演员运行策略 $\pi_{\theta_{old}}$ 在环境中 $T$ 个时间步。
  2. 计算优势估计 $\hat{A}^1, \dots, \hat{A}^T$。
  3. 对代理损失进行 $K$ 轮小批量 SGD 优化。
  4. 更新旧策略参数 $\theta_{old}$ 为新策略参数 $\theta$。

结合价值函数误差项和熵奖励,我们得到以下目标,每次迭代都(大致)最大化:

$$ L^{CLIP+VF+S}(\theta) = \hat{E}_t [L_t^{CLIP}(\theta) - c_1 L_t^{VF}(\theta) + c_2 S\pi_\theta] $$

其中 $c_1, c_2$ 是系数,$S$ 表示熵奖励,$L_t^{VF}$ 是平方误差损失。

实验设计

连续控制任务

在连续控制任务中,使用 OpenAI Gym 中的 7 个模拟机器人任务进行训练,每个任务进行一百万个时间步长的训练。使用全连接的多层感知机(MLP)作为策略网络,输出高斯分布的均值和可变标准差。

结果显示,PPO 的裁剪代理目标表现最佳,平均标准化得分为 0.82,优于无裁剪或惩罚的目标。在大多数环境中,PPO 优于 TRPO、CEM、A2C 等算法。

Atari 游戏

在 Atari 游戏中,使用 Arcade Learning Environment 中的 49 个游戏进行测试。PPO 在 30 个游戏中表现优于 A2C,且在 19 个游戏中表现优于 ACER。在平均奖励和最后 100 集的平均奖励上均优于对比方法。

高维任务

在 Roboschool 的人类行走和转向任务中,PPO 表现出色,能够在复杂环境中实现高效的控制。例如,在 HumanoidFlagrun 任务中,PPO 能够在目标位置随机变化的情况下保持稳定的性能。

结论

PPO 算法在数据效率和鲁棒性方面达到了 TRPO 的水平,同时简化了实现过程,适用于更广泛的设置。它在高维连续控制和 Atari 游戏基准测试中展示了优越性,为强化学习领域提供了一种高效且易于实现的策略优化算法。

常见问题

Q: PPO 算法中的裁剪概率比是如何工作的?

裁剪概率比通过对原始优势函数进行裁剪,形成对策略性能的悲观估计。这防止了策略更新过大,允许在每次数据采样后进行多次小批量更新,而不是单次更新,使得优化过程更加稳健。

Q: PPO 在处理高维连续控制任务时的表现如何?

PPO 在处理高维连续控制任务时表现出色。在 3D 人形机器人控制任务中,成功解决了跑、转向和起身等问题,学习曲线显示策略迅速收敛。

Q: PPO 在 Atari 游戏基准测试中的表现如何?

PPO 在平均奖励和最后 100 个 episode 的平均奖励上均优于 A2C 和 ACER,表明其能够更快地学习到有效的策略并保持长期性能提升。

目录

  1. 引言
  2. 核心方法
  3. 策略梯度与信任区域
  4. PPO 的代理目标
  5. 自适应 KL 惩罚系数
  6. 算法实现
  7. 实验设计
  8. 连续控制任务
  9. Atari 游戏
  10. 高维任务
  11. 结论
  12. 常见问题

更多推荐文章

查看全部
  • LLM Agent 规划工作流深度解析与实现
  • llama.cpp 大模型本地部署内存优化与推理加速
  • Python 实现一个简单的持久化缓存系统
  • 网络安全等级保护测评中的渗透测试实施与应用
  • String、StringBuilder、StringBuffer 的区别
  • Spatial Joy 2025 全球 AR&AI 开发大赛参赛指南
  • Python 爬虫实战:批量下载百度图片
  • SpringAI 通过 Ollama 本地部署 Deepseek 模型实现对话机器人
  • IDM 试用管理脚本的技术原理与安全风险解析
  • 飞书自定义机器人 Webhook 接入指南
  • Zotero 论文阅读颜色标记体系
  • 声源定位算法基础:CBF(延时求和波束形成)
  • Python 入门基础:人工智能核心语言与语法详解
  • SpringBoot 整合 LangChain4j 实现 RAG 检索实战详解
  • VS Code 远程连接服务器后 GitHub Copilot 无法使用解决方案
  • GLM-5 大模型代码生成能力深度评测与实战
  • Stack-Chan 机器人快速入门指南
  • Qt 布局管理器详解:QVBoxLayout、QHBoxLayout、QGridLayout、QFormLayout
  • AI 大模型提示工程(Prompt)核心技巧与工具详解
  • 基于 Higress 网关将 REST API 转换为 MCP Server 工具

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online