1. 程式人生 > >揭祕深度強化學習-7DQN的一些小技巧

揭祕深度強化學習-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值的“貪婪”行動。

DeepMind採取的方法是隨著訓練時間逐步降低ε,從最開始的1到後來的0.1——在最開始的時候系統完全隨機移動來最大的探索整個狀態空間,之後逐漸調整這個比率。

DQN演算法

這兩個小技巧補充了我們的DQN演算法如下

DeepMind還應用了許多其它技巧——比如目標網路,誤差剪裁,回報剪裁,但是這些都不在本篇範圍之列。

這個演算法最讓人驚奇的是它可以學習任何東西。因為我們的Q函式是隨機初始化的,它最開始生成的輸出是完全無用的,而我們用這些無用資訊(下一狀態最大Q值)作為網路的目標,只偶爾加入一些微小回報。這聽起來瘋狂,這就能學習任意有意義的東西?事實確實如此。

最後的最後

通常來說,我們還未完全實現人工智慧。只要我們知道它的實現原理,我們不會覺得它很智慧了。但是DQN依然震驚了我。它們實現一個新的遊戲智慧就像野外的動物觀察周圍的環境——只需要它們獲取的獎勵經驗。