算法筆記:Playing Atari with Deep Reinforcement Learning

Playing Atari with Deep Reinforcement Learning

 

比較尷尬,上篇文章不是DQN的來源,這篇纔是。上篇Nature文章對於DQN做出的改進上次沒讀明白,查看其他資料,做實踐的時候才明白。關於Nature的改進下面會提到。

 

基本信息

作者:VolodymyrMnih KorayKavukcuoglu DavidSilver AlexGraves IoannisAntonoglou DaanWierstra MartinRiedmiller

來源:NIPS 2013

機構:DeepMind

 

論文摘要

我們提出了第一個可以從高維輸入中直接學習到控制策略的深度學習模型。這是一個卷積神經網絡,基於Q-learning進行訓練,它的輸入就是像素點,輸出是一個可以預估未來獎勵的值函數。我們使用同樣的算法和網絡結構去學習Atari 2600的遊戲,我們發現在6個遊戲上它超過了之前所有的方法並在三個遊戲上超過了人類專家。

 

論文背景目的和思想

關於背景和目的,其實在上篇博文論文筆記:Human-level control through deep reinforcement learning中說的已經差不多了。強化學習Q-learning很好使,但是它不適宜處理高維數據,獎勵函數需要人爲的去設定,因此,很自然的我們就想到,是不是可以用神經網絡去擬合一個獎勵函數(當然,這個過程用遇到了無數的困難)。通過這種方式,我們就可以構建一個比較通用的模型去處理不同的問題,就比如在本文中,各種遊戲都可以玩,模型都能很好的學習到控制策略,甚至連超參數都不需要改。通過這種方式,我們希望可以解決Q-learning的通用性的問題。

這個的實現肯定不是一帆風順的,遇到的問題在上篇文章中也提到了。

1、DL需要大量帶標籤的樣本進行監督學習;RL只有reward返回值,而且伴隨着噪聲,延遲(過了幾十毫秒才返回),稀疏(很多State的reward是0)等問題;
2、DL的樣本獨立;RL前後state狀態相關;
3、DL目標分佈固定;RL的分佈一直變化,比如你玩一個遊戲,一個關卡和下一個關卡的狀態分佈是不同的,所以訓練好了前一個關卡,下一個關卡又要重新訓練;
4、過往的研究表明,使用非線性網絡表示值函數時出現不穩定等問題。

1、通過Q-Learning使用reward來構造標籤(對應問題1)
2、通過experience replay(經驗池)的方法來解決相關性及非靜態分佈問題(對應問題2、3)

另外就是通過一個神經網絡產生當前Q值,使用另外一個神經網絡產生Target Q值的方法來解決問題4。在這裏我把nature的原文摘錄以下,之前讀的時候沒注意,太簡略了。

引入target_net後,再一段時間裏目標Q值使保持不變的,一定程度降低了當前Q值和目標Q值的相關性,提高了算法穩定性。

 

相關工作

這篇博文的內容實在是太少了,介紹以下related work,感受以下這方面的發展成果和脈絡。

TD-gammon是在此之前最出名的強化學習相關的方法,TD-gammon使用了類似於Q-learning的算法,用多層感知機來逼近value function,這種方法在西洋雙陸棋上僅僅通過自對弈就取的到遠遠超過其他算法和人類的水平。受這個成果的激勵,TD-gammon被用在其他的問題上,比如其他棋類,或者是玩遊戲。但是效果都不大理想,這可能是因爲在擲色子的過程中,擲色子的隨機性幫助算法探索狀態空間,同時使得值函數變得更加穩定。

後來,使用非線性函數的Q-learning算法在實踐中被發現無法收斂。線性函數比非線性函數有更好的收斂性。

再到後來,大家開始嘗試將深度學習和強化學習相結合,提出了具體的模型,並且針對非線性不收斂的問題提出瞭解決方法,比如 gradient temporal-difference,但是這些方法沒有擴展到nonlinear control。

 

 

 

方法描述

NIPS的文章寫的就詳細多了。

Q-learning的基本公式:

對於一個神經網絡,要想迭代,就要有損失函數。這裏的損失函數是希望獎勵函數的預估在迭代中儘可能的變得穩定。

算法裏面涉及到經驗回訪的內容在上個博文中已經重點講了。

 

實驗結果

作者測試了七個遊戲,輸入就是像素值,和分數,輸出就是控制策略。七個遊戲都保持了同樣的網絡,但是作者做了一個小小的改變,就是這些遊戲的計分方式是不同的,作者統一把正獎勵定位+1,負獎勵定位-1,不變就是0,這樣子同樣的網絡和參數就能得到穩定的結果。

從表格中我們可以看到,DQN超過了其他的各種算法,但是我們同樣要看到,在大多數遊戲中,DQN與人類依然有很大的差距。

另外還有一個顯著的問題就是得分在迭代過程中十分不穩定(雖然效果還是不錯)。另外,Atari上一共可以找出47種遊戲,在nature那篇文章中DQN是全面超過了過去所有的方法,但是在這篇文章中只列舉了7種,是不是代表其他的遊戲用目前的方法不行呢?

總結

這樣把DQN的來源給補齊了,思想上上篇文章都說了,說一下感慨。2013年的這篇文章是DQN的原型,當時的效果還不是特別好,說這個模型會玩遊戲應該是比較勉強的,實在是太不穩定了。直到2015年,又提出這個網絡的參數不一定要次次迭代,保留一箇舊的參數帶入損失函數,過一段實踐之後再把新參數複製回去,這樣子模型的穩定性會好很多。我能理解這樣做可以繼續減少參數的相關性,但至於爲什麼減少相關性之後收斂的就更好了,還是很難理解。再後來,就有了2016年大戰李世石的阿爾法狗,再後來就是戰勝柯潔的Zero版本。到現在,大家在研究怎麼用它來打星際爭霸,王者榮耀,裏面看來還是有太多太多沒有解決的問題,這個可能要自己親自處理問題才能體會到。

下面做一些小小的實踐補充以下經驗吧,都是網上可以找得到的教程和實戰。

https://github.com/caozixuan/RL_Learning

參考:實戰強化學習DQN

 

 

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