您正在使用IE低版浏览器,为了您的雷锋网账号安全和更好的产品体验,强烈建议使用更快更安全的浏览器
人工智能 正文
发私信给雷锋字幕组
发送

0

深度强化学习从入门到大师:以刺猬索尼克游戏为例讲解PPO(第六部分)

本文作者:雷锋字幕组 2019-01-16 10:35
导语:几周前,OpenAI在深度强化学习上取得了突破性进展。
深度强化学习从入门到大师:以刺猬索尼克游戏为例讲解PPO(第六部分)

本文为 AI 研习社编译的技术博客,原标题 :

Proximal Policy Optimization (PPO) with Sonic the Hedgehog 2 and 3

作者 | Thomas Simonini

翻译 | 安石徒            校对 | 斯蒂芬•二狗子

审核 | 邓普斯•杰弗    整理 | 菠萝妹

原文链接:

https://towardsdatascience.com/proximal-policy-optimization-ppo-with-sonic-the-hedgehog-2-and-3-c9c21dbed5e


深度强化学习从入门到大师:以刺猬索尼克游戏为例讲解PPO

(第六部分)

深度强化学习从入门到大师:以刺猬索尼克游戏为例讲解PPO(第六部分)

几周前,OpenAI在深度强化学习上取得了突破性进展。由5个智能体的组成的人工智能团队OpenAI five击败了现实中的DOTA2玩家。但遗憾的是,该人工智能团队输掉了随后的第二场比赛。

深度强化学习从入门到大师:以刺猬索尼克游戏为例讲解PPO(第六部分)

Dota2

这个突破性进展的取得得益于强大的硬件支持和 PPO 算法(近端策略优化 Proximal Policy Optimization)。

PPO的核心思想是避免采用大的策略更新。为此,我们采用变化率表明新旧策略的不同,并缩减该变化率在0.8到1.2之间以保证策略更新不大。

此外,PPO的另一项创新是在训练智能体的k个epochs过程中使用了小批量梯度下降法。你可以读我们之前已经实现的这篇文章 A2C with Sonic The Hedgehog。

今天,我们将深入了解PPO结构,并应用PPO来训练智能体学习玩刺猬索尼克系列1,2,3。

但是,如果想要理解好PPO,你首先需要掌握A2C( 建议先阅读上一篇文章简单介绍A2C (第五部分))


  策略梯度(PG)目标函数存在的问题

曾记否,在学习策略梯度时,我们了解了策略目标函数(或策略损失函数)。

深度强化学习从入门到大师:以刺猬索尼克游戏为例讲解PPO(第六部分)

PG的思想是采用上面的函数一步步做梯度上升(等价于负方向的梯度下降)使智能体在行动中获取更高的回报奖励。

然而,PG算法存在步长选择问题(对step size敏感):

  • 步长太小,训练过于缓慢

  • 步长太大,训练中误差波动较大

深度强化学习从入门到大师:以刺猬索尼克游戏为例讲解PPO(第六部分)

面对训练过程波动较大的问题时,PPO可以轻松应对。

PPO近端策略优化的想法是通过限定每步训练的策略更新的大小,来提高训练智能体行为时的稳定性。

为了实现上述想法,PPO引入了一个新的目标函数“Clipped surrogate objective function”(大概可以翻译为:裁剪的替代目标函数),通过裁剪将策略更新约束在小范围内。


  裁剪替代目标函数 Clipped Surrogate Objective Function

首先,正如我们在stackoverflow中的解释,我们不采用智能体行动的对数概率logπ(a|s)(vanilla policy gradient method )来跟踪智能体行动的效果,而是使用当前策略下的行动概率(π(a|s))除以上一个策略的行动概率 (π_old(a|s))的比例:

深度强化学习从入门到大师:以刺猬索尼克游戏为例讲解PPO(第六部分)

摘自PPO论文:PPO paper

如上所示,rt(θ)表明了新旧策略间概率比:

  • 若 rt(θ)>1,则当前策略下的行动比原先策略的更有可能发生。

  • 若 rt(θ)⊂(0,1),则在当前策略下行动发生的概率低于原先的。

据此,新的目标函数可如下所示:

深度强化学习从入门到大师:以刺猬索尼克游戏为例讲解PPO(第六部分)

摘自PPO论文:PPO paper  

但是,如果你当前策略的行动的可能性远高于之前策略的情况下,此时不对目标函数进行约束, 那么 rt(θ)的值就会非常大,还会导致PG采取可能破坏策略的大梯度更新。

因此,需要对目标函数进行约束,惩罚那些导致rt(θ)远离1的变化(本文中比率仅允许在0.8和1.2之间),这样可以确保不会发生大的策略更新。

为此,我们有两个解决方案:

  • TRPO(Trust Region Policy Optimization,置信区间策略优化)采用的KL散度来约束策略更新(注:使用目标函数之外的KL散度,来约束需要更新的策略数目,以保证梯度单调上升;此外还有其他方法,例如ACER,Sample Efficient Actor-Critic with Experience eplay)。但是TRPO这种方法使用起来过于复杂,且耗费更多的计算时间。

  • 使用PPO优化的裁剪替代目标函数。

深度强化学习从入门到大师:以刺猬索尼克游戏为例讲解PPO(第六部分)

裁剪替代目标函数

通过该函数,得到两个概率比,一个非裁剪的和一个裁剪的(在[1 - ?, 1+?]区间,?是一个帮助我们设置范围的超参数,本文中? = 0.2)。

然后,我们选择裁剪和非裁剪中的最小值,最终得到的值范围是小于非裁剪的下界的区域。

为此,我们需要考虑两种情况case:

深度强化学习从入门到大师:以刺猬索尼克游戏为例讲解PPO(第六部分)

摘自PPO论文

  • case 1: 当优势A>0

如果Ȃt > 0,即该行动好于在该状态下的行动得分的平均值。因此,我们应鼓励新策略增加在该状态下采取该行动的概率。

也就增加了概率比r(t),增加了新策略的概率( At* 新的策略概率),同时令分母上的先前策略保持不变。

深度强化学习从入门到大师:以刺猬索尼克游戏为例讲解PPO(第六部分)

因为进行了裁剪,所以rt(?)最大只能增长到1+ ?。这意味着当前行动概率相较于原先策略不可能上百倍地提高。

为什么要这样做?因为我们不想过度更新策略。在该状态下采取这个行动的估计结果只是一次尝试的得出结果,并不能证明这个行动总是有较高的正向回报(说白了,防止陷入局部最优值),因此,我们就不要贪婪地学习,以防止智能体选择糟糕的策略。

总而言之,在(行动对结果)是积极作用的情况下,需要(在这步梯度上升中)增加一点该行动的概率,但不是太多。

  • case 2:当优势A<0

如果Ȃt < 0,即该行动为导致消极结果的行动,应该被阻止。因此概率比rt(?)会被减少。但同时进行裁剪,使rt(?)最小只能将降低到1- ?。

同样,我们不想最大化减少该行动被选中的概率,因为这种贪婪学习会导致策略过大的改变,以至于变得糟糕也说不定。

总而言之,多亏裁剪替代目标函数,我们约束了新策略相对旧策略两种情形下的变动范围。于是,我们把概率比控制在小区间内,因此,这种裁剪有利于求策略梯度。如果概率在[1 - ?, 1+?]区间外,梯度值为0。

最终的裁剪替代目标损失函数:

深度强化学习从入门到大师:以刺猬索尼克游戏为例讲解PPO(第六部分)


  使用PPO优化的A2C类型智能体学习玩索尼克系列游戏

现在,我们将准备实现一个A2C类型的PPO智能体。A2C类型训练包括该文中所述的A2C过程。

同样,这个代码实现比以前的代码要复杂好多。我们要开始复现最先进的算法,因此需要代码的更高的效率。这也是为什么,我们将整个代码分为不同对对象和文件来实现。

为了实现一个PPO智能体,需要读一读如下包含完成PPO过程的笔记和代码解释:

这个实现在GitHub仓库中 。
Understand PPO implementation playing Sonic the Hedgehog 2 and 3

如上所述,你已经创建了一个学习如何玩刺猬索尼克系列游戏1,2,3的智能体。太棒了!一个好的智能体需要在一个GPU上训练10到15小时。

别忘了自己亲自实现代码的每一个部分,因为调试完善代码是非常重要的。尝试更改环境,调整超参,尝试是学习的最佳途径也是最大乐趣。

花点时间来想想我们从第一节课到现在取得的所有成就:从简单的文本游戏(OpenAI taxi-v2)到像毁灭战士、索尼克这些复杂的游戏,我们采用越来越强大的模型结构。这真是极好的!

下一回,我们将学习深度强化学习中最有趣的的新内容之一——好奇心驱动的学习。


想要继续查看该篇文章相关链接和参考文献?

长按链接点击打开或点击【深度强化学习从入门到大师:以刺猬索尼克游戏为例讲解PPO(第六部分)】:

https://ai.yanxishe.com/page/TextTranslation/1408

【点击查看本系列文章


深度强化学习从入门到大师:简介篇(第一部分)

深度强化学习从入门到大师:通过Q学习进行强化学习(第二部分)

深度强化学习从入门到大师:以Doom为例一文带你读懂深度Q学习(第三部分 - 上)

深度强化学习从入门到大师:进一步了解深度Q学习(第三部分 - 下)

深度强化学习从入门到大师:以 Cartpole 和 Doom 为例介绍策略梯度 (第四部分)

深度强化学习从入门到大师:简单介绍A3C (第五部分)


AI研习社每日更新精彩内容,观看更多精彩内容:雷锋网(公众号:雷锋网)雷锋网雷锋网

7分钟了解Tensorflow.js

在Keras中理解和编程ResNet

初学者怎样使用Keras进行迁移学习

如果你想学数据科学,这 7 类资源千万不能错过

等你来译:

深度学习目标检测算法综述

一文教你如何用PyTorch构建 Faster RCNN

高级DQNs:利用深度强化学习玩吃豆人游戏

用于深度强化学习的结构化控制网络 (ICML 论文讲解)


雷锋网原创文章,未经授权禁止转载。详情见转载须知

深度强化学习从入门到大师:以刺猬索尼克游戏为例讲解PPO(第六部分)
分享:
相关文章

文章点评:

表情
最新文章
请填写申请人资料
姓名
电话
邮箱
微信号
作品链接
个人简介
为了您的账户安全,请验证邮箱
您的邮箱还未验证,完成可获20积分哟!
请验证您的邮箱
立即验证
完善账号信息
您的账号已经绑定,现在您可以设置密码以方便用邮箱登录
立即设置 以后再说