DNQ(2)


title: DQN(Deep Q Network)—(2)
date: 2021-05-08 11:41:04
tags:

  • Python
  • Reinforcement Learning
    categories: 强化学习

续DQN

graph

上图为整个神经网络的结构图,很明显可以看到神经网络包含2个网络结构—target_net和eval_net。

eval_net是一个实时神经网络,每次进行强化学习的过程,它的参数都会更新训练,所以它是一个实时神经网络。

target_net是一个延迟神经网络,它的网络结构和eval_net是一样的,但是参数更新相对于eval_net是延后的,例如可能在eval_net进行200次的更新后,target_net才更新一次,这一次更新就是将此时的eval_net的参数赋值给target_net。

关于神经网络训练的内容则需要查看其他资料。

Double DQN

由于DQN是一种基于Q learing的强化学习方法,那么在Q learning中存在着Qmax,Qmax会导致当前Q值得过估计(overestimate)。而Double DQN就是为了解决这个问题而提出来的。在实际问题中,如果你输出的DQN的Q值,你会发现,输出的Q值都十分大,这也就过估计导致的。

Double DQN 和 DQN的区别

我们知道DQN的神经网络部分看成一个最新神经网络(eval_net)和老神经网络(target_net),他们有相同的结构,但是内部的参数更新存在时差。所以它的Q现实部分是:

DNQ Q现实

我们知道导致过估计的主要原因及时后面部分的Qmax,因为我们的神经网络预测Qmax本来就会有误差,每次也向着最大误差的Q现实进行改进神经网络,正式因为这个Qmax导致了过估计。所以Double DQN的办法就是引入另一个神经网络来打消一些最大误差的影响。而DQN中本来就有两个神经网络,我们可以利用其中一个神经网络。

对于Q估计的神经网络估计Q现实中Qmax(s_,a_)的最大动作值A,然后用这个被Q估计网络估计出的动作来选择Q现实中的Q(s_)。

简单来说,存在两个神经网络:eval_net(Q估计),target_net(Q现实):

对于DQN来说原本Q_next = max(Q_next(s_))

对于Double DQN则,Q_next = Q_next(s_,argmax(Q_eval(s_)))

Double DQN

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值