Paper Reading 4:Massively Parallel Methods for Deep Reinforcement Learning

來源:ICML 2015 Deep Learning Workshop

作者:Google DeepMind

創新點:構建第一個用於深度增強學習的大規模分佈式結構

該結構由四部分組成:

  • 並行的行動器:用於產生新的行爲
  • 並行的學習器:用於從存儲的經驗中訓練
  • 分佈式的神經網絡:用於表示value function或者policy
  • 分佈式的經驗存儲

實驗結果:

將DQN應用在該體系結構上,訓練的水平在49個遊戲中有41個遊戲超過沒有分佈式DQN的水平,並且減少了訓練時間

優點:

  • 訓練效果更好
  • 訓練時間更短

缺點:

  • 並行分佈式主要缺點恐怕是能耗高,造價昂貴,門檻高了。一般人沒辦法搞這個

可改進之處:

主要需要改進的是算法層面。比如DQN一次只訓練一個遊戲,能不能同時訓練多個同一個遊戲來提升速度?

詳細分析:

Introduction 介紹

再看這些介紹,就有點廢話了:Deep Learning 在視覺和語音上取得了巨大的進展,歸因於能夠自動的提取高level的特徵。當前增強學習成功地結合了深度學習的成果,也就是DQN,在Atari 遊戲上取得breakthrough。
但是,問題來了(引出動機Motivation
之前的DQN只是在單個機器上訓練,需要消耗大量的訓練時間,因此,目標出來了:建立一個分佈式的結構從而能夠充分利用當前的計算資源提升計算速度。

深度學習本身就比較容易並行處理。採用GPU加速。這一方面主要研究的就是如何使用大規模的並行計算來訓練巨量的數據,從而取得更好的訓練效果。這方面不管Google還是Baidu都在做。

機會在於:還沒有人做增強學習系統,所以,把DQN並行化顯然值得一做!

增強學習的一個特點是agent會因爲和環境交互導致訓練的數據分佈不一樣。所以,依然是很自然的想法:弄多個agent並行的訓練 每個agent各種存儲自己的經驗到經驗池,那麼就是分佈式的經驗池了。這將使整個經驗池的容量大大增加!並且不同的agent還可以用不同的policy來獲取不同的經驗。想想都興奮呀!

接下來就是分佈式的學習器(好多個)從不同經驗池中學習,更新網絡的參數。所以,連參數都是分佈式的。那麼,問題是最終的參數的如何合併的??

這就是Google DeepMind的成果了:Gorila(General Reinforcement Learning Architecture)也就是通用增強學習結構。更快更強!

個人思考:不管是那一個研究,都是循序漸進,一步一步走。那麼對於之前的外行只是因爲熱愛才進入這個領域,又沒有指導,自能自己摸索的人,到底應該怎麼做才能趕上並找到好的切入點並做出好的成果呢?當然了,DRL這個領域有太多能做的,隨便一個和決策及控制相關的問題都可以結合。But we want to make it general!!

這部分就是查查資料看看以前有沒有並行RL的工作,顯然也是會有的。介紹一下他們的工作羅:

  • Distributed multi-agent systems:就是多個agent共同作用在一個環境中,通過協作來獲取共同的目標。所以,他們的算法更多關注的是有效的teamwork及整體行爲
  • Concurrent reinforcement learning:併發增強學習。就是一個agent作用在多個分佈環境中(平行宇宙呀)

這裏的方法和上面不一樣,只是想通過使用並行計算來提升single-agent problem的效率。

  • MapReduce Framework:不知道是神馬得看論文,主要侷限於linear function approximation。

最後是最接近的工作:
- 並行的Sarsa算法。每個計算機有單獨的agent和環境,運行簡單的linear sarsa算法。參數週期性的互相通信,聚焦與那些改變最多的參數。

對比本文的方法,就是允許客戶端-服務器的通信,並且將動作,學習和參數更新三部分分開。當然,最重要的就是應用深度學習。

Background

DistBelief

Google 的分佈式深度學習系統,主要體現在
1. Model parallelism 模型並行。不同的機器訓練模型的不同部分
2. Data parallelism 數據並行。同一個模型訓練數據的不同部分。

DQN

在之前的文章中已分析,不再重複。

Gorila (General Reinforcement Learning)

這裏寫圖片描述
上圖即爲Gorila的結構圖,分成以下幾部分:

  • Actors 行爲器。就是選擇動作執行。Gorila裏面有N個不同的動作進程,每個actor在相同的環境中產生各自不同的動作系列。當然,也因此,得到的狀態空間state space也是不同的。每個actor都複製一份Q-network用於生成動作,Q-network的參數週期性的從參數服務器中同步。
  • Experience replay memory 經驗池。把每個actor的狀態動作系列都存起來。總的replay memory就可以根據需要進行裁剪。
  • Learners 學習器。Gorila包含N個學習器進程。每一個也都複製一個Q-network。每一個學習器從經驗池中採樣數據。學習器應用off-policy增強學習算法比如DQN。然後獲得的梯度傳送給parameter server進行參數更新。
  • Parameter server 參數服務器。參數服務器存儲N個版本的Q-network在不同的機器上。每個機器只應用梯度更新部分參數。採用異步隨機梯度下降asynchronous stochastic gradient descent算法。

Gorila DQN

這裏寫圖片描述
上面的描述看起來會比較長,實際上就僅僅是將分佈式加入到算法當中。對於DQN沒有任何改變。主要需要考慮的就是不同機器上的參數如何協調更新的問題,要保證系統的穩定性。

實驗

很顯然的,分佈式版本會比單機版的效果更好,兩個原因:

  • 訓練時間相對單機有巨大提升。
  • 參數更新上和單機版本的不同,是部分更新,每個機器上更新的參數不一樣。這種異步更新對結果會有一定影響。而且這裏採用AdaGra而不是RMSProp

所以,結果上看雖然大部分的遊戲效果都更好,但也有一些遊戲效果反而差了。

這也說明不同探索遊戲空間的方式對遊戲會產生較大的變化。

事實上DQN之後的一些版本都沒能做到對每個遊戲的水平都提升。這也是個值得深入探討的問題。

小結

Gorila是第一個大規模的分佈式深度增強學習框架,當然了並沒有開源。Gorila的學習和動作執行都是並行的,採用分佈式的經驗池和分佈式的神經網絡。採用Gorila說明了在加大計算力的情況下,算法水平能夠得到大的提升,這印證了深度學習在增加計算力和時間的情況下看不到上限的情況。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章