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

简介: 几周前,OpenAI在深度强化学习上取得了突破性进展。
TB1lhABB7voK1RjSZPfXXXPKFXa.jpg

本文为 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

(第六部分)

TB1pt6GCXzqK1RjSZFCXXbbxVXa.jpg

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

TB19lv2ChjaK1RjSZKzXXXVwXXa.gif

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)目标函数存在的问题

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

TB1KIbJCkvoK1RjSZFwXXciCFXa.jpg

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

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

步长太小,训练过于缓慢

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

TB1qrTKCkzoK1RjSZFlXXai4VXa.jpg

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

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

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

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

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

TB1HRbyCmzqK1RjSZPxXXc4tVXa.png

摘自PPO论文:PPO paper

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

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

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

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

TB1NKLCChTpK1RjSZR0XXbEwXXa.png

摘自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优化的裁剪替代目标函数。

TB175jECa6qK1RjSZFmXXX0PFXa.jpg

裁剪替代目标函数

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

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

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

TB1x0DDCjTpK1RjSZKPXXa3UpXa.png

摘自PPO论文

case 1: 当优势A>0

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

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

TB1NKLCChTpK1RjSZR0XXbEwXXa.png

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

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

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

case 2:当优势A<0

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

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

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

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

TB1_hvCCirpK1RjSZFhXXXSdXXa.jpg

  使用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 论文讲解)

目录
相关文章
|
4月前
|
机器学习/深度学习 算法 机器人
深度强化学习之gym扫地机器人环境的搭建(持续更新算法,附源码,python实现)
深度强化学习之gym扫地机器人环境的搭建(持续更新算法,附源码,python实现)
106 0
|
10月前
|
机器学习/深度学习 人工智能 自然语言处理
强化学习从基础到进阶–案例与实践[11]:AlphaStar论文解读、监督学习、强化学习、模仿学习、多智能体学习、消融实验
强化学习从基础到进阶–案例与实践[11]:AlphaStar论文解读、监督学习、强化学习、模仿学习、多智能体学习、消融实验
强化学习从基础到进阶–案例与实践[11]:AlphaStar论文解读、监督学习、强化学习、模仿学习、多智能体学习、消融实验
|
10月前
|
机器学习/深度学习 人工智能 算法
强化学习从基础到进阶-案例与实践[4.2]:深度Q网络DQN-Cart pole游戏展示
强化学习从基础到进阶-案例与实践[4.2]:深度Q网络DQN-Cart pole游戏展示
强化学习从基础到进阶-案例与实践[4.2]:深度Q网络DQN-Cart pole游戏展示
|
10月前
|
机器学习/深度学习 人工智能 自动驾驶
强化学习从基础到进阶--案例与实践含面试必知必答[10]:模仿学习、行为克隆、逆强化学习、第三人称视角模仿学习、序列生成和聊天机器人
强化学习从基础到进阶--案例与实践含面试必知必答[10]:模仿学习、行为克隆、逆强化学习、第三人称视角模仿学习、序列生成和聊天机器人
强化学习从基础到进阶--案例与实践含面试必知必答[10]:模仿学习、行为克隆、逆强化学习、第三人称视角模仿学习、序列生成和聊天机器人
|
10月前
|
机器学习/深度学习 人工智能 机器人
强化学习从基础到进阶--案例与实践含面试必知必答[9]:稀疏奖励、reward shaping、curiosity、分层强化学习HRL
强化学习从基础到进阶--案例与实践含面试必知必答[9]:稀疏奖励、reward shaping、curiosity、分层强化学习HRL
强化学习从基础到进阶--案例与实践含面试必知必答[9]:稀疏奖励、reward shaping、curiosity、分层强化学习HRL
|
11月前
|
机器学习/深度学习 人工智能 自然语言处理
从零开始训练一个人工智障女友
从零开始训练一个人工智障女友
|
11月前
|
机器学习/深度学习 自然语言处理 数据可视化
泛化神器 | 李沐老师新作进一步提升模型在多域多的泛化性,CV和NLP均有大幅度提升(文末获取论文)
泛化神器 | 李沐老师新作进一步提升模型在多域多的泛化性,CV和NLP均有大幅度提升(文末获取论文)
168 0
|
机器学习/深度学习 存储 人工智能
用深度强化学习玩FlappyBird
用深度强化学习玩FlappyBird
77 0
|
机器学习/深度学习 人工智能 编解码
逐步揭开模型面纱!首篇深度视觉建模中的可解释AI综述
深度视觉模型在高风险领域有着广泛的应用。因此它们的黑匣子性质目前吸引了研究界的极大兴趣。论文在《可解释的人工智能》中进行了第一次调查,重点是解释深度视觉模型的方法和指标。涵盖了最新技术的里程碑式贡献,论文不仅提供了现有技术的分类组织,还挖掘了一系列评估指标,并将其作为模型解释的不同特性的衡量标准进行整理。在深入讨论当前趋势的同时,论文还讨论了这一研究方向的挑战和未来途径。
逐步揭开模型面纱!首篇深度视觉建模中的可解释AI综述
|
机器学习/深度学习 人工智能 算法
【AI】浅谈梯度下降算法(实战篇)
在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降(Gradient Descent)是最常采用的方法之一,另一种常用的方法是最小二乘法。目前正在学习这方面相关的内容,因此简单谈谈。
188 0
【AI】浅谈梯度下降算法(实战篇)