【强化学习】DQN (DPG2)

DQN

基础算法

在这里插入图片描述

网络结构

DQN与普通的Q-leaning的区别之一在于使用一个DCNN来近似Q(s,a),在论文中的一代目DQN中使用的是三个卷积层+两个全连接层

经验重放

另外一个区别在于利用了经验回放训练强化学习的学习过程,即一个经验池保存了 ( s , a , R , s ′ , d o n e ) (s,a,R,s',done) (s,a,R,s,done)这一种五元组,之后训练时也从经验池中取出值进行训练。

训练神经网络时,存在的假设是训练数据是独立同分布的,但是通过强化学习采集的数据之间存在着关联性,利用这些数据进行顺序训练,神经网络不稳定。使用经验回放可以打破数据间的关联 —— TA说的

具体代码实现的时候只需要每次从经验池随机选取batch个五元组进行训练,并将结果再扔回经验池即可。

Nature DQN

原来的DQN是on-policy的,这样子会导致更新的时候关联性太高,难以收敛,详情可以去看DPG的论文。

所以我们使用两个网络来代替原来的网络,一直训练的predict网络和用于当作真实值的target网络(不改变参数),在训练一定轮次之后再更新target网络。

DDQN

DQN和Nature DQN都没有改变Q-learning本身的一个问题,那就是估值一定会大于真实值,主要原因在于更新Q值时取得max,所以最后提出了DDQN算法。

DDQN的定义是动作的选择与动作的评估分别用不同的值实现,使用 m a x a ′ Q ( s i ′ , a , θ ) max_{a'}Q(s_i',a,\theta) maxaQ(si,a,θ)得出使用的action,再用 y j = R j + γ Q ′ ( s j ′ , a , θ ) y_j=R_j+\gamma Q'(s_j',a,\theta) yj=Rj+γQ(sj,a,θ)得出动作a对应的值。

直接对比来说,Nature DQN使用target网络中所有action中最大的Q(s,a)最大的值来更新,而DDQN使用令predict网络中Q(s,a)最大的a在target网络中计算Q(s,a)。

Dueling DQN

在这里插入图片描述
Dueling DQN将输出的Q(s,a)改为A(s,a)与V(s)两个输出。

为什么这样子就会有提升呢?可以举一个例子,比如说打砖块,其实在球刚反弹上去的时候,大多情况下action是没有意义的(左移,右移,不动),重要的只有state本身。那么将action和state对Q(s,a)的影响尽可能分离开来,就能提升对Q(s,a)估计的表现

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值