前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OpenAI 新论文疑似“作弊”,谁才是最优强化学习算法?

OpenAI 新论文疑似“作弊”,谁才是最优强化学习算法?

作者头像
新智元
发布2018-03-22 17:20:12
1.3K0
发布2018-03-22 17:20:12
举报
文章被收录于专栏:新智元新智元

【新智元导读】OpenAI 日前提出了一类强化学习替代方法,号称能与最先进的方法相媲美乃至更好。但是,昨天却有用户在 Github 表示“他们有点儿作弊了”,称结果无法复现。这究竟是怎么回事?

OpenAI 日前发布了一类新的强化学习算法——近端策略优化(Proximal Policy Optimization,PPO),称这类算法的实现和调参更加简单,并且性能与当前最佳方法相当乃至更好。PPO 也是如今 OpenAI 默认使用的强化学习算法。

昨天,一位用户在 Github 上提出质疑,表示根据他的使用经验,PPO 并没有 OpenAI 说的那么好。

“OpenAI 日前提出了一种号称比强化学习速度更快、需要较少超参数调整的替代方案。到目前为止,我的经验并不支持这些说法。”Github 用户 peastman 留言说:“在我的大部分测试中,它比 A3C 慢,而不是更快。并且,它和 A3C 有相同的超参数,还添加了几个新的参数。”

当然,peastman 也表示,也许他的情况是个例,其他人或许能成功复现 OpenAI 的论文。

peastman 表示,OpenAI PPO 论文的作者“有点作弊了”(kind of cheat)。“他们并没有把 PPO 与 A3C 进行比较。相反,作者比较的是他们称为‘A2C’的单线程版本,并且仅仅基于性能如何随着训练步骤数量增多而提升。作者没有考虑性能与时钟时间的关系。这隐去了一个非常重要的问题:PPO 无法并行运行,因为它在一个线程上执行所有优化,所有其他线程都处于空闲状态。”

“此外,PPO 每一组 rollout 都运行几个优化周期,因此每步的 CPU 时间要高得多。作者在论文中的比较再次产生了很大的误导。他们说,PPO 在 100 万次训练步骤后,比‘A2C’性能更好,但并没有提到 A3C 可以在相同的时钟时间内完成 400 万次的训练步骤。”

“每次迭代,都必须先生成所有的 rollout,然后在多个 epoch 中重复在优化器里运行所有这些。而且,你需要先把这些都完成了,才能开始生成下一组 rollout。”

让 peastman 如此纠结的 PPO 究竟是什么呢?

OpenAI 论文:近端策略优化算法 PPO

摘要

我们为强化学习提出了一类新的策略梯度法,可以通过与环境的交互在样本数据(sampling data)中进行转换,使用随机梯度下降优化替代目标函数(surrogate objective function)。标准的策略梯度法是在每一个数据样本上执行一次梯度更新,而我们提出的新目标函数可以在多个训练步骤(epoch)中实现小批量(minibatch)的更新。这种新方法称为近端策略优化(proximal policy optimization,PPO)。PPO 拥有置信域策略优化(TRPO)的一些好处,但更加容易实现,也更通用(general),并且根据我们的经验有更好的样本复杂度。我们在一组基准任务上测试了 PPO,包括模拟机器人运动和玩 Atari 游戏,这些基准测试表示 PPO 要比其他在线策略梯度法更好。考虑到总体的复杂度、操作简便性和 wall-time,PPO 是一种更好的选择。

上图显示了 PPO(浅蓝色线条) 与 Vanilla PG (Adaptive)、TRPO、A2C + Trust Region、CEM 和 A2C 的对比。

论文地址:https://arxiv.org/pdf/1707.06347.pdf

OpenAI 官方博文:PPO 在实现简单性、样本复杂度和调参难度之间取得了平衡

单独看论文摘要可能无法获知 PPO 的全貌。下面是 OpenAI 介绍 PPO 的博文。

PPO 让我们在复杂环境中训练 AI 策略。例如上面视频中显示的 Roboschool。其中,智能体的目标是通过学习走路、跑步和转弯等动作,最终抵达粉红色的圆点。在这个过程中,智能体会不断遭到小的撞击,必须学会倒下后自己站起来。

策略梯度法(Policy gradient method)是近来使用深度神经网络进行控制获得种种突破的基础。但是,通过策略梯度法取得很好的结果十分困难,因为它对步长大小(stepsize)的选择十分敏感。如果迭代步长太小,那么进展会很慢,如果迭代步长过大,那么信号将遭到噪声的强烈干扰,性能急剧降低。此外,策略梯度法样本效率非常低,需要几百万(乃至几十亿)时间步骤(timestep)学习一个简单的任务。

研究人员尝试使用 TRPO 和 ACER 等方法来减少这些缺陷,TRPO 和 ACER 等方法能够约束或优化一次策略更新(policy update)大小。这些方法也都有其各自的 trade-off,比如 ACER 要比 PPO 复杂,需要额外添加代码来修正离策略(off-policy)和重构缓冲器,TRPO 虽然对连续控制任务非常有用,但对于那些在策略和价值函数或辅助损失函数(auxiliary losses)间共享参数的算法兼容度很低,而后者恰好对于解决 Atari 等视觉输入很重要的领域的问题时很重要。

PPO

通过监督学习,我们可以轻松地实现成本函数,并在成本函数上运行梯度下降,只需相对少量调参就能得到很好的结果。让强化学习成功的路径并不明显,因为算法通常具有很多难以调试的活动模块,需要大量精力调整才能获得良好的效果。PPO 算法很好地在实现简单性、样本复杂度和调参难度之间取得了平衡,PPO 尝试在每一迭代步计算一个更新,将成本函数最小化,同时在计算梯度时确保与先前策略有相对较小的偏差。

PPO 使用了一种新的目标函数,这种目标函数很少在其他算法中出现:

这种目标函数实现了一种与随机梯度下降相匹配的置信域(Trust Region)更新,通过移除了 KL 惩罚,不需要更新,从而简化了算法。在测试中,PPO 在连续控制任务中取得了最好的性能,在 Atari 上取得了几乎能够与 ACER 相媲美的性能。

可控制的复杂机器人

用 PPO 训练的智能体发展出了灵活的移动策略,可以在朝目标地点移动时临时转向和倾斜。

OpenAI 的研究员介绍,他们用 PPO 训练出的策略的基础上创造了交互式智能体,用键盘在 Roboschool 环境中为机器人设置新的目标地点。哪怕输入序列与训练时的序列不同,智能体也成功实现了泛化。

他们还使用 PPO 教复杂的仿真机器人走动,比如上面视频中显示的波士顿动力 Atlas 机器人。这种模型有 30 个独立关节。还有研究人员用 PPO 训练机器人跨越障碍,取得了魔性的跑酷效果

所以,OpenAI PPO 论文结果是否真如他们说的那样好,感兴趣的同学可以尝试复现。OpenAI 还发布了 PPO 和 TRPO 的可扩展并行实现工具。

或许,你能解答 Github 用户 peastman 的困惑。

  • OpenAI 介绍 PPO 的博客:https://blog.openai.com/openai-baselines-ppo/
  • PPO 论文:https://arxiv.org/pdf/1707.06347.pdf
  • Github 讨论:https://github.com/deepchem/deepchem/pull/697#issuecomment-318508838
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-07-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 新智元 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 可控制的复杂机器人
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档