Proximal Policy Optimization(PPO)概述
1. 背景与定位
- PPO 属于强化学习中的策略梯度类方法,旨在直接学习一个决策策略,使智能体在与环境交互时能够获得更高的累计奖励。
- 它是在 Trust Region Policy Optimization(TRPO)基础上进行简化和改进的版本,保留了对策略更新幅度的约束,却大幅降低了实现难度和计算开销。
2. 核心思想
- 旧策略与新策略的对比:在一次采样后,PPO 会保留当前的“旧策略”,随后用同一批数据多次更新“新策略”。
- 概率比(ratio):通过比较新旧策略在同一状态‑动作对上的概率,得到一个比例值,用来衡量策略变化的大小。
- 剪切(clip)机制:对上述比例值设置上下阈值(例如 1 ± 一个小的正数),如果比例超出阈值,则在目标函数中使用阈值对应的值进行“剪切”。这样可以防止一次更新导致策略变化过大,从而提升训练的稳定性。
- 优势函数(advantage):在目标函数中加入优势函数,用来衡量某个动作相对于平均水平的好坏,帮助策略更有方向地改进。
- 多轮小批量更新:与传统的每次采样只做一次梯度更新不同,PPO 允许在同一批数据上进行多次小批量梯度上升,使得样本利用率更高。
3. 主要优势
- 实现简洁:只需在普通的策略梯度代码上加入剪切目标函数和多轮更新的循环,即可得到 PPO,实现代码量远少于 TRPO。
- 训练稳定:剪切机制限制了策略的剧烈波动,避免了“掉进悬崖”式的性能下降,尤其在高维连续控制任务中表现突出。
- 样本效率:通过多次更新同一批数据,提升了对采样数据的利用率,减少了对环境交互的需求。
- 通用性强:既适用于离散动作空间(如 Atari 游戏),也适用于连续动作空间(如机器人控制),在多个公开基准上均取得了领先成绩。
4. 工作流程(简要)
- 采样:使用当前策略与环境交互,收集状态、动作、奖励等轨迹。
- 计算优势:基于价值函数或时序差分方法估计每一步的优势。
- 更新循环:在同一批轨迹上进行若干次小批量梯度上升,目标函数采用剪切的概率比乘以优势,并加入价值函数误差和熵奖励(提升探索)。
- 策略替换:完成若干更新后,将新策略设为旧策略,进入下一轮采样。
5. 典型应用
- 游戏 AI:在 Atari、棋类等离散游戏中实现高分策略。
- 机器人控制:在 MuJoCo、PyBullet 等仿真平台上完成行走、抓取等连续动作任务。
- 自动驾驶、金融决策等:因其稳定性和样本效率,逐渐被用于更复杂的真实世界场景。
6. 进一步阅读
- 原始论文(OpenAI,2017):https://arxiv.org/abs/1707.06347
- 中文技术博客(详细原理与代码实现):https://www.cnblogs.com/antelx/p/17578681.html
- Hugging Face 教程(代码示例与实验):https://github.com/porameht/huggingface-blog/blob/ce3a2cf764934f30c4dd3ab04193ddc1054a647f/deep-rl-ppo.md
- CSDN 最新教程(剪切目标函数与多轮更新):https://wangjw.blog.csdn.net/article/details/148281993
- 论文解读与实现(PyTorch 示例):https://juejin.cn/post/7315457601635434522
通过上述机制,PPO 在保持实现简洁的同时,提供了比传统策略梯度更稳健、更高效的学习过程,已成为当前强化学习实践中的主流选择。
声明:文章均为AI生成,请谨慎辨别信息的真伪和可靠性!