首頁>技術>

直覺式強化學習系列, 用體驗英語播放DQN的溫和指南

> Photo by Josh Riemer on Unsplash

這是我關於強化學習(RL)的系列文章中的第五篇。現在,我們對構成RL問題構成要素的概念以及用於解決它們的技術有了很好的理解。我們還詳細研究了構成深度Q網路(DQN)基礎的Q學習演算法,這是本文的重點。

有了DQN,我們終於能夠進入深度強化學習,這可能是當今強化學習中最具創新性的領域。我們將逐步介紹該演算法,其中包括一些改變遊戲規則的創新技術,例如"體驗重播",以確切瞭解它們在首次引入DQN時如何幫助他們實現舉世矚目的結果。

這是該系列中以前和之後文章的快速摘要。我的目標始終是不僅要理解某件事情的工作原理,而且要理解為什麼它如此工作。

· 基本概念和術語簡介(什麼是RL問題,以及如何使用Markov決策過程中的技術和諸如收益,價值和政策等概念將RL問題解決框架應用於該框架)

· 解決方案方法(概述流行的RL解決方案,並根據這些解決方案之間的關係對其進行分類。Bellman方程式的重要內容是所有RL演算法的基礎。)

· 無模型演算法(使用迭代演算法逐步改善預測的基於價值和基於策略的解決方案的相似性和差異。利用,探索和ε貪婪策略。)

· Q學習(對此演算法進行深入分析,這是後續深度學習方法的基礎。對為什麼該演算法收斂到最佳值有直覺。)

· Deep Q Networks-本文(我們的第一個深度學習演算法。分步逐步講解它的工作原理以及為什麼選擇這些架構。)

· 策略梯度(我們的第一個基於策略的深度學習演算法。)

· Actor-Critic(複雜的深度學習演算法,結合了Deep Q網路和策略梯度的優點。)

· 驚喜主題(敬請期待!)

深度Q網路概述Q表可以處理很少狀態的簡單問題

Q學習使用狀態(s,a)構建狀態-動作值的Q表,其中s是狀態數,a是動作數。從根本上說,Q表將狀態和操作對對映到Q值。

> Q Learning looks up state-action pairs in a Q table (Image by Author)

但是,在實際情況下,狀態的數量可能非常龐大,這使得構建表在計算上難以處理。

使用Q函式解決實際問題

為了解決這個限制,我們使用Q函式而不是Q表,它獲得了將狀態和動作對對映到Q值的相同結果。

> A state-action function is required to handle real-world scenarios with a large state space.

神經網路是最好的函式近似器

由於神經網路擅長建模複雜函式,因此我們可以使用稱為深度Q網路的神經網路來估算此Q函式。

此函式將狀態對映到可以從該狀態採取的所有操作的Q值。

> (Image by Author)

它學習網路的引數(權重),以便輸出最佳Q值。

深度Q網路的基本原理與Q學習演算法非常相似。它從任意Q值估計開始,然後使用ε貪心策略探索環境。在其核心處,它使用雙重動作的相同概念,即具有當前Q值的當前動作和具有目標Q值的目標動作,用於其更新邏輯來改善其Q值估計。

DQN體系結構元件

DQN體系結構具有兩個神經網路,即Q網路和目標網路,還有一個稱為"體驗重播"的元件。Q網路是經過訓練可以產生最佳狀態-動作值的代理。

體驗重播與環境互動以生成資料來訓練Q Network。

> (Image by Author)

Q網路是一種相當標準的神經網路體系結構,如果您的狀態可以透過一組數字變量表示,則它可以像帶有幾個隱藏層的線性網路一樣簡單。或者,如果您的狀態資料以影象或文字表示,則可以使用常規的CNN或RNN體系結構。

目標網路與Q網路相同。

高層DQN工作流程

DQN在許多情節中經過多個時間步訓練。它在每個時間步驟中都要經歷一系列操作:

> These operations are performed in each time-step (Image by Author)

收集培訓資料

現在,讓我們放大第一階段。

> (Image by Author)

體驗重播從當前狀態中選擇一個ε貪婪動作,在環境中執行該動作,然後獲取獎勵和下一個狀態。

> (Image by Author)

它將此觀察結果儲存為訓練資料的樣本。

> (Image by Author)

接下來,我們將放大流程的下一個階段。

> (Image by Author)

Q Network預測Q值

所有先前的"體驗重播"觀察都將儲存為訓練資料。現在,我們從此訓練資料中隨機抽取一批樣本,以便包含舊樣本和最新樣本的混合。

然後將這批訓練資料輸入到兩個網路。Q網路從每個資料樣本中獲取當前狀態和操作,並預測該特定操作的Q值。這就是"預測的Q值"。

> (Image by Author)

目標網路預測目標Q值

目標網路從每個資料樣本中獲取下一個狀態,並從該狀態中可以採取的所有行動中預測最佳Q值。這就是"目標Q值"。

> (Image by Author)

計算損失並訓練Q網路

預測的Q值,目標Q值和從資料樣本中觀察到的報酬用於計算損失以訓練Q網路。目標網路未經培訓。

> (Image by Author)

為什麼我們需要體驗重播?

您可能想知道為什麼我們根本需要單獨的Experience Replay記憶?為什麼我們不簡單地採取行動,觀察環境的結果,然後將資料提供給Q Network?

答案很簡單。我們知道神經網路通常會提取一批資料。如果我們用單個樣本訓練它,則每個樣本和相應的梯度將具有太大的方差,並且網路權重將永遠不會收斂。

好吧,在那種情況下,顯而易見的答案是,為什麼我們不依次接連執行一些動作,然後將這些資料作為批處理饋送到Q Network?那應該有助於消除噪音並導致更穩定的訓練,不是嗎?

這裡的答案更加微妙。回想一下,當我們訓練神經網路時,最佳實踐是在隨機調整訓練資料後選擇一批樣本。這確保了訓練資料中有足夠的多樣性,以允許網路學習有意義的權重,這些權重可以很好地概括並可以處理一系列資料值。

如果我們從順序操作中傳遞了一批資料,會發生這種情況嗎?讓我們以機器人學習如何在工廠車間導航為例。假設在某個時間點,它正在嘗試在工廠的特定角落附近找到自己的路。在接下來的幾步中需要採取的所有措施都將限於工廠的那部分。

如果網路試圖從那批動作中學習,它將更新其權重以專門處理工廠中的該位置。但是它不會對工廠的其他部分有所瞭解。如果過了一段時間,機器人會移動到另一個位置,它的所有動作以及網路一段時間的學習都將集中在這個新位置上。然後,它可能會撤消從原始位置中學到的知識。

希望您開始在這裡看到問題。順序動作彼此之間高度相關,並且不會像網路所希望的那樣隨機洗牌。這導致了一個稱為"災難性遺忘"的問題,在該問題中,網路無法學習之前不久已經學到的東西。

這就是引入"體驗重播"記憶體的原因。儲存代理從一開始就採取的所有操作和觀察(當然受記憶體容量限制)。然後從該儲存器中隨機選擇一批樣品。這樣可以確保批次被"混洗",幷包含來自較舊和較新樣本的足夠多樣性(例如,來自工廠車間的多個區域,且處於不同條件下),以使網路能夠學習權重,將權重推廣到將要使用的所有情形。需要處理。

為什麼我們需要第二個神經網路(目標網路)?

第二個令人困惑的事情是為什麼我們需要第二個神經網路?而且該網路沒有得到培訓,因此使其更加令人困惑。

首先,可以使用單個Q網路而不使用目標網路來構建DQN。在這種情況下,我們需要兩次透過Q網路,首先輸出預測Q值,然後輸出目標Q值。

但這可能會造成潛在的問題。Q Network的權重會在每個時間步更新,從而改善了對Predicted Q值的預測。但是,由於網路及其權重相同,因此也會更改預測目標Q值的方向。它們不會保持穩定,但在每次更新後可能會波動。這就像追逐移動目標。

透過使用未經培訓的第二個網路,我們可以確保至少在短期內保持目標Q值穩定。但是那些目標Q值畢竟也是預測,我們確實希望它們能夠得到改善,因此做出了折衷。經過預先配置的時間步長後,將從Q網路獲得的權重複制到目標網路。

已經發現使用目標網路可以使訓練更加穩定。

DQN深入操作

現在我們瞭解了總體流程,讓我們看一下DQN的詳細操作。首先,網路被初始化。

初始化

在環境中執行一些操作以引導重播資料。

> (Image by Author)

用隨機權重初始化Q網路,然後將其複製到目標網路。

> (Image by Author)

體驗重播

從第一步開始,"體驗重播"將開始訓練資料生成階段,並使用Q Network選擇ε-貪婪動作。Q Network在與環境互動以生成訓練樣本時充當代理。在此階段沒有進行DQN培訓。

Q網路可預測可從當前狀態採取的所有操作的Q值。我們使用這些Q值選擇一個ε貪婪動作。

> (Image by Author)

樣本資料(當前狀態,動作,獎勵,下一個狀態)已儲存

體驗重播執行ε-貪婪動作並接收下一個狀態和獎勵。

> (Image by Author)

它將結果儲存在重放資料中。每個這樣的結果都是一個樣本觀察值,以後將用作訓練資料。

> (Image by Author)

選擇隨機訓練批次

現在,我們開始訓練DQN的階段。從重播資料中選擇訓練樣本的隨機樣本作為兩個網路的輸入。

> (Image by Author)

使用樣本中的當前狀態作為輸入來預測所有操作的Q值

為了簡化說明,讓我們按照批次中的一個樣本進行操作。Q網路為可從狀態採取的所有操作預測Q值。

> (Image by Author)

選擇預測的Q值

從輸出的Q值中,選擇一個作為樣本動作。這是預測的Q值。

> (Image by Author)

使用樣本中的下一個狀態作為目標網路的輸入

樣本中的下一個狀態輸入到目標網路。目標網路會預測從下一個狀態可以採取的所有操作的Q值,並選擇這些Q值中的最大值。

使用下一個狀態作為輸入來預測所有動作的Q值。目標網路選擇所有這些Q值中的最大值。

> (Image by Author)

獲取目標Q值

目標Q值是目標網路的輸出加上樣本的獎勵。

> (Image by Author)

計算損失

使用目標Q值與預測Q值之差計算均方誤差損失。

> (Image by Author)

計算損失

> (Image by Author)

向A網路的反向傳播損失

反向傳播損耗並使用梯度下降更新Q網路的權重。目標網路未經過訓練且保持固定,因此不會計算任何損耗,並且不會進行反向傳播。這樣就完成了此時間步的處理。

> (Image by Author)

目標網路無損失

目標網路未經過訓練,因此不會計算任何損耗,並且不會進行反向傳播。

重複下一個步驟

對下一個時間步重複該處理。Q網路權重已更新,但目標網路的權重尚未更新。這使Q網路能夠學習預測更準確的Q值,而目標Q值會保持一段時間不變,因此我們不會追趕移動的目標。

> (Image by Author)

經過T個時間步長後,將Q網路權重複制到目標網路

經過T個時間步後,將Q個網路權重複制到目標網路。這使目標網路獲得了改進的權重,因此它也可以預測更準確的Q值。處理與以前一樣繼續。

> (Image by Author)

Q網路權重和目標網路再次相等。

結論

在上一篇文章中,我們已經看到Q-Learning使用目標Q值,當前Q值,並觀察到使用其更新等式更新當前Q值的獎勵。

DQN以類似的方式工作。由於它是一個神經網路,因此它使用損失函式而不是方程式。它還使用預測(即當前)Q值,目標Q值和觀察到的報酬來計算損失以訓練網路,從而改善其預測。

在下一篇文章中,我們將繼續我們的深度強化學習之旅,並研究另一種使用策略梯度的流行演算法。讓我們繼續學習!

30
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 資料科學,資料工程和技術的未來