紧接上文,当我们学习了Policy Gradient方法之后便可以对其他方法有更好的理解基础了,如下:

(本文仅供自己学习,如有错误或不足之处欢迎指出)

2.Deep Q Network(DQN,深度Q学习网络)

论文名称:Playing Atari with Deep Reinforcement Learning

发表时间:2013年

主要内容:

参考Q学习的方法,使用深度神经网络代替了Q表,并基于经验回放进行Q学习,这一方法是Value-based的方法,与Policy-based的方法在梯度更新方式上完全不同。Value-based的方法直接输出了当前状态下各个动作的价值,直接选择价值最高的动作。

3.Deterministic Policy Gradient Algorithm(DPG,确定型策略梯度)

论文名称:Deterministic Policy Gradient Algorithms

发表时间:2014年

主要内容:

确定型策略梯度法的提出是一种新的动作策略选择方法,即每次输出的不再是一个具有随机性的策略,而是直接输出确定动作,这就很好地解决了连续动作空间的问题,值网络和动作网络梯度更新方式就发生了相应的改变,以此还产生了多种变体。
δ t = r t + γ Q w ( s t + 1 , a t + 1 ) − Q w ( s t , a t ) \delta_t=r_t+\gamma Q^w(s_{t+1},a_{t+1})-Q^w(s_t,a_t) δt​=rt​+γQw(st+1​,at+1​)−Qw(st​,at​)

w t + 1 = w t + a w δ t ∇ w Q w ( s t , a t ) w_{t+1}=w_t+a_w\delta_t\nabla_wQ^w(s_t,a_t) wt+1​=wt​+aw​δt​∇w​Qw(st​,at​)

θ t + 1 = θ t + α θ ∇ θ μ θ ( s t ) ∇ a Q w ( s t , a t ) \theta_{t+1}=\theta_t+\alpha_\theta\nabla_\theta\mu_\theta(s_t)\nabla_aQ^w(s_t,a_t) θt+1​=θt​+αθ​∇θ​μθ​(st​)∇a​Qw(st​,at​)

上面三个式子的含义如下:

式(15)表示的是选择了确定的动作下,值函数的误差。

式(16)表示的是在选择MSE作为误差函数的前提下,值网络的梯度更新方式。

式(17)表示的是在当前值网络的状态下,计算策略函数对 θ \theta θ的偏导数乘值函数对于动作的偏导数,基于链式法则,实际上就是在值函数与策略函数之间建立了一座桥梁,基于值函数反向推导策略函数的参数梯度。

4.Double Deep Q Network(DDQN)

论文名称:Deep Reinforcement Learning with Double Q-learning

发表时间:2015年

主要内容:

实际上就是改变了DQN网络的更新方式,为了解决乐观估计的问题。

具体来讲就是后一阶段的Q值估计由简单的取最大值变为了交由另一个网络(DDQN中使用的是过去的网络)来选择动作,然后基于这个动作评估Q值作为将来的奖励来训练网络。

论文中最重要的几个式子如下:

Deep Q Networks
Y t D Q N ≡ R t + 1 + γ max ⁡ q Q ( S t + 1 , a ; θ t − ) Y_t^{DQN}\equiv R_{t+1}+\gamma \underset{q}\max Q(S_{t+1},a;\theta^-_t) YtDQN​≡Rt+1​+γqmax​Q(St+1​,a;θt−​)
上式中 Y t D Q N Y_t^{DQN} YtDQN​表示神经网络的目标值,即为当前的奖励加上后一个步骤的最高奖励的折扣值。在DQN方法中使用了过去的网络参数来对后一阶段的价值进行评估,并取其中的最大值作为后续阶段的价值。

Double Q-learning

double Q-learning比Q-learning多使用了一个Q表,两个Q表在参数和结构上完全一致,其优化流程可以简单概括为使用一个Q表进行动作选择,使用另一个Q表来评估下一阶段的价值。

Q-learning:
Y t Q = R t + 1 + γ Q ( S t + 1 , arg ⁡ max ⁡ a Q ( S t + 1 , a ; θ t ) ) Y_t^Q=R_{t+1}+\gamma Q(S_{t+1},\arg\underset{a}\max Q(S_{t+1},a;\theta_t)) YtQ​=Rt+1​+γQ(St+1​,argamax​Q(St+1​,a;θt​))
在上式子中的更新方式实际上是Sarsa更新的,因为在评估下一阶段的价值的时候选择的动作是Q表中选择的,因此是On-Policy的更新方式。

Double Q-learning
Y t D o u b l e Q ≡ R t + 1 + γ Q ( S t + 1 , arg ⁡ max ⁡ a Q ( S t + 1 , a ; θ t ) ; θ t ′ ) Y_t^{DoubleQ}\equiv R_{t+1}+\gamma Q(S_{t+1},\arg\underset{a}\max Q(S_{t+1},a;\theta_t);\theta_t^\prime) YtDoubleQ​≡Rt+1​+γQ(St+1​,argamax​Q(St+1​,a;θt​);θt′​)
在Double Q-learing中我们可以发现,下一阶段的动作是根据 θ \theta θ网络选取的,而价值则交由了 θ t ′ \theta_t^\prime θt′​网络进行评估。两个网络的更新方式可以通过不断交换角色进行交替更新,可以有效地抑制乐观估计。

Double Deep Q networks(DDQN)

DDQN借鉴了Double Q-learning的方式改进DQN方法,DQN方法在原来的方法中为了抑制乐观估计已经采取了使用过去的网络来评估下一阶段的价值,而现在我们将过去网络直接改为第二个Q-Network。实际上DDQN与DQN最大的不同就是对第二阶段的价值的评估方式做了修改,即让动作网络在第二阶段中选择的动作的价值作为后续阶段的价值,如下:
Y t D o u b l e D Q N ≡ R t + 1 + γ Q ( S t + 1 , arg ⁡ max ⁡ a Q ( S t + 1 , a ; θ t ) ; θ ′ ) Y_t^{DoubleDQN}\equiv R_{t+1}+\gamma Q(S_{t+1},\arg\underset{a}\max Q(S_{t+1},a;\theta_t);\theta^\prime) YtDoubleDQN​≡Rt+1​+γQ(St+1​,argamax​Q(St+1​,a;θt​);θ′)

5.Dueling Network (对决网络)

论文名称:Dueling Network Architectures for Deep Reinforcement Learning

发表时间:2015年

主要内容:

将DQN的输出分为了两个部分,多出这一部分用于评估优势函数。简单思维思维如下:
Q ( s , a ; θ , α , β ) = V ( s ; θ , β ) + A ( s , a ; θ , α ) Q(s,a;\theta,\alpha,\beta)=V(s;\theta,\beta)+A(s,a;\theta,\alpha) Q(s,a;θ,α,β)=V(s;θ,β)+A(s,a;θ,α)
这个式子就是我们的直观理解,而这个式子却是不合理的,因为产生的参数不是唯一的,最简单的反例就是给V加上一个常数,A减去一个常数同样可以拟合Q值。并且在Policy Gradient论文中也提到了准确的优势函数应该满足 E α ∼ π ( s ) [ A π ( s , a ) ] = 0 E_{\alpha\sim\pi(s)}[A^\pi(s,a)]=0 Eα∼π(s)​[Aπ(s,a)]=0,所以不能简单的相加,应当强令A函数必须有0值,因此产生了最大值法和均值法,实际上最大值法是可用的,但是效果不如均值法。
Q ( s , a ; θ , α , β ) = V ( s ; θ , β ) + ( A ( s , a ; θ , α ) − 1 ∣ A ∣ ∑ a ′ A ( s , a ′ ; θ , α ) ) Q(s,a;\theta,\alpha,\beta)=V(s;\theta,\beta)+(A(s,a;\theta,\alpha)-\frac{1}{\vert{A}\vert}\sum_{a^\prime}A(s,a^\prime;\theta,\alpha)) Q(s,a;θ,α,β)=V(s;θ,β)+(A(s,a;θ,α)−∣A∣1​a′∑​A(s,a′;θ,α))

6.Deep Deterministic Policy Gradient(DDPG)

论文名称:CONTINUOUS CONTROL WITH DEEP REINFORCEMENT LEARNING

发表时间:2016年

主要内容:

使用深度神经网络代替确定型策略函数和价值函数,基于神经网络的Actor-Critic方法,并用于各种连续控制问题。

背景知识:

首先是动作价值函数的定义:
Q π ( s t , a t ) = E r i ≥ t , s t > t ∼ E , a i > t ∼ π [ R t ∣ s t , a t ] Q^\pi(s_t,a_t)=\mathbb E _{r_i\ge t,s_{t>t}\sim E,a_{i>t}\sim\pi}[R_t\vert s_t,a_t] Qπ(st​,at​)=Eri​≥t,st>t​∼E,ai>t​∼π​[Rt​∣st​,at​]
上式表示在 s t 状态下采取了 a t 动作后 s_t状态下采取了a_t动作后 st​状态下采取了at​动作后在策略$ \pi $下后续奖励总和的平均值,这个值就作为了我们当前步骤的价值。

由PG论文中我们知道还有另一种表示方式,折扣奖励。但是当我们基于递归关系中的贝尔曼不等式,即只需要考虑后续一个步骤的价值就可以代表后续所有步骤的价值:
Q π ( s t , a t ) = E r t , s t + 1 ∼ E [ r ( s t , a t ) + γ E a t + 1 ∼ π [ Q π ( s t + 1 , a t + 1 ) ] ] Q^\pi(s_t,a_t)=\mathbb{E}_{r_t,s_{t+1}\sim E}[r(s_t,a_t)+\gamma\mathbb{E}_{a_{t+1}\sim \pi}[Q^\pi(s_{t+1},a_{t+1})]] Qπ(st​,at​)=Ert​,st+1​∼E​[r(st​,at​)+γEat+1​∼π​[Qπ(st+1​,at+1​)]]
如果上面这一式子中的策略函数是一个确定型的,我们使用 μ ( s ) \mu(s) μ(s)来表示这个动作值,那么上式可化为:
Q μ ( s t , a t ) = E r t , s t + 1 ∼ E [ r ( s t , a t ) + γ Q μ ( s t + 1 , μ ( s t + 1 ) ) ] Q^\mu(s_t,a_t)=\mathbb{E}_{r_t,s_{t+1}\sim E}[r(s_t,a_t)+\gamma Q^\mu(s_{t+1},\mu(s_{t+1}))] Qμ(st​,at​)=Ert​,st+1​∼E​[r(st​,at​)+γQμ(st+1​,μ(st+1​))]
通过上式我们可以看出,价值函数只与动作和状态有关系,我们的Q值已经与策略毫无关系,因此可以进行off-policy训练。


on-policy&off-policy:

on-policy和off-policy都是policy-based的方法的,但可以推广到Q学习,从策略梯度的方法中出发来理解这两个概念,首先是为什么提出这个概念,这是由于才策略梯度法中,由近似条件可以得出,当policy发生改变时,近似函数也会发生改变,这表示历史经验中将无法依据现有近似函数计算参数优化的梯度和方向,因此必须采用on-policy的方法。但是当我们采用确定型策略时,近似函数直接与动作空间绑定了,而跟策略无关,策略变为了一个能够描述最优动作与状态映射,而动作空间是不变的,也就是说无论我们的确定型策略怎么变,甚至是随机选取,都不会影响价值近似函数的结构和参数,因此就可以采用off-policy的训练方法。至于Q学习,我们可以采用off-policy也可以采用on-policy。

综上所述,off-policy方法适用于确定型策略,但遇到不确定策略时,我们必须使用on-policy方法在完成整个一个过程后更新。确定型策略同样也可以使用on-policy方法。off-policy相比于on-policy方法在训练上会更高效地利用学习数据,从而能够更快地并行训练。


因此神经网络的MSE损失函数为:
L ( θ Q ) = E r t , s t + 1 ∼ E [ ( Q ( s t , a t ∣ θ Q ) − y t ) 2 ] L(\theta^Q)=\mathbb{E}_{r_t,s_{t+1}\sim E}[(Q(s_t,a_t\vert\theta^Q)-y_t)^2] L(θQ)=Ert​,st+1​∼E​[(Q(st​,at​∣θQ)−yt​)2]
其中
y t = r ( s t , a t ) + γ Q ( s t + 1 , μ ( s t + 1 ) ∣ θ Q ) y_t=r(s_t,a_t)+\gamma Q(s_{t+1},\mu(s_{t+1})\vert\theta^Q) yt​=r(st​,at​)+γQ(st+1​,μ(st+1​)∣θQ)
DDPG方法
∇ θ μ J ≈ E s t ∼ ρ β [ ∇ θ μ Q ( s , a ∣ θ Q ) ∣ s = s t , a = μ ( s t ∣ θ μ ) ] = E s t ∼ ρ β [ ∇ a Q ( s , a ∣ θ Q ) ∣ s = s t , a = μ ( s t ) ∇ θ μ μ ( s ∣ θ μ ) ∣ s = s t ] \nabla_{\theta^\mu}J\approx\mathbb{E}_{s_t\sim\rho^\beta}[\nabla_{\theta^\mu}Q(s,a\vert\theta^Q)\vert _{s=s_t,a=\mu(s_t\vert\theta^\mu)}]=\mathbb{E}_{s_t\sim\rho^\beta}[\nabla_aQ(s,a\vert\theta^Q)\vert_{s=s_t,a=\mu(s_t)}\nabla_{\theta_\mu}\mu(s\vert\theta^\mu)\vert_{s=s_t}] ∇θμ​J≈Est​∼ρβ​[∇θμ​Q(s,a∣θQ)∣s=st​,a=μ(st​∣θμ)​]=Est​∼ρβ​[∇a​Q(s,a∣θQ)∣s=st​,a=μ(st​)​∇θμ​​μ(s∣θμ)∣s=st​​]
其中约等表示当前的函数是近似函数,并不是真实的Q函数。这个近似函数就是Critic网络。

最后算法流程图如下图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DRHe80J1-1680147777346)(C:\Users\308b_2\Desktop\强化学习\1680146807510.png)]

在神经网络中,我们想要获得Q对action的梯度,则需要一个特殊的损失函数定义,即使用负的mean(q)作为损失函数,神经网络都是极小化损失,因此这一损失函数就变为了极大化价值收益,即对Q进行梯度上升,因此梯度就成功进行了回传到了动作,然后根据这一上升梯度回传到了动作网络里面完成了优化。

DQN、DDQN、DPG、DDPG、Dueling QN相关推荐

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

    强化学习DQN(Deep Q-Learning).DDQN(Double DQN) _学习记录-有错误感谢指出 Deep Q-Learning 的主要目的在于最小化以下目标函数: J ( ω ) = ...

  2. 基于DDPG、TD3的UR5装配仿真及其对比

    本项目为上海交通大学2020年度秋季学期,乐心怡老师讲授的<最优控制>课程的大作业,大部分内容基于方晓猛学长的工作<基于神经网络算法的多机械臂协同控制技术研究>,最近因为开题所 ...

  3. 《强化学习周刊》第42期:DPIN、鲁棒元强化学习、Deep dispatching

    No.42 智源社区 强化学习组 强 化 学  习 研究 观点 资源 活动 周刊订阅 告诉大家一个好消息,<强化学习周刊>已经开启"订阅功能",以后我们会向您自动推送最 ...

  4. matplotlib绘制图表,设置刻度标签、最大最小刻度、字体大小,label位置、刻度轴箭头等

    matplotlib绘制图表,设置刻度标签.最大最小刻度.字体大小,label位置.刻度轴箭头等 1. 效果图 2. 源码 2.1 仅使用普通轴ax + fontdict 源码 2.2 使用mpl设置 ...

  5. 使用Python、OpenCV翻转图像(水平、垂直、水平垂直翻转)

    使用Python.OpenCV翻转图像(水平.垂直.水平垂直翻转) 1. 效果图 2. 源码 参考 这篇博客将介绍如何使用Python.OpenCV翻转图像,类似于cv2.rotate(). 沿y轴水 ...

  6. 0.基于C++的图像处理算法实现、INTEL CPU上SSE加速、ARM CPU上NEON加速

    基于C++的图像处理算法实现.INTEL CPU上SSE加速.ARM CPU上NEON加速 基于C++的图像处理算法在INTEL CPU上SSE加速实现 基于C++的图像处理算法在ARM CPU上NE ...

  7. eclipse保存自动组织导入、删除不必要的导入、格式化代码

    eclipse保存自动组织导入.删除不必要的导入.格式化代码: 窗口→首选项→Java→编辑器→保存操作→勾选"对保存执行所选操作"."格式化源码"." ...

  8. 【网络】通讯名词解释:带宽、速率、波特率、奈奎斯特定律、香农定理

    1.带宽 1.1 解释一 带宽,又叫频宽,是数据的传输能力,指单位时间内能够传输的比特数.高带宽意味着高能力. 数字设备中带宽用bps(b/s)表示,即每秒最高可以传输的位数. 模拟设备中带宽用Hz表 ...

  9. linux哪个版本支持多线程,关于Linux操作系统的叙述错误的是()A、Linux是多用户、多任务、支持多线程的操作系统B、Linux的源...

    [多选题]以下哪些是藏族崇尚白色的体现. [判断题]等到口语出现后,非语言表达便消失了. 冷变形金属在加热时,随加热温度的升高,发生[填空(1)][填空(2)][填空(3)] 莫菲(Murphy)氏征 ...

  10. mysql 修改表卡死_MySQL表不能修改、删除等操作,卡死、锁死情况的处理办法。...

    MySQL如果频繁的修改一个表的数据,那么这么表会被锁死.造成假死现象. 比如用Navicat等连接工具操作,Navicat会直接未响应,只能强制关闭软件,但是重启后依然无效. 解决办法: 首先执行: ...

最新文章

  1. javascript的call()方法与apply()方法的理解
  2. 项目pom.xml第一行报错解决方案
  3. mysql主键更新被锁_MySQL 的加锁处理,你都了解的一清二楚了吗?
  4. svn 合并分支 等
  5. 连续时间系统的s域分析(Matlab)
  6. 铝电解电容总结[转]
  7. android 抽屉关闭时的卡顿
  8. OpenCV中的reshape
  9. grpc python stream_grpc| python 实战 grpc【h】
  10. 编程小工具总结(一) 取色器
  11. 我国最早着手建设专用计算机广域网的是,计算机网络信息技术在畜牧养殖方面应用...
  12. 360抢票王验证码自动识别真的那么牛吗?
  13. 【5G核心网】free5GC UE安全鉴权流程源码分析
  14. 开始启程, 你的第一行前端代码
  15. mui+html5+实现扫描二维码操作
  16. ktv管理系统_著作权大数据管理平台开始公测 或将解决KTV行业版权困扰
  17. php扒皮,扒皮b站美妆up主兰花
  18. 爱普生Epson PictureMate 240 打印机驱动
  19. php 调取百度天气api
  20. Conhash 和 Maglev hash对比

热门文章

  1. 跨考计算机面试英语自我介绍,2019考研复试面试英语自我介绍范文(7)
  2. pvr图片格式转png--shell脚本
  3. 降低包装成本的 13 种简单方法
  4. python字典、列表、元祖使用场景_(三)PYTHON字典 元祖 列表尝试应用
  5. Ubuntu18.04配置、软件安装-搜狗输入法,网易云音乐
  6. Ubuntu系统安装网易云音乐、搜狗输入法
  7. 根据经纬度获取城市名
  8. [问题记录]js将事件写在函数之前解决IE8的兼容性问题
  9. 谈谈你对Spring Boot的理解?
  10. C语言sizeof运算符的使用