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就不會頻繁變動了,不就解決了嗎?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM