传统的强化学习算法具有很强的决策能力,但难以用于高维空间任务中,需要结合深度学习的高感知能力,因此延展出深度强化学习,最经典的就是DQN(Deep Q-Learning)。

DQN 2013

DQN的主要思想是训练CNN拟合出Q-Learning算法,以此让智能体在复杂的RL环境中从原始视频数据学到成功的控制策略。

实现:

  1. 用参数\(\theta\)的CNN近似最优Q-values
\[Q(s,a;\theta)\approx Q^*(s,a)
\]
  1. 结合Bellman最优方程得到第\(i\)次迭代更新的目标
\[y_i=\mathbb{E}_{s^\prime \sim \mathcal{E}}\big[r+\gamma \max_{a^\prime}Q(s^\prime,a^\prime;\theta_{i-1})|s,a\big]
\]
  1. 定义网络的损失函数
\[L_i(\theta_i)=\mathbb{E}_{s,a\sim \rho(\cdot)}\big[\big(y_i-Q(s,a;\theta_i) \big)^2\big]$$ $\rho(s,a)$是行为分布(behavior distribution),即在序列$s$上执行动作$a$的概率分布
3. 求出梯度
$$\triangledown_{\theta_i}L_i(\theta_i)=\mathbb{E}_{s,a\sim\rho(\cdot);s^\prime\sim\mathcal{E}}\bigg[\Big(r+\gamma\max_{a^\prime}Q(s^\prime,a^\prime;\theta_{i-1})-Q(s,a;\theta_i) \Big)\triangledown_{\theta_i}Q(s,a;\theta_i) \bigg]\]

难点以及解决方法:

  1. 强化学习假设智能体与环境的交互具有马尔科夫性,而现实中大多任务是部分可观的,智能体很难从当前视频帧\(x_t\)中获取到足够有用的信息。通过动作和观测序列\(s_t=x_1,a_1,x_2,...,a_{t-1},x_t\),人为地设定了MDP
  2. 训练CNN所需的样本需要相互独立,而RL状态间的相关性极高。通过经验回放机制(experience replay mechansim),保存以前的转移并进行随机采样,缓解数据相关性,保证训练数据分布平滑
  3. 单帧输入不包含时序信息,因此网络输入是经过预处理的4帧堆叠图像

Nature DQN

Nature DQN主要是对DQN 2013做了修改:

  1. 网络结构

    DQN是一个端到端的模型,输入是预处理后的四帧灰度图像的堆叠,先经过三个卷积层提取特征,然后用两个全连接层作为决策层,最后输出为一个向量,向量的元素对应每个可执行动作的概率值,网络结构如下图:

  1. 减少相关性

    DQN 2013的\(Q(s,a)\)和\(r+\gamma\max_{a^\prime}Q(s^\prime,a^\prime)\)之间存在相关性,因此在网络训练过程中损失难以收敛。为了减少它们的相关性,Nature DQN使用了两个网络:主网络用于模型参数的更新,以及\(Q(s,a;\theta_i)\)的拟合;目标网络每隔一个周期对主网络进行一次拷贝,生成近似的目标价值\(r+\gamma \max_{a^\prime}Q(s^\prime,a^\prime;\theta_i^-)\)(\(\theta_i\)是主网络第\(i\)次迭代的参数,\(\theta_i^-\)是目标网络的参数,是从主网络参数\(\theta_{i-1}\)复制得到)。最后,损失函数为
\[L_i(\theta_i)=\mathbb{E}_{(s,a,r,s^\prime)\sim U(D)}\Big[\Big(r+\gamma\max_{a^\prime}Q(s^\prime,a^\prime;\theta_i^-)-Q(s,a;\theta_i) \Big)^2 \Big]
\]

从而得到梯度:

\[\triangledown_{\theta_i}L(\theta_i)=\mathbb{E}_{s,a,r,s^\prime}\Big[\Big(r+\gamma\max_{a^\prime}Q(s^\prime,a^\prime;\theta_i^-)-Q(s,a;\theta_i) \Big)\triangledown_{\theta_i}Q(s,a;\theta_i) \Big]
\]

其中,\(D\)是经验回放池,用于存储每一时刻的转移,可以表示为\(e_t=(s_t,a_t,r_t,s_{t+1})\),\(e_t\in D_t=\{e_1,e_2,...,e_t\}\);在学习阶段,用于Q-Learning更新的样本服从于\(U(D)\)分布,即从\(D\)中均匀采样。从梯度公式中可以看出,只需要更新\(\theta_i\),减小了计算量和相关性。训练过程如下图:

算法伪代码:

References

Volodymyr Mnih et al. Playing Atari with Deep Reinforcement Learning. 2013.

Volodymyr Mnih et al. Human-level control through deep reinforcement learning. 2015.

1. Deep Q-Learning的更多相关文章

  1. deep Q learning小笔记

    1.loss 是什么 2. Q-Table的更新问题变成一个函数拟合问题,相近的状态得到相近的输出动作.如下式,通过更新参数 θθ 使Q函数逼近最优Q值 深度神经网络可以自动提取复杂特征,因此,面对高 ...

  2. Open source packages on Deep Reinforcement Learning

    智能车 self driving car + 强化学习 reinforcement learning + 神经网络 模拟 https://github.com/MorvanZhou/my_resear ...

  3. (转) Deep Reinforcement Learning: Pong from Pixels

    Andrej Karpathy blog About Hacker's guide to Neural Networks Deep Reinforcement Learning: Pong from ...

  4. 【资料总结】| Deep Reinforcement Learning 深度强化学习

    在机器学习中,我们经常会分类为有监督学习和无监督学习,但是尝尝会忽略一个重要的分支,强化学习.有监督学习和无监督学习非常好去区分,学习的目标,有无标签等都是区分标准.如果说监督学习的目标是预测,那么强 ...

  5. Deep Reinforcement Learning: Pong from Pixels

    这是一篇迟来很久的关于增强学习(Reinforcement Learning, RL)博文.增强学习最近非常火!你一定有所了解,现在的计算机能不但能够被全自动地训练去玩儿ATARI(译注:一种游戏机) ...

  6. [DQN] What is Deep Reinforcement Learning

    已经成为DL中专门的一派,高大上的样子 Intro: MIT 6.S191 Lecture 6: Deep Reinforcement Learning Course: CS 294: Deep Re ...

  7. 强化学习9-Deep Q Learning

    之前讲到Sarsa和Q Learning都不太适合解决大规模问题,为什么呢? 因为传统的强化学习都有一张Q表,这张Q表记录了每个状态下,每个动作的q值,但是现实问题往往极其复杂,其状态非常多,甚至是连 ...

  8. 如何用简单例子讲解 Q - learning 的具体过程?

    作者:牛阿链接:https://www.zhihu.com/question/26408259/answer/123230350来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...

  9. 强化学习_Deep Q Learning(DQN)_代码解析

    Deep Q Learning 使用gym的CartPole作为环境,使用QDN解决离散动作空间的问题. 一.导入需要的包和定义超参数 import tensorflow as tf import n ...

  10. (zhuan) Deep Reinforcement Learning Papers

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

随机推荐

  1. java8--排序

    排序的传统的写法是: Collections.sort( SortTest.users, new Comparator<User>() { @Override public int com ...

  2. 被产品经理怼了,线上出Bug为啥你不知道

    前言 前几天跟读者聊天,他说被产品经理给怼了.原因是线上出 Bug 了,最后是客户反馈才知道的. 我就问他:你们是不是没做监控? 读者:我们是刚成立的创业团队,目前最重要的就是堆功能,很多基础设施都没 ...

  3. 机器学习-线性规划(LP)

    线性规划问题 首先引入如下的问题: 假设食物的各种营养成分.价格如下表: Food Energy(能量) Protein(蛋白质) Calcium(钙) Price Oatmeal(燕麦) 110 4 ...

  4. Nodejs-原型链污染

    原型链污染 javascript 原型链 在javascript中,继承的整个过程就称为该类的原型链. 每个对象的都有一个指向他的原型(prototype)的内部链接,这个原型对象又有它自己的原型,一 ...

  5. ios7.1发布企业证书测试包的问题

    关于升级了ios7.1之后发布企业版证书的测试包不能下载的问题,这个苹果也挺坑的,什么都不说,也不警告一下,直接就不能用了 用xcode的organizer里面的console里发现安装的时候提示这个 ...

  6. java调用matlab生成exe文件

    一.Matlab生成Java Package 1.在MATLAB的Command Window输入deploytool命令,选择Library Compiler. 2.在弹出的窗口选择Java Pac ...

  7. 一次性升级所有python包的靠谱并且简单的方法

    1.  用pip-review包pip install pip-review   #安装包pip-review --auto        #自动批量升级指令2.  编写代码import pipfro ...

  8. Hibernate4.3 继承映射

    一.单表继承映射 父子类合成一张表 An_id An_name gender Weight Height type 1 dog 1 300 D 2 cat 1 100 C 在Animal.hbm.xm ...

  9. DES加解密算法(C语言实现)

    DES加密和解密算法的实现(C语言) 主要是做个记录,害怕以后代码丢了,先放到这里了. DES再不进行介绍了,可以看上一篇的 DES 的python实现 转载请注明出处:https://www.cnb ...

  10. VueCroppie

    下载 VueCroppie VueCroppie是一个Vue 2包装Croppie一个美丽的照片裁剪工具的Javascript由foliotek. 安装 NPM 安装vue-croppie-保存 CD ...