看过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核心思想理解的更多相关文章

  1. Rookey.Frame v1.0 视频教程之三发布-框架核心思想介绍

    本期发布视频: (三)Rookey.Frame v1.0框架核心思想 介绍了Rookey.Frame v1.0框架搭建的核心思想,将框架核心思想理解清楚,对框架运行就会得心应手 官方视频教程: htt ...

  2. 《深入理解Spark:核心思想与源码分析》——SparkContext的初始化(叔篇)——TaskScheduler的启动

    <深入理解Spark:核心思想与源码分析>一书前言的内容请看链接<深入理解SPARK:核心思想与源码分析>一书正式出版上市 <深入理解Spark:核心思想与源码分析> ...

  3. 《深入理解Spark:核心思想与源码分析》(前言及第1章)

    自己牺牲了7个月的周末和下班空闲时间,通过研究Spark源码和原理,总结整理的<深入理解Spark:核心思想与源码分析>一书现在已经正式出版上市,目前亚马逊.京东.当当.天猫等网站均有销售 ...

  4. 《深入理解Spark:核心思想与源码分析》(第2章)

    <深入理解Spark:核心思想与源码分析>一书前言的内容请看链接<深入理解SPARK:核心思想与源码分析>一书正式出版上市 <深入理解Spark:核心思想与源码分析> ...

  5. 《深入理解Spark:核心思想与源码分析》一书正式出版上市

    自己牺牲了7个月的周末和下班空闲时间,通过研究Spark源码和原理,总结整理的<深入理解Spark:核心思想与源码分析>一书现在已经正式出版上市,目前亚马逊.京东.当当.天猫等网站均有销售 ...

  6. 《深入理解Spark:核心思想与源码分析》正式出版上市

    自己牺牲了7个月的周末和下班空闲时间,通过研究Spark源码和原理,总结整理的<深入理解Spark:核心思想与源码分析>一书现在已经正式出版上市,目前亚马逊.京东.当当.天猫等网站均有销售 ...

  7. Spring核心思想:“控制反转”,也叫“依赖注入” 的理解

    @Service对应的是业务层Bean,例如: @Service("userService") public class UserServiceImpl implements Us ...

  8. Hibernate核心思想—ORM机制(一)

    转:http://blog.csdn.net/wanghuan203/article/details/7566518 hibernate是一个采用ORM(Object/Relation Mapping ...

  9. python中 and 和 or 运算的核心思想 ——— 短路逻辑

    python中 and 和 or 运算的核心思想 --- 短路逻辑 1. 包含一个逻辑运算符 首先从基本的概念着手,python中哪些对象会被当成 False 呢?而哪些又是 True 呢? 在Pyt ...

随机推荐

  1. FocusBI: 使用Python爬虫为BI准备数据源(原创)

    关注微信公众号:FocusBI 查看更多文章:加QQ群:808774277 获取学习资料和一起探讨问题. <商业智能教程>pdf下载地址 链接:https://pan.baidu.com/ ...

  2. 【vm安装vmtools】

    使用sudo ./安装命令 对vmware-tools-distrib文件夹里面vmware-install.pl文件夹进行安装 sudo ./vmware-install.pl

  3. tomcat 修改 编码

    <Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8080" ...

  4. 使用C#委托来实现异步编程

    最近在我参与的几个.Net项目中都有用到异步编程,作为一名.Net小白,很有必要好好地学习一下异步编程. 什么是异步编程 异步编程指的就是不用阻塞当前线程来等待任务的完成,而是将任务扔到线程池中去执行 ...

  5. android socket 通讯(客户端) 发送数据

    /** ClientSocket通讯类 **/  public class ClientSocket  {     /**服务器地址*/     private String serverUrl=&q ...

  6. Expression Blend实例中文教程(2) - 界面快速入门

    上一篇主要介绍Expression系列产品,另外概述了Blend的强大功能,本篇将用Blend 3创建一个新Silverlight项目,通过创建的过程,对Blend进行快速入门学习. 在开始使用Ble ...

  7. Ajax发送GET、POST请求和响应XML数据案例

    1.新建工程 新建一个java web工程,新建一个Servlet文件 AServlet.java,用于返回get和post请求. public class AServlet extends Http ...

  8. fabu dao fenleizhong

    IsAggregated IsAggregatedIsAggregated IsAggregatedIsAggregated IsAggregatedIsAggregated IsAggregated ...

  9. Springboot简单整合Rabbit

    两个项目.分别是生产者和消费者项目 .首先引入依赖.两边pom都一样 第一次练习,启动生产者后,再启动消费者,一直报找不到 队列的声明. 后排查发现是  需要现在生产者这边浏览器访问一次生产消息的方法 ...

  10. Linux必会必知

    一.前言 Linux作为一个开源系统,被极客极力推崇,作为程序员不来了解一下,那就亏了 Linux是一种自由和开放源代码的类UNIX操作系统.该操作系统的内核由林纳斯·托瓦兹在1991年10月5日首次 ...