简述 PPO
        PPO 算法是一种基于策略的、使用两个神经网络的强化学习算法。通过将“智体”当前
的“状态”输入神经网络,最终会得到相应的“动作”和“奖励”,再根据“动作”来更新
“智体”的状态,根据包含有“奖励”和“动作”的目标函数,运用梯度上升来更新神经网
络中的权重参数,从而能得到使得总体奖励值更大的“动作”判断。
月球飞船降落
        本文根据 gym 来跑强化学习,在该游戏中,“状态”与“奖励”的更新都使用 gym 内部
封装的函数来实行,所以我们只需要考虑“状态”→“神经网络”→“动作”就行了。
        下载 gym 的步骤如下:
                pip install gym
                pip install box2d box2d-kengz --user
如果在 cmd 下安装不成功,建议在 Anaconda 中安装
神经网络
         PPO 算法需要使用到两个神经网络,其中一个网络我们命名为“actor_net”,“状态”就是通过“actor_net”做出了采取什么动作的判断;另一个网络我们叫它“critic_net”,进入这个网络的也是“状态”,但通过这个网络得到的是一个值“value”,具体作用我们后面会详述。正如前面所说,“状态”通过“actor_net”会得到“动作”,然后根据 gym 自带的函数会返回给我们新的“状态”以及“奖励”;“状态”通过“critic_net”会得到一个“value”。 这里得到的“动作”是经过 softmax 后得到的一个概率值,再经过采样后会得到相应动作的索引值。将“状态”输入神经网络是一个“智体”与环境不断交互产生数据的阶段,这也是强化学习里数据的来源,要注意的有交互并不等于有训练。
数学公式
        在深度强化学习中,我们的最终目的就是要尽可能地让得到的总的奖励最大。但是,在
PPO 算法中我们的目标函数求出的并不是“奖励”的期望,而是求“奖励”期望。
        公式如下:
        期望就是把概率和求出的值相乘,目的是求出一个较为平均的数。在强化学习中,“状态”时刻都在变化,即使是同样权重参数,也可能得到不同的判断,如果只是求单一状态下奖励的最大值,无法得到理想的效果。所以 PPO 算法将目标函数设为求奖励的期望值,这样可以一个较为总体的结果。
        再根据大数定律,我们可以把目标函数直接看成每一次的“动作”与“奖励”相乘结果的求和求平均值,公式如下:这里求出的“动作”其实是实行该动作的概率值。
我们再来说说“奖励”。
我们并不是使用直接得到的“奖励”进行参数的更新。我们前面有提到“
critic_net”网
络会得到一个“
value”,这时候我们要做的是拿“奖励”减去“
value”得到一个新的值,我
们用来参与训练的便是这个新的到的值。
因为在一般的交互过程中,很难会有奖励值为负,也就是惩罚产生,这样显然是不利于
训练流程的。同时,加大惩罚,可以让“智体”不断探索发现能带来更大奖励值的“动作”。
“actor_net”负责产生“动作”,从而产生“奖励”和新的“状态”。而产生用于调整“奖
励”的“
value”值,就是“
critic_net”任务。
参数更新
我们前面已经得到了求期望的公式,但这个公式并不是我们要使用的目标函数,我们还
要进行一些加工,最终得到了如下函数:
该式子求出了目标函数的梯度,最终我们可能根据梯度上升的思想来更新参数。
这里要注意的是,我们是根据每一次的“状态”、“动作”和“奖励”来更新参数,因此
必须要把每一次交互的数据记录下来,等参数更新之后再删除。
Of policy Off policy
        PPO 算法里的 policy 就是使用的神经网络,Of policy 就是有经过神经网络,Off policy 就
是不经过神经网络。
假设我们设定,在飞船降落月球的过程中,一次降落最多产生 300 次动作,而最多可以
降落 1000 次,这样的话“智体”就会与环境交互 30 万次。
前面有提到,参数的更新需要用到全部的数据,然后删除。但是,如果一整个流程就更
新了这么一次参数,不仅慢而且浪费。因为 PPO 算法采用了两个“智体”,也就是两套参数,
其中一套我们成为“打工人”钻进神经网络,不断与环境交互产生数据。另一个我们成为“大
少爷”,平时就呆着不动,等到交互达到一定次数时,比如我们可以设为 400 次,这个看我
们自己,“打工人”将自己收集到的数据传递给“大少爷”,“大少爷”就根据前面的公式进行参数更新。
因为是用了别的“智体”代替自己与环境交互,所以这个代替的“智体”与本来的“智
体”差异绝对不能太大,不然最终结果会有偏差。这里的差异,主要看的是判断出“动作”
的差异,因此,可以用以下代码来做一个限制:
surr1 = ratios * advantages
surr2 = torch.clamp(ratios, 1-self.eps_clip, 1+self.eps_clip) * advantages
Surr1 就是直接求两个“智体”所得值得比例,surr2 则是加了一个限制,如果将 eps_clip
设为 0.2,意思就是比值差异不能超过 0.2。求出两个 surr,然后取它们中得最小值,再加一
个负号,这就是我们用到的损失函数,也是之前目标函数加工后得来的。

强化学习之 PPO 算法相关推荐

  1. 【强化学习】PPO算法

    强化学习:PPO+CartPole PPO简介 我们在之前的项目中介绍了基于价值的强化学习算法DQN,基于策略的强化学习算法REINFORCE,基于价值和策略的组合算法Actor-Critic. 对于 ...

  2. 【强化学习】PPO算法求解倒立摆问题 + Pytorch代码实战

    文章目录 一.倒立摆问题介绍 二.PPO算法简介 三.详细资料 四.Python代码实战 4.1 运行前配置 4.2 主要代码 4.3 运行结果展示 4.4 关于可视化的设置 一.倒立摆问题介绍 Ag ...

  3. 【强化学习】⚠️手把手带你走进强化学习 2⚠️ OPP 算法实现月球登陆器 (PyTorch 版)

    [强化学习]⚠️手把手带你走进强化学习 2⚠️ OPP 算法实现月球登陆器 概述 强化学习算法种类 PPO 算法 Actor-Critic 算法 Gym LunarLander-v2 启动登陆器 PP ...

  4. 【强化学习】Q-Learning算法详解以及Python实现【80行代码】

    强化学习 在文章正式开始前,请不要被强化学习的tag给吓到了,这也是我之前所遇到的一个困扰.觉得这个东西看上去很高级,需要一个完整的时间段,做详细的学习.相反,强化学习的很多算法是很符合直观思维的. ...

  5. python强化学习之Q-learning算法

    强化学习是什么? 简单来说就是通过感知周围环境而行动,以取得最大化收益的一个过程. 其中Q-learning算法的感知状态为离散,无规律. 华丽的分割线------------------------ ...

  6. 【强化学习】Sarsa算法详解以及用于二维空间探索【Python实现】

    Sarsa算法 Sarsa算法,是基于Q-Learning算法.改动其实很小. 本文工作基于之前的Q-Learning的项目,如果有疑问可以看下面两个问题: [强化学习]Q-Learning算法详解以 ...

  7. 深度强化学习-Double DQN算法原理与代码

    深度强化学习-Double DQN算法原理与代码 引言 1 DDQN算法简介 2 DDQN算法原理 3 DDQN算法伪代码 4 仿真验证 引言 Double Deep Q Network(DDQN)是 ...

  8. 【深度强化学习】DRL算法实现pytorch

    DRL Algorithms DQN (deep Q network) Policiy_Gradient 策略梯度是强化学习的一类方法,大致的原理是使用神经网络构造一个策略网络,输入是状态,输出为动作 ...

  9. 强化学习ppt_机器学习原理、算法与应用配套PPT第四部分(深度学习概论、自动编码器、强化学习、聚类算法、半监督学习等)...

    本文是SIGAI公众号文章作者雷明编写的<机器学习>课程新版PPT第四部分,包含了课程内容的深度学习概论,自动编码器,受限玻尔兹曼机,聚类算法1,聚类算法2,聚类算法3,半监督学习,强化学 ...

最新文章

  1. C++ 中multiset 的使用
  2. php empty()和isset()的区别
  3. react项目中使用mocha结合chai断言库进行单元测试
  4. MapReduce的并行执行效率
  5. Linux环境用Sendmail架设Mail服务器
  6. 上海教师计算机等级要求,计算机考试阅卷教师谈等级考试
  7. linux操作系统中的netstat命令查看端口状态的使用和window操作系统查看端口号
  8. pycharm:一直indexing,怎么解决?
  9. 【Java程序设计】输入输出
  10. html5中的input(type=file)的multiple属性,实现多文件上传,并用js控制文件大小,数量
  11. 基于摄像头循迹的电子设计竞赛论文
  12. 主板点不亮 复位BIOS_魔改主板,体会扣扣索索装个机子的快乐。昂达H110 SD3加专用条...
  13. FFMPEG解码H264成YUV
  14. 传销三级的认定标准_应为传销案件中“劳务性工作人员”争取“不起诉”—传销犯罪辩护与研究(四十五)...
  15. 磁力链接搜索引擎源码下载
  16. python 导入自定义包
  17. Leetcode 1484题: Group Sold Products By The Date
  18. 戴尔r410服务器虚拟磁盘,DELL服务器R410原装 SAS 6/IR RAID卡 阵列控制器卡 支持RAID0,1...
  19. Oracle开发 之 主-外键约束FK及约束的修改
  20. Context-Transformer: Tackling Object Confusion for Few-Shot Detection(AAAI20)

热门文章

  1. 2012年10月高等教育国际金融全国统一命题考试
  2. 企业信息化关键:业务流程管理与信息技术集成
  3. 短视频造假术,你值得拥有
  4. 威客理论在国际英文期刊发表
  5. PTA 求最大、次大和第3大的值 (25 分)
  6. 某省住房和城建网的AES加密
  7. 迷你上标和下标(0~9、字母、特殊字符)
  8. 7-4 偶数乘2奇数乘3 (10分)
  9. 使用Apache Solr对数据库建立索引(包括处理CLOB、CLOB)
  10. 完美解决 git Unable to access ‘https://github.com/xxxx/xxxx.git/’:OpenSSL SSL_read:Connection was reset