深度强化学习中的DQN系列算法

DQN是考虑到维度灾难,在q-learning算法的价值函数近似Value Function Approximation基础上修改的。

主要是对Q(s,a,w)进行修改,s可能是非常大的,比如输入一个图像,a可能是很小的,比如玩游戏时候几个操作键。

这种情况下引入神经网络,可以把Q(s,a,w)变成a = Q(s,w),输出的是a大小的向量,每个元素表示每个动作a下的Q(s,a)值。

下面要训练这个神经网络,它的target值就是Rt+1 + Q(s_,a_,w)。

回想神经网络训练的时候,是样本是独立,可以打乱顺序,可以批量学习。但是DQN这里的target是按顺序出现的,每走一步出现一个,而且他们之间是有关联的(这里有关联会造成怎样的影响还没理解),为了打消这种关联,使得更像普通的神经网络训练过程,需要把多个样本先储存起来,从中抽样进行训练。

DQN的几个改进版本:

nature DQN(因为2013年发表在nature上得名):

增加了target Q网络。本来target 值也是用 Q(s,w)计算的,现在独立出来了,用 Q(s,w_)计算,这样增加了独立性。但是w_从何而来呢,其本身就是target了,并没有什么loss函数来优化它,答案是copy w值,但是推迟n步,就是每次学习的时候使用n步之前w作为w_。

Double DQN:
以nature DQN为基础
修正了每次都使用max a 造成的误差(Q(S,a,W)是对真是Q的近似,存在误差,每次选择了最大的Q值,也就选择了最大的误差)。

方法是:
每次计算target Q的时候需要选择 max a ,nature DQN 是根据Q(s,w_)来计算是, Double DQN是根据Q(s,w)来计算的。

Prioritised Replay:
以nature DQN为基础
从储存的样本中进行抽样的时候不是随机抽样,而是有先后顺序的。target Q 和 要更新的Q差值越大,说明梯度越大,就先更新

Dueling Network:
将Q网络分成两个通道,一个输出V,一个输出A,最后再合起来得到Q。
Q(s,a) = V(s,v) + A(s,a,w)

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值