优先经验回放(Prioritized Experience Replay)
经验回放(experience replay)
在DQN算法中,为了打破样本之间关联关系,通过经验池,采用随机抽取经历更新参数。但是,对于奖励稀疏的情况,只有N多步正确动作后才有奖励的问题,会存在能够激励Agent进行正确学习的样本很少,采用随机抽取经历得方式,效率会很低,很多样本都奖励为0的,没什么区别。
解决这个问题的主要从两方法考虑,经验存储方法,经验抽取的方法,目前主要采用经验抽取的方法。
优先经验回放
优先经验回放就是抽取经历时,优先抽取最有价值的经历,但是又不能只抽取最有价值,不然会造成过拟合,应该是价值越高的,抽取到的概率越大,价值最低的,也有一定的概率抽到。
衡量经验的价值
如何确定一个经验的价值呢?在DQN中,核心更新公式
Qw(st,at)=Qw(st,at)+[rt+1+γmaxaQw(st+1,at+1)−Qw(st,at)]Q_w(s_t,a_t)=Q_w(s_t,a_t)+[r_{t+1}+\gamma max_aQ_w(s_{t+1},a_{t+1})-Q_w(s_t,a_t)]Qw(st,at)=Qw(st,at)+[rt+1+γmaxaQw(st+1,at+1)−Qw(st,at)]
其中,TD-error:δt=rt+1+γmaxaQw(st+1,at+1)−Qw(st,at)\delta_t=r_{t+1}+\gamma max_aQ_w(s_{t+1},a_{t+1})-Q_w(s_t,a_t)δt=rt+1+γmaxaQw(st+1,at+1)−Qw(st,at)
我们的目标就是让TD—error近可能小,如果TD-error比较大,意味着我们当前的Q函数离目标的Q函数差距还很大,应该多进行更新,因此用TD-error来衡量经验的价值。
为了不让网络过拟合,通过概率方式进行抽取经验,保证即使是TD-error为0的经验也能被抽取到。令每个经验的优先值为:
P(i)=pi∑piP(i)={p_i \over \sum p_i}P(i)=∑pipi
其中pi=∣δt+ϵ∣p_i=|\delta_t+\epsilon|pi=∣δt+ϵ∣,其中ϵ\epsilonϵ是一个很小的值,防止TD-error为0的经验被抽取到的概率不会为0。
高效优先经验抽取
给每个经验都打上了各自的被抽取到的优先值,如何进行高效的抽取经验呢,遍历整个经验池选择优先值高的,显然会耗费大量的计算资源,反而造成模型训练变慢。一种方法为sum-tree的数据结构。
把每个经验的优先值当做叶子节点,两节点一直往上叠加,构成一个二叉树,树根的值就是所有经验的优先值的和。
抽样时,就将根节点的总的优先值除以batch_size,划分为batch_size个区间,每个区间随机抽取一个数,从根节点处往下搜寻叶子节点。假设总的优先值是42的话, 我们如果抽6个样本, 这时的区间可能是这
[0-7], [7-14], [14-21], [21-28], [28-35], [35-42]
然后在每个区间里随机选取一个数. 比如在区间[21-28]里选到了24, 就按照这个 24 从最顶上的42开始向下搜索. 首先看到最顶上42下面有两个 child nodes, 拿着手中的24对比左边的 child29, 如果 左边的 child 比自己手中的值大, 那我们就走左边这条路, 接着再对比29下面的左边那个点13, 这时, 手中的 24 比13大, 那我们就走右边的路, 并且将手中的值根据13修改一下, 变成 24-13 = 11. 接着拿着 11 和16左下角的12比, 结果12比 11 大, 那我们就选 12 当做这次选到的 priority, 并且也选择 12 对应的数据。
代码实现
待续
————————————————
参考:
原文链接:https://blog.csdn.net/yyyxxxsss/article/details/80858127
优先经验回放(Prioritized Experience Replay)相关推荐
- 强化学习—— 经验回放(Experience Replay)
强化学习-- 经验回放(Experience Replay) 1.DQN的缺点 1.1 DQN 1.2 DQN的不足 1.2.1 经验浪费 1.2.2 相关更新(correlated update) ...
- Prioritized Experience Replay
论文链接:https://arxiv.org/pdf/1511.05952v2.pdf 论文题目:PRIORITIZED EXPERIENCE REPLAY Prioritized Experienc ...
- 【一文弄懂】优先经验回放(PER)论文-算法-代码
[一文弄懂]优先经验回放(PER)论文-算法-代码 文章目录 [一文弄懂]优先经验回放(PER)论文-算法-代码 前言: 综合评价: 继续前言唠叨 per论文简述: 参考博客: 背景知识 A MOTI ...
- off-policy全系列(DDPG-TD3-SAC-SAC-auto)+优先经验回放PER-代码-实验结果分析
off-policy全系列(DDPG-TD3-SAC-SAC-auto)+优先经验回放PER-代码-实验结果分析 文章目录 off-policy全系列(DDPG-TD3-SAC-SAC-auto)+优 ...
- DQL: Dueling Double DQN, Prioritized Experience Replay, and fixed Q-targets(三下)
https://www.freecodecamp.org/news/improvements-in-deep-q-learning-dueling-double-dqn-prioritized-exp ...
- 《DISTRIBUTED PRIORITIZED EXPERIENCE REPLAY》强化学习论文笔记
原文下载链接 abstract 本文提出了一种用于大规模深度强化学习的分布式架构,可以使agent能够从比以前数量级更多的数据上更有效地学习.该算法将行为与学习解耦,多个分布式actor与环境进行交互 ...
- 深度强化学习系列(8): Prioritized Experience Replay(PER-DQN)原理及实现
论文地址: https://arxiv.org/abs/1511.05952 本论文是由DeepMind操刀,Schaul主导完成的文章,发表于顶会ICLR2016上,主要解决经验回放中的" ...
- 【深度学习】DQN的经验回放(Experience Reply)和目标网络(Target Network)
前言 对于Q-learning算法,有两点不足之处: 维度灾难:这是由于查找表存储和更新Q值时需要在离散状态空间开始强化学习,当状态的数量增大,这一问题将愈发难解: 有关状态空间离散化的粒度:较低的粒 ...
- 强化学习 补充笔记(TD算法、Q学习算法、SARSA算法、多步TD目标、经验回放、高估问题、对决网络、噪声网络)
学习目标: 深入了解马尔科夫决策过程(MDP),包含TD算法.Q学习算法.SARSA算法.多步TD目标.经验回放.高估问题.对决网络.噪声网络.基础部分见:强化学习 马尔科夫决策过程(价值迭代.策略迭 ...
- 论文理解【RL - Exp Replay】—— 【LFIW】Experience Replay with Likelihood-free Importance Weights
标题:Experience Replay with Likelihood-free Importance Weights 文章链接:An Equivalence between Loss Functi ...
最新文章
- 异常分析 (空间太小)
- kernel-devel
- c语言不能在函数中求数组大小,C语言中数组长度不能用变量定义吗?
- 图像处理之基础---很好的一个开源文档库
- php将权限写入session,PHP由session文件夹权限不够引起的报错
- Event Logging 技术简介
- gitee java pdf转图片_openOffice word转pdf,pdf转图片优化版
- WinRAR压缩加密
- 小学steam计算机课程案例,STEAM课程典型案例——桥世界
- 入侵检测系统(IDS)与入侵防御系统(IPS)的简单理解
- 我的感悟:一切都是最好的安排
- double和float区别
- iOS内存管控实战(上)—原理篇
- 前端ffmpeg实现视频剪切
- 谁掐了你的顺丰包裹信息?
- 布隆过滤器究竟是什么,这一篇给讲的明明白白的
- android手机nfc功能安装,小米6怎么使用NFC功能?小米手机NFC功能使用教程
- VR开发基础—VR视频
- JavaBean、MVC模式、Servlet、Servlet生命周期:5个阶段
- Centos断网系统 yum安装详解(1)
热门文章
- 周鸿祎和马化腾对话,泄露曝光
- ThinkPHP截取部分文章文字、字符串
- 计算机怎么读,计算机研究生到底该怎么读?
- WIFI篇(2.python破解wifi--生成密码字典)
- 计算机音乐tfboys手机,TFBoys王源的iPhone挂了 别怕 手贱有得治
- andpods授权码订单号分享_Axure 9.0学生免费授权申请详细步骤
- FPGA 串口中断_正点原子【STM32-F407探索者】第九章 串口通信实验
- 【2020牛客寒假基础算法训练营】第五场总结
- 写的函数符号表里没有_DATEDIF函数,看看你的Excel里有没有?
- python lasso回归分析_解析python实现Lasso回归