DQN中的ReplayBuffer和TargetNetwork有什么好处?
Intro
众所周知,在2014年,Deepmind使⽤DQN刷新了强化学习在Atari游戏上的SOTA记录。使DQN成为当年的SOTA,主要依靠两⼤利器:ReplayBuffer和TargetNetwork。eval是做什么的
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+γ∗Q max,这⾥的MAXQ是即时查表获得。
DQN⽤神经⽹络把这个Q表取代掉了,那么假如我们使⽤被更新的network来产出Q max,那这个TD Target是频繁变动,稳定性没了。出于这⼀点考虑,我们分出来targetNet和evalNet。让targetNet的更新频率⽐evalNet更低,那么我们的td target就不会频繁变动了,不就解决了吗?
Processing math: 100%
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论