强化学习之Double DQN

Double DQN算法

Double Deep Q Network(DDQN)是在DQN算法的基础上稍微改进了一点,优化了算法的性能。

Double DQN算法描述

首先我们要知道Double DQN是解决了DQN当中的什么问题?普通的 DQN 算法通常会导致对Q值的过高估计 (overestimation) ,为什么会出现这样的问题呢,先来看一下传统的DQN怎么处理TD目标的:
Y t D Q N = R t + 1 + γ max ⁡ a Q ( s t + 1 , a ; θ t ′ ) \begin{align} {Y}_{t}^{DQN}=R_{t+1}+\gamma{\max_{a}Q(s_{t+1},a;\theta_{t}^{'})} \end{align} YtDQN=Rt+1+γamaxQ(st+1,a;θt)
式中Q是通过神经网络预测得到的,本身就存在误差,在改进神经网络的同时max操作也放大了误差,因此导致了值函数的过估计。先来看一个例子:
例子图
S1为智能体初始状态,S2-Sn为中间状态,GOAL为目标位置,开始时设计的奖励为到达目标点为1,S1跳转到中间状态为0,中间状态到目标位置的奖励服从正态分布。在训练样本较少时很有可能因为Q值的过高估计造成训练结果为S1还要经过中间状态才能到达GOAL,只有训练样本多了之后才可能解决这个错误。
Double DQN的思路是通过估计网络估计目标网络中 Q m a x ( s ′ , a ′ ) Qmax(s',a') Qmax(s,a)最大的动作,然后用这个估计出来的动作在目标网络中Q值来更新。Double DQN的TD目标为:
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 ′ ) ) \begin{align} {Y}_{t}^{DoubleDQN}=R_{t+1}+\gamma Q(s_{t+1},{\argmax_{a}Q(s_{t+1},a;\theta_{t}^{'})}) \end{align} YtDoubleDQN=Rt+1+γQ(st+1,aargmaxQ(st+1,a;θt))
总的来时就是用估计网络选动作,更新时,目标网络给选出的这个动作Q值。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值