进阶篇---PPO代码逐行分析
进阶篇—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代码逐行分析相关推荐
- 目标跟踪心得篇二:ByteTrack原理及其在MMTracking上的代码逐行分析(本文顺带分析MMTracking相关难点,后期不在赘述)
要学习ByteTrack,首先得了解其名字是怎么来的:这个工作是一个学生在字节实习的时候提出来的算法,因此就以Byte这个单词来命名,可能从名字上没有太直观的含义来体现出这个算法在干嘛. ByteTr ...
- 视频教程-2019版抓包分析-Wireshark从入门到精通【进阶篇】-其他
2019版抓包分析-Wireshark从入门到精通[进阶篇] G-LAB IT实验室创始人.知名讲师.同时拿到路由交换.网络安全.数据中心3个方向的CCIE专家级别认证.教学风趣幽默,广受学员好评 郭 ...
- [安全攻防进阶篇] 七.恶意样本检测之编写代码自动提取IAT表、字符串及时间戳溯源
系统安全绕不开PE文件,PE文件又与恶意样本检测及分析紧密相关.前文作者带领大家逆向分析两个CrackMe程序,包括逆向分析和源码还原.这篇文章主要介绍了PE文件基础知识及恶意样本检测的三种处理知识, ...
- [安全攻防进阶篇] 六.逆向分析之OllyDbg逆向CrackMe01-02及加壳判断
前文作者讲解了OllyDbg和在线沙箱的逆向分析过程,分享了恶意软件如何通过宏脚本发送勒索信息或密码至用户邮箱.这篇文件将带领大家逆向分析两个CrackMe程序,包括逆向分析和源码还原,基础性文章,希 ...
- [安全攻防进阶篇] 四.逆向分析之条件语句和循环语句源码还原及流程控制逆向
从2019年7月开始,我来到了一个陌生的专业--网络空间安全.初入安全领域,是非常痛苦和难受的,要学的东西太多.涉及面太广,但好在自己通过分享100篇"网络安全自学"系列文章,艰难 ...
- [安全攻防进阶篇] 一.什么是逆向分析、逆向分析应用及经典扫雷游戏逆向
从2019年7月开始,我来到了一个陌生的专业--网络空间安全.初入安全领域,是非常痛苦和难受的,要学的东西太多.涉及面太广,但好在自己通过分享100篇"网络安全自学"系列文章,艰难 ...
- Android日志[进阶篇]二-分析堆栈轨迹(调试和外部堆栈)
Android日志[进阶篇]一-使用 Logcat 写入和查看日志 Android日志[进阶篇]二-分析堆栈轨迹(调试和外部堆栈) Android日志[进阶篇]三-Logcat命令行工具 Androi ...
- [安全攻防进阶篇] 二.如何学好逆向分析、逆向路线推荐及吕布传游戏逆向案例
从2019年7月开始,我来到了一个陌生的专业--网络空间安全.初入安全领域,是非常痛苦和难受的,要学的东西太多.涉及面太广,但好在自己通过分享100篇"网络安全自学"系列文章,艰难 ...
- 《微信小程序-进阶篇》Lin-ui组件库源码分析-列表组件List(一)
大家好,这是小程序系列的第二十篇文章,在这一个阶段,我们的目标是 由简单入手,逐渐的可以较为深入的了解组件化开发,从本文开始,将记录分享lin-ui的源码分析,期望通过对lin-ui源码的学习能加深组 ...
最新文章
- Java 数值大小比较
- 优秀教程:创建基于 Ajax 的文件拖放上传功能
- 英伟达CUDA太难!OpenAI出手要取代它,新语言性能相当但编程更简单
- RAC常见命令检查状态
- 自己对有上下界的网络流的理解
- VMware workstation 网络设置详解
- python word模板 图_科学网—Python绘制可插入Word的高清矢量图(SVG转EMF) - 任晓东的博文...
- 计算机课flash课件,flash动画制作获奖课件
- STM32移植MPU6050/9250的DMP官方库(motion_driver_6.12)修改移植 DMP简单使用教程
- AI产业新阶段:高效的数据管理,正在实现AI数据价值最大化
- 笔记本外接显示屏,FPS下降严重的解决办法
- 【接口时序】5、QSPI Flash的原理与QSPI时序的Verilog实现(转载)https://www.cnblogs.com/liujinggang/p/9651170.html
- 判断链表是否为【回文结构】
- Keil5最新版本下载(MDK 5.25, C51v959)
- 5个步骤,教会企业如何整理有效的常见问题(FAQ)解答页面。运营必看!
- 需求分析-需求调研步骤和方法
- ARM 安装中文输入法
- 开题报告的国内外研究现状怎么写呢?
- 公开募集催生Namco Bandai(南梦宫万代)的预售实验
- SpringSecurity+Oauth+短信登录+第三方登录认证+Session管理
热门文章
- [区块链]回归初心——关于DAO的深度再思考
- 三月,和她一起看一次樱花吧(vue实现樱花漫天效果)
- EMNLP2021语言模型论文合集
- 素描越画越差了?为什么同样学美术你却在退步?
- linux终端文字看不清,Linux字体模糊该怎么解决? Linux让字体清晰的教程
- Python使用redis中文乱码问题
- linux 7增加防火墙端口号,centos7防火墙端口设置
- 力士乐plc培训资料_Rexroth力士乐可编程控制器(PLC)的基础知识
- 反汇编-植物大战僵尸
- maven The JAVA_HOME environment variable is not defined correctly