入門 | 從Q學習到DDPG,一文簡述多種強化學習算法

2021-02-13 機器之心

選自towardsdatascience

作者:Steeve Huang

機器之心編譯

參與:Edison Ke、路雪

本文簡要介紹了強化學習及其重要概念和術語,並著重介紹了 Q-Learning 算法、SARSA、DQN 和 DDPG 算法。

強化學習(RL)指的是一種機器學習方法,其中智能體在下一個時間步中收到延遲的獎勵(對前一步動作的評估)。這種方法主要用於雅達利(Atari)、馬裡奧(Mario)等遊戲中,表現與人類相當,甚至超過人類。最近,隨著與神經網絡的結合,這種算法不斷發展,已經能夠解決更複雜的任務,比如鐘擺問題。

雖然已經有大量的強化學習算法,但似乎並沒有什麼文章對它們進行全面比較。每次需要決定將哪些算法應用於特定的任務時,都讓我很糾結。本文旨在通過簡要討論強化學習的設置來解決這個問題,並簡要介紹一些眾所周知的算法。

1. 強化學習入門

通常,強化學習的設置由兩部分組成,一個是智能體(agent),另一個是環境(environment)。

強化學習圖示

環境指的是智能體執行動作時所處的場景(例如雅達利遊戲中的遊戲本身),而智能體則表示強化學習算法。環境首先向智能體發送一個狀態,然後智能體基於其知識採取動作來響應該狀態。之後,環境發送下一個狀態,並把獎勵返回給智能體。智能體用環境所返回的獎勵來更新其知識,對上一個動作進行評估。這個循環一直持續,直到環境發送終止狀態來結束這個事件。

大多數強化學習算法遵循這一模式。下面我將簡要介紹強化學習中的一些術語,以方便下一節的討論。

定義

1. 動作(A):智能體可以採取的所有可能的行動。

2. 狀態(S):環境返回的當前情況。

3. 獎勵(R):環境的即時返回值,以評估智能體的上一個動作。

4. 策略(π):智能體根據當前狀態決定下一步動作的策略。

5. 價值(V):折扣(discount)下的長期期望返回,與 R 代表的短期返回相區分。Vπ(s) 則被定義為策略 π 下當前狀態**s**的期望長期返回值。

6. Q 值或行動值 (Q):Q 值與價值相似,不同點在於它還多一個參數,也就是當前動作 a。Qπ(s, a) 指當前狀態**s**在策略π下採取動作 a 的長期回報。

無模型(Model-free)vs. 基於模型(Model-based)

這裡的模型指的是環境的動態模擬,即模型學習從當前狀態 s0 和動作 a 到下一個狀態 s1 的轉移概率 T(s1|(s0, a))。如果成功地學習了轉移概率,那麼智能體將知道給定當前狀態和動作時,進入特定狀態的可能性。然而,當狀態空間和動作空間增長(S×S×A,用於表格設置)時,基於模型的算法就變得不切實際了。

另一方面,無模型算法依賴試錯來更新知識。因此,它不需要空間來存儲所有狀態和動作的組合。下一節討論的所有算法都屬於這一類。

在策略(on-policy)vs. 離策略(off-policy)

在策略智能體基於當前動作 a 學習價值,而離策略智能體基於局部最優的貪心行為(greedy action)a* 學習價值。(我們將在 Q-Learning 和 SARSA 算法部分進一步討論這個問題)

2. 各種算法的說明

2.1 Q-learning 算法

Q-Learning 是基于貝爾曼方程(Bellman Equation)的離策略、無模型強化學習算法:

貝爾曼方程

其中,E 代表期望,ƛ 是折扣因子(discount factor)。我們可以將它重寫成 Q 值的形式:

Q 值形式的貝爾曼方程

最優的 Q 值 Q*,可以表示為:

最優 Q 值

目標是最大化 Q 值。在深入探討優化 Q 值的方法之前,我想討論兩個與 Q-learning 密切相關的值更新方法。

策略迭代法

策略迭代法交替使用策略評估和策略改進。

策略迭代法

策略評估會評估從上次策略改進中獲得的貪心策略的價值函數 V。另一方面,策略改進通過使每個狀態的 V 值最大化的動作來更新策略。更新方程以貝爾曼方程為基礎。它不斷迭代直到收斂。

策略迭代的偽代碼

價值迭代

價值迭代只包含一個部分。它基於最優貝爾曼方程來更新值函數 V。

最優貝爾曼方程

價值迭代的偽代碼

在迭代收斂之後,通過對所有狀態應用最大值函數直接導出最優策略。

注意,這兩種方法都需要知道轉移概率 p,這表明它是一個基於模型的算法。但是,正如我前面提到的,基於模型的算法存在可擴展性問題。那麼 Q-learning 如何解決這個問題呢?

Q-Learning 更新方程

α 指學習速率(即我們接近目標的速度)。Q-learning 背後的思想高度依賴於價值迭代。然而,更新方程被上述公式所取代。因此,我們不再需要擔心轉移概率。

Q-learning 的偽代碼

注意,下一個動作 a』 的選擇標準是要能夠最大化下一個狀態的 Q 值,而不是遵循當前的策略。因此,Q-Learning 屬於離策略算法。

2.2 狀態-動作-獎勵-狀態-動作(State-Action-Reward-State-Action,SARSA)

SARSA 很像 Q-learning。SARSA 和 Q-learning 之間的關鍵區別是 SARSA 是一種在策略算法。這意味著 SARSA 根據當前策略執行的動作而不是貪心策略來學習 Q 值。

SARSA 的更新方程

動作 a_(t+1) 是在當前策略下的下一個狀態 s_(t+1) 執行的動作。

SARSA 的偽代碼

從上面的偽代碼中,你可能會注意到執行了兩個動作選擇,它們始終遵循當前策略。相比之下,Q-learning 對下一個動作沒有約束,只要它能最大化下一個狀態的 Q 值就行了。因此,SARSA 是一種在策略算法。

2.3 深度 Q 網絡(Deep Q Network,DQN)

Q-learning 是一種非常強大的算法,但它的主要缺點是缺乏通用性。如果你將 Q-learning 理解為在二維數組(動作空間×狀態空間)中更新數字,那麼它實際上類似於動態規劃。這表明 Q-learning 智能體不知道要對未見過的狀態採取什麼動作。換句話說,Q-learning 智能體沒有能力對未見過的狀態進行估值。為了解決這個問題,DQN 引入神經網絡來擺脫二維數組。

DQN 利用神經網絡來估計 Q 值函數。網絡的輸入是當前的動作,而輸出是每個動作對應的 Q 值。

用 DQN 玩雅達利遊戲

2013 年,DeepMind 將 DQN 應用於雅達利遊戲,如上圖所示。輸入是當前遊戲場景的原始圖像,經過包括卷積層和全連接層的多個層,輸出智能體可執行的每個動作的 Q 值。

問題歸結為:我們如何訓練網絡?

答案是基於 Q-learning 更新方程來訓練網絡。回想一下 Q-learning 的目標 Q 值是:

目標 Q 值

ϕ 相當於狀態 s,𝜽 代表神經網絡裡的參數。因此,網絡的損失函數可定義為目標 Q 值與網絡 Q 值輸出之間的平方誤差。

DQN 的偽代碼

另外兩種技術對於訓練 DQN 也很重要:

1. 經驗回放(Experience Replay):由於典型強化學習設置中的訓練樣本高度相關,且數據效率較低,這將導致網絡更難收斂。解決樣本分布問題的一種方法是採用經驗回放。從本質上講,樣本轉換會被存儲,然後從「轉換池」中隨機選擇該轉換來更新知識。

2. 分離目標網絡(Separate Target Network):目標 Q 網絡與用來估值的網絡結構相同。根據上面的偽代碼,在每個 C 步驟,目標網絡都被重置為另一個。因此,波動變得不那麼嚴重,帶來了更穩定的訓練。

2.4 深度確定性策略梯度(Deep Deterministic Policy Gradient,DDPG)

雖然 DQN 在高維問題上取得了巨大的成功,例如雅達利遊戲,但動作空間仍然是離散的。然而,許多有趣的任務,特別是物理控制任務,動作空間是連續的。而如果你把動作空間分離得太細來趨近連續空間,你的動作空間就太大了。例如,假設自由隨機系統的自由度為 10。對於每一個自由度,你把空間分成 4 個部分,你最終就會有有 4¹⁰= 1,048,576 個動作。對於這麼大的動作空間來說,收斂也是極其困難的。

DDPG 依賴於「行動者-評論家」(actor-critic)架構。行動者用來調整策略函數的參數𝜽,即決定特定狀態下的最佳動作。

策略函數

而評論家用於根據時間差分(temporal difference,TD)誤差來評估行動者估計出來的策略函數。

時間差分誤差

在這裡,小寫的 v 表示行動者已經確定的策略。看起來很熟悉對嗎?看著像 Q-learning 的更新方程!TD 學習是一種學習如何根據給定狀態的未來值來預測價值的方法。Q-learning 是 TD 學習的一種特殊類型,用於學習 Q 值。

「行動者-評論家」架構

DDPG 還從 DQN 借鑑了經驗回放和分離目標網絡的思想。DDPG 的另一個問題是它很少對動作進行探索。一個解決方案是在參數空間或動作空間中添加噪聲。

動作噪聲(左),參數噪聲(右)

OpenAI 這篇博客認為在參數空間上添加噪聲比在動作空間上添加要好得多。一個常用的噪聲是 Ornstein-Uhlenbeck 隨機過程。

DDPG 的偽代碼

原文連結:https://towardsdatascience.com/introduction-to-various-reinforcement-learning-algorithms-i-q-learning-sarsa-dqn-ddpg-72a5e0cb6287

本文為機器之心編譯,轉載請聯繫本公眾號獲得授權

✄---

加入機器之心(全職記者/實習生):hr@jiqizhixin.com

投稿或尋求報導:content@jiqizhixin.com

廣告&商務合作:bd@jiqizhixin.com

相關焦點

  • 深度強化學習從入門到大師:通過Q學習進行強化學習(第二部分)
    深度強化學習從入門到大師:通過Q學習進行強化學習(第二部分)本文是 Tensorflow 深度強化學習課程的一部分。?️點擊這裡查看教學大綱。今天我們將學習 Q-Learning。 Q-Learning 是一種基於數值的強化學習算法。
  • 一文簡述多種強化學習算法,重要概念和術語一覽
    本文簡要介紹了強化學習及其重要概念和術語,並著重介紹了 Q-Learning 算法、SARSA、DQN 和 DDPG 算法。最近,隨著與神經網絡的結合,這種算法不斷發展,已經能夠解決更複雜的任務,比如鐘擺問題。雖然已經有大量的強化學習算法,但似乎並沒有什麼文章對它們進行全面比較。每次需要決定將哪些算法應用於特定的任務時,都讓我很糾結。本文旨在通過簡要討論強化學習的設置來解決這個問題,並簡要介紹一些眾所周知的算法。
  • DDPG:針對連續動作空間的深度強化學習方法
    說到深度強化學習,很多人第一時間想到的就是戰勝世界圍棋冠軍的AlphaGo,以及在Atrari遊戲中大放異彩的DQN算法,然而這些算法主要針對的是離散動作空間問題,對於機器人動作決策、太空飛行器姿態決策等連續動作空間問題難以適用。
  • 深度學習第56講:強化學習簡介與Q-Learning實例
    因為強化學習發展到現在,早已結合了神經網絡迸發出新的活力,強化學習結合深度學習已經形成了深度強化學習(Deep Reinforcement Learning)這樣的新領域,因為強化學習和深度學習之間的關係以及其本身作為人工智慧的一個重要方向,我們都是有必要在系列筆記裡體現一下的。
  • 入門 | 走近流行強化學習算法:最優Q-Learning
    選自Medium作者:Yassine Yousfi機器之心編譯參與:Nurhachu Null、李澤南Q-Learning 是最著名的強化學習算法之一我們將在本文中討論該算法的一個重要部分:探索策略。但是在開始具體討論之前,讓我們從一些入門概念開始吧。強化學習(RL)強化學習是機器學習的一個重要領域,其中智能體通過對狀態的感知、對行動的選擇以及接受獎勵和環境相連接。在每一步,智能體都要觀察狀態、選擇並執行一個行動,這會改變它的狀態並產生一個獎勵。
  • 如何選擇深度強化學習算法?MuZero/SAC/PPO/TD3/DDPG/DQN/等
    ,在強化學習的子領域(多智能體、分層強化學習、逆向強化學習也會以它們為基礎開發新的算法):沒入門深度強化學習的人請按順序學習以下算法:入門深度學習/機器學習,用多層全連接層跑一下 MNIST數據集入門深度學習/深度學習框架,用卷積網絡跑一下 MNIST-fashion數據集入門經典強化學習 Q-learning,離散狀態、離散動作
  • 深度強化學習——從DQN到DDPG
    引言深度強化學習最近取得了很多進展,並在機器學習領域得到了很多的關注。傳統的強化學習局限於動作空間和樣本空間都很小,且一般是離散的情境下。然而比較複雜的、更加接近實際情況的任務則往往有著很大的狀態空間和連續的動作空間。實現端到端的控制也是要求能處理高維的,如圖像、聲音等的數據輸入。
  • 【強化學習實戰】基於gym和tensorflow的強化學習算法實現
    1新智元推薦【新智元導讀】知乎專欄強化學習大講堂作者郭憲博士開講《強化學習從入門到進階》,我們為您節選了其中的第二節《基於gym和tensorflow的強化學習算法實現》,希望對您有所幫助。同時,由郭憲博士等擔任授課教師的深度強化學習國慶集訓營也將於 10 月 2 日— 6 日在北京舉辦。
  • 強化學習開篇:Q-Learning原理詳解
    ,特開此篇進行強化學習系列算法介紹。目錄1.強化學習是什麼強化學習並不是某一種特定的算法,而是一類算法的統稱,與有監督學習、無監督學習共稱為機器學習的三大分支。針對強化學習最有名的應用應該是近幾年的Alpha go,機器虛擬棋手首次戰勝了棋界高手(下圖即為對戰截圖)。
  • 強化學習DQN算法實戰之CartPole
    開發環境是:Ubuntu18.04 、tensorflow-gpu 1.13.1 和 OpenAI gym其中,這篇筆記記錄了深度學習的開發環境。安裝完成後,在虛擬環境執行pip install gym安裝界面環境。強化學習的一個困難的地方,在於數據收集和環境描述。而 OpenAI的gym給我們提供了一個非常強大的虛擬環境,這樣我們就可以專注於算法本身的開發了。
  • 一文帶你理解Q-Learning的搜索策略,掌握強化學習最常用算法
    王小新 編譯自 Medium量子位 出品 | 公眾號 QbitAIQ-Learning是強化學習中最常用的算法之一。Medium上有篇文章,討論了這種算法的一個重要部分:搜索策略。量子位搬運過來,以下為博客譯文:我們先介紹下有關概念和符號。
  • 從概念到應用,全面了解強化學習
    而這時,強化學習會在沒有任何標籤的情況下,通過先嘗試做出一些行為得到一個結果,通過這個結果是對還是錯的反饋,調整之前的行為,就這樣不斷的調整,算法能夠學習到在什麼樣的情況下選擇什麼樣的行為可以得到最好的結果。
  • 深度強化學習-深度Q網絡(DQN)介紹
    概率轉換P反映了轉換和狀態轉變的獎勵之間的關係,狀態和獎勵僅依賴上一時間步的狀態和動作。強化學習為Agent定義了環境,來實現某些動作以最大化獎勵(這些動作根據policy採取)。對Agent的優化行為的基礎由Bellman方程定義,這是一種廣泛用於求解實際優化問題的方法。為了解決Bellman優化問題,我們使用了一種動態編程的方法。
  • 入門 | 通過 Q-learning 深入理解強化學習
    選自Medium作者:Thomas Simonini機器之心編譯參與:Geek AI、劉曉坤本文將帶你學習經典強化學習算法在這篇文章中,你將學到:(1)Q-learning 的概念解釋和算法詳解;(2)通過 Numpy 實現 Q-learning。
  • 強化學習入門知識超全梳理
    強化學習的應用強化學習的基本概念與結構強化學習分類常見強化學習算法介紹 什麼是強化學習強化學習並不是某一種特定的算法,而是一類算法的統稱,跟監督學習、無監督學習類似,是機器學習方法的一種。以股票預測為例,歷史大量的股票行情數據就是我們學習的樣本,股票的價格或者漲跌趨勢就是樣本的標籤,有監督機器學習算法基於這些歷史數據學習出一個模型,然後對未來某個時間點的股票價格或者漲跌進行預測。 強化學習則是一個不斷地在實踐中學習,在學習中實踐的連續決策過程。還是以炒股為例,股市新手通過不斷地優化自己的交易策略成長為股市大神的過程就是一個強化學習過程。
  • 強化學習應用簡述
    強化學習也已經被用到產品和服務中。谷歌雲的自動機器學習 (AutoML) 提供了自動優化神經元網絡結構設計這樣的服務。臉書開源了Horizon產品和服務,實現通知傳達、視頻流比特率優化等功能。谷歌研發了基於強化學習的YouTube視頻推薦算法。亞馬遜與英特爾合作,發布了一款強化學習實體測試平臺AWS DeepRacer. 滴滴出行則把強化學習應用於派單等業務。
  • 「人工智慧研學社· 強化學習組」第二期:超越職業玩家的算法 - Deep Q-network
    它介紹了 Deep Q-Networks (DQN) 算法,並且在 49 個 Atari 遊戲上取得了很好的性能:基本都超越了以前的算法,大部分比職業玩家要好。這一算法的突出貢獻是,在 Q-learning 中引入了深度神經網絡,並且通過 experience replay 和 target network 技術穩定學習過程。
  • 深度強化學習入門到精通--資料綜述
    其中,感知解決what,深度學習已經超越人類水平;決策解決how,強化學習在遊戲和機器人等領域取得了一定效果;認知解決why,知識圖譜、因果推理和持續學習等正在研究。強化學習,採用反饋學習的方式解決序貫決策問題,因此必然是通往通用人工智慧的終極鑰匙。
  • MADDPG:基於DDPG的多智能體深度強化學習算法
    DDPG:深度確定性策略梯度算法的多智能體強化學習框架。算法架構模型由多個DDPG網絡組成,每個網絡學習policy π (Actor) 和 action value Q (Critic);同時具有target network,用於Q-learning的off-policy
  • 【深度強化學習】專業解讀「深度強化學習「:從AlphaGo到AlphaGoZero
    AlphaGoZero不需要人類專家知識,只使用純粹的深度強化學習技術和蒙特卡羅樹搜索,經過3天自我對弈以100:0擊敗上一版本AlphaGo。AlphaGoZero證明了深度強化學習的強大能力,這一成果也勢必將推動該領域的進一步發展。