dqn 应用案例_强化学习(九)Deep Q-Learning进阶之Nature DQN

在强化学习(八)价值函数的近似表示与Deep Q-Learning中,我们讲到了Deep Q-Learning(NIPS 2013)的算法和代码,在这个算法基础上,有很多Deep Q-Learning(以下简称DQN)的改进版,今天我们来讨论DQN的第一个改进版Nature DQN(NIPS 2015)。

本章内容主要参考了ICML 2016的deep RL tutorial和Nature DQN的论文。

1. DQN(NIPS 2013)的问题

在上一篇我们已经讨论了DQN(NIPS 2013)的算法原理和代码实现,虽然它可以训练像CartPole这样的简单游戏,但是有很多问题。这里我们先讨论第一个问题。

注意到DQN(NIPS 2013)里面,我们使用的目标Q值的计算方式:$$y_j= \begin{cases} R_j& {is\_end_j\; is \;true}\\ R_j + \gamma\max_{a'}Q(\phi(S'_j),A'_j,w) & {is\_end_j \;is\; false} \end{cases}$$

这里目标Q值的计算使用到了当前要训练的Q网络参数来计算$Q(\phi(S'_j),A'_j,w)$,而实际上,我们又希望通过$y_j$来后续更新Q网络参数。这样两者循环依赖,迭代起来两者的相关性就太强了。不利于算法的收敛。

因此,一个改进版的DQN: Nature DQN尝试用两个Q网络来减少目标Q值计算和要更新Q网络参数之间的依赖关系。下面我们来看看Nature DQN是怎么做的。

2. Nature DQN的建模

Nature DQN使用了两个Q网络,一个当前Q网络$Q$用来选择动作,更新模型参数,另一个目标Q网络$Q'$用于计算目标Q值。目标Q网络的网络参数不需要迭代更新,而是每隔一段时间从当前Q网络$Q$复制过来,即延时更新,这样可以减少目标Q值和当前的Q值相关性。

要注意的是,两个Q网络的结构是一模一样的。这样才可以复制网络参数。

Nature DQN和上一篇的DQN相比,除了用一个新的相同结构的目标Q网络来计算目标Q值以外,其余部分基本是完全相同的。

3. Nature DQN的算法流程

下面我们来总结下Nature DQN的算法流程, 基于DQN NIPS 2015:

算法输入:迭代轮数$T$,状态特征维度$n$, 动作集$A$, 步长$\alpha$,衰减因子$\gamma$, 探索率$\epsilon$, 当前Q网络$Q$,目标Q网络$Q'$, 批量梯度下降的样本数$m$,目标Q网络参数更新频率$C$。

输出:Q网络参数

1. 随机初始化所有的状

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值