Proximal Policy Optimization (PPO) 发布说明 – OpenAI Baselines

TL;DR

OpenAI 宣布发布 Proximal Policy Optimization (PPO),这是一种新型强化学习算法,其性能与最先进的方法相当或更好,同时实现和调参更加简单,并已成为 OpenAI 的默认 RL 算法。

为什么 PPO 很重要

策略梯度方法对步长选择非常敏感,并且通常需要数百万或数十亿个时间步长来学习简单的任务。现有的约束更新方法(如 TRPO 和 ACER)解决了这些问题,但引入了复杂性:ACER 需要 off‑policy 修正和 replay buffer,而 TRPO 则不易与共享参数架构兼容。PPO 在实现难度、样本效率和调参简便性之间取得了平衡。

PPO 的核心思想

PPO 旨在计算一种策略更新,在改善目标函数的同时,保持与旧策略的偏差较小。该算法使用一种剪切代理目标函数(clipped surrogate objective),从而实现与随机梯度下降兼容的信任区域式更新。

剪切目标函数公式

PPO 中使用的目标函数为:

$$L^{C L I P} \left(\theta \right) = \left(\hat{E}\right){t} \left[ \min \left( \ r{t} \left(\theta \right) \ \hat{A}{t},\ \text{clip}\left(r{t} \left(\theta \right), 1-\epsilon, 1+\epsilon\right) \hat{A}_{t} \right) \right]$$

其中:

  • $\theta$ 是策略参数
  • $\left(\hat{E}\right)_{t}$ 是时间步上的经验期望
  • $r_{t}$ 是新旧策略下的概率比率
  • $\left(\hat{A}\right)_{t}$ 是在时间 $t$ 的估计优势值
  • $\epsilon$ 是超参数,通常为 0.1 或 0.2

这种公式实现了一种无需 KL 惩罚的信任区域更新,在保持性能的同时简化了算法。

经验性能

在测试中,尽管剪切 PPO 目标函数的实现要简单得多,但在连续控制任务上表现出了最佳性能,并在 Atari 基准测试中几乎达到了 ACER 的性能水平。

Baselines 发布

OpenAI Baselines 仓库现在包含了 PPO 和 TRPO 的可扩展并行实现,这些实现使用 MPI 进行数据传递,均针对 Python 3 和 TensorFlow 编写。此外还提供了用于 Roboschool 智能体动物园的预训练策略。

PPO2 和 ACER 的新增内容

一次更新引入了名为 PPO2 的 GPU 加速实现,它在 Atari 上的运行速度比原始 PPO baseline 快约三倍。此外,还发布了带有经验回放的 Actor‑Critic (ACER) 实现;ACER 使用 replay buffer 对每个经验样本进行多次梯度更新,并结合了使用 Retrace 算法训练的 Q‑function 近似器。

可控机器人演示

在 Roboschool 中构建了使用 PPO 训练的交互式智能体。通过键盘,用户可以为机器人设置新的目标位置;尽管输入序列与训练期间看到的序列不同,但策略能够泛化到新指令。

征集贡献者

OpenAI 正在寻求贡献者来帮助构建和优化强化学习代码库。感兴趣的个人可以通过提供的链接申请,并在申请中注明阅读过 baselines PPO 的文章。

Sources