为什么PPO不可以像DQN一样使用Replay Buffer?——强化学习

news/2024/7/5 1:37:42

1 PPO回顾

PPO算法如下:

其中, P θ ′ P_{\theta'} Pθ A θ ′ A^{\theta'} Aθ都是使用由target policy θ ′ \theta' θ采集的数据来计算,在更新了behaviour policy多次后,清空前面保存的数据;使用behaviour policy更新target policy,再由target policy重新采集数据,依次循环。
(代码实现时,target policy和behaviour policy是一个类的实例,先采集数据 → \rightarrow 传播梯度n次 → \rightarrow 清空数据 → \rightarrow 采集数据 → \rightarrow 传播梯度n次 → \rightarrow 。。。)
参考easy-RL:https://github.com/datawhalechina/easy-rl/tree/master/projects/codes/PPO

2 重要性采样的前提

问题是,为什么PPO不像DQN一样将每次采集的数据存放在Replay Buffer中,不清空数据?
其实前面的图里提到了,PPO需要用到重要性采样,而重要性采样的前提是两个分布相差不大。
如果使用很久之前保存的数据计算重要性采样的优势函数 A θ ′ A^{\theta'} Aθ,则采集该历史数据的policy与当前需要优化的policy差距太大,就无法使用重要性采样了。

3 补充

图一中公式的第二行,为什么经过重要性采样后, A θ A^{\theta} Aθ变成了 A θ ′ A^{\theta'} Aθ,而 log ⁡ p θ \log p_{\theta} logpθ没有写成 log ⁡ p θ ′ \log p_{\theta'} logpθ
图中通过上标和下标的 θ \theta θ来表示不同的意思,上标 θ ′ \theta' θ表示计算该值( A A A)的 s t s_t st a t a_t at是在旧分布 θ ′ \theta' θ中采样得到,下标 θ \theta θ表示 p p p是由 θ \theta θ输出的,而计算 p p p需要的 s t s_t st a t a_t at还是在旧分布 θ ′ \theta' θ中采样得到。


http://lihuaxi.xjx100.cn/news/74312.html

相关文章

C · 初阶 | 光速初识C语言

啊我摔倒了..有没有人扶我起来学习.... 目录前言零、什么是C语言?一、第一个C语言程序二、数据类型三、变量、常量3.1 定义变量的方法3.2 变量的命名3.3 变量的分类3.4 变量的作用域和生命周期3.5 常量四、字符串转义字符注释4.1 字符串4.2 转义字符五、注释六、选择…

【学习记录】入坑SLAM一年后的理解

一、前言 入坑SLAM也有一年了,也看了不少视觉SLAM的方法,最近也开始涉猎一些激光SLAM的方法,在看的这些方法中,大多数的重点都放在了前端的部分,因为师兄说过大多数的SLAM方法后端都没什么变化,都是画因子…

Mac安装docker(轻松解决安装)

Mac安装docker(轻松解决安装) 1、docker是什么? Docker的三个基本概念: Image(镜像) Container(容器) Repository(仓库) Docker的思想来自于集装箱,集装箱解决了什么问题? 在一艘大船上,可以把货物规整的…

第06章 所有的晕厥都不可掉以轻心

【晕倒后第一时间要做的快速检查】这是一段真实的故事,大家听完不许笑。 大家都知道我是一名医生,大家都知道在中国看病很困难,所以大家都知道在中国认识一名医生是一件很重要的事,所以我从来没有被小学同学、初中同学、高中同学&…

MySQL数据库_02_数据库基础知识

一. 数据库和文件 数据库和文件一样存储的介质可以是内存也可以是磁盘。为什么有文件了还需要数据库?因为文件的安全性不高,也不利于大量数据的存储,查询和管理,在程序中控制也不怎么方便。 二. 数据库服务器,数据库&a…

Debezium系列之:详细记录数据库迁移debezium保证数据不丢失的方法和步骤流程

Debezium系列之:详细记录数据库迁移debezium保证数据不丢失的方法和步骤流程 一、背景二、方法一:新起debezium connector三、方法二:设置mysql位点步骤1:DBA提供位点步骤2:准备新域名debezium connector的配置步骤3:删除采集旧域名数据库的debezium connector步骤4:写入…

将Bean交给Spring容器管理有几种方式?

Spring核心 Spring核心是 IOC 和 AOP 。 所谓IoC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系。 至于更详细的说明,或者去深入理解Spring这两大核心,不是此篇文章的目的,暂不细说了。 …

层次分析法原理讲解 python手搓实现-故事带入小白详解版

层次分析法 在参加研究生数学建模的时候用到了层次分析法,然后就写了个程序,比完赛了想着代码别浪费了拉出来写个教程,虽然这个算法很经典但是和往常一样我搜索了很多资料没有看起来比较舒服的,那就自己来吧。 问题构建-我应该选…