强化学习-什么是DQN

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

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

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

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

DQN2013

强化学习-什么是DQN_第1张图片
DQN2013

上图有一个隐藏的细节:
最后一步:perform a gradient descent step on () according to equation3。翻译过来就是根据方程式3对这个方差进行梯度下降更新。
但问题是在原论文中,这个equation3中的,与上图的是不同的:


差异,为了梯度下降更新参数的时候,这项不参与求导,当做常数计算,据说效果更好。这叫做semi-gradient method
参考链接:强化学习论文复现

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

  • 首先初始化Memory D,它的容量为N;
  • 初始化Q网络,随机生成权重ω;
  • 循环遍历episode =1, 2, …, M:
  • 初始化initial state S1;
  • 循环遍历step =1,2,…, T:
    1, 用ϵ−greedy策略生成action
    2, 执行action ,接收reward 及新的state ;
    3, 将transition样本 存入D中;
    4, 从D中随机抽取一个minibatch的transitions ;
    5, 令,如果 j+1步是terminal的话,否则,令
    6, 对关于ω使用梯度下降法进行更新,根据方程式3;

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

Replay Buffer使用过程:

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

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

强化学习-什么是DQN_第2张图片
image

DQN2015

强化学习-什么是DQN_第3张图片
DQN2015

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

  • 首先初始化Memory D,它的容量为N;
  • 初始化Q网络,随机生成权重ω;
  • 初始化target Q网络,权重为;
  • 循环遍历episode =1, 2, …, M:
  • 初始化initial state S1;
  • 循环遍历step =1,2,…, T:
    1, 用ϵ−greedy策略生成action
    2, 执行action ,接收reward 及新的state ;
    3, 将transition样本 存入D中;
    4, 从D中随机抽取一个minibatch的transitions ;
    5, 令,如果 j+1步是terminal的话,否则,令
    6, 对关于ω使用梯度下降法进行更新;
    7, 每隔C steps更新target Q网络,。

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

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


强化学习-什么是DQN_第4张图片
image

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

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

Double DQN

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

image

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

DQN with Prioritized Replay

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


强化学习-什么是DQN_第5张图片
image

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

原理:

  • 我们设定 TD-error = Q现实 - Q估计 来规定优先学习的程度. 如果 TD-error 越大, 就代表我们的预测精度还有很多上升空间, 那么这个样本就越需要被学习, 也就是优先级 p 越高。
  • 如果使用排序等方式对样本集进行处理,耗时耗力
  • SumTree 是一种树形结构, 每片树叶存储每个样本的优先级 p, 每个树枝节点只有两个分叉, 节点的值是两个分叉的合, 所以 SumTree 的顶端就是所有 p 的合. 正如下面图片, 最下面一层树叶存储样本的 p, 叶子上一层最左边的 13 = 3 + 10, 按这个规律相加, 顶层的 root 就是全部 p 的合了
强化学习-什么是DQN_第6张图片
image

Dueling DQN

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

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

你可能感兴趣的:(强化学习-什么是DQN)