入門 | 從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

相關焦點

  • 深度學習第56講:強化學習簡介與Q-Learning實例
    因為強化學習發展到現在,早已結合了神經網絡迸發出新的活力,強化學習結合深度學習已經形成了深度強化學習(Deep Reinforcement Learning)這樣的新領域,因為強化學習和深度學習之間的關係以及其本身作為人工智慧的一個重要方向,我們都是有必要在系列筆記裡體現一下的。
  • 強化學習怎麼入門好?
    - 顯然,上述所有內容,均將environment視為黑盒,故為 model-free - 易得,學習 environment (比如 s,a 到 s' 的轉移規則)的算法屬於 model-based。11.
  • 一文帶你理解Q-Learning的搜索策略,掌握強化學習最常用算法
    王小新 編譯自 Medium量子位 出品 | 公眾號 QbitAIQ-Learning是強化學習中最常用的算法之一。
  • 強化學習DQN算法實戰之CartPole
    開發環境是:Ubuntu18.04 、tensorflow-gpu 1.13.1 和 OpenAI gym其中,這篇筆記記錄了深度學習的開發環境。安裝完成後,在虛擬環境執行pip install gym安裝界面環境。強化學習的一個困難的地方,在於數據收集和環境描述。而 OpenAI的gym給我們提供了一個非常強大的虛擬環境,這樣我們就可以專注於算法本身的開發了。
  • 【活動回顧】用TensorFlow做強化學習
    PART2 :強化學習整體應用領域上圖是強化應用整體的應用領域,從最核心到最外圈,核心的就是算法部分這是我們算法的一個細節部分,同樣我們也可以用一些算法來輔助我們強化學習更高效準確的運行,比如一些非監督學習,能夠讓我們環境理解的更好;比如attention and memory一些回放機制可以幫助我們讓強化學習獲得一些性能上的提升;比如multi-agent RL是可以幫我們實現一個多目標多代理的執行,有效的幫我們提高強化學習的運行速度的。最外層就是我們強化學習的一些應用模塊。
  • 入門 | 通過 Q-learning 深入理解強化學習
    選自Medium作者:Thomas Simonini機器之心編譯參與:Geek AI、劉曉坤本文將帶你學習經典強化學習算法在這篇文章中,你將學到:(1)Q-learning 的概念解釋和算法詳解;(2)通過 Numpy 實現 Q-learning。
  • 深度學習-機器學習從入門到深入全套資源分享
    LeetCode && leetcode題解 && 《算法導論》中算法的C++實現        機器學習算法實戰        深度學習框架        如何成為一名算法工程師 && 從小白到入門算法,我的經驗分享給你~ && 我的研究生這三年
  • 深度強化學習入門到精通--資料綜述
    其中,感知解決what,深度學習已經超越人類水平;決策解決how,強化學習在遊戲和機器人等領域取得了一定效果;認知解決why,知識圖譜、因果推理和持續學習等正在研究。強化學習,採用反饋學習的方式解決序貫決策問題,因此必然是通往通用人工智慧的終極鑰匙。
  • 強化學習——Q Learning 簡介
    繼續接著上一篇,這篇文章介紹強化學習中的一個經典算法——Q Learning.
  • 學術分享丨簡述機器人學習中的強化學習與模仿學習
    深度強化學習的主要特徵包括:• 採用深度神經網絡作為值函數和策略的模型;• 考慮的任務擁有相對規模較大的動作和狀態空間;• 交互環境的動力學系統更加複雜多變。圖1 基於強化學習的智能體在棋類遊戲上已超越人類水平針對深度強化學習面臨任務的困難性,近年來,一系列新的強化學習技術開始出現。
  • 「人工智慧研學社· 強化學習組」第二期:超越職業玩家的算法 - Deep Q-network
    它介紹了 Deep Q-Networks (DQN) 算法,並且在 49 個 Atari 遊戲上取得了很好的性能:基本都超越了以前的算法,大部分比職業玩家要好。這一算法的突出貢獻是,在 Q-learning 中引入了深度神經網絡,並且通過 experience replay 和 target network 技術穩定學習過程。
  • 淺談強化學習 | 朱瑞鶴
    新聞之外,如果你對AlphaGo的實現技術感興趣,相信你也已經聽說過「強化學習」了。AlphaGo是個大工程,除了「強化學習」,還利用了「蒙特卡洛樹搜索」等多種技術,今天我們不去講這些複雜的技術,就單單講下,啥是強化學習?什麼是強化學習?
  • 通過代碼學Sutton強化學習:從Q-Learning 演化到 DQN
    學習本文的最佳姿勢為點擊文末在看,發送本文連結到桌面版瀏覽器,打開文末閱讀原文,敲入代碼運行。算法來改進。至此,我們可以體會到on-policy和off-policy本質的區別。  Maximization Bias vs Double learning下面是Sutton 強化學習第二版6.7節中完整的Double Q-learning算法。更詳細內容,可以參考 Hado V. Hasselt 的 Double Q-learning paper [3]。
  • 增強學習之Q-Learning入門
    基於tensorflow的最簡單的強化學習入門-part0:Q-learning和神經網絡https://zhuanlan.zhihu.com/p/257103272. Simple Reinforcement Learning with Tensorflow Part 0: Q-Learning with Tables and Neural Networkshttps://medium.com/emergent-future/simple-reinforcement-learning-with-tensorflow-part-0-q-learning-with-tables-and-neural-networks-d195264329d0
  • Python入門到機器學習再到深入學習及應用整個學習系統
    第1周機器學習入門·機器學習從0到1 Introduction to Machine Learning·Python 基本語法基礎 Introduction to Python I·機器學習KNN算法入門 Machine Learning - KNN algorithm·機器學習Python Data
  • 【AlphaGoZero核心技術】深度強化學習知識資料全集(論文/代碼/教程/視頻/文章等)
    ,將價值網絡和策略網絡整合為一個架構,3天訓練後就以100比0擊敗了上一版本的AlphaGo。Alpha Zero的背後核心技術是深度強化學習,為此,專知特別收錄整理聚合了關於強化學習的最全知識資料,歡迎大家查看!
  • 【演講實錄】強化學習在 TensorFlow 中的應用 | 個推*GDG
    最近也有一些坑,我們通過嘗試探索、反饋總結,谷歌一下得到一些建議,再通過自己看源碼改變一些東西,這也是我們的學習成長。對應到強化學習的環境,強化學習的環境,大家看一下強化學習分成這幾部分,這是DQN上的應用,首先有左邊綠顏色的,是模擬環境,真實線上環境,大家對阿法狗都很了解,不知道強化學習的也應該知道阿法狗,是不是下圍棋的,我們把強化學習應用在下棋上,這個就是我們下棋的環境。
  • 通過代碼學 Sutton 強化學習:SARSA、Q-Learning 時序差分算法訓練 CartPole
    CartPole OpenAI GymCartPole 觀察到的狀態是四維的float值,分別是車位置,車速度,杆角度和杆角速度。下表為四個維度的值範圍。舉個例子,小車位置本身並不能影響Agent採取的下一動作,當給定其他三維狀態的前提下,因此我們對小車位置這一維度僅設置一個桶(bucket size=1)。而杆的角度和角速度是決定下一動作的關鍵因素,因此我們分別設置成6個和12個。以下是離散化相關代碼,四個維度的 buckets=(1, 2, 6, 12)。
  • 深度強化學習 進階RoadMap(一)RL base & DQN-DDPG-A3C introduction
    一、RL:a simple introduction強化學習是機器學習的一個分支,相較於機器學習經典的有監督學習、無監督學習問題,強化學習最大的特點是在交互中學習(Learning from Interaction)。Agent在與環境的交互中根據獲得的獎勵或懲罰不斷的學習知識,更加適應環境。
  • OpenAI舉辦遷移學習競賽:評估強化學習算法表現
    在典型的強化學習研究中,算法的測試與訓練環境是一樣的,這對於記憶能力更好以及有很多超參數的算法來說更有優勢。而 OpenAI 發布的這個競賽是在先前未見過的視頻遊戲上測試算法。此外,該競賽使用的是 OpenAI 將經典遊戲融入到 Gym 中做出的新平臺 Gym Retro。