近日,OpenAI 发布了一种新型的强化学习算法:近端策略优化(Proximal Policy Optimization,简称 PPO),这种算法不但在性能上比肩甚至超过当前最先进的方法,而且更容易实现和调试。由于 PPO 易于使用并且性能优秀,OpenAI 已将其设为默认的强化学习算法。
近端策略优化(PPO)可以让我们在极具挑战性的环境中训练 AI 策略。如上所示的 Roboschool(进行机器人模拟的开源软件,集成在 OpenAI Gym 中),当其中的智能体尝试捕获目标(粉红色球体)时,它需要学习如何行走、跑动和转向。在被白色方块撞击后,它还需要学习如何借助自身力量恢复平衡,在被撞倒时,还要学习如何从草地上站起来。
代码地址
https://github.com/openai/baselines
深度神经网络可以用来控制视频游戏,三维运动或者围棋等。近来在这方面取得的突破依托了“策略梯度方法”(Policy gradient methods)。但是想要借助这种方法得出优秀结果十分困难,因为它对步长大小的选择非常敏感。如果步长太小,训练进展就会非常缓慢;但如果步长太大,信号则会被噪声覆盖,甚至可能导致性能急剧下降。同时这种策略梯度法的样本效率非常低,它需要数百万(或数十亿)的时间步数来学习一个简单的任务。
研究人员试图使用 TRPO 、ACER 等方法约束或优化策略更新的步长大小,借以消除这些弊端。但是这些方法本身也存在缺陷,ACER 方法要比 PPO 方法复杂的多,它需要额外添加代码来进行 off-policy 修正以及一个 replay buffer,但它在 Atari 基准上的表现仅仅比 PPO略好。
TRPO 虽然在连续控制任务中非常有用,但它与那些在策略和值函数或辅助损失函数(auxiliary losses)间共享参数的算法不易兼容,此类算法中有些常被用于解决 Atari 和其他视觉输入很重要的领域中的问题。
近端策略优化(PPO)
通过监督学习,我们可以轻松地实现 cost function,并在 cost function 上执行梯度下降。我们确信,只需稍微调试几次超参数,就能得到非常优秀的结果。
在强化学习上取得成功并不容易,算法中通常具有许多难以调试的活动模块,为了获得好的结果,需要花费大量的精力来调整这些模块。PPO 算法在实现难度、样本复杂度和调试难度之间找到了一个平衡点,它尝试在每一步长上计算一个最小化 cost function 的更新,同时确保与先前策略的偏差维持在较小水平。
我们先前曾详细介绍了 PPO 的一个变体,该变体使用一个自适应 KL 惩罚项来控制每次迭代中的策略改变。这一新变体使用了一种新的目标函数,该目标函数很少在其他算法中使用:
该目标函数实现了一种与随机梯度下降法相兼容的置信域(Trust Region)更新方法,同时还通过移除 KL 惩罚项和不进行适应性更新,简化了算法。在测试中,该算法在连续控制任务中表现出了最佳性能,并且在 Atari 上几乎比肩 ACER 算法的性能,但是它实现起来却简单的多。
可控制的复杂机器人
利用 PPO 训练的智能体可以制定灵活的移动策略,在朝目标所在位置移动时可以临时进行转向和倾斜。
我们借助用 PPO 训练出的策略开发出了交互式智能体。借助这种智能体,我们可以使用键盘在 Roboschool 环境中为机器人设置新的目标位置;虽然输入序列与训练智能体所用的序列不同,但是它可以设法进行泛化(generalize)。
我们还使用 PPO 来教复杂的模拟机器人学习行走,如波士顿动力(Boston Dynamics)公司研发的「Atlas」模型;此模型有 30 个不同的关节,而双足机器人只有 17 个。其它研究人员还使用 PPO 训练机器人,使其在跨越障碍时可以展现出惊人的跑酷技巧。
基准:PPO 和 TRPO
发布的基准包括 PPO 和 TRPO 的可扩展并行实现工具,它们两个都使用 MPI 来进行数据传输,而且使用的都是 Python3 和 TensorFlow。我们还加入了策略的预训练版本,用以在 Roboschool agent zoo 中训练上述机器人。
OpenAI 正在寻找可以帮助他们构建和优化强化学习算法代码库的人员。如果你对强化学习,标准检查程序,深入实验以及开源有兴趣,请点击以下网址进行申请:https://jobs.lever.co/openai/5c1b2c12-2d18-42f0-836e-96af2cfca5ef,并且注明你已阅读关于 PPO 的文章。
原文地址 https://blog.openai.com/openai-baselines-ppo/