一文簡述多種強化學習算法,重要概念和術語一覽

2021-01-10 機器之心Pro

本文簡要介紹了強化學習及其重要概念和術語,並著重介紹了 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 的偽代碼

相關焦點

  • 澳門大學講座教授陳俊龍:從深度強化學習到寬度強化學習:結構,算法...
    在越來越多的複雜現實場景任務中,需要利用深度學習、寬度學習來自動學習大規模輸入數據的抽象表徵,並以此表徵為依據進行自我激勵的強化學習,優化解決問題的策略。深度與寬度強化學習技術在遊戲、機器人控制、參數優化、機器視覺等領域中的成功應用,使其被認為是邁向通用人工智慧的重要途徑。
  • 強化學習的基本迭代方法
    )Q-Learning開啟了我們所處的深度強化學習的浪潮,是強化學習學生學習策略的重要一環。在高級強化學習中,狀態和動作是連續,所以這需要重新考慮我們的算法。轉換函數T(s,a,s')。給定當前位置和給定動作,T決定下一個狀態出現的頻率。在強化學習中,我們不訪問這個函數,因此這些方法試圖對採樣數據進行近似或隱式學習。獎勵函數R(s,a,s')。此函數說明每個步驟可獲得多少獎勵。
  • AlphaGo原來是這樣運行的,一文詳解多智能體強化學習基礎和應用
    機器之心分析師網絡作者:楊旭韻編輯:Joni在這篇綜述性文章中,作者詳盡地介紹了多智能強化學習的理論基礎,並闡述了解決各類多智能問題的經典算法。此外,作者還以 AlphaGo、AlphaStar為例,概述了多智能體強化學習的實際應用。
  • 薩頓科普了強化學習、深度強化學習,並談到了這項技術的潛力和發展...
    △ 薩頓 薩頓常被稱為「強化學習之父」,他對強化學習的重要貢獻包括時序差分學習和策略梯度方法。 如果你研究過強化學習,可能對他和巴爾託(Andrew Barto)合著的一本書很熟悉:《強化學習導論》(Reinforcement Learning, an introduction)。這本書被引用了2.5萬多次,如今,第二版即將出版,全書草稿也已經在網上公開。
  • 開發者自述:我是這樣理解強化學習的
    定義強化學習是機器學習的一個重要分支,是多學科多領域交叉的一個產物,它的本質是解決 decision making 問題,即自動進行決策,並且可以做連續決策。它主要包含四個元素,agent,環境狀態,行動,獎勵,強化學習的目標就是獲得最多的累計獎勵。
  • DeepMind重磅開源強化學習框架!覆蓋28款遊戲,24個算法
    乾明 邊策 一璞 發自 凹非寺 量子位 報導 | 公眾號 QbitAI沒有DeepMind的命,燒不起DeepMind一樣的研發投入,但你現在可以有DeepMind苦心多年研究出的算法和代碼。剛剛,這家背靠谷歌,燒了數十億元的全球頂尖AI研究機構,開源了史上最全強化學習框架OpenSpiel。
  • 資料| Python強化學習實戰:應用OpenAI Gym和TensorFlow精通強化...
    內容簡介 · · · · · ·強化學習是一種重要的機器學習方法,在智能體及分析預測等領域有許多應用。《Python強化學習實戰:應用OpenAI Gym和TensorFlow精通強化學習和深度強化學習》共13章,主要包括強化學習的各種要素,即智能體、環境、策略和模型以及相應平臺和庫;Anaconda、Docker、OpenAIGym、Universe和TensorFlow等安裝配置;馬爾可夫鏈和馬爾可夫過程及其與強化學習問題建模之間的關係,動態規劃的基本概念;蒙特卡羅方法以及不同類型的蒙特卡羅預測和控制方法
  • 集合三大類無模型強化學習算法,BAIR開源RL代碼庫rlpyt
    選自BAIR作者:Adam Stooke機器之心編譯參與:魔王、張倩近日,BAIR 開源強化學習研究代碼庫 rlpyt,首次包含三大類無模型強化學習算法,並提出一種新型數據結構。2013 年有研究者提出使用深度強化學習玩遊戲,之後不久深度強化學習又被應用於模擬機器人控制,自此以後大量新算法層出不窮。
  • 開源巨獻:27個深度強化學習算法的實例項目
    譯者:AI研習社(宋怡然)雙語原文連結:Deep Reinforcement Learning Nanodegree Algorithms在這裡,您可以找到幾個致力於「深度強化學習」方法的項目。項目以矩陣形式部署:[env x model],其中env是要解決的環境,而model是解決該環境的模型/算法。 在某些情況下,可以通過幾種算法來解決同一環境。 所有項目均以包含培訓日誌的Jupyter筆記本的形式呈現。
  • AlphaGo Zero 強化學習算法原理深度分析
    AlphaGo Zero 綜述AlphaGo Zero 作為Deepmind在圍棋領域的最後一代AI Agent,已經可以達到棋類遊戲的終極目標:在只給定遊戲規則的情況下,AI 棋手從最初始的隨機狀態開始,通過不斷的自我對弈的強化學習來實現超越以往任何人類棋手和上一代Alpha的能力,並且同樣的算法和模型應用到了其他棋類也得出相同的效果。
  • 數據結構與算法:聊一聊在面試中被常問的那幾個基礎算法的理解
    前面我也說到:數據結構和算法是一對"相愛相殺的"組合,所以接下來要分享下我個人對於一些算法的理解和實現。本文將主要分享基礎的查找和排序(代碼基於python)既然要開始分享算法,那必然要先介紹下算法相關的一些基本術語,如下。
  • 個性與服裝,行為個性,心理學的重要概念
    個性淵源其詞Personality ,與古希臘文Persona有淵源關係,意為面具,指舞臺上演員戴此飾演、刻畫劇中人物心理的種種典型,以不同的面具扮演各具典型性的人物。心理學家據此把個體在人生舞臺。上扮演角色所形成的心理活動的總和,稱之為個性。
  • 深度強化學習最全課程包,教程、代碼一網打盡
    大數據文摘出品作者:魏子敏、蔣寶尚繼谷歌和微軟的人工智慧實踐課程後,Elon Musk和Sam Altman主導創立的OpenAI剛剛也發布了一門教學+練手的全能課程「Spinning Up in Deep RL」,希望將他們最擅長的技術——深度強化學習能力分享出來,讓更多技術人掌握。
  • 五大常用算法:一文搞懂分治算法
    原創公眾號:bigsai文章收錄在 bigsai-algorithm前言分治算法(divide and conquer)是五大常用算法(分治算法、動態規划算法、貪心算法、回溯法、分治界限法)之一,很多人在平時學習中可能只是知道分治算法,但是可能並沒有系統的學習分治算法
  • 國內外口碑炸裂的強化學習聖經中文版終於來了!
    這種更聰明的思維就來源於強化學習。以聯結主義的神經網絡為代表的深度學習毫無疑問是21 世紀初人工智慧領域的最重要、最具實用意義的技術突破之一,它為基礎研究走向產業應用做出了巨大貢獻,也相應地贏得了巨大的聲譽和關注。
  • 一文帶你深入了解,什麼是深度學習及其工作原理
    作者 | CraigStedman 編譯 | CDA數據科學研究院深度學習是機器學習(ML)和人工智慧(AI)的一種,它模仿人類獲取某些類型的知識的方式。深度學習是數據科學的重要元素,其中包括統計和預測模型。對於負責收集,分析和解釋大量數據的數據科學家而言,這是極為有益的。深度學習使此過程更快,更輕鬆。
  • 如何解決稀疏獎勵下的強化學習?
    本文重點探討的就是在存在稀疏獎勵的情況下引導 agent 繼續學習或探索的強化學習問題。目前解決稀疏獎勵下的強化學習主要有兩類方法:一是,利用數據改進 agent 的學習 ,包括已有數據、外部數據等;二是,改進模型,提升模型在大狀態、大動作空間下處理複雜問題的能力。
  • 最強通用棋類AI,AlphaZero強化學習算法解讀
    AlphaZero是一個令人大開眼界且超乎尋常的強化學習算法,它以絕對的優勢戰勝了多名圍棋以及西洋棋冠軍。本文將會帶你使用AlphaZero來解決一個益智小遊戲(Dots and Boxes)並將其部署成一個純JavaScript構建的Web應用。
  • BAT大廠機器學習算法面試經驗!一文帶你感受網際網路大佬知識點
    常見的算法包括 k-Nearest Neighbor(KNN), 學習矢量量化(Learning Vector Quantization, LVQ),以及自組織映射算法(Self-Organizing Map,SOM)。深度學習的概念源於人工神經網絡的研究。含多隱層的多層感知器就是一種深度學習結構。深度學習通過組合低層特徵形成更加抽象的高層表示屬性類別或特徵,以發現數據的分布式特徵表示。
  • Petuum提出序列生成學習算法通用框架
    該框架是對包括最大似然學習 (MLE)、增強學習 (RL) 等多種廣泛使用的算法的泛化。研究人員進而提出一種新的序列生成算法,該算法在已有算法中進行動態插值,在機器翻譯和文本摘要任務中實現了穩定的提升。序列生成是一個常見的機器學習任務,比如機器翻譯、文本摘要、圖像字幕生成等。