【强化学习】DQN、Double DQN、Dueling DQN的总结

【强化学习】DQN、Double DQN、Dueling DQN的总结

作者:刘兴禄,清华大学,清华伯克利深圳学院,博士在读

DQN

在这里插入图片描述
(图片来自Wang Shusen的教学视频,网址:https://www.bilibili.com/video/BV1rv41167yx?from=search&seid=18272266068137655483&spm_id_from=333.337.0.0)

综上,我们来总结一下用TD-learning的DQN版本的算法流程:

  1. 观察到一个交互(transition) ( s t , a t , r t , s t + 1 ) (s_t, a_t, r_t, s_{t+1}) (st,at,rt,st+1)
  2. 计算TD target: y target = r t + γ max ⁡    a Q ( s t + 1 , a ; w t ) y_{\text{target}} = r_t + \gamma \underset{a}{\max \,\,}Q(s_{t+1}, a; \mathbf{w}_{t}) ytarget=rt+γamaxQ(st+1,a;wt);
  3. 计算TD error: δ t = Q ( s t , a t ; w t ) − y target \delta_t = Q(s_{t}, a_t; \mathbf{w}_{t})-y_{\text{target}} δt=Q(st,at;wt)ytarget
  4. 更新神经网络参数: w t + 1 ← w t − α ⋅ δ t ∂ Q ( s t , a t ; w ) ∂ w \mathbf{w}_{t+1}\leftarrow \mathbf{w}_{t} - \alpha \cdot \delta_t \frac{\partial Q(s_t, a_t; \mathbf{w})}{\partial\mathbf{w}} wt+1wtαδtwQ(st,at;w)

这里注意:

  • 我们在状态 s t s_t st下,试探了一步 a t a_t at,得到了reward r t r_t rt,状态更新到 s t + 1 s_{t+1} st+1,我们觉得基于这个试探(探索动作 a t a_t at),我们可以做一个更靠谱的估计 y target = r t + γ max ⁡    a Q ( s t + 1 , a ; w t ) y_{\text{target}} = r_t + \gamma \underset{a}{\max \,\,}Q(s_{t+1}, a; \mathbf{w}_{t}) ytarget=rt+γamaxQ(st+1,a;wt)
    我们将这个更靠谱的估计,就当做真实的值(这也就是为什么叫他target),我们努力往这个方向靠拢。
    在下图中,就是左边的q_target,他的输入是状态 s t + 1 s_{t+1} st+1以及上一步的奖励 r t r_t rt。由于我们对嗲一步可以采取的动作 a a a做了 max ⁡ \max max,因此动作 a a a就被消掉了,因此q_target不依赖与动作 a a a。只需要 s t + 1 s_{t+1} st+1 r t r_t rt即可。
    在这里插入图片描述
    (图片来自莫凡的github: https://github.com/MorvanZhou/Reinforcement-learning-with-tensorflow)
  • q_target或者 y target y_{\text{target}} ytarget是我们想要达到的目标,我们其实相当于有将它作为了标签。但是我们预估出来的是多少呢,其实就是 y ^ = Q ( s t , a t ; w t ) \hat{y} = Q(s_{t}, a_t; \mathbf{w}_{t}) y^=Q(st,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DQN算法是一种基于Q-learning的深度强化学习算法,其目标是学习一个Q函数,使得该函数能够最大化累积奖励。DDQN算法是对DQN算法的改进,通过解决DQN算法中过高估计Q值的问题,提高了算法的性能。Dueling DQN算法则是在DDQN算法的基础上,提出了一种新的神经网络结构,使得算法的学习效率更高。 下面是DQN算法的公式推导分析: 1. Q-learning的更新公式为:$Q(s_t,a_t) \leftarrow Q(s_t,a_t) + \alpha(r_{t+1} + \gamma \max_{a} Q(s_{t+1},a) - Q(s_t,a_t))$ 2. DQN算法使用了深度神经网络来逼近Q函数,将更新公式改为:$Q(s_t,a_t) \leftarrow Q(s_t,a_t) + \alpha(r_{t+1} + \gamma \max_{a} Q(s_{t+1},a; \theta^-) - Q(s_t,a_t; \theta))$,其中$\theta$为当前网络的参数,$\theta^-$为目标网络的参数,$\max_{a} Q(s_{t+1},a; \theta^-)$表示在下一个状态$s_{t+1}$中,选择动作$a$所得到的最大Q值。 3. DDQN算法在DQN算法的基础上,使用了双网络结构,解决了DQN算法中过高估计Q值的问题。更新公式为:$Q(s_t,a_t) \leftarrow Q(s_t,a_t) + \alpha(r_{t+1} + \gamma Q(s_{t+1},\arg\max_{a} Q(s_{t+1},a; \theta); \theta^-) - Q(s_t,a_t; \theta))$,其中$\arg\max_{a} Q(s_{t+1},a; \theta)$表示在下一个状态$s_{t+1}$中,选择动作$a$所得到的最大Q值对应的动作。 4. Dueling DQN算法在DDQN算法的基础上,提出了一种新的神经网络结构,使得算法的学习效率更高。具体来说,Dueling DQN算法的输出包括两个分支,分别是该状态的状态价值V(标量)和每个动作的优势值A(与动作空间同维度的向量)。网络结构如下图所示: [Dueling DQN网络结构](https://img-blog.csdn.net/20170727145756345?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2hlbnhpYW9fYmFpZHUx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/80) 更新公式为:$Q(s_t,a_t) \leftarrow V(s_t) + (A(s_t,a_t) - \frac{1}{|\mathcal{A}|} \sum_{a} A(s_t,a))$,其中$V(s_t)$表示状态$s_t$的价值,$A(s_t,a_t)$表示在状态$s_t$下选择动作$a_t$的优势值,$\frac{1}{|\mathcal{A}|} \sum_{a} A(s_t,a)$表示所有动作的平均优势值。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值