揭祕深度強化學習-7DQN的一些小技巧
看完覺得深受啟發的一篇文章,根據自己的理解翻譯過來留以後再次翻看
經驗回放(Experience Replay)
至今我們已經知道如何通過Q-learning和近似Q函式的CNN來評估任一狀態的未來獎勵。但是關於Q值的漸近使用的是非線性函式並不穩定。這裡有一些小技巧來幫助它收斂。即便如此,強化學習仍需要花費很長的時間,一個獨立的GPU用一週也是常事。
最重要的技巧是經驗回放(experience replay)。遊戲過程中,我們會形如<s,a,r,s′>儲存過往經驗在快取中 。當訓練NN時,我們不使用最近獲得的經驗,而是從快取中隨機取樣。這就打破了相似的連續訓練樣本。為什麼要打破呢?因為連續相似樣本可能會導致NN只能獲得區域性最優解。同樣的經驗回放使訓練任務與普通的監督學習更相似,這簡化了除錯和測試演算法。我們可以從人們玩遊戲的樣本中取得同樣的資料並且以此訓練網路
探索利用兩難(Exploration-Exploitation)
Q-learning試圖解決信用分配問題——及時傳播回預期獎勵資訊,直到真的拿到分數。但是我們還沒有解決探索-利用兩難問題(Exploration-Exploitation)。
首先看一下,當一個Q表或者Q網路被隨機初始化,它的預測值也是隨機的。如果我們通過行動選擇最高Q值,這個行動會是隨機的而且智體會嚴格執行“利用”,即每次都選擇最高值。這種探索時貪婪的,它總是停在找到的第一個有效策略那裡,對於其他的行動不屑一顧。
對於上述難題有一個簡單的補救方法,就是ε-貪婪探索——選擇行動時有ε的可能性是選擇隨機行動,否則選擇最高Q值的“貪婪”行動。
DQN演算法
這兩個小技巧補充了我們的DQN演算法如下
DeepMind還應用了許多其它技巧——比如目標網路,誤差剪裁,回報剪裁,但是這些都不在本篇範圍之列。
這個演算法最讓人驚奇的是它可以學習任何東西。因為我們的Q函式是隨機初始化的,它最開始生成的輸出是完全無用的,而我們用這些無用資訊(下一狀態最大Q值)作為網路的目標,只偶爾加入一些微小回報。這聽起來瘋狂,這就能學習任意有意義的東西?事實確實如此。
最後的最後
通常來說,我們還未完全實現人工智慧。只要我們知道它的實現原理,我們不會覺得它很智慧了。但是DQN依然震驚了我。它們實現一個新的遊戲智慧就像野外的動物觀察周圍的環境——只需要它們獲取的獎勵經驗。