强化学习VPG和PPO的区别
on-policy策略,是指使用当前策略生成的数据来更新当前策略;
off-policy策略,是指可以使用非当前策略生成的数据来更新当前策略;
举例:Agent使用策略与环境互动,生成数据
,使用
更新策略
获得新的策略
,数据
被丢弃,则是on-policy策略;
Agent使用策略与环境互动,生成数据
,使用
来更新策略
获得新的策略
,数据
被存储到数据缓冲池,用于下一次策略的更新,则是off-policy策略。
从定义可以知,on-policy策略的数据利用效率低,off-policy策略可以使用先前策略生成的数据,因此,off-policy的策略较高。
1. VPG是on-policy策略,每次和环境互动(一个epoch),使用当前策略,生产一批数据(batch),然后使用这些数据对当前策略进行一次更新,之后数据被丢弃;
2. DQN是off-policy,每次和环境互动,使用当前策略,生产一批数据,将新生产的数据存储到数据缓冲区,使用缓存区的数据更新t时刻的目标策略,生成t+1时刻的目标策略,接着,继续使用当前策略生成一批数据,存入缓冲区,使用缓冲区数据更新目标策略;经过一定次数的更新后,使用目标策略t+n更新当前策略, 继续上述过程;
3. PPO策略是on-policy策略,相比VPG策略,PPO策略使用当前策略生成的数据,对当前策略进行了多次更新,而非VPG的一次更新。多次更新带来了数据利用率的提升,学习效率的提升,但同时引入了不稳定性,即:由于数据并非更新后的策略生成,导致数据差异与当前策略较大,为了解决这个问题,PPO比较新旧策略的差异,如果差异过大,则进行修剪更新的范围,防止过大的更新导致网络不稳定,从而导致训练过程发散。
以openAI spinning up中代码为例,VPG和PPO代码的主要区别在于,更新函数中,PPO使用同一数据,对策略进行了多次更新(学习),图中的循环train_pi_iters则是该更新的次数。
强化学习VPG和PPO的区别相关推荐
- 深度强化学习笔记之PPO实现细节(2)
深度强化学习笔记之PPO实现细节(2) 本文主要参考于Coding PPO from Scratch with PyTorch系列,但本文并不会像该系列一样手把手讲解全部的实现细节,只是记录一下自己在 ...
- 强化学习笔记:PPO 【近端策略优化(Proximal Policy Optimization)】
1 前言 我们回顾一下policy network: 强化学习笔记:Policy-based Approach_UQI-LIUWJ的博客-CSDN博客 它先去跟环境互动,搜集很多的 路径τ.根据它搜集 ...
- 深度强化学习之:PPO训练红白机1942
本篇是深度强化学习动手系列文章,自MyEncyclopedia公众号文章深度强化学习之:DQN训练超级玛丽闯关发布后收到不少关注和反馈,这一期,让我们实现目前主流深度强化学习算法PPO来打另一个红白机 ...
- 【深度强化学习】(6) PPO 模型解析,附Pytorch完整代码
大家好,今天和各位分享一下深度强化学习中的近端策略优化算法(proximal policy optimization,PPO),并借助 OpenAI 的 gym 环境完成一个小案例,完整代码可以从我的 ...
- 【原创】强化学习笔记|从零开始学习PPO算法编程(pytorch版本)
从零开始学习PPO算法编程(pytorch版本)_melody_cjw的博客-CSDN博客_ppo算法 pytorch 从零开始学习PPO算法编程(pytorch版本)(二)_melody_cjw的博 ...
- B站学强化学习?港中文周博磊变身up主,中文课程已上线
本文经机器之心(微信公众号:almosthuman2014)授权转载,禁止二次转载 机器之心整理 众所周知,B 站是一个学习网站.在看完罗翔老师的刑法课之后,是时候探索人工智能了. 新冠疫情还未退散, ...
- 强化学习笔记4:强化学习分类
1 model-free & model-based model-based(有模型) RL agent,它通过学习环境的状态转移来采取动作. model-free(免模型) RL agent ...
- 交互式机器学习/ 强化学习在图像领域中的应用
交互式机器学习 参考: 深度学习在交互式图像分割中的应用 - 知乎 Nat. Methods | ilastik:为生物图像分析而生的交互式机器学习平台_DrugAI-CSDN博客 https://d ...
- 强化学习经典model-free方法总结
强化学习经典model-free方法总结 1. 基于值函数(value-based)的方法 1.1 sarsa 1.2 Q-learning 1.3 DQN 1.4 Double DQN 1.5 Du ...
最新文章
- 51CTO推荐博客、博客之星名单【2014年】
- Android UI(五)云通讯录项目之联系人列表,带侧滑选择,带搜索框
- 面试题总结~~(google level)
- IT技术分类和就业特点
- android jni 调用java对象_Android NDK开发之Jni调用Java对象
- Unity2020.1中如何安装DOTS的Entities包?
- 我的2015plan
- python绘制国际象棋_python使用turtle绘制国际象棋棋盘
- 读《NoSQL精粹》前三章有感
- linux手动注入网络数据_Linux网络 - 数据包的接收过程【转】
- nginx rwrite及增加不记录特定状态日志nginx模块
- mysql count 返回值类型_mysql count详解及函数实例代码
- oracle付权,oracle权限总结
- 卸载2345套件的本人认为最好的方法
- 网页左右两边加广告横幅
- 学生喂养动物(猫,狗,鸟)
- 前端面试题——js闭包
- 带你初识JSP(JAVA服务器页面)
- 侬用洲移动通信复习资料
- vcs oracle 双机,手动安装双机软件VCS5.1
热门文章
- Wireshark教程:解密HTTPS流量
- VC++类型转换大全
- Landsat Tm5辐射定标和大气校正(转)
- 实时显示GPU的两种方法(灵机一动)
- PAT乙级真题1089 || 狼人杀-简单版(详解,C/C++示例,测试点分析)
- Spring Security+OAuth2认证服务之令牌管理源码分析
- ProAndroidDev_The latest posts from Android Professionals and Google Developer Experts.
- 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?实现 int sqrt(int x) 函数。
- js手机号码格式、tp5身份证格式验证
- Js——案例实现图片数字时钟