zoukankan      html  css  js  c++  java
  • 几句话总结一个算法之DQN

    • 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),做法都很直白,有需要可以去了解下

  • 相关阅读:
    Python import与from import使用及区别介绍
    python with as的用法
    python32模拟鼠标和键盘操作
    Python简易爬虫
    C# 控制台程序 托盘图标 事件响应
    C#和.Net的关系
    springboot集成schedule
    工作-感觉越来越难了
    MAC VCS 提交代码
    编程规范
  • 原文地址:https://www.cnblogs.com/daniel-D/p/11004923.html
Copyright © 2011-2022 走看看