【强化学习】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 , a t ) = r t + γ Q π ( s t + 1 , π ( s t + 1 ) ) Q^\pi(s_t,a_t)=r_t+\gamma Q^\pi(s_{t+1},\pi(s_{t+1})) Qπ(st,at)=rt+γQπ(st+1,π(st+1))
在DQN中,有两个网络:Q网络和目标网络,在优化的过程中其实是希望Q网络的输出尽可能接近目标值(做回归),使得上面的式子成立。这个过程可以表示为:
Q π ( s t , a t ) ← r t + γ Q π − ( s t + 1 , π ( s t + 1 ) ) Q^\pi(s_t,a_t)\leftarrow r_t+\gamma Q_{}^{\pi-}(s_{t+1},\pi(s_{t+1})) Qπ(st,at)←rt+γQπ−(st+1,π(st+1))
Q π ( s t , a t ) Q^\pi(s_t,a_t) Qπ(st,at)为Q网络, Q π − ( s t + 1 , π ( s t + 1 ) ) Q_{}^{\pi-}(s_{t+1},\pi(s_{t+1})) Qπ−(st+1,π(st+1))为目标网络。在训练中,一般固定目标网络,更新Q网络的参数,以寻求更加稳定的训练过程。
- DQN中,已知片段(s,a,r,s’),
- Q网络计算Q(s,a),
- 目标网络选择a’并计算Q(s’,a’)
- 目标网络的参数不会频繁更新,而是定期从Q网络复制过来,这样可以提高训练的稳定性和收敛性。
1.2 经验回放
经验回放就是将探索到的经验 ( s t , a t , r t , s t + 1 ) (s_t,a_t,r_t,s_{t+1}) (st,at,rt,st+1)放到一个叫作经验回放池Replay Buffer中。
注意存放的不是片段episode,而且一节一节的经验。
Replay buffer中存储不同策略的经验这对训练有问题吗?
显然Replay Buffer中会不可避免存储不同策略下的经验,但这对于训练其实没有问题的,这与Off-policy也没有关系。因为我们存储的是经验 ( s t , a t , r t , s t + 1 ) (s_t,a_t,r_t,s_{t+1}) (st,at,rt,st+1),在状态 s t s_t st采取动作 a t a_t at转移到状态 s t + 1 s_{t+1} st+1,其奖励 r t r_t rt是与策略无关的,所以并不会影响训练。
1.3 DQN流程
在算法中,不断的减小 Q π ( s t , a t ) Q^\pi(s_t,a_t) Qπ(st,at)与 r t + γ Q π − ( s t + 1 , π ( s t + 1 ) ) r_t+\gamma Q_{}^{\pi-}(s_{t+1},\pi(s_{t+1})) rt+γQπ−(st+1,π(st+1))的误差。
DQN算法流程可以简单地概括为以下几个步骤:
- 初始化一个神经网络模型,作为Q函数的近似,输入是状态,输出是每个动作的Q值。
- 初始化一个经验回放池,用于存储和采样历史的状态、动作、奖励和下一状态。
- 初始化一个目标网络,与神经网络模型结构相同,但参数不同步更新,用于计算目标Q值。
- 对于每个训练回合,执行以下操作:
- 初始化一个状态,并将其输入神经网络模型,得到每个动作的Q值。
- 根据贪心或ε-贪心策略,选择一个动作,并执行它,得到奖励和下一状态。
- 将状态、动作、奖励和下一状态存储到经验回放池中。
- 从经验回放池中随机采样一批数据。
- 对于每个采样的数据,使用目标网络计算目标Q值,即奖励加上折扣后的最大下一状态Q值。
- 使用神经网络模型计算预测Q值,即当前状态下的每个动作的Q值。
- 使用均方误差损失函数,优化神经网络模型的参数,使预测Q值逼近目标Q值。
- 每隔一定的步数,将神经网络模型的参数复制给目标网络。
1.4 DQN的Q估值过高问题
DQN中存在Q值估计过高的问题,是因为它使用了最大化操作来选择目标值函数的更新动作。
Q π ( s t , a t ) ← r t + γ Q π − ( s t + 1 , π ( s t + 1 ) ) Q π − ( s t + 1 , π ( s t + 1 ) ) → m a x Q^\pi(s_t,a_t)\leftarrow r_t+\gamma Q_{}^{\pi-}(s_{t+1},\pi(s_{t+1}))\\ Q_{}^{\pi-}(s_{t+1},\pi(s_{t+1})) \rightarrow max Qπ(st,at)←rt+γQπ−(st+1,π(st+1))Qπ−(st+1,π(st+1))→max
- 我们想基于蓝色交叉点的随机采样来近似估计真实的Q值(the true Q-function)
- 由于优化过程不精确,近似估计的Q值(Approximation Q)与true Q-function难免存在偏差
- 但智能体会选择估计Q值最高的动作
- 在整个优化过程中,这个正偏差(positive bias)会被不断的放大,因此会产生Q值高估(Q-value overestimation)
为了解决这个问题,可以使用Double DQN,它将目标值函数的更新动作和当前值函数的选择动作分开,使用两个不同的网络来估计Q值,从而减少最大化偏差。
二、Double DQN
DoubleDQN其实并没有新增网络,依然是两个网络,只是网络的分工稍有变换:
- 在Double DQN,已知片段(s,a,r,s’)
- Q网络计算 Q π ( s , a ) Q^\pi(s,a) Qπ(s,a), Q网络选择a’
- 目标网络计算 Q π − ( s ′ , a ′ ) Q^{\pi-}(s',a') Qπ−(s′,a′)
所以差别只在于计算状态s’下的Q值时如何选取动作:
- DQN的优化目标为: r t + γ Q π − ( s ′ , a r g m a x a ′ Q π − ( s ′ , a ′ ) ) r_t+\gamma Q_{}^{\pi-}(s',argmax_{a'}Q^{\pi-}(s',a')) rt+γQπ−(s′,argmaxa′Qπ−(s′,a′)),动作 a ′ a' a′的选取依靠目标网络;
- Double DQN的优化目标为: r t + γ Q π − ( s ′ , a r g m a x a ′ Q π ( s ′ , a ′ ) ) r_t+\gamma Q_{}^{\pi-}(s',argmax_{a'}Q^{\pi}(s',a')) rt+γQπ−(s′,argmaxa′Qπ(s′,a′)),动作 a ′ a' a′的选取依靠训练网络(Q网络)。
【强化学习】DQN与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 ...
- 强化学习(实践):DQN,Double DQN,Dueling DQN,格子环境
1,DQN算法 1.1,CarPole环境 以车杆(CartPole)环境为例,它的状态值就是连续的,动作值是离散的.在车杆环境中,有一辆小车,智能体的任务是通过左右移动保持车上的杆竖直,若杆的倾斜度 ...
- 强化学习(十二) Dueling DQN
在强化学习(十一) Prioritized Replay DQN中,我们讨论了对DQN的经验回放池按权重采样来优化DQN算法的方法,本文讨论另一种优化方法,Dueling DQN.本章内容主要参考了I ...
- dqn 应用案例_强化学习(十二) Dueling DQN
在强化学习(十一) Prioritized Replay DQN中,我们讨论了对DQN的经验回放池按权重采样来优化DQN算法的方法,本文讨论另一种优化方法,Dueling DQN.本章内容主要参考了I ...
- dqn系列梳理_强化学习:DQN与Double DQN讨论
1 DQN方法 强化学习逐渐引起公众的注意要归功于谷歌的DeepMind公司.DeepMind公司最初是由Demis Hassabis, Shane Legg和Mustafa Suleyman于201 ...
- 谷歌实现2种新的强化学习算法,“比肩”DQN,泛化性能更佳!|ICLR 2021
丰色 发自 凹非寺 量子位 报道 | 公众号 QbitAI 强化学习(RL)算法持续"进化"中-- 来自Google Research的研究人员,证明可以使用图表示 (graph ...
- 强化学习(四)—— DQN系列(DQN, Nature DQN, DDQN, Dueling DQN等)
1 概述 在之前介绍的几种方法,我们对值函数一直有一个很大的限制,那就是它们需要用表格的形式表示.虽说表格形式对于求解有很大的帮助,但它也有自己的缺点.如果问题的状态和行动的空间非常大,使用表格表示难 ...
- 人工智障学习笔记——强化学习(5)DRL与DQN
在普通的Q-learning中,当状态和动作空间是离散且维数不高时可使用Q-Table储存每个状态动作对的Q值,而当状态和动作空间是高维连续时,Q-Table则不再适用. 通常做法是把Q-Table的 ...
最新文章
- MySQL 记录中包含换行符
- SIFT原理与源码分析:DoG尺度空间构造
- 警告:Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA(亲测)
- Android 过滤无效录音数据,android – MediaRecorder类记录音频的问题 – prepare()给出异常 – 权限被拒绝...
- 使用计算机的女士,3款女性专用PC 将美丽进行到底
- Linux7/Redhat7/Centos7 安装Oracle 12C_监听配置及DBCA安装数据库_05
- 大家整齐的qipaifans朗读声忽然乱了
- 安卓ashmem(匿名共享内存映射)学习native篇
- new 关键字做的事
- 卡西欧计算机十进制换二进制,卡西欧计算机怎么把十进制转换二进制
- 计算机怎么配置IP地址,如何设置电脑IP地址?
- 【MCS-51系列单片机汇编语言】学习笔记(在更)
- zookeeper启动报错: Invalid configuration, only one server specified (ignoring)
- QNX Hypervisor —— 基于优先级的调度
- Masked GCN论文解读
- 脉搏信号检测与处理系统
- 13 个 Mongodb GUI 可视化管理工具,总有一款适合你
- 【转载】配置文件 .yml 写法小结
- 《Head First 设计模式》笔记
- 使用python讲二进制转换为音频文件_Python使用ffmpy将amr格式的音频转化为mp3格式的例子...
热门文章
- 初识DE2-115开发板
- excel,从两列中筛选重复数据
- 2.2.1新增-contentEditable属性
- web上课内容——JSP内置对象
- 求出1-1/2+1/3-1/....1/100的和
- 分享一个漂亮的NetBeans配色方案
- 一个C程序是如何运行的
- saveig.org,帮你批量下载爱豆的Instagram照片
- android edittext 表情,Android在一个edittext中添加更多表情符号?
- 绍兴哪里能买到高仿的香奈儿,普拉达包包