深度強化學習當中加入Memory replay的原因和作用是什麼?
01-31
深度強化學習當中,這裡我知道的就是DQN當中,其中加入Memory replay的原因和作用是什麼? 我看到說是為了去除數據的關聯性,不是很明白。
對於不可枚舉狀態的環境,一般採用函數逼近(Value Function Approxiamation)來擬合和泛化Q。DQN是在監督學習的框架下工作的,而loss是基於RL的。而問題就在監督學習和RL:監督學習假設樣本是iid的,而RL中的強序列關聯性不符合這個假設。為了收斂性的trade-off,採用Memory Replay,這樣會緩和樣本的關聯性。好處有二:其一演算法收斂,其二提高泛化能力。
DQN這篇文章的演算法就是Q-learning+function approximation(只不過function approximation是比較特殊的),每一次根據所獲得的來更新Q-value,本質就是stochastic gradient descent (SGD)。一般在用mini-batch SGD做優化時,都假設樣本之間的相對獨立,從而使得每個mini-batch內數據所含的雜訊相互抵消,演算法收斂的更快。
在這個問題中,之所以加入experience replay是因為樣本是從遊戲中的連續幀獲得的,這與簡單的reinforcement learning問題(比如maze)相比,樣本的關聯性大了很多,如果沒有experience replay,演算法在連續一段時間內基本朝著同一個方向做gradient descent,那麼同樣的步長下這樣直接計算gradient就有可能不收斂。因此experience replay是從一個memory pool中隨機選取了一些expeirence,然後再求梯度,從而避免了這個問題。
原文的實驗中指出mini batch是32,而replay memory存了最近的1000000幀,可以看出解決關聯性的問題在DQN里是個比較重要的技巧。
這個experience replay並不新,23年前就有人提出來了,只不過當時沒有convolution networks,沒有好的GPU,只有atari game。推薦閱讀:
※如何利用深度學習打敗水哥王昱珩?
※是否可把CNN用於一維的信號?
※如何評價Momenta ImageNet 2017奪冠架構SENet?