近日,OpenAI 发布了一种新型的强化学习算法,近端策略优化(Proximal Policy Optimization/PPO)算法,该算法的实现和调参十分简单,并且它的性能甚至要超过现阶段最优秀的方法。因为该算法实现非常简单并且有优秀的性能,PPO 已经成为了 OpenAI 默认使用的强化学习算法。
近端策略优化(PPO)可以让我们在复杂和具有挑战性的环境中训练 AI 策略。如上所示的 Roboschool(进行机器人模拟的开源软件,集成在 OpenAI Gym 中),其中智能体尝试抵达粉红色的目标点,因此它需要学习怎样走路、跑动和转向等。同时该智能体不仅需要学会怎样从小球的打击中保持平衡(利用自身的动量),在被撞倒后还需要学会如何从草地上站起来。
- 代码:https://github.com/openai/baselines
- 论文:https://openai-public.s3-us-west-2.amazonaws.com/blog/2017-07/ppo/ppo-arxiv.pdf
策略梯度法(Policy gradient methods)是近来使用深度神经网络进行控制的突破基础,不论是视频游戏还是 3D 移动或者围棋控制等,它们都基于策略梯度法。但是通过策略梯度法获得优秀的结果是十分困难的,因为它对步长大小的选择非常敏感。如果迭代步长太小,那么训练进展会非常慢,但如果迭代步长太大,那么信号将受到噪声的强烈干扰,因此我们会看到性能会急剧降低。同时这种策略梯度法有非常低的样本效率,它需要数百万(或数十亿)的时间步骤来学习一个简单的任务。
研究人员希望能通过约束或其他优化策略更新(policy update)大小方法来消除这些缺陷,如 TRPO 和 ACER 等方法。这些方法都有其自己的权衡,ACER 方法要比 PPO 方法复杂地多,它需要额外添加代码来修正离策略(off-policy)和重构缓冲器,但它在 Atari 基准上仅仅比 PPO 好一丢丢。TRPO 虽然对连续控制任务非常有用,但它并不容易与那些在策略和值函数或辅助损失函数(auxiliary losses)间共享参数的算法兼容,即那些用于解决 Atari 和其他视觉输入很重要领域的算法。
近端策略优化(PPO)
通过监督学习,我们可以轻松地计算实现成本函数,并在成本函数上执行梯度下降。我们应该对 PPO 非常有信心,因为它只需要少量的调参就能实现非常优秀的结果。强化学习成功的路径并不明显,算法通常具有许多难以调试的活动模块,这些模块需要大量的精力进行调整才能获得良好的效果。PPO 算法很好地权衡了实现简单性、样本复杂度和调参难度,它尝试在每一迭代步计算一个更新以最小化成本函数,在计算梯度时还需要确保与先前策略有相对较小的偏差。
我们以前详细说明了一个 PPO 变体,即使用一个适应性 KL 罚项来控制每一次迭代中的策略改变。这一新变体使用了一种新的目标函数,该目标函数很少在其他算法中出现:
该目标函数实现了一种与随机梯度下降相匹配的置信域(Trust Region)更新方法,它同时还移除了 KL 罚项以简化算法和构建适应性更新。在测试中该算法在连续控制任务中取得了最好的性能,并且尽管实现起来非常简单,但它同样在 Atari 上获得了与 ACER 算法相匹配的性能。
可控制的复杂机器人
用 PPO 训练的智能体发挥出了灵活的移动策略,使它们可以在朝目标地点移动的时候临时进行转向和倾斜。
我们已经在用 PPO 训练出的策略的基础上创造了交互式智能体,即我们可以使用键盘在 Roboschool 环境中为机器人设置新的目标地点;尽管输入序列与智能体训练的序列不同,它也试图进行泛化(generalize)。
我们也使用 PPO 来教复杂的仿真机器人如何进行走动,像上方所示的波士顿动力的「Atlas」模型;此模型有 30 个不同的关节,而双足机器人有 17 个。其它研究人员已经使用 PPO 来训练机器人,当其经过障碍时,可以展现出引人注目的跑酷技巧。
基准:PPO 和 TRPO
基准的发布包括 PPO 和 TRPO 的可扩展且并行的实现工具,它们两个都使用 MPI 来进行数据传输,而且都使用的是 Python3 和 TensorFlow。我们也加入了策略的预训练版本,用来在 Roboschool agent zoo 中训练上述机器人。
论文:近端策略优化算法(Proximal Policy Optimization Algorithms)
论文地址:https://openai-public.s3-us-west-2.amazonaws.com/blog/2017-07/ppo/ppo-arxiv.pdf
摘要:我们为强化学习提出了一种新型策略梯度法,它可以通过与环境的交互而在抽样数据中转换,它还能使用随机梯度下降优化一个「surrogate」目标函数。而标准策略梯度法为每一个数据样本执行一个梯度更新,因此我们提出了一种新的目标函数,它可以在多个 epoch 中实现小批量(minibatch)更新。这种新方法我们称之为近端策略优化(PPO)算法,该算法从置信域策略优化(TRPO)算法获得了许多启发,但它更加地易于实现、广泛和有更好的样本复杂度(经验性)。我们在一组基准任务上测试 PPO 的算法,包括了模拟机器人移动和 Atari 游戏,这些基准测试展示了 PPO 算法要比其他在线策略梯度法更优秀,该算法总体上在样本复杂度、简单性和实际时间(wall-time.)中有非常好的均衡。
OpenAI 正在寻找可以帮助他们建造和优化强化学习算法代码库的合作者。如果你对强化学习,标准检查程序,深入实验以及开源有兴趣,欢迎你来申请(https://jobs.lever.co/openai/5c1b2c12-2d18-42f0-836e-96af2cfca5ef),并且注明你已经阅读基准 PPO 的相关内容。