深度強化學習—DQN網絡

中談到了Q-learning,本文繼續研究DQN網絡。DQN(Deep Q-Learning)是深度強化學習(Deep Reinforcement Learning,DRL)的開山之作,是由Deep Mind提出將深度學習與強化學習結合起來從而實現從感知(Perception)到動作( Action )的端對端(End-to-end)學習的一種全新的算法。

Deep Reinforcement Learning

在普通的Q-learning中,當狀態和動作空間是離散且維數不高時,可使用Q-Table儲存每個狀態動作對的Q值,而當狀態和動作空間是高維連續時,使用Q-Table通常是不可行的。

深度強化學習—DQN網絡

以計算機玩Atari遊戲為例,要求輸入210x160像素的原始圖像數據,然後輸出幾個按鍵動作,然後讓計算機自己玩遊戲。那麼這種情況下,到底有多少種狀態呢?有可能每一秒鐘的狀態都不一樣。因為,從理論上看,如果每一個像素都有256種選擇,那麼就有:

深度強化學習—DQN網絡

這樣的天文數字是不可能通過表格來存儲狀態的,解決辦法就是價值函數近似(Value Function Approximation)。本質上就是用一個函數來近似Q值的分佈,所以,也可以說是

深度強化學習—DQN網絡

深度神經網絡可以自動提取複雜特徵,因此,面對高維且連續的狀態使用深度神經網絡作為近似函數是一種比較好的方法。DRL是將深度學習(DL)與強化學習(RL)結合,直接從高維原始數據學習控制策略。而DQN是DRL的其中一種算法,它要做的就是將卷積神經網絡(CNN)和Q-Learning結合起來,CNN的輸入是原始圖像數據(作為狀態State),輸出則是每個動作Action對應的價值評估Value Function(Q值)。

DQN算法原理

DQN使用神經網絡來近似值函數,即神經網絡的輸入是state s,輸出是Q(s,a),∀a∈A(action space)。通過神經網絡計算出值函數後,DQN使用ϵ−greedy策略來輸出action;環境接收到此action後會給出一個獎勵Reward及下一個observation;然後我們根據Reward去更新值函數網絡的參數。接著進入下一個循環,如此反覆,直至我們訓練出了一個好的值函數網絡。

深度強化學習—DQN網絡

DQN的Loss Function

深度強化學習—DQN網絡

這裡就是使用了Q-Learning要更新的Q值作為目標值,有了目標值,又有預測值Q(s,a;ω),那麼偏差就能通過均方差來進行計算。

DQN算法流程

NIPS 2013版

深度強化學習—DQN網絡

Nature 2015版

深度強化學習—DQN網絡

Experience Replay

經驗池的功能主要是解決相關性及非靜態分佈問題。具體做法是把每個時間步agent與環境交互得到的轉移樣本 {s(t),a(t),r(t),s(t+1)}儲存到回放記憶單元,要訓練時就隨機拿出一些(minibatch)來訓練(隨機抽取就避免了相關性問題),

Nature 2015的改進

Nature 2015版本的DQN中提出使用另一個網絡(暫且稱為TargetNet)產生Target Q值。具體地,Q(s,a;θi)表示當前網絡MainNet的輸出,用來評估當前狀態動作對的值函數;Q(s,a;θi−)表示TargetNet的輸出,代入求 TargetQ值的公式中得到目標Q值。根據上面的Loss Function更新MainNet的參數,每經過N輪迭代,將MainNet的參數複製給TargetNet。引入TargetNet後,在一段時間裡目標Q值使保持不變的,一定程度降低了當前Q值和目標Q值的相關性,提高了算法穩定性。


分享到:


相關文章: