• DQN利用深度学习对Q-learning的一个扩展,回顾上篇文章,Q-learning的核心在于Q(s,a)的建模。如果状态s非常复杂,很难通过一张表来存储所有的状态。

  • 深度学习正好可以自动提取s的特征,所以我们只需要对Q(s,a)建立一个深度学习网络

  • 但是s可能是一个极高维度的向量,a可能只低维度向量(如上下左右),建模起来可能有点困难

  • 解决的办法是,对每个动作a都建一个网络。因为对于每个网络的a输入的是个固定值,没有任何信息量可以忽略掉,问题就可以简化为对每个动作建立一个网络来表示Q(s)

  • 更进一步简化,这些网络在特征提取层可以参数共享一起训练,在输出层则输出各自动作的期望奖励,做法类似于现在的多任务学习

  • 与Q-learning原理相同,Q(s, a)表示了模型根据历史数据的预测奖励,而Q'(s,a)表示对当前行动的预测奖励。一个好的模型,Q(s,a) 和 Q'(s,a)应该尽量接近,用平方损失函数正好可以表示

  • 其他一些trick:experience replay 和 异步更新(Double DQN),做法都很直白,有需要可以去了解下

几句话总结一个算法之DQN的更多相关文章

  1. 几句话总结一个算法之Q-Learning与Sarsa

    与Policy Gradients的不同之处在于,这两个算法评估某个状态s执行某个动作a的期望奖励,即Q(s,a) Q(s,a) 有两种方法计算方法,第一种直接查表或者模型预估,Q(s, a) = c ...

  2. 几句话总结一个算法之RNN、LSTM和GRU

    RNN 一般神经网络隐层的计算是h=g(w * x),其中g是激活函数,相比于一般神经网络,RNN需要考虑之前序列的信息,因此它的隐藏h的计算除了当前输入还要考虑上一个状态的隐藏,h=g(w*x+w' ...

  3. 几句话总结一个算法之CTR预估模型

    背景 假设现在有个商品点击预测的任务,有用户端特征性别.年龄.消费力等,商品侧特征价格.销量等,样本为0或者1,现在对特征进行one hot encode,如性别特征用二维表示,男为[1,0],女为[ ...

  4. 几句话总结一个算法之Policy Gradients

    强化学习与监督学习的区别在于,监督学习的每条样本都有一个独立的label,而强化学习的奖励(label)是有延后性,往往需要等这个回合结束才知道输赢 Policy Gradients(PG)计算某个状 ...

  5. 我和小美的撸码日记(3)之中的一个句话搞定MVC表单页数据绑定与提交

    另外献上在<线体验Demo地址>希望大家也能从中得到一些启示. 地址:http://121.40.148.178:8080/ . username:guest,password:12345 ...

  6. 使用yii的layout,加入<?php echo $content; ?>这句话时,它会自动在子页面上面添加一个div包裹

    使用yii的layout,加入<?php echo $content; ?>这句话时,它会自动在子页面上面添加一个div包裹,而且div的id命名为id=content,这个和已有id重复 ...

  7. NOIP前必须记住的30句话

    NOIP前必须记住的30句话 1.比赛前一天晚上请准备好你的各种证件,事先查好去往考场的路线2.比赛之前请先调整你的屏幕分辨率到你喜欢的大小3.比赛之前请把编译器的字体调为你平时惯用的字体,尤其是注意 ...

  8. 某C++神作,就100句话而已

    假设p是指针,当delete p;时,后面一定要p=NULL将p指向空 cin cout cerr 都是iostream类型的对象.cout<<"hello world" ...

  9. 五句话搞定JavaScript作用域

    JavaScript的作用域一直以来是前端开发中比较难以理解的知识点,对于JavaScript的作用域主要记住几句话,走遍天下都不怕... 一.“JavaScript中无块级作用域” 在Java或C# ...

随机推荐

  1. dedecms5.7执行PHP代码的用法

    dedecms5.7执行PHP代码的用法 {dede:php} echo 'test'; {/dede:php}

  2. jQuery.form 上传文件

    今年大部分是都在完善产品,这几天遇到了一个问题,原来的flash组件不支持苹果浏览器,需要改.在网上搜了下,看到一个jQuery.form插件可以上传文件,并且兼容性很好,主要浏览器大部分都兼容,插件 ...

  3. JAVA操作InfluxDB的一个Demo

    一.基础连接类 package com.test.repository.utils; import com.dcits.domain.entry.bo.common.InfluxDbRow; impo ...

  4. python 绘图与可视化 Graphviz 二叉树 、 error: Microsoft Visual C++ 14.0 is required

    需要对二叉树的构建过程进行可视化,发现了这个Graphviz软件,他对描绘数据间的关系十分擅长. 下载链接:https://graphviz.gitlab.io/_pages/Download/Dow ...

  5. python高级编程——锁

    锁           在使用用的过程中需要导入threading模块的Lock类 使用锁: 当多个线程几乎同时修改某一个共享数据的时候,需要进行同步控制 线程同步能够保证多个线程安全访问竞争资源,最 ...

  6. css的尺寸、display的属性、以及浮动和清除浮动的方法

    css的尺寸width heightline-height 行高是由三部分构成,上间距 文本高度 下间距,且上下间距相等.所以文字居中.行高:一旦设置了行高,元素内部必须有内容.line-height ...

  7. awit的用法,等待执行结果

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. ORACLE百分比分析函数RATIO_TO_REPORT() OVER()

    有时候不用的指标的绝对值不能比,但是转转为百分比的形式就容易看出波动了,是数据分析的好用的一个分析函数 20:00:24 SYS@orcl> conn scott/tiger; Connecte ...

  9. JavaScript 弹出框

    JavaScript 有三种类型的弹出框:警告框.确认框和提示框. 警告框 如果要确保信息传递给用户,通常会使用警告框. 当警告框弹出时,用户将需要单击“确定”来继续. 语法 window.alert ...

  10. Kotlin开发springboot项目(一)

    Kotlin开发springboot项目(一) Kotlin语言与Xtend语言有很多相似之处 为什么会存在这么多JVM语言? 现存的语言提供了太过受限制的功能,要不就是功能太过繁杂,导致语言的臃肿和 ...