DQN笔记:高估问题 target network Double DQN
- Q 学习算法有一个缺陷:用 Q 学习训练出的 DQN 会高估真实的价值,而且高估通常是非均匀的。
- 这个缺陷导致 DQN 的表现很差。
- 高估问题并不是 DQN 本身的缺陷,而是训练 DQN 用的 Q 学习算法的缺陷。
1 自举(bootstrapping)导致的偏差传播
1.1 DQN参数更新(回顾)
- 1,计算TD目标
——> 的后一项基于DQN自己做出的估计
- 2,定义损失函数
——>让DQN去拟合,也即用DQN自己做出的估计去拟合自己
- 3,进行梯度下降,更新参数
1.2 自举对DQN训练的影响
- 是对价值的近似
- 最理想的情况下,=
- 但如果 低估/高估了 ,那么:
换句话说,这种低估/高估会不断地传播下去
2 最大化对DQN训练的影响
2.1 一个数学结论
设为任意d个实数,往中加入任意均值为0的随机噪声,得到随机变量。
2.2 回到DQN
——>这说明TD目标通常是对真实价值的高估(即使DQN是真实值Q*的无偏估计)
TD算法鼓励接近TD目标
——>这会导致高估真实值
3 不均匀高估的危害
- 高估本身是无害的,除非高估是非均匀的
- 举个例子,动作空间是 A = {左, 右, 上}。给定当前状态 s,每个动作有一个真实价值:
智能体应当选择动作“上”,因为“上”的价值最高。 假如高估是均匀的,所有的价值都 被高估了 100:- 那么动作“上”仍然有最大的价值,智能体会选择“上”。这个例子说明高估本身不是问题,只要所有动作价值被同等高估。
但在实践中,所有的动作价值不一定会被同等高估
- 每当取出一个四元组用来更新一次DQN,就可能会加重DQN对Q*(s,a)的高估。
- 对于同一个状态s,(s,左),(s,右),(s,上)出现在经验回放数组中的频率是不同的
- ——>三种动作的价值被高估的程度是不同的
- 加入最终:
- 那么智能体agent会选择“右”,这却反而是实际价值最小的action
4 target network
想要避免 DQN 的高估,一种可行的方法是切断“自举”。
在Q-learning中,TD目标是这么计算的:
想要切断自举,可以用另一个神经网络来计算TD目标,而不是用DQN自己来计算TD目标。
——>另一个神经网络被称为目标网络(target network),我们记为
——> 他的神经网络结构和DQN完全相同,只是参数不同于w
4.1 使用目标网络之后的Q-learning
- 每一次随机从经验回放中取出一个四元组
- 令DQN和目标网络的当前参数分别为和
- 第6步这种方式叫做soft-replacing
就是因为的高估/低估导致的高估/低估是还存在的,但是不会像不适用target network那样的Q-learning一样这种高估/低估传递下去
5 双Q学习方法 (double DQN)
- 在 Q 学习算法中使用目标网络,可以缓解自举造成的偏差,但是无助于缓解最大化造成的高估。
- 双 Q 学习 (Double Q Learning) 算法在目标网络的基础上做改进,缓解最大化造成的高估。
5.1 重新审视Q-learning 中的TD目标
我们可以把最大化拆分成两步
5.2 重新审视Q-learning+target network中的TD目标
5.3 double DQN
为什么双 Q 学习可以缓解最大化造成的高估呢?
(因为a*不一定是参数下的argmaxQ)
所以
——>double DQN缓解了高估
5.4 double DQN下的Q-learning
- 每一次随机从经验回放中取出一个四元组
- 令DQN和目标网络的当前参数分别为和
和target network+DQN不一样的也就是第二第三步
6 总结
- DQN 的高估不是 DQN 模型造成的,不是 DQN 的本质属性;高估只是因为原始 Q 学习算法不好
- Q 学习算法产生高估的原因有两个:
- 第一,自举导致偏差从一个 (s, a) 二元组传播到更多的二元组;
- 第二,最大化造成 TD 目标高估真实价值。
如果是 SARSA 算法强化学习笔记:Sarsa算法_UQI-LIUWJ的博客-CSDN博客_sarsa算法,那么自举的问题依然存在,但是在SARSA中不存在最大化造成高估的问题,所以只需要target network即可
DQN笔记:高估问题 target network Double DQN相关推荐
- 强化学习—— Target Network Double DQN(解决高估问题,overestimate)
强化学习-- Target Network & Double DQN(解决高估问题,overestimate) 1TD算法 2. 高估问题 2.1 Maximization 2.1.1 数学解 ...
- 【强化学习实战-04】DQN和Double DQN保姆级教程(2):以MountainCar-v0
[强化学习实战-04]DQN和Double DQN保姆级教程(2):以MountainCar-v0 实战:用Double DQN求解MountainCar问题 MountainCar问题详解 Moun ...
- 深度强化学习-Double DQN算法原理与代码
深度强化学习-Double DQN算法原理与代码 引言 1 DDQN算法简介 2 DDQN算法原理 3 DDQN算法伪代码 4 仿真验证 引言 Double Deep Q Network(DDQN)是 ...
- 【DQN高级技巧2】DQN高估问题:Target Network和Double DQN
Bootstrapping 自举 在强化学习中,自举表示用一个估算去更新同类的估算 在更新梯度的时候我们用到了yty_tyt,但yty_tyt又部分基于DQN 即为了更新DQN在t时刻的估计,我们 ...
- DQN 笔记 double DQN
1 DQN的问题 在DQN 笔记 State-action Value Function(Q-function)_UQI-LIUWJ的博客-CSDN博客 中,我们知道DQN的学习目标是 但是,这个Q的 ...
- ROS开发笔记(10)——ROS 深度强化学习dqn应用之tensorflow版本(double dqn/dueling dqn/prioritized replay dqn)
ROS开发笔记(10)--ROS 深度强化学习dqn应用之tensorflow版本(double dqn/dueling dqn/prioritized replay dqn) 在ROS开发笔记(9) ...
- 强化学习DQN(Deep Q-Learning)、DDQN(Double DQN)
强化学习DQN(Deep Q-Learning).DDQN(Double DQN) _学习记录-有错误感谢指出 Deep Q-Learning 的主要目的在于最小化以下目标函数: J ( ω ) = ...
- 从DQN到Double DQN和Dueling DQN——pytorch实操
文章目录 DQN 直接代码附上 为什么会有改进 Double DQN 代码附上 Dueling DQN 话不多说直接给代码 改进究竟管用与否? 写这个文章的动机是一直没有人讲明白三种DQN之间的关系, ...
- 胜者的诅咒与double DQN
最近在学习博弈论和DQN时,无意中发现胜者的诅咒和DQN中过估计现象相通.特此记录. 文章目录 胜者的诅咒 DQN Double DQN 反思回顾 胜者的诅咒 分析这个问题,假设每一个参与拍卖的买家对 ...
最新文章
- 配置dialog无标题的几种方法
- android 上传头像遇到的问题,Android 7.0 图片剪切问题,选择头像上传
- 现在编程语言的两大主流
- No JDK found. Please validate either IDEA_JDK, JDK_HOME or JAVA_HOME
- director.js实现前端路由
- hive 修改cluster by算法_Hive基础之导出数据
- pythonunicode和str_python unicode 和 str 类型的关系
- 【docker】3-配置阿里云加速
- 2021年网络工程师考试大纲
- kotlin-android-extensions扩展的导入
- 跨境转运常用运费计算方式
- 小米10获取root权限_安卓刷机搞机小能手必备的三款root神器 最后一款你肯定用过...
- 前端cookie 放到请求头_HTTP请求头:cookie cache
- Java Swing实现高仿电脑版微信
- 0xc000007b的解决办法(续)
- 复古派 Retropie=
- Macos中的Mercurial GUI工具Murky试用
- 高德地图和百度地图数据下载
- fedora11 文泉驿micro-hei字体设置
- 台式计算机更改bios密码,台式机或笔记本忘记Bios密码解决方法
热门文章
- python io模块
- DayDayUp:2019.01.24新东方年会—俞敏洪点赞并奖励吐槽神曲《释放自我》12万元!—附全歌词(牛逼的人在哪里都不会彷徨)
- 富勒烯|Fullerene C60 富勒石 CAS:131159-39-2 |瑞禧
- L1-005 考试座位号 (15 分)变量要设置对
- element el-upload 一次上传单张/多张图片(多选)
- 基于Vue+Vant的旅游WebApp的设计与实现
- 坐在宝座上圣洁羔羊(儿童诗班)
- python echo(msg) 字符串_python的subprocess模块
- python人工自动抠图_Python - AI自动抠图
- ta点读笔客户端_点读笔到底哪支好?12款点读笔评测:看完不再稀里糊涂