zoukankan      html  css  js  c++  java
  • DQN(Deep Reiforcement Learning) 发展历程(五)

    DQN发展历程(一)

    DQN发展历程(二)

    DQN发展历程(三)

    DQN发展历程(四)

    DQN发展历程(五)

    值函数的近似

    • 当状态-动作数目太多时,使用表格存储所有的状态-动作会造成维度灾难,无法求解大规模问题。
    • 可以采用一个函数来近似这个这个表格,输入状态-动作,输出对应的状态值。
    • 可以使用神经网络来充当这个近似函数。

    DQN

    • 使用来一个神经网络来作为近似函数求解状态值。
    • 每一步都更新这个神经网络,由于每步之间的输入数据是相关的,无法满足神经网络输入数据独立同分布的要求。
    • 由此,使用一个经验池来存储更新过的(S,A,R),隔一段时间随机从这个经验池中抽取一个batch的(S,A,R)来修正神经网络的权值,以打乱数据之间的相关性。

    Nature DQN

    • 在此之前,训练时,计算状态值使用的是这个神经网络估计,而更新神经网络也使用同一个神经网络来估计状态值,容易造成过拟合,不利于算法的收敛。
    • 于是,使用两个神经网络,一个用于策略的选择,一个用于状态值的更新。用于策略选择的神经网络,隔一段时间和另一个神经网络同步一次。通过异步更新加速算法的收敛。

    DDQN

    • 在DQN中,每次更新状态值都使用贪婪法选取最大的状态值来更新,每次都选择最大,容易造成过度估计。
    • DDQN在选择动作时分为两步,先在当前在选择动作的Q网络找到最大Q值对应的动作a,再把a代入计算Q值的网络中获得Q值。

    Prioritized Replay DQN

    • DQN在经验池中随机选取batch更新神经网络,但是batch中每个(S,A,R)对神经网络的作用是不同的。通过对每个(S,A,R)做优先级排序,优先使用更新神经网络误差大的数据项,达到加速收敛的目的。

    Dueling DQN

    • 而 Dueling DQN 则对Q值改进。由于某些情况下,采用不同的动作对状态对不大,所以把Q分解为两个部分:
    • 第一部分价值函数是仅仅与状态S有关,与具体要采用的动作A无关。
    • 第二部分优势函数同时与状态S和动作A有关
    • 通过最后再把两部分合并,通过解耦Q使得对不同的状态有更好的灵敏度。

    参考

    david siver 课程

    https://home.cnblogs.com/u/pinard/

  • 相关阅读:
    JZOJ5809 数羊
    P3313 [SDOI2014]旅行
    2019.10.22 NOIP模拟测试 day2
    P4322 [JSOI2016]最佳团体
    P1850 换教室
    P3225 [HNOI2012]矿场搭建
    P2607 [ZJOI2008]骑士
    2019.10.21 NOIP模拟测试 day1
    AFO
    禁止加载浏览器图片
  • 原文地址:https://www.cnblogs.com/vancasola/p/10436186.html
Copyright © 2011-2022 走看看