dueling dqn 和 double dqn_强化学习(十一)--DQN三个经典的变种
DQN三个经典的变种:Double DQN、Dueling DQN、Prioritized Replay Buffer。
Double-DQN:将动作选择和价值估计分开,避免价值过高估计。
Dueling-DQN:将Q值分解为状态价值和优势函数,得到更多有用信息。
Prioritized Replay Buffer:将经验池中的经验按照优先级进行采样。
1.Double DQN
(1)为什么提出Double DQN ?
为了解决原始DQN存在的过估计问题。
(2)什么是过估计?
过估计是指估计的值函数比真实的值函数大。
(3)为什么DQN存在过估计的问题?
因为DQN是一种off-policy的方法,每次学习时,不是使用下一次交互的真实动作,而是使用当前认为价值最大的动作来更新目标值函数,所以会出现对Q值的过高估计。通过基于函数逼近方法的值函数更新公式可以看出:
(4)怎么解决这个问题?
为了解决过估计的问题,Hasselt提出了Double Q Learning方法,将此方法应用到DQN中,就是Double DQN,即DDQN。所谓的Double Q Learning是将动作的选择和动作的评估分别用不同的值函数来实现。
动作的选择:选择该状态下动作值函数最大的动作,即
动作的评估:选出
2.经验回放(Prioritized Replay)
DQN的经验回放采用均匀分布,而均匀分布采样并不能高效利用数据。因为agent的经验就是经历过的数据,但这些数据对于训练并不是具有同等重要的意义,agent在某些状态的学习效率比其他状态的学习效率高。
优先回放的基本思想:打破均匀采样,赋予学习效率高的状态以更大的采样权重。
如何选择权重?
一个理想的标准是agent学习的效率越高,权重越大。TD偏差越大,说明该状态处的值函数与TD目标的差距越大,agent的更新量越大,因此该处的学习效率越高。
(如果TD-error越大, 就代表我们的预测精度还有很多上升空间, 那么这个样本就越需要被学习, 也就是优先级p越高。)
有了 TD-error 就有了优先级 p, 那我们如何有效地根据 p 来抽样呢?
如果每次抽样都需要针对 p 对所有样本排序, 这将会是一件非常消耗计算能力的事. 可以采用更高级的算法——SumTree方法。
SumTree是一种树形结构,每片树叶存储每个样本的优先级P,每个树枝节点只有两个分叉,节点的值是两个分叉的和,所以SumTree的顶端就是所有p的和。
抽样时,将 p 的总合除以 batch size, 分成batch size个区间。
比如p的总和是42的话, 如果抽6个样本,划分成区间[0-7], [7-14], [14-21], [21-28], [28-35], [35-42]。然后在每个区间里随机选取一个数。
(i)比如在区间 [21-28] 里选到了24, 就按照这个 24 从最顶上的42开始向下搜索.。
(ii)首先顶端42 下面有两个子结点,先对比左边的子结点, 如果比24大, 那就走左边这条路。
(iii)接着再对比 29 下面的左边子结点,13比24小, 那就走右边的路, 并且初始值24根据 13 修改, 变成 24-13 = 11。
(iiii)接着拿着 11 和 16 左子结点比,12 比 11 大, 选 12 当做这次选到的 priority, 并且选择 12 对应的一条数据.
简而言之,每次我们都选较大的节点数,因为每个父节点都是两个子节点的和,那么父节点较大的数也对应着较大的子节点数。
3.Dueling-DQN
Dueling-DQN从网络结构上改进了DQN,动作值函数可以分为状态值函数和优势函数,即
什么是优势函数?
状态值函数
动作值函数
优势函数
本节涉及到的论文:
1.Deep Reinforcement Learning with Double Q-learning(https://arxiv.org/pdf/1509.06461v3.pdf)
2.PRIORITIZED EXPERIENCE REPLAY(https://arxiv.org/pdf/1511.05952.pdf)
3.Dueling Network Architectures for Deep Reinforcement Learning(https://arxiv.org/pdf/1511.06581.pdf)
dueling dqn 和 double dqn_强化学习(十一)--DQN三个经典的变种相关推荐
- dqn系列梳理_强化学习:DQN与Double DQN讨论
1 DQN方法 强化学习逐渐引起公众的注意要归功于谷歌的DeepMind公司.DeepMind公司最初是由Demis Hassabis, Shane Legg和Mustafa Suleyman于201 ...
- dqn 应用案例_强化学习(十二) Dueling DQN
在强化学习(十一) Prioritized Replay DQN中,我们讨论了对DQN的经验回放池按权重采样来优化DQN算法的方法,本文讨论另一种优化方法,Dueling DQN.本章内容主要参考了I ...
- 【强化学习】DQN 的三种改进在运筹学中的应用
这篇文章主要介绍 DQN 的三种改进:Nature DQN.Double DQN.Dueling DQN 在运筹学中的应用,并给出三者的对比,同时也会给出不同增量学习下的效果. 这三种具体的改进方式可 ...
- 强化学习之DQN超级进化版Rainbow
阅读本文前可以先了解我前三篇文章<强化学习之DQN><强化学习之DDQN>.<强化学习之 Dueling DQN>. Rainbow结合了DQN算法的6个扩展改进, ...
- 快乐的强化学习2——DQN及其实现方法
快乐的强化学习2--DQN及其实现方法 学习前言 简介 DQN算法的实现 具体实现代码 学习前言 刚刚从大学毕业,近来闲来无事,开始了机器学习的旅程,深度学习是机器学习的重要一环,其可以使得机器自我尝 ...
- 【强化学习】DQN与Double DQN
文章目录 一.DQN 1.1 Q网络和目标网络 1.2 经验回放 1.3 DQN流程 1.4 DQN的Q估值过高问题 二.Double DQN 一.DQN 1.1 Q网络和目标网络 Q π ( s t ...
- 【强化学习】DQN及其延伸算法
目录 DQN算法 价值函数的近似表示 提出背景: 近似表示: 状态价值函数 动作价值函数 概述 经验回放(experience replay) 算法流程 小结 Nature DQN算法 概述 Natu ...
- 初探强化学习(14)DQN类算法的值高估问题的笔记
关于DQN算法的一些细节,可以查看这个博客,讲的很细节. 主要参考博客 https://zhuanlan.zhihu.com/p/443807831 https://itpcb.com/a/16274 ...
- dqn 应用案例_强化学习(九)Deep Q-Learning进阶之Nature DQN
在强化学习(八)价值函数的近似表示与Deep Q-Learning中,我们讲到了Deep Q-Learning(NIPS 2013)的算法和代码,在这个算法基础上,有很多Deep Q-Learning ...
最新文章
- 苹果手表可以运行 ruby 脚本了
- 小鱼易连获腾讯数亿C轮投资,云视频布局产业互联网
- np.asarray和np.array、np.nanmean和np.mean、np.diff、
- vijos 1030 重叠的方框
- [py2neo]Ubuntu14 安装py2neo失败问题解决
- mybatis sql中有中文处理
- 算法:字符串消除问题的数学证明
- Go语言编程—Go语言实现文件拷贝
- 洛谷P2486 [SDOI2011]染色(树链剖分+线段树判断边界)
- 【译】索引进阶(八):SQL SERVER唯一索引
- Php程序监控邮件提醒linux,Linux ping命令实现网络监控 并邮件提醒管理员
- 基于STM32设计的掌上游戏机(运行NES游戏模拟器)详细开发过程
- 一个简单标注库的插件化开发实践
- Ubuntu破解密码
- pdf转word工具大全
- Facet Kernel详解、Random Walk随机游走算法详解
- 一维数组新老数据对比修改字段
- 4.8 期货每日早盘操作建议
- 开机自启动夜神模拟器全屏并打开指定apk
- 一级计算机考试计算,全国计算机一级MS OFFICE等级考试计算题(3)
热门文章
- 小红书去水印代码_小红书关键词排名如何进行优化
- python 多线程 线程如何获得返回值 (重写threading.Thread类)
- python 将YOLO(txt)格式的标注数据批量转换为PascalVOC(XML)格式的标注数据
- python numpy矩阵切片和索引的用法(冒号:和省略号...)
- varnish介绍以及虚拟机的封装
- 浅谈AQS(AbstractQueuedSynchronizer,同步队列)
- 蓝桥杯C++ AB组辅导课 第六讲 双指针、BFS与图论 Acwing
- Odd Grasshopper 奇偶找规律
- docker环境安装mysql
- mysql 交集_MySQL 查询结果取交集的实现方法