深度強化學習(一): Deep Q Network(DQN)
原文:https://blog.csdn.net/LagrangeSK/article/details/80321265 一、背景
DeepMind2013年的論文《Playing Atari with Deep Reinforcement Learning》指出:從高維感知輸入(如視覺、語音)直接學習如何控制 agent 對強化學習(RL)來說是一大挑戰。
之前很多RL演算法依賴於手工選取的特徵和線性函式逼近(對value function(值函式) 或 policy進行逼近)。但這些系統都依賴於特徵的選取質量。
深度學習(DL),尤其是CNN(卷積神經網路),可以很好的提取影象的高維特徵, 那麼我們很自然的想到是否可以將其應用於強化學習(RL)上?
二、DL和RL結合的挑戰
那麼很自然,我們需要關注DL和RL的結合有哪些挑戰:
- 深度學習方法的成功應用案例大部分都具備很好的資料集標籤(labels),而RL沒有明確的標籤,只能通過一個有延遲(也可能有噪聲)的reward來學習。
- 另外,深度學習一般假設其樣本都是獨立同分布的,但在RL中,通常會遇到一段相關度很高的狀態量(state),且狀態的分佈也不相同。
- 過往的研究表明,使用非線性網路表示值函式時出現網路不穩定,收斂困難等問題。
三、DQN的解決方案
DQN將卷積神經網路(CNN)與Q學習結合起來,通過以下方法,對DL與RL結合存在的問題進行解決:
- 採用Q learning的目標值函式來構造DL的標籤,從而構造DL的loss function;
- .採用了記憶回放(experience replay mechanism) 來解決資料關聯性問題;
- 使用一個CNN(MainNet)產生當前Q值,使用另外一個CNN(Target)產生Target Q值。(在2015年DeepMind的論文Human-level Control Through Deep Reinforcement Learning新版DQN中採用)
3.1 loss function 構造
RL原理此不贅述,Q learning的更新方程如下:
KaTeX parse error: Expected '}', got '&' at position 127: …+\gamma \max_{a&̲#x27;}Q(s'…θ。
3.2 記憶回放(experience replay mechanism)
為了讓 RL 的資料 (關聯性不獨立分佈的資料) 更接近DL所需要的資料 (獨立同分布資料),在學習過程中建立一個“記憶庫”, 將一段時間內的state、action、state_ (下一時刻狀態) 以及 reward 儲存在記憶庫裡,每次訓練神經網路時,從記憶庫裡隨機抽取一個batch的記憶資料, 這樣就打亂了原始資料的順序,將資料的關聯性減弱。
3.3 目標網路
為了使得演算法效能更穩定,建立兩個結構一樣的神經網路:一直在更新神經網路引數的網路 (MainNet) 和用於更新Q值(TargetNet)。
- .初始時刻將MainNet的引數賦值給TargetNet,
- 然後MainNet繼續更新神經網路引數,而TargetNet的引數固定不動。
- 再過一段時間將MainNet的引數賦給TargetNet,如此迴圈往復。
這樣使得一段時間內的目標Q值是穩定不變的,從而使得演算法更新更加穩定。
四、演算法虛擬碼
2013年版本:
2015年版本:
五、演算法流程
2015年版本:
六、演算法評價
解決的問題:
- 解決了Q學習的QTable高維度災難問題,使得Q值連續化
- 將DL和RL資料集不相容問題解決(記憶庫、固定目標值函式網路)
存在問題:
- action依然是從最大的Q值中選取,無法用於action連續的問題
- 只能處理只需短時記憶問題,無法處理需長時記憶問題;
- CNN不一定收斂,需精良調參。
參考文獻:
https://blog.csdn.net/u013236946/article/details/72871858
Human-level Control Through Deep Reinforcement Learning
Playing Atari with Deep Reinforcement Learning
</div>