强化学习DQN(Deep Q-Learning)、DDQN(Double DQN)

_学习记录…有错误感谢指出

Deep Q-Learning 的主要目的在于最小化以下目标函数:
J ( ω ) = E [ ( R + γ max ⁡ a ∈ A ( S ′ ) q ^ ( S ′ , a , ω ) − q ^ ( S , A , ω ) ) 2 ] , J(\omega) = {\rm E}\left[ {{{\left( {R + \gamma \mathop {\max }\limits_{a \in {\rm A}(S')} \hat q(S',a,\omega ) - \hat q(S,{\rm A},\omega )} \right)}^2}} \right],\ J(ω)=E[(R+γa∈A(S′)max​q^​(S′,a,ω)−q^​(S,A,ω))2], 
在这里(S,A,R,S’)是一组随机变量

S‘表示继状态S后的下一个状态


采用梯度下降的方法实现对目标函数的最小化。

对目标函数拆分

y = R + γ max ⁡ a ∈ A ( S ′ ) q ^ ( S ′ , a , ω ) (1) {\rm{y}} = R + \gamma \mathop {\max }\limits_{a \in {\rm{A}}(S')} \hat q(S',a,\omega )\tag 1 y=R+γa∈A(S′)max​q^​(S′,a,ω)(1)

y ^ = q ^ ( S , A , ω ) (2) \hat y = \hat q(S,{\rm{A}},\omega )\tag 2 y^​=q^​(S,A,ω)(2)

可以发现,如果对目标函数求梯度,不仅 y ^ \hat{y} y^​ 要对 ω \omega ω 求导,而且 y 也要对 ω \omega ω 求导。

由于 y 式中含有max,所以不易于求导,为了简化梯度下降的过程,在DQN算法中,求目标函数的梯度过程中,在一段时间内,假设 y 式中的 ω \omega ω 是常数(即对目标函数求梯度时,不对 y 求导)。

实现方法

引入两个神经网络

  • 表示 y ^ \hat{y} y^​ 的主神经网络(main network) q ^ ( s , a , ω ) \hat q(s,a,\omega ) q^​(s,a,ω)
  • 表示 y 的目标神经网络(target network) q ^ ( s , a , ω T ) \hat q(s,a,{\omega _T}) q^​(s,a,ωT​)​

在这种定义下的目标函数为:
J ( ω ) = E [ ( R + γ max ⁡ a ∈ A ( S ′ ) q ^ ( S ′ , a , ω T ) − q ^ ( S , A , ω ) ) 2 ] (3) J(\omega ) = {\rm{E}}\left[ {{{\left( {R + \gamma \mathop {\max }\limits_{a \in {\rm{A}}(S')} \hat q(S',a,{\omega _T}) - \hat q(S,{\rm{A}},\omega )} \right)}^2}} \right]\tag 3 J(ω)=E[(R+γa∈A(S′)max​q^​(S′,a,ωT​)−q^​(S,A,ω))2](3)
ω T 是 t a r g e t n e t w o r k 的参数 , ω 是 m a i n n e t w o r k 的参数 \omega_T 是target\ network的参数,\omega 是main\ network的参数 ωT​是target network的参数,ω是main network的参数

当 ω T \omega_T ωT​ 是常数时,目标函数的梯度可以简单表示为:
∇ ω J = E [ ( R + γ max ⁡ a ∈ A ( S ′ ) q ^ ( S ′ , a , ω T ) − q ^ ( S , A , ω ) ) ∇ ω q ^ ( S , A , ω ) ] (4) {\nabla _\omega }J = {\rm{E}}\left[ {\left( {R + \gamma \mathop {\max }\limits_{a \in {\rm{A}}(S')} \hat q(S',a,{\omega _T}) - \hat q(S,{\rm{A}},\omega )} \right){\nabla _\omega }\hat q(S,{\rm{A}},\omega )} \right]\tag 4 ∇ω​J=E[(R+γa∈A(S′)max​q^​(S′,a,ωT​)−q^​(S,A,ω))∇ω​q^​(S,A,ω)](4)

归纳

核心要点:

  • 引入两个神经网络,分别为 main network 和 target network

为什么引入

  • 在求梯度的过程中,从数学的意义上为了方便计算梯度,引入两个神经网络分别作为预测网络与目标网络

实现细节:

  • ω T \omega_T ωT​ 和 ω \omega ω 分别表示target network 和 main network 的权重,并且两个神经网络具有相同的结构和初始参数
  • 在每一次迭代过程中,从经验仓库**(replay buffer)**中取出mini-batch个样本{ ( s , a , r , s ′ ) (s,a,r,s') (s,a,r,s′)}
  • 进行梯度下降
    • main network 的输入为状态s和动作a,输出结果为 q ^ ( s , a , ω ) {\hat q(s,a,\omega )} q^​(s,a,ω)
    • target network 将状态s和所有的动作A分别输入,针对输出结果取最大值,从而求得 max ⁡ a ∈ A ( S ′ ) q ^ ( S ′ , a , ω T ) {\mathop {\max }\limits_{a \in {\rm{A}}(S')} \hat q(S',a,{\omega _T})} a∈A(S′)max​q^​(S′,a,ωT​),进而计算得到结果 y = R + γ max ⁡ a ∈ A ( S ′ ) q ^ ( S ′ , a , ω T ) y = R + \gamma \mathop {\max }\limits_{a \in {\rm{A}}(S')} \hat q(S',a,{\omega _T}) y=R+γa∈A(S′)max​q^​(S′,a,ωT​)
    • 计算TD error (或称目标损失函数): ( y − q ^ ( s , a , ω ) ) 2 {(y - \hat q(s,a,\omega ))^2} (y−q^​(s,a,ω))2,并对其进行梯度下降,更新main network的权重 ω \omega ω
  • main network 是在每一个episode都要进行更新,而 target network 是经过一定次数后,将 main network 的参数拷贝给自己用于参数更新

Experience replay(经验回放)

  • 在我们收集到一些经验样本 ( s , a , r , s ′ ) {(s,a,r,s')} (s,a,r,s′) 时,并不直接按照我们收集时的顺序进行训练,而是采用经验回放的方式打乱顺序,随机选取进行训练
  • **replay buffer: **我们将所有的样本存放在一个集合中,这个集合被称为replay buffer B = {(s,a,r,s’)}
  • 在训练神经网络的每个episode,我们从遵从均匀分布,从replay buffer中随机取出mini-batch个样本,这个过程叫做经验回放

伪代码(Pseudocode)

DDQN(Double DQN)

DDQN是在DQN的基础上进行的改进,两者模型结构基本一样,唯一区别在于两者的目标函数有所不同。
Y D Q N = R + γ max ⁡ a ∈ A ( S ′ ) q ^ ( S ′ , a , ω T ) Y D D Q N = R + γ q ^ ( S ′ , arg ⁡ max ⁡ a ∈ A ( S ′ ) q ^ ( S ′ , a , ω ) , ω T ) \begin{array}{l} {Y^{DQN}} = R + \gamma \mathop {\max }\limits_{a \in {\rm{A}}(S')} \hat q(S',a,{\omega _T})\\ {Y^{DDQN}} = R + \gamma \hat q(S',\mathop {\arg \max }\limits_{a \in {\rm{A}}(S')} \hat q(S',a,\omega ),{\omega _T}) \end{array} YDQN=R+γa∈A(S′)max​q^​(S′,a,ωT​)YDDQN=R+γq^​(S′,a∈A(S′)argmax​q^​(S′,a,ω),ωT​)​
​ ω T 是 t a r g e t n e t w o r k 的参数 \omega_T 是target\ network的参数 ωT​是target network的参数

​ ω 是 m a i n n e t w o r k 的参数 \omega 是main\ network的参数 ω是main network的参数

​ Double DQN 的最优动作是根据目前正在更新的网络 main network 选择的,只是action value的值是由 target network 计算而得

​ DQN 的最优动作是由 target network 而来

引入DDQN的意义

DDQN由当前的main network选择动作,而DQN是由target network选择动作,所以前者计算的Q值是会小于等于后者。(这是因为DDQN由main network选择了动作之后,由target network计算Q值,而DQN直接通过target network计算从最大的Q值,使得DDQN的选择的Q值一定小于或等于DQN)这在一定程度上缓解了Q值得高估问题,使Q值更接近真实值。

Reference:

DQN部分

https://github.com/MathFoundationRL/Book-Mathmatical-Foundation-of-Reinforcement-Learning/blob/main/3%20-%20Chapter%208%20Value%20Function%20Approximation.pdf

DDQN部分!](https://img-blog.csdnimg.cn/dcb07ab71df94e70ae009e71369c33cb.png#pic_center)

https://blog.csdn.net/qq_43435274/article/details/107455240

强化学习DQN(Deep Q-Learning)、DDQN(Double DQN)相关推荐

  1. 深度强化学习(Deep Reinforcement Learning)的资源

    深度强化学习(Deep Reinforcement Learning)的资源 2015-04-08 11:21:00|  分类: Torch |  标签:深度强化学习   |举报 |字号 订阅 Goo ...

  2. [PARL强化学习]Sarsa和Q—learning的实现

    [PARL强化学习]Sarsa和Q-learning的实现 Sarsa和Q-learning都是利用表格法再根据MDP四元组<S,A,P,R>:S: state状态,a: action动作 ...

  3. 深度强化学习—— 译 Deep Reinforcement Learning(part 0: 目录、简介、背景)

    深度强化学习--概述 翻译说明 综述 1 简介 2 背景 2.1 人工智能 2.2 机器学习 2.3 深度学习 2.4 强化学习 2.4.1 Problem Setup 2.4.2 值函数 2.4.3 ...

  4. 【强化学习】Deep Q Network深度Q网络(DQN)

    1 DQN简介 1.1 强化学习与神经网络 该强化学习方法是这么一种融合了神经网络和Q-Learning的方法,名字叫做Deep Q Network. Q-Learning使用表格来存储每一个状态st ...

  5. Deep Q learning: DQN及其改进

    Deep Q Learning Generalization Deep Reinforcement Learning 使用深度神经网络来表示 价值函数 策略 模型 使用随机梯度下降(SGD)优化los ...

  6. CNNs and Deep Q Learning

    前面的一篇博文介绍了函数价值近似,是以简单的线性函数来做的,这篇博文介绍使用深度神经网络来做函数近似,也就是Deep RL.这篇博文前半部分介绍DNN.CNN,熟悉这些的读者可以跳过,直接看后半部分的 ...

  7. 【强化学习】Deep Deterministic Policy Gradient(DDPG)算法详解

    1 DDPG简介 DDPG吸收了Actor-Critic让Policy Gradient 单步更新的精华,而且还吸收让计算机学会玩游戏的DQN的精华,合并成了一种新算法,叫做Deep Deterini ...

  8. 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) ...

  9. 论文笔记之:Deep Reinforcement Learning with Double Q-learning

    Deep Reinforcement Learning with Double Q-learning Google DeepMind Abstract 主流的 Q-learning 算法过高的估计在特 ...

  10. 强化学习(RL)——Reinforcement learning

    强化学习 一.强化学习简介 二.强化学习发展历程 三.深度强化学习DRL 四.马尔可夫决策过程 五.值函数 六.Q值 七.蒙特卡洛(MC)与时序差分(TD) 八.强化学习的代表算法 1.Q-learn ...

最新文章

  1. 《微信跳一跳》安卓手机刷分软件搭建及攻略
  2. shell脚本--猜数字
  3. Elasticsearch分布式一致性原理剖析(一)-节点篇
  4. linux存储--inode详解(五)
  5. 尝试去读SQLMAP源码(一)
  6. ASP.NET缓存全解析4:应用程序数据缓存(转)
  7. orm的理解_ORM仇恨者无法理解
  8. Windows Server 2008 部署权限管理RMS
  9. Pytorch的BatchNorm层使用中容易出现的问题
  10. 的控制台主题_【12.11最新版】芯片机/大气层主题软件NXThemesInstaller
  11. C语言除法浮点型和整形,浅谈C语言整型与浮点型转换
  12. 苹果公布了一些最新无人车进展,但,研发依然缓慢
  13. 6.企业应用架构模式 --- 会话状态
  14. mt4怎么用云服务器跟单,【MT4如何登陆观摩账户?MT4观摩账户怎么设置?】
  15. C语言绘图EasyX图形库基础(笔记)
  16. 显著性 / 注意力机制
  17. CS5216|DP转HDMI方案详解|分辨率1080P
  18. 记录一下近期自己的顿悟
  19. ORA-00257 错误处理
  20. 2015070304 - EffactiveJava笔记 - 第54条 谨慎使用本地方法

热门文章

  1. 快速查询QQ多少人对你设置了特别关心源码
  2. 阿里云超算战纪 | 凌云时刻
  3. APSIM实战练习:Kingsthorpe土壤水分蒸发研究
  4. Win10无法输入中文的解决方法
  5. 双色球--最多2个号码相同的内幕
  6. 社交媒体是如何沦为黑客“赚钱”工具的?
  7. mysql怎么用_如何使用MySQL数据库
  8. 如何理解position属性里的sticky属性?
  9. JAVA设计模式七大原则
  10. 如何安装touch 1.0.1