1. 程式人生 > >深度強化學習(一): Deep Q Network(DQN)

深度強化學習(一): 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>