Paper Reading 1 - Playing Atari with Deep Reinforcement Learning

來源:NIPS 2013

作者:DeepMind

理解基礎:

  • 增強學習基本知識
  • 深度學習 特別是卷積神經網絡的基本知識

創新點:第一個將深度學習模型與增強學習結合在一起從而成功地直接從高維的輸入學習控制策略

具體是將卷積神經網絡和Q Learning結合在一起。卷積神經網絡的輸入是原始圖像數據(作爲狀態)輸出則爲每個動作對應的價值Value Function來估計未來的反饋Reward

實驗成果:使用同一個網絡學習玩Atari 2600 遊戲,在測試的7個遊戲中6個超過了以往的方法並且好幾個超過人類的水平。

在這篇文章中,還只是測試7個遊戲,到了Nature的文章則測試了更多的遊戲,並且取得了更好的效果

優點:

  • 算法具備通用性,一樣的網絡可以學習不同的遊戲(當然,遊戲具有相似性)
  • 採用End-to-End的訓練方式,無需人工提取Feature(比如遊戲中敵人的位置等等)
  • 通過不斷的測試訓練,可以實時生成無盡的樣本用於有監督訓練(Supervised Learning)

缺點:

  • 由於輸入的狀態是短時的,所以只適用於處理只需短時記憶的問題,無法處理需要長時間經驗的問題。(比如玩超級瑪麗)
  • 使用CNN來訓練不一定能夠收斂,需要對網絡的參數進行精良的設置才行。

改進辦法:

  • 使用LSTM 來增強記憶性?
  • 改進Q-Learning的算法提高網絡收斂能力。

詳細分析

1 前言介紹 Introduction

提出問題:

直接從高維的輸入(比如視覺或聽覺)來學習一個控制策略 是 RL增強學習的長期挑戰。個人理解:這個問題是人工智能抽象出來的極其重要的子問題,因爲人類都是通過視覺聽覺觸覺等感覺然後來學習一項技能,比如玩遊戲,打籃球,洗碗等等。 解決這個問題的意義在於機器人不一定可以具有自我意識,但是卻可以實現 機器人徹底代替重複性勞動 的願景。

以往的解決辦法:

  • 人工提取特徵(比如物體的位置)
  • 使用線性的value function或者policy策略來表徵

性能的好壞主要取決於特徵提取的好壞

Deep Learning 帶來的機會

當前,深度學習已經在視覺,語音等領域取得突破性進展,根本的方法就是通過神經網絡自動提取複雜特徵。所以,很自然的我們會考慮一個問題:
增強學習能否收益於深度學習

答案當然是YES

從RL看結合Deep Learning的困難之處

  • 深度學習的成功依賴於大量的有標籤的樣本,從而進行有監督學習。而增強學習只有一個reward返回值,並且這個值還常常帶有噪聲,延遲,並且是稀少的(sparse),理解是不可能每個state給個reward。特別是延遲Delay,常常是幾千毫秒之後再返回。
  • 深度學習的樣本都是獨立的,而RL中的state狀態卻是相關的,前後的狀態是有影響的,這顯而易見。
  • 深度學習的目標分佈是固定的。一個圖片是車就是車,不會變。但增強學習,分佈卻是一直變化的,比如超級瑪麗,前面的場景和後面的場景不一樣,可能前面的訓練好了,後面又不行了,或者後面的訓練好了前面又用不了了。

從上面分析出增強學習要結合深度學習存在的三個問題:

  1. 沒有標籤怎麼辦?
  2. 樣本相關性太高怎麼辦?
  3. 目標分佈不固定怎麼辦?

確實,如果沒有這篇文章的突破性創新,我們如何知道怎麼解決這三個問題。這篇文章至少解決了前兩個問題及部分解決了第三個問題。

解決之道 CNN + Q-Learning = Deep Q Network

  1. 通過Q-Learning使用reward來構造標籤
  2. 通過experience replay的方法來解決相關性及非靜態分佈問題

實驗環境

使用Arcade Learning Environment 來訓練Atari 2600 遊戲。
- 目標:使用一個基於神經網絡的agent來學習玩各種遊戲,玩的越多越好。
- 輸入:要求只輸入圖像數據和得分,和人類基本一樣
- 輸出: 控制動作
- 要求:對於不同遊戲,網絡的結構及頂層參數設定一樣

背景知識 Background

要理解這篇文章,沒有背景知識是很難的,雖然作者在這裏介紹了一下RL的基本知識及Q-learning算法以及採用神經網絡來代替Q矩陣的方法,但篇幅太短,沒有基礎很難理解。

核心就是幾個公式:Q-learning ,用neural network的loss function,梯度公式。

有了這幾個公式支撐,整個算法也就理解一半了。
關於背景知識這一塊這裏不進行分析了,之後專門進行介紹。

TD-gammon

看到這裏才知道實際上並不是Deepmind第一次將神經網絡用於RL,TD-gammon使用了MLP(Multi-layer percetron)也就是一般的神經網絡,一個隱藏層(hidden layer)來訓練。並且將其應用到了玩backgammon遊戲上取得了人類水平。但是很可惜的是,當時人們把算法用到其他遊戲象棋圍棋並不成功,導致人們認爲TD-gammon算法只適用於backgammon這個特殊的例子,不具備通用性。

本質上,使用神經網絡是爲了模擬一個非線性的函數(value或者policy都行,比如flappy bird,設定它上升到一個高度下降這就是一個分段函數)。人們發現,將model-free的算法比如Q-learning與非線性函數擬合的方法(神經網絡是一種)很容易導致Q-network發散。因此,大部分的工作就使用線性的函數擬合(linear function approximation),收斂性好。

其他人

顯然不是Deepmind第一個想到把深度學習和增強學習結合在一起的。之前也有人嘗試用深度神經網絡來估計環境environment,估值函數value function或者policy策略。這實際上是三個Deep Learning與Reinforcement Learning結合的思路
並且結合Q-learning發散的問題也被Gradient temporal-difference 方法部分解決。(這個方法具體是神馬還有待學習)
這些方法用在使用非線性來估計固定策略或者使用線性來估計一個控制策略還是證明可以收斂的。 但是這些方法還沒有拓展到非線性控制nonlinear control。

這就是研究點!!!!

最相近的工作 NFQ

採用同樣的loss function,但是使用RPROP(不懂)來更新參數,問題是採用batch update而不是sgd 需要更多的計算開銷而且取決於數據集的大小。

採用deep autoencoder,也是使用visual input。但是不同的是,NFQ是把特徵提取和增強學習分開進行的。先提取特徵,再應用NFQ訓練。
而Deepmind是End-to-End。學習的特徵和最後的動作價值是直接關聯的。也就是學習什麼特徵也是網絡決定

關於Atari 2600 模擬器

使用它做增強學習研究之前就有,但採用的是線性函數估計和獲取的視覺特徵(linear function approximation and generic visual features) 總之之前是人工提取特徵,降維。
HyperNEAT使用神經網絡來代替一個策略,但不同遊戲用不同的網絡。

Deep reinforcement learning

目標

當前深度學習的方式核心在於採用大量的數據集,然後使用SGD進行權值的更新。所以,這裏的目標就是將增強學習的算法連接到深度神經網絡中,然後能直接輸入RGB的原始圖像,並使用SGD進行處理。

對比TD-gammon的改進之處

實際上TD-gammon的思路就是上面的思路,只是訓練是直接獲取experience樣本進行訓練,也就是on-policy。而關鍵是這個算法是20年前的了。所以,經過20年的硬件發展以及深度學習的發展,沒有理由說無法在這上面取得突破。

相比於TD-gammon的在線學習方式,Deepmind使用了experience replay的技巧。簡單的說就是建立一個經驗池,把每次的經驗都存起來,要訓練的時候就 隨機 的拿出一個樣本來訓練。這樣就可以解決狀態state相關的問題。以此同時,動作的選擇採用常規的ϵ -greedy policy。 就是小概率選擇隨機動作,大概率選擇最優動作。

然後呢輸入的歷史數據不可能是隨機長度,這裏就採用固定長度的歷史數據,比如deepmind使用的4幀圖像作爲一個狀態輸入。

整個算法就叫做Deep-Q-Learning

Deep-Q-Learning

算法就是如下了:
這裏寫圖片描述

算法分析:
1. 訓練分成M個episode,每個episode訓練T次。我的理解就是比如玩遊戲,一局是一個episode,一局裏面有很多時間片,就訓練多少次,次數不固定。重啓新的episode主要是初始化state 作爲新的第一個,而不是用上一局的最後的狀態作爲state輸入。
2. 實際上每個循環分成兩部分:一部分是輸出動作並存儲。一部分是隨機從經驗池裏取出minibatch個transitions,然後計算target,根據loss function通過RMSProp更新參數。(minibatch是什麼意思?)
3. 這裏的算法我們可以看到,參數是一直更新的,而Nature的算法改進了,計算target用的是之前的參數。具體算法的變化等之後分析Nature的文章再說。

算法優點對比standard online Q-learning

  • 每一步的經驗都能帶來很多權值的更新,擁有更高的數據效率(個人不是很理解這作爲一個優點,以前的算法就沒有嗎?)
  • 就是experience replay的優勢,打破數據的相關性,降低數據更新的不確定性variance。
  • experience replay的另一個優點就是不容易陷入局部最優解或者更糟糕的不收斂。 如果是on-policy learning,也就是來一個新的經驗就學一個。那麼下一個動作就會受當前的影響,如果最大的動作是向左,那麼就會一直向左。使用experience replay 獲取的行爲的分佈就比較平均,就能防止大的波動和發散。也因此,這是一個off-policy的學習。

實際應用中,只存儲N個經驗在經驗池裏(畢竟空間有限嘛)這個方法的侷限性就是這個經驗池並沒有區分重要的轉移transition,總是覆蓋最新的transition。
所以,採用有優先級的使用memory是一個更好的方式。這也就是阿蒙說的引導的經驗池

預處理與網絡模型架構

因爲輸入是RGB,像素也高,因此,對圖像進行初步的圖像處理,變成灰度矩形84*84的圖像作爲輸入,有利於卷積。
接下來就是模型的構建問題,畢竟Q(s,a)包含s和a。一種方法就是輸入s和a,輸出q值,這樣並不方便,每個a都需要forward一遍網絡。

Deepmind的做法是神經網絡只輸入s,輸出則是每個a對應的q。這種做法的優點就是隻要輸入s,forward前向傳播一遍就可以獲取所有a的q值,畢竟a的數量有限。

具體的模型架構如下:
這裏寫圖片描述

實驗

  • 測試7個遊戲
  • 統一不同遊戲的reward,正的爲1,負的爲-1,其他爲0。這樣做a,R的好處是限制誤差的比例並且可以使用統一的訓練速度來訓練不同的遊戲
  • 使用RMSProp算法,就是minibatch gradient descent方法中的一種。Divide the gradient by a running average of its recent magnitude. 梯度下降有很多種方法包括(SGD,Momenturn,NAG,Adagrad,Adadelta,Rmsprop) 相關問題以後再分析。
  • ϵ -greedy 前1百萬次從1 下降到0.1,然後保持不變。這樣一開始的時候就更多的是隨機搜索,之後慢慢使用最優的方法。
  • 使用frame-skipping technique,意思就是每k frame才執行一次動作,而不是每幀都執行。在實際的研究中,如果每幀都輸出一個動作,那麼頻率就太高,基本上會導致失敗。在這裏,中間跳過的幀使用的動作爲之前最後的動作。這和人類的行爲是一致的,人類的反應時間只有0.1,也是採用同樣的做法。並且這樣做可以提速明顯的。那麼這裏Deepmind大部分是選擇k=4,也就是每4幀輸出一個動作。

訓練

如何在訓練的過程中估計訓練的效果在RL上是個Challenge。畢竟不像監督學習,可以有training 和validation set。那麼只能使用reward,或者說平均的reward來判定。也就是玩的好就是訓練的好。

但是存在問題就是reward的噪聲很大,因爲很小的權值改變都將導致策略輸出的巨大變化,從文章的途中可以看出:
這裏寫圖片描述

以此同時,平均Q值的變化卻是穩定的,這是必然的,因爲每次的Target計算都是使用Q的最大值。:
這裏寫圖片描述

而且很關鍵的是所有的實驗都收斂了!!!

雖然沒有理論支持爲什麼保證收斂,但是就是實現了,Deepmind的方法可以在一個穩定的狀態下使用大規模的深度神經網絡結合增強學習。

顯示Value Function

就是看一下每一幀的Q值變化,看了之後答案是驚人的:
這裏寫圖片描述

在敵人出現時,Q值上升,快消滅敵人時,Q值到頂峯,敵人消失,Q值回到正常水平。這說明Q值確實代表了整個複雜的狀態。實際上到後面發現,整個神經網絡可以同時跟蹤多個圖上的目標:

這裏寫圖片描述

算法評估

算法對比了。
- Sarsa算法。使用Sarsa算法學習一個線性的policy,採用手工獲取的特徵。
- Contingency算法。 採用和Sarsa相同的方法,但是通過學習部分屏幕的表達增強了特徵。
上面的方法的特徵提取都採用傳統的圖像處理方法比如背景減除。
總之就是特徵提取方式落後。Deepmind的算法是原始輸入計算機需要自己去detect物體。(直接解決了detection和tracking的問題)

以此同時,當然是對比人類的水平了。人類的得分是人類玩兩小時的結果,反正是蠻高的。但deepmind的方法有幾個超過人類
對比的列表就不復制了,總而言之就是方法好,原始輸入,並且在使用ϵ 爲0.05的得分還比其他方法強。

總結Conclusion

這篇文章採用了一個全新的方法結合深度學習和增強學習,可以說是deep reinforcement learning的開山之作。採用stochastic minibatch updates以及experience replay的技巧。 效果很強,具有通用性。

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