第六章 DQN基本概念

关键词

  • DQN(Deep Q-Network): 基于深度学习的Q-learning算法,其结合了 Value Function Approximation(价值函数近似)与神经网络技术,并采用了目标网络(Target Network)和经验回放(Experience Replay)等方法进行网络的训练。
  • State-value Function: 本质是一种critic。其输入为actor某一时刻的state,对应的输出为一个标量,即当actor在对应的state时,预期的到过程结束时间段中获得的value的数值。
  • State-value Function Bellman Equation: 基于state-value function的Bellman Equation,它表示在状态 sts_{t}st​ 下带来的累积奖励 GtG_{t}Gt​ 的期望。
  • Q-function: 其也被称为state-action value function。其input 是一个 state 跟 action 的 pair,即在某一个 state 采取某一个action,假设我们都使用 actor π\piπ ,得到的 accumulated reward 的期望值有多大。
  • Target Network: 为了解决在基于TD的Network的问题时, 优化目标 Qπ(st,at)=\mathrm{Q}^{\pi}\left(s_{t}, a_{t}\right)=Qπ(st​,at​)= rt+Qπ(st+1,π(st+1))r_{t}+\mathrm{Q}^{\pi}\left(s_{t+1}, \pi\left(s_{t+1}\right)\right)rt​+Qπ(st+1​,π(st+1​)) 左右两侧会同时变化使得训练过程不稳定, 从而增大 regression的难度。target network选择将上式的右部分即 rt+Qπ(st+1,π(st+1))r_{t}+\mathrm{Q}^{\pi}\left(s_{t+1}, \pi\left(s_{t+1}\right)\right)rt​+Qπ(st+1​,π(st+1​)) 固定, 通过改变上式左部分的network的参数, 进行regression, 这也是一个DQN中比较重 要的tip。
  • Exploration: 在我们使用Q-function的时候, 我们的policy完全取决于Q-function, 有可 能导致出现对应的action是固定的某几个数值的情况, 而不像policy gradient中的output 为随机的, 我们再从随机的distribution中 sample选择action。这样会导致我们继续训练 的input的值一样, 从而“加重”output的固定性, 导致整个模型的表达能力的急剧下降, 这也就是 探索-利用䆖境难题(Exploration-Exploitation dilemma)。所以我们使用 Epsilon Greedy 和 Boltzmann Exploration 等Exploration方法进行优化。
  • Experience Replay(经验回放): 其会构建一个Replay Buffer(Replay Memory), 用 来保存许多data, 每一个data的形式如下: 在某一个 state sts_{t}st​, 采取某一个action ata_{t}at​, 得 数据都放到这个 replay buffer 中。当我们的buffer”装满“后, 就会自动删去最早进入 buffer的data。在训练时, 对于每一轮迭代都有相对应的batch (与我们训练普通的 Network一样通过sample得到), 然后用这个batch中的data去update我们的Q-function。综上, Q-function再sample和训练的时候, 会用到过去的经验数据, 所以这里 称这个方法为Experience Replay, 其也是DQN中比较重要的tip。

第七章 DQN进阶技巧

关键词

  • Double DQN: 在Double DQN中存在有两个 Q-network, 首先, 第一个 Q-network, 决 定的是哪一个 action 的 Q\mathrm{Q}Q value 最大, 从而决定了你的action。另一方面, Q\mathrm{Q}Q value 是 用 Q′Q^{\prime}Q′ 算出来的, 这样就可以避免 over estimate 的问题。具体来说, 假设我们有两个 Q-function, 假设第一个Q-function 它高估了它现在选出来的action a, 那没关系, 只要 第二个Q-function Q′Q^{\prime}Q′ 没有高估这个action a 的值,那你算出来的,就还是正常的值。
  • Dueling DQN: 将原来的DQN的计算过程分为两个path。对于第一个path, 会计算一个 于input state有关的一个标量 V(s)V(s)V(s); 对于第二个path,会计算出一个vector A(s,a)A(s, a)A(s,a), 其对应每一个action。最后的网络是将两个path的结果相加, 得到我们最终需要的Q value。用一个公式表示也就是 Q(s,a)=V(s)+A(s,a)Q(s, a)=V(s)+A(s, a)Q(s,a)=V(s)+A(s,a) 。
  • Prioritized Experience Replay (优先经验回放) : 这个方法是为了解决我们在chapter6 中提出的Experience Replay (经验回放) 方法不足进一步优化提出的。我们在使用Experience Replay时是uniformly取出的experience buffer中的sample data,这里并没有 考虑数据间的权重大小。例如,我们应该将那些train的效果不好的data对应的权重加 大, 即其应该有更大的概率被sample到。综上, prioritized experience replay 不仅改变了 sample data 的distribution,还改变了 training process。
  • Noisy Net: 其在每一个episode 开始的时候, 即要和环境互动的时候, 将原来的Q-function 的每一个参数上面加上一个Gaussian noise。那你就把原来的Q-function 变成 Q~\tilde{Q}Q~​ , 即Noisy Q-function。同样的我们把每一个network的权重等参数都加上一个Gaussian 互动结束。
  • Distributional Q-function: 对于DQN进行model distribution。将最终的网络的output的 每一类别的action再进行distribution。
  • Rainbow: 也就是将我们这两节内容所有的七个tips综合起来的方法, 7个方法分别包 括:DQN、DDQN、Prioritized DDQN、Dueling DDQN、A3C、Distributional DQN、Noisy DQN,进而考察每一个方法的贡献度或者是否对于与环境的交互式正反馈的。

第八章 DQN连续动作

Q-learning在处理continuous action时存在的问题以及解决方法

答:
\quad在日常的问题中, 我们的问题都是continuous action的, 例如我们的 agent 要做的 事情是开自驾车, 它要决定说它方向盘要左转几度, 右转几度, 这就是 continuous 的; 假设我们的 agent 是一个机器人, 假设它身上有 50 个关节, 它的每一个 action 就 对应到它身上的这 50 个关节的角度,而那些角度也是 continuous 的。
\quad 然而在解决Q-learning问题时,很重要的一步是要求能够解对应的优化问题。当我们 estimate 出Q-function Q(s,a)Q(s, a)Q(s,a) 以后,必须要找到一个 action, 它可以让 Q(s,a)Q(s, a)Q(s,a) 最大。 假设 action 是 discrete 的, 那 a 的可能性都是有限的。但如果action是continuous的情 况下, 我们就不能像离散的action一样, 穷举所有可能的continuous action了。

为了解决这个问题, 有以下几种方法:

  1. 我们可以使用所谓的sample方法, 即随机sample出 NNN 个可能的 action,然后一个一个带到我们的Q-function中, 计算对应的 NNN 个 value比较哪一个的值最大。但是这个方法因为是sample所以不会非常的精确。
  2. 我们将这个 continuous action问题, 看为一个优化问题, 从而自 然而然地想到了可以用gradient ascend去最大化我们的目标函数。具体地, 我们将 action看为我们的变量, 使用gradient ascend方法去update action对应的Q-value。但 是这个方法通常的时间花销比较大, 因为是需要迭代运算的。
  3. 设计一个特别的network架构, 设计一个特别的Q-function, 使得 解我们 argmax Q-value的问题变得非常容易。也就是这边的 Q-function 不是一个 general 的 Q-function,特别设计一下它的样子, 让你要找让这个 Q-function 最大的 a\mathrm{a}a的时候非常容易。但是这个方法的function不能随意乱设, 其必须有一些额外的限 制。具体的设计方法,可以我们的chapter8的详细教程。
  4. 不用Q-learning, 毕竟用其处理continuous的action比较麻烦。

第九章 演员-评论家算法

关键词

  • A2C: Advantage Actor-Critic的缩写, 一种Actor-Critic方法。
  • A3C: Asynchronous(异步的)Advantage Actor-Critic的缩写, 一种改进的Actor-Critic方 法, 通过异步的操作, 进行RL模型训练的加速。
  • Pathwise Derivative Policy Gradient : 其为使用 Q-learning 解 continuous action 的方 法, 也是一种 Actor-Critic 方法。其会对于actor提供value最大的action, 而不仅仅是提 供某一个action的好坏程度。

强化学习蘑菇书学习笔记04相关推荐

  1. 强化学习蘑菇书Easy RL第二、三章学习(马尔可夫决策过程、表格型方法)

    马尔可夫决策过程概述 Markov Process(MP)通常来说是未来状态的条件概率分布仅依赖于当前的状态.在离散随机过程里,我们需要把随机变量所有可能取值的集合放到一个状态空间里,在强化学习里,我 ...

  2. 强化学习蘑菇书Easy RL 第四五章

    7.20更新,(这两天进度略慢,基本只学了第四章,还没学完,简单记录下吧!)首先我们必须要明确的一个概念,RL有三个组成部分: 演员 actor 环境 environment 奖励函数 reward ...

  3. 强化学习蘑菇书Easy RL第一章

    强化学习第一章(蘑菇书) 强化学习的概念 之前也学过一点,但是不够系统,想利用这一次机会好好把一些概念理顺清楚. 第一部分肯定是强化学习的概念问题.强化学习(reinforcement learnin ...

  4. 【githubshare】深度学习蘑菇书,覆盖了强化学习、马尔可夫决策过程、策略梯度、模仿学习

    GitHub 上的深度学习技术书籍:<蘑菇书 EasyRL>,覆盖了强化学习.马尔可夫决策过程.策略梯度.模仿学习等多个知识点. GitHub:github.com/datawhalech ...

  5. 深度学习花书学习感悟之第二章线性代数

    趁着寒假的闲暇时光,希望能稍加学习. 花书毕竟是深度学习四大名著之一,因此早就想拜读一下.在其中获得的感悟或者学习到的新的内容,希望能够通过博客的形式记录下来.一来是希望能够记录下自己学习的点点滴滴, ...

  6. easyRL蘑菇书阅读笔记(一)

    RL智能体的类型 基于价值的智能体,基于策略的智能体,演员-评论员智能体 策略:随机性策略+确定性策略,是一个函数,用于把输入的状态变成动作. 价值函数:价值函数的值是对未来奖励的预测,用于评估状态的 ...

  7. 深度学习花书学习感悟之第三章概率论

    一.概率密度函数 说到概率密度函数(probability density function, PDF,后面用简写),肯定是针对连续型变量而言的.对于离散型变量,我们称之为分布律 对于概率密度函数,有 ...

  8. 强化学习《蘑菇书 EasyRL第一章 概览》

    学习目标: 1.对强化学习基本原理及结构能大致了解: 2.了解强化学习的应用场景:分清强化学习作为半监督学习与无监督.有监督学习之间的差别. 3.梳理强化学习模型的种类:对每种模型有粗略认识.了解在不 ...

  9. 重磅!深度学习圣经“花书”核心笔记、代码发布

    点击上方"AI有道",选择"置顶"公众号 重磅干货,第一时间送达 <深度学习>,又名"花书".该书由三位大佬 Ian Goodf ...

最新文章

  1. 平民软件OneProxy的强大
  2. springmvc中的类型转换器
  3. MyEclipse中的web项目之前有个感叹号
  4. 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第1节 异常_8_Throwable类中3个异常处理的方法...
  5. python的可变长参数
  6. c# namespace不能和class的name 相同
  7. python中gui实现一个登录界面_Python:简单的登陆GUI界面
  8. This file can not be opened as a file descriptor; it is probably compressed
  9. JS线程与事件循环解析
  10. LINUX REDHAT第九单元文档
  11. android 禁掉唤醒锁acquire()
  12. 数据分析——十大数据分析模型
  13. CPU基础---设计一个8位的并行加法器
  14. 判断输入的邮箱格式是否正确
  15. 外贸常用术语_外贸常用句子
  16. 百度云不限速下载(Windows、Linux、Mac平台)
  17. python+openCV使用SIFT算法实现印章的总相似度检测
  18. php怎么截取中文第一个字符串,php中怎么截取中文字符串
  19. thinkphp6.0模型篇之关联预载入
  20. QQ引流脚本,QQ扩列引流脚本实操演示

热门文章

  1. 2021前端面试经典计算题总结。
  2. PHP操作redis详细讲解(转)
  3. 【教程篇】Blender实例教程(一)——制作一个酷炫的三叶草星
  4. AI新基建沙场点兵,背后是一场“路径之争”
  5. 会员卡应用管理系统源码 支持收银+积分管理+商城营销功能 含详细搭建教程
  6. 上一页 1 2 3 ... 10 下一页 固定分页
  7. [转载]只需要读内存实现的Dota全图
  8. 同等学力计算机科学与技术真题-2006年
  9. 串口调试小节之五 串口参数设置查询
  10. 西电微电子考研初试经验贴