文章目录

  • 一、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算法流程可以简单地概括为以下几个步骤:

  1. 初始化一个神经网络模型,作为Q函数的近似,输入是状态,输出是每个动作的Q值。
  2. 初始化一个经验回放池,用于存储和采样历史的状态、动作、奖励和下一状态。
  3. 初始化一个目标网络,与神经网络模型结构相同,但参数不同步更新,用于计算目标Q值。
  4. 对于每个训练回合,执行以下操作:
    • 初始化一个状态,并将其输入神经网络模型,得到每个动作的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相关推荐

  1. 强化学习—— Target Network Double DQN(解决高估问题,overestimate)

    强化学习-- Target Network & Double DQN(解决高估问题,overestimate) 1TD算法 2. 高估问题 2.1 Maximization 2.1.1 数学解 ...

  2. 【强化学习实战-04】DQN和Double DQN保姆级教程(2):以MountainCar-v0

    [强化学习实战-04]DQN和Double DQN保姆级教程(2):以MountainCar-v0 实战:用Double DQN求解MountainCar问题 MountainCar问题详解 Moun ...

  3. 强化学习(实践):DQN,Double DQN,Dueling DQN,格子环境

    1,DQN算法 1.1,CarPole环境 以车杆(CartPole)环境为例,它的状态值就是连续的,动作值是离散的.在车杆环境中,有一辆小车,智能体的任务是通过左右移动保持车上的杆竖直,若杆的倾斜度 ...

  4. 强化学习(十二) Dueling DQN

    在强化学习(十一) Prioritized Replay DQN中,我们讨论了对DQN的经验回放池按权重采样来优化DQN算法的方法,本文讨论另一种优化方法,Dueling DQN.本章内容主要参考了I ...

  5. dqn 应用案例_强化学习(十二) Dueling DQN

    在强化学习(十一) Prioritized Replay DQN中,我们讨论了对DQN的经验回放池按权重采样来优化DQN算法的方法,本文讨论另一种优化方法,Dueling DQN.本章内容主要参考了I ...

  6. dqn系列梳理_强化学习:DQN与Double DQN讨论

    1 DQN方法 强化学习逐渐引起公众的注意要归功于谷歌的DeepMind公司.DeepMind公司最初是由Demis Hassabis, Shane Legg和Mustafa Suleyman于201 ...

  7. 谷歌实现2种新的强化学习算法,“比肩”DQN,泛化性能更佳!|ICLR 2021

    丰色 发自 凹非寺 量子位 报道 | 公众号 QbitAI 强化学习(RL)算法持续"进化"中-- 来自Google Research的研究人员,证明可以使用图表示 (graph ...

  8. 强化学习(四)—— DQN系列(DQN, Nature DQN, DDQN, Dueling DQN等)

    1 概述 在之前介绍的几种方法,我们对值函数一直有一个很大的限制,那就是它们需要用表格的形式表示.虽说表格形式对于求解有很大的帮助,但它也有自己的缺点.如果问题的状态和行动的空间非常大,使用表格表示难 ...

  9. 人工智障学习笔记——强化学习(5)DRL与DQN

    在普通的Q-learning中,当状态和动作空间是离散且维数不高时可使用Q-Table储存每个状态动作对的Q值,而当状态和动作空间是高维连续时,Q-Table则不再适用. 通常做法是把Q-Table的 ...

最新文章

  1. MySQL 记录中包含换行符
  2. SIFT原理与源码分析:DoG尺度空间构造
  3. 警告:Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA(亲测)
  4. Android 过滤无效录音数据,android – MediaRecorder类记录音频的问题 – prepare()给出异常 – 权限被拒绝...
  5. 使用计算机的女士,3款女性专用PC 将美丽进行到底
  6. Linux7/Redhat7/Centos7 安装Oracle 12C_监听配置及DBCA安装数据库_05
  7. 大家整齐的qipaifans朗读声忽然乱了
  8. 安卓ashmem(匿名共享内存映射)学习native篇
  9. new 关键字做的事
  10. 卡西欧计算机十进制换二进制,卡西欧计算机怎么把十进制转换二进制
  11. 计算机怎么配置IP地址,如何设置电脑IP地址?
  12. 【MCS-51系列单片机汇编语言】学习笔记(在更)
  13. zookeeper启动报错: Invalid configuration, only one server specified (ignoring)
  14. QNX Hypervisor —— 基于优先级的调度
  15. Masked GCN论文解读
  16. 脉搏信号检测与处理系统
  17. 13 个 Mongodb GUI 可视化管理工具,总有一款适合你
  18. 【转载】配置文件 .yml 写法小结
  19. 《Head First 设计模式》笔记
  20. 使用python讲二进制转换为音频文件_Python使用ffmpy将amr格式的音频转化为mp3格式的例子...

热门文章

  1. 初识DE2-115开发板
  2. excel,从两列中筛选重复数据
  3. 2.2.1新增-contentEditable属性
  4. web上课内容——JSP内置对象
  5. 求出1-1/2+1/3-1/....1/100的和
  6. 分享一个漂亮的NetBeans配色方案
  7. 一个C程序是如何运行的
  8. saveig.org,帮你批量下载爱豆的Instagram照片
  9. android edittext 表情,Android在一个edittext中添加更多表情符号?
  10. 绍兴哪里能买到高仿的香奈儿,普拉达包包