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 ...
随机推荐
- Clojure编写一个阶乘程序 使用递归
这是递归 (def f (fn fb [x] (if (< x 2) 1 (* x (fb (- x 1)) ) ) ) ) ( ...
- html的img标签
html显示图片 1.最简单: <img src="图片路径"/> 2.如果要改变图片显示的尺寸 <img src="图片路径" width= ...
- MySQL事务实现原理
MySQL事务隔离级别的实现原理 知识储备 只有InnoDB支持事务,所以这里说的事务隔离级别是指InnoDB下的事务隔离级别 隔离级别 读未提交:一个事务可以读取到另一个事务未提交的修改.这会带来脏 ...
- Maven是什么
一.Maven是什么 Maven是一个Apache公司的开源项目,是项目构建工具.用来管理依赖. 1.Maven的好处 使用maven可以在项目中不用导入项目依赖的jar包,省去了下载和导入jar包的 ...
- sqlite、mysql 将时间戳转换成本地时间语句
sqlite:SELECT datetime(createdTime, 'unixepoch', 'localtime'); mysql:SELECT FROM_UNIXTIME( 124948800 ...
- Codeforces 156B Suspects——————【逻辑判断】
Suspects Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Submit St ...
- [转]JavaScript和html5 canvas生成圆形印章
本文转自:http://www.cnblogs.com/dragondean/p/6013529.html 代码: function createSeal(id,company,name){ var ...
- 启动memcache 服务器端
# memcached -d -m 10 -u root -p 11211 -c 256 -P /tmp/memcached.pid -d选项是启动一个守护进程, -m是分配给Memcache使用的内 ...
- Heka 的配置文件加载逻辑
Heka 使用的是 TOML 格式的配置文件, 有关 golang 加载 TOML 配置文件的技术请参看: http://www.cnblogs.com/ghj1976/p/4082323.html ...
- 深入理解jQuery插件开发总结(三)
容器:一个即时执行函数 根本上来说,每个插件的代码是被包含在一个即时执行的函数当中,如下: (function(arg1, arg2) { // 代码 })(arg1, arg2); 即时执行函数,顾 ...