zoukankan      html  css  js  c++  java
  • DQN中的ReplayBuffer和TargetNetwork有什么好处?

    Intro

    众所周知,在2014年,Deepmind使用DQN刷新了强化学习在Atari游戏上的SOTA记录。使DQN成为当年的SOTA,主要依靠两大利器:ReplayBuffer和TargetNetwork。


    ReplayBuffer

    采样与更新是这样的: 更新是在采样中的,更新和采样靠replayBuffer进行联系。连续多次采样,当采样数量每达到一次阈值,则进行一次更新。采样得到的样本扔进ReplayBuffer,更新使用ReplayBuffer中的数据。

    至于它有什么好处,Paper中的原话是

    To alleviate the problems of correlated data and non-stationary distributions

    有两点,一、打消采样数据相关性。二、让数据分布变得更稳定。这两点都是针对Q-learning的缺点提出来的。

    • 打消采样数据相关性:同一个episode前后step的数据是高度相关的,如果按照Q-learning的每个step后紧着进行更新,那么迭代过程会出现较大方差。
    • 采样数据分布稳定性:DQN是连续多次采样,然后进行一次更新。你将一沓(s,a,r,s)放在Buffer中后,那么就可以按照batch进行处理,按照batch投入神经网络中进行计算更新。在Q-learning中每次更新只使用一个tuple啊!

    想用神经网络来搞RL,那就得有ReplayBuffer。2014年DQN中的ReplayBuffer准确讲应该叫vanilla ReplayBuffer。它没有作什么对buffer池中数据的处理,后面也出了一些改进,现在大家用的都是Priority Replay Buffer了。


    TargetNetwork

    在Q-learning中,用来更新的TD Target是(r + gamma*Q_{max}),这里的MAXQ是即时查表获得。
    DQN用神经网络把这个Q表取代掉了,那么假如我们使用被更新的network来产出(Q_{max}),那这个TD Target是频繁变动,稳定性没了。出于这一点考虑,我们分出来targetNet和evalNet。让targetNet的更新频率比evalNet更低,那么我们的td target就不会频繁变动了,不就解决了吗?

  • 相关阅读:
    NetBeans 时事通讯(刊号 # 147 May 18, 2011)
    NetBeans 时事通讯(刊号 # 146 May 13, 2011)
    准备入职支付宝
    NetBeans 时事通讯(刊号 # 145 May 05, 2011)
    GAE 博客——B3log Solo 0.2.6 正式版发布了!
    用C语言实现一个简单的HTTP客户端(HTTP Client)
    Grack Ruby/Rack Git SmartHTTP Server Handler
    Cpy
    pyhttp 用Python演示Web服务器/客户端对HTTP协议的解析
    用C语法来写Python代码
  • 原文地址:https://www.cnblogs.com/dynmi/p/13994342.html
Copyright © 2011-2022 走看看