进阶篇—PPO代码逐行分析

一、TRPO、PPO、DPPO

PG (Policy gradient)
最常用的策略梯度估计其表达形式如下

TRPO(Trust Region Policy Optimization)
这是一种具有单调递增性质的PG算法,构造了一个带有约束的目标函数

使用一个惩罚项来替代TRPO的约束项,从而把约束优化问题转换为无约束优化问题

PPO(Proximal Policy Optimization)
PPO有两种版本,一是使用Clipped Surrogate Objective


另一种是Adaptive KL Penalty Coefficient

值得注意的是这里的超参数初始值并不重要,因为其会很快的自适应调整。
DPPO(Distributed Proximal Policy Optimization)
DPPO是一种同步并行PPO算法。DPPO把网络参数存在到一个服务器上,并且会在每一个gradient step后同步地更新workers的参数。

二、算法流程

首先是一个类似AC中的多任务损失函数

SSS为交叉熵损失,用来提高策略探索能力, LtVFL_t^{VF}LtVF​为(Vθ(st)−Vttarg)2(V_ \theta(s_t)-V_t^{targ})^2(Vθ​(st​)−Vttarg​)2
A3C在每一次迭代中,都要采集T个samples(T远远小于回合长度),计算T个n-step return,然后使用这T个数据更新评价网络:

PPO也使用了相同的思路,但是使用GAE实现

最后,整个算法流程如下

三、代码

逐行分析写在注释上了,有需要的自取我的GitHub。

进阶篇---PPO代码逐行分析相关推荐

  1. 目标跟踪心得篇二:ByteTrack原理及其在MMTracking上的代码逐行分析(本文顺带分析MMTracking相关难点,后期不在赘述)

    要学习ByteTrack,首先得了解其名字是怎么来的:这个工作是一个学生在字节实习的时候提出来的算法,因此就以Byte这个单词来命名,可能从名字上没有太直观的含义来体现出这个算法在干嘛. ByteTr ...

  2. 视频教程-2019版抓包分析-Wireshark从入门到精通【进阶篇】-其他

    2019版抓包分析-Wireshark从入门到精通[进阶篇] G-LAB IT实验室创始人.知名讲师.同时拿到路由交换.网络安全.数据中心3个方向的CCIE专家级别认证.教学风趣幽默,广受学员好评 郭 ...

  3. [安全攻防进阶篇] 七.恶意样本检测之编写代码自动提取IAT表、字符串及时间戳溯源

    系统安全绕不开PE文件,PE文件又与恶意样本检测及分析紧密相关.前文作者带领大家逆向分析两个CrackMe程序,包括逆向分析和源码还原.这篇文章主要介绍了PE文件基础知识及恶意样本检测的三种处理知识, ...

  4. [安全攻防进阶篇] 六.逆向分析之OllyDbg逆向CrackMe01-02及加壳判断

    前文作者讲解了OllyDbg和在线沙箱的逆向分析过程,分享了恶意软件如何通过宏脚本发送勒索信息或密码至用户邮箱.这篇文件将带领大家逆向分析两个CrackMe程序,包括逆向分析和源码还原,基础性文章,希 ...

  5. [安全攻防进阶篇] 四.逆向分析之条件语句和循环语句源码还原及流程控制逆向

    从2019年7月开始,我来到了一个陌生的专业--网络空间安全.初入安全领域,是非常痛苦和难受的,要学的东西太多.涉及面太广,但好在自己通过分享100篇"网络安全自学"系列文章,艰难 ...

  6. [安全攻防进阶篇] 一.什么是逆向分析、逆向分析应用及经典扫雷游戏逆向

    从2019年7月开始,我来到了一个陌生的专业--网络空间安全.初入安全领域,是非常痛苦和难受的,要学的东西太多.涉及面太广,但好在自己通过分享100篇"网络安全自学"系列文章,艰难 ...

  7. Android日志[进阶篇]二-分析堆栈轨迹(调试和外部堆栈)

    Android日志[进阶篇]一-使用 Logcat 写入和查看日志 Android日志[进阶篇]二-分析堆栈轨迹(调试和外部堆栈) Android日志[进阶篇]三-Logcat命令行工具 Androi ...

  8. [安全攻防进阶篇] 二.如何学好逆向分析、逆向路线推荐及吕布传游戏逆向案例

    从2019年7月开始,我来到了一个陌生的专业--网络空间安全.初入安全领域,是非常痛苦和难受的,要学的东西太多.涉及面太广,但好在自己通过分享100篇"网络安全自学"系列文章,艰难 ...

  9. 《微信小程序-进阶篇》Lin-ui组件库源码分析-列表组件List(一)

    大家好,这是小程序系列的第二十篇文章,在这一个阶段,我们的目标是 由简单入手,逐渐的可以较为深入的了解组件化开发,从本文开始,将记录分享lin-ui的源码分析,期望通过对lin-ui源码的学习能加深组 ...

最新文章

  1. Java 数值大小比较
  2. 优秀教程:创建基于 Ajax 的文件拖放上传功能
  3. 英伟达CUDA太难!OpenAI出手要取代它,新语言性能相当但编程更简单
  4. RAC常见命令检查状态
  5. 自己对有上下界的网络流的理解
  6. VMware workstation 网络设置详解
  7. python word模板 图_科学网—Python绘制可插入Word的高清矢量图(SVG转EMF) - 任晓东的博文...
  8. 计算机课flash课件,flash动画制作获奖课件
  9. STM32移植MPU6050/9250的DMP官方库(motion_driver_6.12)修改移植 DMP简单使用教程
  10. AI产业新阶段:高效的数据管理,正在实现AI数据价值最大化
  11. 笔记本外接显示屏,FPS下降严重的解决办法
  12. 【接口时序】5、QSPI Flash的原理与QSPI时序的Verilog实现(转载)https://www.cnblogs.com/liujinggang/p/9651170.html
  13. 判断链表是否为【回文结构】
  14. Keil5最新版本下载(MDK 5.25, C51v959)
  15. 5个步骤,教会企业如何整理有效的常见问题(FAQ)解答页面。运营必看!
  16. 需求分析-需求调研步骤和方法
  17. ARM 安装中文输入法
  18. 开题报告的国内外研究现状怎么写呢?
  19. 公开募集催生Namco Bandai(南梦宫万代)的预售实验
  20. SpringSecurity+Oauth+短信登录+第三方登录认证+Session管理

热门文章

  1. [区块链]回归初心——关于DAO的深度再思考
  2. 三月,和她一起看一次樱花吧(vue实现樱花漫天效果)
  3. EMNLP2021语言模型论文合集
  4. 素描越画越差了?为什么同样学美术你却在退步?
  5. linux终端文字看不清,Linux字体模糊该怎么解决? Linux让字体清晰的教程
  6. Python使用redis中文乱码问题
  7. linux 7增加防火墙端口号,centos7防火墙端口设置
  8. 力士乐plc培训资料_Rexroth力士乐可编程控制器(PLC)的基础知识
  9. 反汇编-植物大战僵尸
  10. maven The JAVA_HOME environment variable is not defined correctly