强化学习-什么是DQN

2020-10-20  本文已影响0人  Chaos_YM

提示:阅读本系列文章需要有神经网络基础,了解反向传播和梯度下降原理

发现很多博客文章对DQN的描述不是很好理解。本篇尽量用浅显易懂的描述,解释2013版和2015版DQN的原理,欢迎补充指正。

上一篇我们介绍了Q-learning,但是Q-learning的局限在于,处理不了state很复杂的情况,表格过大也会带来各种储存,查询,等等问题。

于是DeepMind在2013年提出了DQN算法,用神经网络来替代表格,并在2015年提出了优化,使用两个神经网络提高训练速度和收敛性。这是强化学习与深度学习的结合。

DQN2013

DQN2013

上图有一个隐藏的细节:
最后一步:perform a gradient descent step on () according to equation3。翻译过来就是根据方程式3对这个方差进行梯度下降更新。
但问题是在原论文中,这个equation3中的y_i,与上图的y_i是不同的:
y_i=r+\gamma max Q(s^、,a^、;\theta_{t-1}) \tag{原论文公式3}
y_i=r+\gamma max Q(s^、,a^、;\theta_{t}) \tag{上面的截图}
差异,为了梯度下降更新参数的时候,y_i这项不参与求导,当做常数计算,据说效果更好。这叫做semi-gradient method
参考链接:强化学习论文复现

上图为Deep Q-learning 2013算法流程,解释如下:

与Q-learning对比,关键点在于创建了记忆库Memory D。
实际项目中,我们会先让记忆库积累到一定的数量,才会开始抽取样本,训练神经网络,梯度下降去优化。

Replay Buffer使用过程:

  • 收集样本:按照时间先后顺序存入结构中,如果Replay Buffer经存满样本,那么新的样本会将时间上最久远的样本覆盖。
  • 采样样本:如果每次都取最新的样本,那么算法就和在线习相差不多;一般来说,Replay Buffer会从缓存中均匀地随机采样一批样本进行学习。(下面有针对采样的优化算法DQN with Prioritized Replay的介绍)

DQN2013版流程图也可如下表示:
(样本中只有(S_i,a,r,S_{i+1}),时序差分公式必要的maxQ(s', a')怎么得来??抽取训练样本后,用神经网络处理样本,得到maxQ(s', a'))

image

DQN2015

DQN2015

上图为Deep Q-learning 2015算法流程,解释如下:

它通过使用两个相同的神经网络,以解决数据样本和网络训练之前的相关性。
与DQN2013对比,关键点在于使用两个相同结构的神经网络。其中网络A作为实际Q的计算网络,输出预估的Q值,此为Q估计;使用网络B输出的Q值,以时序差分方程计算Q现实,节课得到loss,然后每一步都对A进行梯度下降更新,每隔C步(一般是几百步),同步A,B网络的权重参数。这就是fix q-target原理。

DQN2015版流程图也可如下表示:


image

既然有了优化版的DQN(2015),以下我们所说的普通DQN指的都是2015版的

下面介绍一些可以提升DQN学习效率的改进算法。

Double DQN

传统DQN使用target-Q network得到target-Q值(现实值),如下,由于预测具有误差,而且去Qmax值来计算,可能导致误差更大

image
于是,Double DQN方法将这个公式优化了一下,不再是取target-Q network中S_{t+1}的Qmax而是取eval-Q network(Q估计)中max(S_{t+1},a),然后用这个动作a取Q现实中的Q值来替代。
更新后的公式为:
image

DQN with Prioritized Replay

这一套算法重点就在我们 batch 抽样的时候并不是随机抽样, 而是按照 Memory 中的样本优先级来抽. 所以这能更有效地找到我们需要学习的样本.


image

优先级定义方式:采用SumTree 有效抽样,本质上是使误差更大的样本有更大的被选中的概率。

原理:

image

Dueling DQN

用一句话来概括 Dueling DQN 就是. 它将每个动作的 Q 拆分成了 state 的 Value 加上 每个动作的 Advantage.

其他文章推荐:
DQN原理详解l
莫烦大佬的强化学习系列

上一篇下一篇

猜你喜欢

热点阅读