DQN核心思想理解
看过Deep learning(convolutional neural network),看过RL(Q-learning)。但是在两者结合这一块一直弄不明白。
我的疑问在于一直不明白DL是怎样识别出那个特定的物体,比如,木板或者小鸟。以及Q-learning怎样做决策。
后来才发现,DQN的核心思想并没有识别出特定物体。
DQN里面的Deep learning部分,输入是原始图像,输出是action对应的Q值(类似于有这么多action类,每一类的概率值)。原始图像就是当前state (current state),把当前state输入到Deep Learning里面,以计算在该state下对应的各Action的Q值。
有人问,那这怎么计算啊。我们都知道在RL里面,Q值是通过Reward来更新的。但是在DQN里面,Q值是直接算出来的。你可以把中间的neural network部分,看成一个函数f,最后输出的Q(s,a) 就等于 f(s)。这是非常不同的一点。
这样就算了,那感觉和Q-learning也没多少联系啊。联系在于neural network的loss function部分。我们都知道neural network是需要训练后,才能正常工作的。既然要对Neural network进行训练,那么Loss function就是必须的。那么怎样定义这个loss function呢?我们都知道这个loss function是对neural network的输出Q值进行更新的一个函数。Q值更新?似曾相识啊,这个Q值更新我们参考《Reinforcement Learning: An Introduction》2nd sutton教材的P142页:

这个就是Q值的Q-learning更新公式。我们就用这个公式来做loss function,保证最后得到的Q值是最优的。
至于怎样训练,就是类似于RL的通用方法,通过经验值计算。思想就是,大量模拟,在数量达到一定阶段后,这个得到的Q值就非常接近真实的Q值了。学名叫做experience replay(经验池),可以参考蒲丰投针实验。(其实这一点有点模糊,在RL里面,为什么Q会趋近于真实值Q,一是因为有实际的环境模拟,二是因为有一个Reward,这个Reward是按照一个终值的确定Reward,一点点往前面state传递的,所以在很多episodes后,Q值最终会趋向稳定。但是在Neural Network中,这种前后states之间的联系是如何保证的?以及为什么这样计算他就也能像Q-learning那样收敛?难道是weights的原因,毕竟前后states是用同一个neural network。这里有待进一步弄清楚)
References:
https://zhuanlan.zhihu.com/p/21421729
DQN核心思想理解的更多相关文章
- Rookey.Frame v1.0 视频教程之三发布-框架核心思想介绍
本期发布视频: (三)Rookey.Frame v1.0框架核心思想 介绍了Rookey.Frame v1.0框架搭建的核心思想,将框架核心思想理解清楚,对框架运行就会得心应手 官方视频教程: htt ...
- 《深入理解Spark:核心思想与源码分析》——SparkContext的初始化(叔篇)——TaskScheduler的启动
<深入理解Spark:核心思想与源码分析>一书前言的内容请看链接<深入理解SPARK:核心思想与源码分析>一书正式出版上市 <深入理解Spark:核心思想与源码分析> ...
- 《深入理解Spark:核心思想与源码分析》(前言及第1章)
自己牺牲了7个月的周末和下班空闲时间,通过研究Spark源码和原理,总结整理的<深入理解Spark:核心思想与源码分析>一书现在已经正式出版上市,目前亚马逊.京东.当当.天猫等网站均有销售 ...
- 《深入理解Spark:核心思想与源码分析》(第2章)
<深入理解Spark:核心思想与源码分析>一书前言的内容请看链接<深入理解SPARK:核心思想与源码分析>一书正式出版上市 <深入理解Spark:核心思想与源码分析> ...
- 《深入理解Spark:核心思想与源码分析》一书正式出版上市
自己牺牲了7个月的周末和下班空闲时间,通过研究Spark源码和原理,总结整理的<深入理解Spark:核心思想与源码分析>一书现在已经正式出版上市,目前亚马逊.京东.当当.天猫等网站均有销售 ...
- 《深入理解Spark:核心思想与源码分析》正式出版上市
自己牺牲了7个月的周末和下班空闲时间,通过研究Spark源码和原理,总结整理的<深入理解Spark:核心思想与源码分析>一书现在已经正式出版上市,目前亚马逊.京东.当当.天猫等网站均有销售 ...
- Spring核心思想:“控制反转”,也叫“依赖注入” 的理解
@Service对应的是业务层Bean,例如: @Service("userService") public class UserServiceImpl implements Us ...
- Hibernate核心思想—ORM机制(一)
转:http://blog.csdn.net/wanghuan203/article/details/7566518 hibernate是一个采用ORM(Object/Relation Mapping ...
- python中 and 和 or 运算的核心思想 ——— 短路逻辑
python中 and 和 or 运算的核心思想 --- 短路逻辑 1. 包含一个逻辑运算符 首先从基本的概念着手,python中哪些对象会被当成 False 呢?而哪些又是 True 呢? 在Pyt ...
随机推荐
- c++ 网络编程(四) LINUX/windows下 socket 基于I/O复用的服务器端代码 解决多进程服务端创建进程资源浪费问题
原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/9613861.html 好了,继上一篇说到多进程服务端也是有缺点的,每创建一个进程就代表大量的运 ...
- Clojure 开发环境 light table 和 Leiningen 安装指引
1 首先下载 Light table 然后 解压到到一文件夹.目录中千万不能有空格 下载地址 http://www.lighttable.com/ 2下载构建工具 下载地址 http://leinin ...
- D3介绍
D3介绍 D3是用来做web页面可视化的组件,其官方网址为http://d3js.org 安装 D3类库的文件只有一个d3.js.下载后直接在html的<script>标签中引用此js就可 ...
- 【c++】流状态的查询和控制
源自 c++primer 4th, 248页 代码 #include <iostream> #include <limits> #include <stdexcept&g ...
- bzoj 4709: [Jsoi2011]柠檬
Description Flute 很喜欢柠檬.它准备了一串用树枝串起来的贝壳,打算用一种魔法把贝壳变成柠檬.贝壳一共有 N (1 ≤ N ≤ 100,000) 只,按顺序串在树枝上.为了方便,我们从 ...
- nodejs时间工具类
/** * * @fmt 格式化字符串 * @Date 为需要格式化的日期 * * 示例:format(new Date(),'yyyy-MM-dd hh:mm:ss'); * 返回值为字符串 */ ...
- easyui扩展行默认展开 以及 去除滚动条
问题背景: 在做打印页面的时候,要求有详细的默认展开显示. 遇到的问题: 1)在用扩展行的时候,grid的所有行都添加了展开收起的图标,(第二行没有明细)如下 2)默认展示有详细行的时候,内 ...
- webpack 启动 vue
右击 package.json 单击show npm Scripts
- oozie安装总结
偶然的机会,去面试的时候听面试官讲他们的调度系统是基于hue+oozie,以前一直没有接触过,今天趁有空,尝试一下oozie 1.环境说明 cat /etc/issue CentOS release ...
- 项目经验:GIS<MapWinGIS>建模第四天
实现了查询,与定位功能