DQN和double DQN的区别

参考文章:强化学习(三):DQN、Nature DQN、Double DQN,附源码解读_wweweiweiweiwei的博客-CSDN博客

强化学习之DQN进阶的三大法宝(Pytorch)_dqnseg-CSDN博客

  1. Q现实的计算方法:DQN的Q现实计算方法是将新的状态直接输入老的神经网络,返回最大的Q值。而Double DQN的Q现实计算方法则是利用新的神经网络将新的状态输入,得到Q最大值的action,再将此action作为旧的神经网络选择Q值的纵坐标。
  2. Q_target的计算方法:DQN和Double DQN的Q_target计算方式也不同,具体来说,DQN会直接更新Q值,而Double DQN则不会立即更新Q值,而是将这个非目标值用于下一轮的目标值。

即采用了一种延迟更新方法。对于一个state选取当前Predict Q Network计算action,将此action带入Target Q Network计算Q值,再更新Q表

在DDQN中,second-level DQN(即目标网络)的更新主要是在一个单独的过程中进行的,而不是在每一步中实时更新。这个过程通常在每一定数量的步骤后进行一次,以避免网络的不稳定。

更新second-level DQN主要是比较eval_net的Q值和新状态的最大Q值。具体来说,当游戏进入一个新的状态s'时,second-level DQN会计算出这个状态的最大Q值,即目标Q值。这个目标Q值会被存储下来,并用于更新eval_net中对应行动的Q值。然而,second-level DQN本身并不直接进行更新。它的参数是在一个单独的过程中,通过比较eval_net的Q值和新状态的最大Q值来进行更新的。

具体来说,这个更新过程包括以下步骤:

  1. 存储目标Q值:当游戏进入一个新的状态s'时,second-level DQN会计算出这个状态的最大Q值,即目标Q值。这个目标Q值会被存储下来,用于之后的更新过程。
  2. 比较Q值:在一个单独的过程中,比较eval_net的Q值和新状态的最大Q值。这可以通过将新状态s'输入eval_net来得到eval_net的Q值。
  3. 更新second-level DQN参数:根据比较结果,更新second-level DQN的参数。具体来说,可以使用以下公式来更新second-level DQN的参数:

θ' = θ' + α * (θ - θ')

其中,θ'是second-level DQN的参数,θ是存储的目标Q值的均值,α是学习率。这个公式表示,second-level DQN的参数会被更新为当前参数加上一个误差项,这个误差项是当前参数与目标Q值的均值之间的差乘以学习率。

通过这样的更新过程,second-level DQN能够为eval_net提供更准确的目标Q值,从而帮助eval_net更好地学习游戏的最佳策略。同时,这种定期更新的方式也有助于保持网络的稳定性。

综上所述,本人对DDQN的理解为对于一个state先进行Q值计算,用该Q值eval_net得到action,再使用second-level DQN计算该action的Q来更新eval_net。最后n步后根据eval_net和second-level DQN更新second-level DQN。(不知道这样理解是否正确)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值