Dueling Network Architectures for Deep Reinforcement Learning

ICML 2016 Best Paper

  摘要:本文的贡献点主要是在 DQN 网络结构上,将卷积神经网络提出的特征,分为两路走,即:the state value function 和 the state-dependent action advantage function.

  这个设计的主要特色在于 generalize learning across actions without imposing any change to the underlying reinforcement learning algorithm.

  本文的结果表明,这种设计结构可以当出现许多相似值的 actions 的时候,得到更好的 策略评估(policy evaluation)。

  引言:文章首先开始讲解了最近的关于 Deep Learning 网络结构上的快速发展,列举了一些成功的案例。并且提到了现有的 DRL 方面的发展,主要依赖于设计新的 RL 算法,而不是新的网络结果。本文则从网络结构方面入手,提出一种新的结构和现有的 RL 算法更好的结合在一起。

  传统单流程的 Q-network 与 新提出的 dueling Q-network 的示意图如下:

  

  

  可以看出,本文提出的 dueling network 将后续的输出分为了两个分支,来分别预测 state-value 和 the advantages for each actions ; 绿色的输出模块执行 下面提到的公式(9),来组合这两个输出。两个网络结构都是输出每一个 action 的 Q-values 。

  直观上看,the dueling architecture 可以学习到哪一个状态是有价值的 (which states are (or are not) valuable),而不必学习每一个 action 对每一个 state 的影响。这个对于那些 actions 不影响环境的状态下特别有效。为了说明这一点,我们可以考虑图2 所展示的显著性图。

  这个图展示了两个不同时间步骤的 the value and advantage saliency maps。在一个时间步骤上,the value network steam 注意到 the road,特别是 the horizon,因为这个地方出现了新的车辆。他也注意到 score。 the advantage stream 另一方面不关心视觉输入,因为当没有车辆出现时,你可以随意的选择 action,而对环境几乎没有影响。但是第二个图可以看出,the advantage stram 关注到一辆车的出现,使得做出的选择十分相关。

  在实验当中,我们发现这个 dueling architecture 能够更快的做出正确的反应,选择出合适的 action,当策略评价冗余或者相似的 actions 被添加到学习过程中。


  

  Background

  作者刚开始介绍了一些基本的 RL 方面的知识,此处简答的回顾下,具体可以参考相关 RL 教材。

  state-action pair (s, a) 的 value 定义 以及 the state s 的 value 定义为:

  接下来的 state-action value function (简称 Q function) 可以通过 dynamic programming 动态的计算如下:

  我们定义最优的 $Q^*(s, a)$。在决定性的策略 $a = arg max Q^*(s, a')$,其服从 $V^*(s) = max_a Q^*(s, a)$。在这里,最优 Q function 也满足 Bellman equation:

    我们定义另一个重要的变量, the advantage function, relating the value and Q function :

  注意到,$E_{a~\pi(s)} [A^{\pi}(s, a)]$ 。直观的来讲,the value function V 评价了在特定状态 s 下状态有多好 (measures the how good it is to be in a particular state s)。The Q function, 然而,衡量了在这个状态下选择特定 action 的价值(value)。The advantage function 从 Q function 中减去了 状态的值,得到了每一个 action 重要性的相对衡量。

  Deep Q-network

  在接下来的章节中,所涉及物体的 value function 都是高维度的。为了估计他们,我们利用一个 Deep Q-network: $Q(s, a; \theta)$,参数为 $\theta$ 。为了预测这个网络,我们优化下面的第 i 次迭代损失函数序列:

  其中 $\theta^-$ 代表一个固定的,单独的 target network 的参数。我们可以尝试去利用标准的 Q-learning 算法来在线的学习网络 $Q(s, a; \theta)$ 的参数。然而,这个预测(estimator)执行起来却表现的很差劲(performs poorly in pracitce)。Nature 2015 Human level control 那个文章中的一个关键的创建点是:

  freeze the parameters of the target network for a fixed number of iterations while updating the online network by gradient descent. 

  (在用梯度下降的进行网络更新的时候,固定一定次数的网络,保存为 target network)。

  这一改进,极大的改善了该算法的稳定性。特定的梯度更新为:  

  这个方法之所以被称为:   model free     因为 states and rewards are produced by the environment.

              off-policy    因为 这些状态和奖赏 are obtained with a behavior policy different from the online policy that is being learned.

  另一个关键的成功之处是: experience replay 。在学习的过程当中,the agent 积累了一个数据集 $D_t = {e_1, e_2, .., e_t}$ , 其中,每一个记录 $e_t = (s_t, a_t, r_t, s_{t+1})$称为一个 episode 。 当训练 Q-network 的时候,并非仅仅使用当前的 experience 来进行学习,而是随机的从这个数据集上采样出一个 mini-batch 的数据进行更新:

  所以 这个序列的损失为:

  经验回放 增强了数据的有效性,主要是使得数据服从了监督学习所要求的 独立同分布的前提。

  上面一个小节主要讲了 Nature 2015  Human level control via deep reinforcement learning 的主要内容。

  Double Deep Q-networks:

  本文中我们采用改善的 Double DQN learning algorithm。在 Q-learning 和 DQN 中,the max operator uses the same values to both select and evaluate an action.

  这个就会导致 value estimates 的过估计问题 (over estimation),为了改善这个问题,DDQN 采用下面的这个目标:

  DDQN 和 DQN 是一样的,不同之处在于 目标被替换掉了,伪代码见下面。

  

  Prioritized Replay :

  优先级回放的一个关键点在于: increase the replay probability of experience tuples that have a high expected learning progress (as measured via the proxy of absolutely TD-error)。

  这使得学习速度上有了较大的提升,在最后的策略质量上也有较好的改善。


  

  The Dueling Network Architecture

  作者提到说,本文新的结构的关键的 motivation 在于:对于许多状态,根本没有必要进行预测每一个 actions choice 的 value 

  将两个模块的 fc layers 组合以输出一个 Q estimates 需要非常巧妙的设计。

  从 advantage $ Q^{\pi}(s, a) = V^{\pi}(s) + A^{\pi}(s, a)} $ 和 state-value V(s) 的表达式可以看出,advantage A 的期望值是为 0 的。

  此外,对于一个决定性的策略,$a^* = arg max Q(s, a')$,服从 $Q(s, a^*) = V(s)$,所以 也可以推断出 $A(s, a^*) = 0$.

  

  所以,我们就考虑图1中所展示的 dueling network:我们输出一个 fc layer,输出一个 scalar V, 另一路 输出一个 |A|维的向量。

  利用 advantage 的定义,我们可以尝试去构建 the aggregating module 如下:

  注意到,这个表达式适用于所有的 (s, a) instances, 也就是说,为了以矩阵形式表达公式7,我们需要复制 |A|次 这个变量 scalar V 。

  

  但是,我们需要注意的是,$Q(s, a; \theta, \alpha, \beta)$ 仅仅是 true Q-fuction 的一个参数化估计。

  此外,如果我们得出结论:V 是 state-value function 的较好的估计;或者是 A 提供了 advantage function 的一个合理的估计,都是错误的!

  公式 7 是 unidentifiable (无法辨别的) in the scese that given Q we can not recover V and A uniquely.

  (公式 7 是无法辨别的,从某种意义上说,给定 Q,我们无法唯一的恢复出 V 和 A)。

  所以 我们对 V 加一个常数,对应的 从 A 中减掉同样的常数。这个固定的撤销操作会得到相同的 Q value。当这个公式被直接应用时,缺乏 identifiablity 的问题就会在实际问题上被放大。

  

  为了解决 可识别性的问题,我们强迫 advantage function estimator 在选择的 action 上具有 zero advantage。也就是说,我们让网络的最后一个模块执行下面的这个映射(mapping):

  现在,对于 $ a* = arg max Q(s, a'; \theta, \alpha, \beta) = arg max A(s, a'; \theta, \alpha) $, 我们得到:

  $Q(s, a*; \theta, \alpha, \beta) = V(s; \theta, \beta)$

  所以, the stream V 提供了 value function 的估计, 另一路提供了 the advantage function 的一个估计。

  另一个模块用 an average 代替 the max operator:

  另一方面,这就失去了 V 和 A 原本的意思,因为他们现在偏离目标 一个常数,但是从另一个角度来讲,他又增强了优化的稳定性。

  有了公式 9,the advantage 仅仅需要和 mean 变得一样快就行了,而不需要弥补公式 8 中最优 actions advantage 的任何改变 (instead of having to compense any change to the optimal action's advantage in equation (8))。我们也对公式 8 做了一个 softmax version的实验,发现实验结果和公式 9 得到的类似,但是明显 公式 9 就非常简洁。所以,本文中所有的结果都是基于公式 9 进行的。

  

  虽然公式 9 减去了均值,帮助增强了可识别性。但是并没有改变 A values 的相对排序,所以保存了任何公式 7 的性质。当执行的时候,从 advantage streams 就足够可以做出决定。

    至此,本文的算法部分,就讲解完毕了,接下来就是实验部分,这里 就不讲了,感兴趣的可以参考原文。


  

  总结:从表面上来看,貌似理解了这个过程,但是实际上,闭上眼睛想一想这整个流程,我们还是会发现有一些问题,尚未理解清楚,例如:

  1. 将 Q值 分解为 V + A 这种形式,再组合在一起,到底有什么优势? 这样训练下来,为什么 agent 会得到更多的信息?是什么使得 agent 变得聪明了,做出了更好的选择???

  ---- My Answer:

    第一点,相对于传统的 single stream 的流程来说,本文的设计使得收敛速度更快。由文章的实验可知,当 action 的选择是 5个时,两个结构的训练结果相当;但是当 action 的选择增加时,dueling network  的优势就展现出来了。因为 the stream $V(s; \theta, \beta)$ 学习到了许多类似 action 的共享的一个 general 的 value。这个就比较有新引力了,因为很多控制问题,都存在这个问题。

  

    第二点:就像文章的 convolution 部分讲的那样,dueling 结构的主要优势在于:its ability to learn the state-value function efficiently. 在这个结构中,每次更新 Q value 的时候,都会随着更新 V --- 与此对应的是,single-stream architecture 仅仅更新其中的一个 action 对应的 value,其他 action 对应的 value 保持不变。这种更加频繁的更新 value stream 的做法分配了更多的资源给 V,所以可以更好的估计 state values,而对于 temporal-difference-based methods 像 Q-learning 需要准确的 state value。这种现象主要体现在:当 action 的个数增加的时候,dueling architecture 比 single-stream 的算法更有效。

  第三点:the difference between Q-values for  a given state are often very small relative to the magnitude of Q. 

  (相对于 Q 值的量级来说,Q 值之间的差异显得非常小,而不明显,如: Q1 = 501, Q2 = 500) 。

  文章中也给出了一个例子,即:在用 DDQN 算法训练完毕 Seaquest 后,平均 action gap 大约是 0.04,而 the average state value 之间却是 15. 不同尺寸的差异会导致在更新的时候带来 noise,而影响 action 的 reordering,这使得贪婪策略的更新非常频繁。本文提出的算法则对这种 noise 是鲁棒的。

  

  

  

  

  


  Reference :

  Torch 官网上提供的关于 dueling DDQN 的一个博客:

  http://torch.ch/blog/2016/04/30/dueling_dqn.html

  

  Dueling 网络结构上比 DQN 改动的代码部分:

  

  

  不知道大家还有什么疑问 ???

  欢迎积极留言。。。一起讨论。。。 谢谢 。。。

  

  

  

  

  

  

  

  

论文笔记之:Dueling Network Architectures for Deep Reinforcement Learning的更多相关文章

  1. 论文笔记之:Asynchronous Methods for Deep Reinforcement Learning

    Asynchronous Methods for Deep Reinforcement Learning ICML 2016 深度强化学习最近被人发现貌似不太稳定,有人提出很多改善的方法,这些方法有很 ...

  2. 论文笔记之:Human-level control through deep reinforcement learning

    Human-level control through deep reinforcement learning Nature 2015 Google DeepMind Abstract RL 理论 在 ...

  3. 论文笔记之:Playing Atari with Deep Reinforcement Learning

    Playing Atari with Deep Reinforcement Learning <Computer Science>, 2013 Abstract: 本文提出了一种深度学习方 ...

  4. 论文阅读之: Hierarchical Object Detection with Deep Reinforcement Learning

    Hierarchical Object Detection with Deep Reinforcement Learning NIPS 2016 WorkShop  Paper : https://a ...

  5. 18 Issues in Current Deep Reinforcement Learning from ZhiHu

    深度强化学习的18个关键问题 from: https://zhuanlan.zhihu.com/p/32153603 85 人赞了该文章 深度强化学习的问题在哪里?未来怎么走?哪些方面可以突破? 这两 ...

  6. 深度强化学习(Deep Reinforcement Learning)入门:RL base & DQN-DDPG-A3C introduction

    转自https://zhuanlan.zhihu.com/p/25239682 过去的一段时间在深度强化学习领域投入了不少精力,工作中也在应用DRL解决业务问题.子曰:温故而知新,在进一步深入研究和应 ...

  7. (zhuan) Deep Reinforcement Learning Papers

    Deep Reinforcement Learning Papers A list of recent papers regarding deep reinforcement learning. Th ...

  8. Deep Reinforcement Learning for Visual Object Tracking in Videos 论文笔记

    Deep Reinforcement Learning for Visual Object Tracking in Videos 论文笔记 arXiv 摘要:本文提出了一种 DRL 算法进行单目标跟踪 ...

  9. 论文笔记系列-Neural Network Search :A Survey

    论文笔记系列-Neural Network Search :A Survey 论文 笔记 NAS automl survey review reinforcement learning Bayesia ...

随机推荐

  1. 编写高效且优雅的 Python 代码

    http://python.jobbole.com/86808/ http://python.jobbole.com/86869/?utm_source=blog.jobbole.com&ut ...

  2. MFC编程入门之八(对话框:创建对话框类和添加控件变量)

    创建好对话框资源后要做的就是生成对话框类了.生成对话框类主要包括新建对话框类.添加控件变量和控件的消息处理函数. 例程Addition是基于对话框的程序,所以程序自动创建了对话框模板IDD_ADDIT ...

  3. iOS开发 百度坐标点的计算

    BMKMapPoint point1 = BMKMapPointForCoordinate(_userGps); BMKMapPoint point2 = BMKMapPointForCoordina ...

  4. English Literature

    The website links of English Literature,which I wanno recommend to U is based on following. 数据结构 - 知 ...

  5. Maven内置变量说明

    Maven内置变量说明: ${basedir} 项目根目录 ${project.build.directory} 构建目录,缺省为target ${project.build.outputDirect ...

  6. mysql 删除重复数据保留一条

    验证:mysql 5.6版本 方法一: delete a from table a left join( select (id) from table group by studentName,cla ...

  7. 14072202(带IK的Recoil)

    [目标] 带IK的Recoil [思路] 1 继承于USkelControlLimb和UGameSkelCtrl_Recoil 2 效果对比  以这个骨骼为例 Recoil Limb 可见,Recoi ...

  8. iOS开发UI篇—ios应用数据存储方式(偏好设置)

    iOS开发UI篇—ios应用数据存储方式(偏好设置) 一.简单介绍 很多iOS应用都支持偏好设置,比如保存用户名.密码.字体大小等设置,iOS提供了一套标准的解决方案来为应用加入偏好设置功能 每个应用 ...

  9. php常用加密算法

    php加密函数: 不可逆的加密函数为:md5().crypt() md5() 用来计算 MD5 哈稀.语法为:string md5(string str); crypt() 将字符串用 UNIX 的标 ...

  10. enmo_day_02

    Secure CRT, putty, 等终端工具 DML :u, d, i, m 增,删,改,合并 DDL : DCL : DQL : 数据字典 :存放在数据文件中,SYSTEM表空间里,纪录数据的变 ...