1. Deep Q-Learning
传统的强化学习算法具有很强的决策能力,但难以用于高维空间任务中,需要结合深度学习的高感知能力,因此延展出深度强化学习,最经典的就是DQN(Deep Q-Learning)。
DQN 2013
DQN的主要思想是训练CNN拟合出Q-Learning算法,以此让智能体在复杂的RL环境中从原始视频数据学到成功的控制策略。
实现:
- 用参数\(\theta\)的CNN近似最优Q-values
\]
- 结合Bellman最优方程得到第\(i\)次迭代更新的目标
\]
- 定义网络的损失函数
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]\]
难点以及解决方法:
- 强化学习假设智能体与环境的交互具有马尔科夫性,而现实中大多任务是部分可观的,智能体很难从当前视频帧\(x_t\)中获取到足够有用的信息。通过动作和观测序列\(s_t=x_1,a_1,x_2,...,a_{t-1},x_t\),人为地设定了MDP
- 训练CNN所需的样本需要相互独立,而RL状态间的相关性极高。通过经验回放机制(experience replay mechansim),保存以前的转移并进行随机采样,缓解数据相关性,保证训练数据分布平滑
- 单帧输入不包含时序信息,因此网络输入是经过预处理的4帧堆叠图像
Nature DQN
Nature DQN主要是对DQN 2013做了修改:
- 网络结构
DQN是一个端到端的模型,输入是预处理后的四帧灰度图像的堆叠,先经过三个卷积层提取特征,然后用两个全连接层作为决策层,最后输出为一个向量,向量的元素对应每个可执行动作的概率值,网络结构如下图:

- 减少相关性
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}\)复制得到)。最后,损失函数为
\]
从而得到梯度:
\]
其中,\(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的更多相关文章
- deep Q learning小笔记
1.loss 是什么 2. Q-Table的更新问题变成一个函数拟合问题,相近的状态得到相近的输出动作.如下式,通过更新参数 θθ 使Q函数逼近最优Q值 深度神经网络可以自动提取复杂特征,因此,面对高 ...
- Open source packages on Deep Reinforcement Learning
智能车 self driving car + 强化学习 reinforcement learning + 神经网络 模拟 https://github.com/MorvanZhou/my_resear ...
- (转) Deep Reinforcement Learning: Pong from Pixels
Andrej Karpathy blog About Hacker's guide to Neural Networks Deep Reinforcement Learning: Pong from ...
- 【资料总结】| Deep Reinforcement Learning 深度强化学习
在机器学习中,我们经常会分类为有监督学习和无监督学习,但是尝尝会忽略一个重要的分支,强化学习.有监督学习和无监督学习非常好去区分,学习的目标,有无标签等都是区分标准.如果说监督学习的目标是预测,那么强 ...
- Deep Reinforcement Learning: Pong from Pixels
这是一篇迟来很久的关于增强学习(Reinforcement Learning, RL)博文.增强学习最近非常火!你一定有所了解,现在的计算机能不但能够被全自动地训练去玩儿ATARI(译注:一种游戏机) ...
- [DQN] What is Deep Reinforcement Learning
已经成为DL中专门的一派,高大上的样子 Intro: MIT 6.S191 Lecture 6: Deep Reinforcement Learning Course: CS 294: Deep Re ...
- 强化学习9-Deep Q Learning
之前讲到Sarsa和Q Learning都不太适合解决大规模问题,为什么呢? 因为传统的强化学习都有一张Q表,这张Q表记录了每个状态下,每个动作的q值,但是现实问题往往极其复杂,其状态非常多,甚至是连 ...
- 如何用简单例子讲解 Q - learning 的具体过程?
作者:牛阿链接:https://www.zhihu.com/question/26408259/answer/123230350来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...
- 强化学习_Deep Q Learning(DQN)_代码解析
Deep Q Learning 使用gym的CartPole作为环境,使用QDN解决离散动作空间的问题. 一.导入需要的包和定义超参数 import tensorflow as tf import n ...
- (zhuan) Deep Reinforcement Learning Papers
Deep Reinforcement Learning Papers A list of recent papers regarding deep reinforcement learning. Th ...
随机推荐
- 格式化时间戳的n种方法
1 var time = new Date(ele.time).toLocaleString().split(' ')[0] 2 formatDate: function (value) { let ...
- 将ImageMagic库编译进nginx
1.首先要将ImageMagick库的相应头文件加到环境变量中 export C_INCLUDE_PATH=$C_INCLUDE_PATH:/usr/local/ImageMagick/include ...
- 手撸Mysql原生语句--增删改查
mysql数据库的增删改查有以下的几种的情况, 1.DDL语句 数据库定义语言: 数据库.表.视图.索引.存储过程,例如CREATE DROP ALTER SHOW 2.DML语句 数据库操纵语言: ...
- 读完这篇,让你真正理解Redis持久化
什么叫持久化? 用一句话可以将持久化概括为:将数据(如内存中的对象)保存到可永久保存的存储设备中. 持久化的主要应用是将内存中的对象存储在数据库中,或者存储在磁盘文件中. XML 数据文件中等等. 也 ...
- 操作系统:x86下内存分页机制 (1)
前置知识: 分段的概念(当然手写过肯定是坠吼的 为什么要分页 当我们写程序的时候,总是倾向于把一个完整的程序分成最基本的数据段,代码段,栈段.并且普通的分段机制就是在进程所属的LDT中把每一个段给标识 ...
- mysql-12-DDL
#DDL /* 数据定义语言 库和表的管理 一.库的管理 创建.修改.删除 二.表的管理 创建.修改.删除 创建 create 修改 alter 删除 drop */ #一.库的管理 #1.库的创建 ...
- mysql-8-subquery
#进阶8:子查询 /* 出现在其他语句中的select语句(嵌套) 分类: 按子查询出现的位置: SELECT 后面 FROM 后面 WHERE 或 HAVING 后面 EXISTS后面 */ USE ...
- 零基础学习Kmeans聚类算法的原理与实现过程
内容导入: 聚类是无监督学习的典型例子,聚类也能为企业运营中也发挥者巨大的作用,比如我们可以利用聚类对目标用户进行群体分类,把目标群体划分成几个具有明显特征区别的细分群体,从而可以在运营活动中为这些细 ...
- 这么美的“vector容器”,你确定你不看吗?
内容思维导图: 一.vector基本概念: 1.功能: vector数据结构和数组非常相似,也称为单端数组. 2.vector和普通数组的区别: 不同之处在于数组是静态空间,而vector是可以动态扩 ...
- 060 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 07 冒泡排序
060 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 07 冒泡排序 本文知识点:冒泡排序 冒泡排序 实际案例分析冒泡排序流程 第1轮比较: 第1轮比较的结果:把最 ...