機器學習是人工智能的一個分支,在近30多年已發展爲一門多領域交叉學科,涉及概率論、統計學、逼近論、凸分析、計算複雜性理論等的學科。強化學習(RL)作爲機器學習的一個子領域,其靈感來源於心理學中的行爲主義理論,即智能體如何在環境給予的獎勵或懲罰的刺激下,逐步形成對刺激的預期,產生能獲得最大利益的習慣性行爲。它強調如何基於環境而行動,以取得最大化的預期利益。通俗的講:就是根據環境學習一套策略,能夠最大化期望獎勵。由於它具有普適性而被很多領域進行研究,例如自動駕駛,博弈論、控制論、運籌學、信息論、仿真優化、多主體系統學習、羣體智能、統計學以及遺傳算法。
** RL和監督式學習, 非監督學習之間的區別:**
,其主要分爲監督學習、非監督學習、深度學習和強化學習(見圖1),其中三個之間的區別在於以下三點:
- (1)、RL並不需要出現正確的輸入/輸出對,也不需要精確校正次優化的行爲。它更加專注於在線規劃,需要在探索(在未知的領域)和遵從(現有知識)之間找到平衡,其學習過程是智能體不斷的和環境進行交互,不斷進行試錯的反覆練習。
- (2)、RL的不同地方在於:其中沒有監督者,只有一個reward信號;反饋是延遲的,不是立即生成的;時間在RL中具有重要的意義。
- (3)、 RL並不需要帶有標籤的數據,有可以交互的環境即可。
基於此,普通機器學習方法和強化學習之間的的關係已描述清楚。我們知道機器學習算法和深度學習可以做分類,迴歸、時間序列等經典問題,這已經在很多應用場景,例如語音、文字語義等基礎性的人類認知方面取得非常大的突破,但是爲什麼還要學習強化學習呢?不得不從其應用場景說起。
RL目前的應用場景:
- 自動駕駛: 自動駕駛載具(self-driving vehicle)
- 控制論(離散和連續大動作空間): 玩具直升機、Gymm_cotrol物理部件控制、機器人行走、機械臂控制。
- 遊戲: Go, Atari 2600(DeepMind論文詳解)等
- 理解機器學習: 自然語言識別和處理, 文本序列預測
- 超參數學習: 神經網絡參數自動設計
- 問答系統: 對話系統
- 推薦系統: 阿里巴巴黃皮書(商品推薦),廣告投放。
- 智能電網: 電網負荷調試, 調度等
- 通信網絡: 動態路由, 流量分配等
- 物理化學實驗: 定量實驗,核素碰撞,粒子束流調試等
- 程序學習和網絡安全: 網絡攻防等
說了這麼多,都是關於其背景和應用場景的話題(相關論文見RL-an overview中),那麼到底什麼是RL, 又是怎麼工作的? 以及工作過程中會受那些因素的影響呢? 下文繼續回到Rl主題上.
一、強化學習基本組成及原理
1.1、RL結構圖:
RL是一種智能體和環境之間不斷試錯的方法, 通過不斷的交互以取得最大的累計期望獎勵,它由環境, 智能體和獎勵尺度三部分組成,見圖:
在圖中, 大腦部分代表智能體(Agent), 地球代表環境(Environment)
執行過程: 智能體(Agent)通常從環境中獲取一個, 然後Agent根據調整自身的策略做出一個行爲(Action:)反饋給環境, 環境根據Agent的動作給予Agent一個獎勵,經過這樣,智能體和環境之間進行連續的交互學習,得到了一個{}的交互歷史序列。通常歷史序列由觀測、行爲、獎勵三部分組成,被定義爲:
同時狀態被定義爲函數的映射: ,接下來將會對序列通過MDP進行描述:
1.2、馬爾科夫決策過程(MDP)
馬爾科夫決策過程是一個序列決策問題,它由很多的馬爾科夫過程元組組成。 首先了解幾個名詞:
馬爾科夫性: 指系統的下一個狀態 僅與當前狀態 有關,表示爲:
** 馬爾科夫過程:** 它是一個二元組, 其中爲有限狀態機,爲狀態轉移概率。且狀態轉移概率矩陣爲:
舉個例子說明一下(如圖):如果給定狀態轉移概率矩陣P,即每個點到下一個點的狀態轉移概率,那麼從Start出發到End結束存在多條馬爾科夫鏈(多條路徑),其中每個鏈上就是馬爾科夫過程的描述。但馬爾科夫過程中並不存在action和獎勵。因此,從Start開始到end是一個序列決策問題,需要不斷的選擇路線,以取得最大收益。接下來是MDP
上述是MDP的組成,而我們關心的是它如何工作,繼續前面的走方格例子,從Start開始,有兩個行爲(向右走,向南走),走不通的方向都有的概率且有不同的獎勵,一直反覆的走,直到走到End結束,在這個過程中會形成不同的序列,例如序列1:
這只是其中一條路徑,那從Start到End那條路勁帶來的收益最大呢?就需要每一步進行決策,而決策就需要用到策略。下文繼續:
1.3、強化學習的目標及Agent的要素:
目標: 根據環境狀態序列,找到一套最優控制策略,以實現最大累計期望獎勵。
1.3.1 第一要素 ---- 策略
那麼什麼是策略呢? 通常情況下被定義爲是從狀態到行爲的一個映射,直白說就是每個狀態下指定一個動作概率,這個可以是確定性的(一個確定動作),也可以是不確定性的。
(1)非確定策略: 對於相同的狀態,其輸出的狀態並不唯一,而是滿足一定的概率分佈,從而導致即使是處在相同的狀態,也可能輸出不同的動作,表示爲:
(2)確定行策略: 在相同的狀態下,其輸出的動作是確定的,表示爲:
如果給定一個策略,就可以計算最大化累計期望獎勵了,通常獎勵分爲及時獎勵和長久累計期望獎勵,
**及時獎勵:**實時反饋給Agent的獎勵,舉例:當玩具直升機根據當前的作態做出一個飛行控制姿勢時,好壞會立即得到一個獎勵。
**累計期望獎勵:**通常指一個過程的總獎勵的期望,比如直升機從飛起到降落整個過程。
通常累計期望獎勵被定義爲:
假如在策略下,從前文的Start出發,則有不同的路徑
每個路徑的累計回報不同,且在隨機策略下是隨機變量,但它們的期望是一個確定值,因此而被用作值函數的估計。
1.3.2 第二要素 ---- 值函數
當Agent採用某個策略時,累計回報服從一個分佈,通常將狀態S處的期望定義爲** 狀態值函數**,數學表示爲:
其中 是折扣因子,用來估算未來對現在的影響,如果,即短視,只看當前的,不關注長期的回報。
僅僅在狀態值函數下求解期望獎勵是不夠的,我們還需要在某一個狀態下,採取某個行爲帶來的期望回報。用狀態-行爲值函數衡量當前行爲的好壞,其數學表達爲:
爲了能夠計算在某個狀態S下的值函數或者在狀態S下采取行爲的狀態-行爲值函數評估累計期望獎勵,我們根據下圖列出公式組:
注:根據公式(7),從狀態s處施加行爲a有兩種操作,在不同的策略下來估計未來的期望獎勵,故採用求和均差得到公式(8),同時從第一幅圖左下角得到公式(9),從第二幅圖左下角得到公式(10)
將等式(9)代入等式(8),得到等式(11);將(10)代入(9)得到(12)
由上文公式我們可以總結出:狀態值函數和狀態-行爲值函數的Bellman方程:
通常計算值函數的目的是爲了構建學習從數據中得到最優策略,每個策略對應一個值函數,最優策略對應最優值函數。當且僅當: and 時,最優狀態值函數爲所有策略中值函數最大的,表示爲:
最優狀態-行爲值函數是所有策略中狀態-行爲值最大的,表示爲:
同理得到(推導省略),最優的狀態值函數和狀態-行爲值函數如下:
最後,如果已知最優狀態-行爲值函數,最優策略可以直接通過最大化得到。
KaTeX parse error: No such environment: equation at position 8:
\begin{̲e̲q̲u̲a̲t̲i̲o̲n̲}̲
\pi^{*}(a|s) =…
總結: 到目前爲止,關於強化學習的序列問題和貝爾曼方程已經描述完畢,並且上文所有的均是針對小規模MDP過程的求解{在程序中怎麼使用也沒有講解(實際編程單獨用一節講解)),且所有的序列都採用表的形式存儲,但是針對大規模空間或者連續性動作空間的問題,由於空間存儲資源浪費和檢索速率低下而無法適用!接下來的三種方法則可以解決該問題,特別是TD方法。
三、大規模MDP的三種解決方法
注: 關於部分公式詳細的推導過程不詳解,具體參David課程或者參考文獻[8]
3.1 動態規劃法(Dynamic progarmming)
動態規劃是一種在數學、管理科學、計算機科學中使用的,通過把原問題分解爲相對簡單的子問題的方式求解複雜問題的方法。它常常適用於有重疊子問題和最優子結構性質的問題,在解決子問題的時候,其結果通常需要存儲起來被用來解決後續複雜問題。當問題具有下列特性時,通常可以考慮使用動態規劃來求解:第一個特性是一個複雜問題的最優解由數個小問題的最優解構成,可以通過尋找子問題的最優解來得到複雜問題的最優解;子問題在複雜問題內重複出現,使得子問題的解可以被存儲起來重複利用。
馬爾科夫決定過程(MDP)具有上述兩個屬性:Bellman方程把問題遞歸爲求解子問題,價值函數就相當於存儲了一些子問題的解,可以複用。因此可以使用動態規劃來求解MDP。
這裏的規劃一般包括兩個步驟:“Prediction”和“Control”
- Prediction是指根據當前的MDP和策略輸出一個當前策略下的值函數:
** ++Input:++ ** MDP<>和策略
** ++ Output:++ ** - Control是指根據給定MDP找到最優和
** ++Input:++ ** MDP<>
** ++Output: ++** 和
3.1.1、策略評估
在一個序列中每一步決策都需要一個策略,即每一步都有值函數。
策略評估需要解決的問題是對給定的策略進行評估,找到:** optimal policy **, 在策略評估過程中,我們通常採用迭代法進行策略評估。
** 解決的方法 **:反向迭代應用狀態值函數Bellman期望方程
** 具體過程 **:同步反向迭代,即在每次迭代過程中,對於第 k+1 次迭代,所有的狀態s的價值用 計算並更新該狀態第 k+1 次迭代中使用的價值 ,其中是s的後繼狀態。此種方法通過反覆迭代最終將收斂至 。
首先我們在一個給定的策略下迭代更新價值函數,爲了能夠優化策略,貪婪選取行爲是一種比較常見的方法。
基於給定策略的價值迭代最終收斂得到的策略就是最優策略,但通過一個回合的迭代計算價值聯合策略改善就能找到最優策略不是普遍現象。通常,還需在改善的策略上繼續評估,反覆多次多次迭代。不過這種方法總能收斂至最優策略$ \pi^{*} $,接下來是策略迭代。
3.1.2、策略迭代
在當前策略上迭代計算V值,再根據V值貪婪地更新策略,如此反覆多次,最終得到最優策略 和最優狀態價值函數 , 如下圖:
上圖是大神David Sliver的slide,
3.1.3 值迭代
問題:尋找最優策略π
解決方法:從初始狀態價值開始同步迭代計算,最終收斂,整個過程中沒有遵循任何策略。
注意: ++與策略迭代不同,在值迭代過程中,算法不會給出明確的策略,迭代過程其間得到的價值函數,不對應任何策略。++
一個最優策略可以被分解爲兩部分:從狀態s到下一個狀態s’採取了最優行爲 ;在狀態s’時遵循一個最優策略。
定理: 一個策略能夠使得狀態s獲得最優價值,當且僅當:對於從狀態s可以到達的任何狀態s’,該策略能夠使得狀態s’的價值是最優價值:
接下來採用樹的思想解釋一下:
價值迭代雖然不需要策略參與,但仍然需要知道狀態之間的轉移概率,也就是需要知道模型。
** 總結:**
預測問題:在給定策略下迭代計算價值函數。控制問題:策略迭代尋找最優策略問題則先在給定或隨機策略下計算狀態價值函數,根據狀態函數貪婪更新策略,多次反覆找到最優策略;單純使用價值迭代,全程沒有策略參與也可以獲得最優策略,但需要知道狀態轉移矩陣,即狀態s在行爲a後到達的所有後續狀態及概率。使用狀態價值函數或行爲價值函數兩種價值迭代的算法時間複雜度都較大,爲 或 。
3.2 蒙特卡羅法(Monte Calo)
通過先前的講解,我們明白瞭如何從理論上解決一個已知的MDP:通過動態規劃來評估一個給定的策略,並且得到最優價值函數,根據最優價值函數來確定最優策略;也可以直接進行不基於任何策略的狀態價值迭代得到最優價值函數和最優策略。接下來則是解決被認爲是MDP、但卻不掌握MDP具體細節的問題,也就是講述如何直接從Agent與環境的交互來得得到一個估計的最優價值函數和最優策略。直白的說就是在給定的策略同時不清楚MDP細節的情況下,估計Agent會得到怎樣的最終獎勵。
3.2.1 蒙特卡羅Introduction
蒙特卡羅思想: 當所求解問題是某種隨機事件出現的概率,或者是某個隨機變量的期望值時,通過某種“實驗”的方法,以這種事件出現的頻率估計這一隨機事件的概率,或者得到這個隨機變量的某些數字特徵,並將其作爲問題的解。
** MC強化學習:** 指在不清楚MDP狀態轉移及即時獎勵的情況下,直接從經歷完整的Episode來學習狀態價值,通常情況下某狀態的價值等於在多個Episode中以該狀態算得到的所有收穫的平均。
** MC強化學習特點:** 不基於模型本身,直接從經歷過的Episode中學習,必須是完整的Episode,使用的思想就是用平均收穫值代替價值。理論上Episode越多,結果越準確。
3.2.1 MC策略評估
前文已經講了關於策略評估,其實質是求解值函數,在MC中同樣需要一系列完整的Episode(與後文的TD不同)去求解當前策略下的值函數。
在一個特定的策略下,完整的Episode的序列表示如下:
那麼,在t時刻狀態的收穫我們可以描述爲:
其中T表示爲終止狀態,根據前文對值函數的描述,同理狀態值函數爲:
在給定一個策略,使用一系列完整Episode評估某一個狀態s時,對於每一個Episode,僅當該狀態第一次出現時列入計算:
** 第一次出現時列入計算:**
(1)狀態出現的次數+1:
(2)總的收穫值更新:
(3)狀態s的價值:
(4)當$ N(s) \rightarrow \infty 時, V(s) \rightarrow v_{\pi}(s)$
每次訪問蒙特卡洛策略評估
在給定一個策略,使用一系列完整Episode評估某一個狀態s時,對於每一個Episode,狀態s每次出現在狀態轉移鏈時,計算的具體公式與上面的一樣,但具體意義不一樣。
(1)狀態出現的次數加1:同公式(24)
(2)總的收穫值更新:同公式(25)
(3)狀態s的價值:同公式(26)
(4)當
提到了在實際操作時常用的一個實時更新均值的辦法,使得在計算平均收穫時不需要存儲所有既往收穫,而是每得到一次收穫,就計算其平均收穫。
理論公式如下:
KaTeX parse error: No such environment: align* at position 8: \begin{̲a̲l̲i̲g̲n̲*̲}̲ \mu_{k} &=\fra…
因此根據以下僞代碼進行MC累計更新: **
對於一系列Episodes中的每一個:
對於Episode裏的每一個狀態 ,有一個收穫$ G_{t}$ ,每碰到一次$ S_{t}$ ,使用下式計算狀態的平均價值
$N(S_{t}) \leftarrow N(S_{t})+1 $
$ V(s_{t}) \leftarrow V(s_{t})+ \frac{1}{N(s_{t})}[G_{t}-V(s_{t})]$
非靜態問題時,使用這個方法跟蹤一個實時更新的平均值是非常有用的,可以扔掉那些已經計算過的Episode信息。此時可以引入參數 $\alpha $來更新狀態價值:
$V(S_{t}) \leftarrow V(S_{t})+\alpha (G_{t}-V(S_{t})) $
3.3 時間差分學習(TD-learning)
時序差分學習簡稱TD學習,它的特點如下:和蒙特卡洛學習一樣,它也從Episode學習,但不需要了解模型本身;且它可以學習不完整的Episode,通過自身的引導(bootstrapping,自舉)猜測Episode的結果,同時持續更新這個猜測。
目標:從策略中學習
過程:通過估計量: , 更新策略,依據公式:
其中: $TD-error = [R_{t+1}+\gamma V(S_{t+1})-V(S_{t})] $
DP、MC、TD三種方法對比:
- 1、DP基於模型; MC、TD基於無模型
- 2、DP採用bootstrapping(自舉), MC採用採樣,TD採用bootstrapping+採樣
- 3、DP用後繼狀態的值函數估計當前值函數,MC利用經驗平均估計狀態的值函數,TD利用後繼狀態的值函數估計當前值函數
- 4、MC和TD都是利用樣本估計值函數,其中MC爲無偏估計,TD爲有偏估計
- 5、最明顯的就是下圖的值函數的計算方法的不同
至此,基礎RL知識已經講完,上文對所有的序列信息均通過表的形式存儲,這是一種比較對於小狀態空間的搞笑解決方法,但是圍棋有(非常大)個狀態空間,機械臂連續控制等問題無法在表中存儲,這些問題總結爲兩個缺點:
- 表空間特別大,存儲資源的浪費;
- 由於表特別大,導致檢索一次查詢效率特別低。
因此不得不採用一中解決上述缺點的方法進行強化學習,目前比較實用的就是近似價值函數方法.
四、近似價值函數
近似值函數:從字面上看就是無限逼近真實值函數(狀態值函數、 狀態-行爲值函數)的意思,用數學表示爲下面公式(29)[未標註]:
其中我們的目的就是找到合適的 來近似值函數,可以是參數化逼近和非參數化逼近,非參數可以理解爲通過核函數等方式,參數化後文會講解。基於此,根據強化學習的輸入,輸出被表示爲三種近似方法,如圖:
- 圖(1)表示根據狀態本身,輸出這個狀態的近似價值;
- 圖(2)表示根據狀態行爲對,輸出狀態行爲對的近似價值;
- 圖(3)表示根據狀態本身,輸出一個向量,向量中的每一個元素是該狀態下采取一種可能行爲的價值。
我們可以將上述的三個正方形盒子視爲黑盒子,它就是一個函數近似器,可以將其想象爲任何東西,比如l它是一個** 神經網絡、決策樹、泰勒多項式、線性函數、Fourier/Wavelet base等 **。或者爲一切可描述或者無法描述的東西。本文講介紹神經網絡,其他其中方法後續將單獨做詳解。
4.1 遞增方法 Incremental Methods
本部分講述採用神經網絡方法進行近似值函數,因爲神經網絡可以擬合任何一個函數。神經網絡j結構如圖,對於反向傳播更新方式此處不講:
我們定義一個目標函數(該函數可微),爲vector, 那麼目標函數關於的梯度表示爲:
爲了能夠達到 ,只需在梯度下降或者上身的方向調整,使其達到局部最小值
** 目標**: 找到參數,最小化狀態值函數 和近似器 之間的均方差和狀態-行爲值函數和近似器 之間的的均方差。
以狀態值函數爲例:定義目標函數:
通過梯度下降找到當地最小值:
KaTeX parse error: No such environment: align* at position 8:
\begin{̲a̲l̲i̲g̲n̲*̲}̲
\triangle w &…
其實,目前所列的公式都不能直接用於強化學習(看了這麼多數學公式,盡然說沒用), 因爲公式裏都有一個實際價值函數 ,而強化學習沒有監督數據,因此不能直接使用上述公式。對於只有即時獎勵,沒有監督數據的強化學習。我們需要找到能替代的目標值,以便來使用監督學習的思路學習到近似函數的參數。
因此對於強化學習的兩個基本問題之一:** Prediction**
** 方法:**
(1)對於MC,target是返回值, 即:
(2) 對於TD(0),target是TD-target ,即:
因此對於強化學習的兩個基本問題之一:** Control**
那麼如何把近似函數引入到控制過程中呢?我們需要能夠近似狀態-行爲值函數對價值函數近似而不是僅針對狀態價值函數近似。爲什麼呢?
因爲** Model-free控制需要滿足兩個條件:**
- 1、在模型未知的條件下無法知道當前狀態的所有後續狀態,進而無法確定在當前狀態下采取怎樣的行爲更合適。通常使用狀態行爲對下的價值Q(s,a)來代替狀態價值, 即:
- 2、探索(Exploration):即使滿足條件(1),至少還存在一個問題,即當我們每次都使用貪婪算法來改善策略的時候,將很有可能由於沒有足夠的採樣經驗而導致產生一個並不是最優的策略,因此需要不停的探索(Exploration)新行爲,即:-
從一系列參數開始,得到一個近似的狀態-行爲值函數,在Ɛ-greedy執行策略下產生一個行爲,執行該行爲得到一個即時獎勵,以此數據計算目標值,進行近似函數參數的更新。再應用這個策略得到後續的狀態和對應的目標值,每經歷一次狀態就更新依次參數,如此反覆進行策略的優化,同時逼近最優價值函數。
因此對於** 策略評估 **,即近似策略評估:
策略改善: 採用Ɛ-greedy
狀態-行爲值函數的近似過程類似與狀態值函數(此處不描述,直接給結論):
至此,第一篇結束!
聲明:
1 本文內容均屬原創,受知識水平有限,如有錯誤之處,請聯繫作者以便於修改糾正.
2 本文所有參考他人論文, 書籍,知識欄目, 圖片等一切有關知識均在Blog末尾以引用格式進行標註, 再次表示致謝. 如有他人內容未標明引用的請聯繫本文作者,以添加引用,在此表示歉意!
參考文獻:
[1]. Richard S.Sutton and Andrew G. Barto,Reinforcement learning: An Introduction,second edition.2017.
[2]. Lucian Busontu et al, Reinforcement learning and dynamic programming using function approximators.
[3]. 郭憲 方勇純, 深入淺出強化學習:原理入門
[4]. Howard M.Schwartz 連曉峯(譯), 多智能體機器學習:強化學習方法
[5]. David Sliver, Introduction to Reinforcement learning
(UCL:https://www.youtube.com/channel/UCP7jMXSY2xbc3KCAE0MHQ-A)
[6]. 阿里技術, 從虛擬世界走進現實應用,強化學習在阿里的技術演進與業務創新.
[7]. Deep Reinforcements Learnin- An Overview()
[8].https://zhuanlan.zhihu.com/reinforce
[9]. https://mp.weixin.qq.com/s/aAHbybdbs_GtY8OyU6h5WA##
[10].https://www.youtube.com/watch?v=W_gxLKSsSIE&list=PL5nBAYUyJTrM48dViibyi68urttMlUv7e
[11]. https://www.youtube.com/watch?v=CIF2SBVY-J0