1. 程式人生 > >周志華《Machine Learning》強化學習

周志華《Machine Learning》強化學習

轉載自: https://blog.csdn.net/u011826404/article/details/75576856

16、強化學習
強化學習(Reinforcement Learning,簡稱RL)是機器學習的一個重要分支,前段時間人機大戰的主角AlphaGo正是以強化學習為核心技術。在強化學習中,包含兩種基本的元素:狀態與動作,在某個狀態下執行某種動作,這便是一種策略,學習器要做的就是通過不斷地探索學習,從而獲得一個好的策略。例如:在圍棋中,一種落棋的局面就是一種狀態,若能知道每種局面下的最優落子動作,那就攻無不克/百戰不殆了~

若將狀態看作為屬性,動作看作為標記,易知:監督學習和強化學習都是在試圖尋找一個對映,從已知屬性/狀態推斷出標記/動作,這樣強化學習中的策略相當於監督學習中的分類/迴歸器。但在實際問題中,強化學習並沒有監督學習那樣的標記資訊,通常都是在嘗試動作後才能獲得結果,因此強化學習是通過反饋的結果資訊不斷調整之前的策略,從而演算法能夠學習到:在什麼樣的狀態下選擇什麼樣的動作可以獲得最好的結果。

16.1 基本要素
強化學習任務通常使用馬爾可夫決策過程(Markov Decision Process,簡稱MDP)來描述,具體而言:機器處在一個環境中,每個狀態為機器對當前環境的感知;機器只能通過動作來影響環境,當機器執行一個動作後,會使得環境按某種概率轉移到另一個狀態;同時,環境會根據潛在的獎賞函式反饋給機器一個獎賞。綜合而言,強化學習主要包含四個要素:狀態、動作、轉移概率以及獎賞函式。

狀態(X):機器對環境的感知,所有可能的狀態稱為狀態空間; 
動作(A):機器所採取的動作,所有能採取的動作構成動作空間; 
轉移概率(P):當執行某個動作後,當前狀態會以某種概率轉移到另一個狀態; 
獎賞函式(R):在狀態轉移的同時,環境給反饋給機器一個獎賞。

因此,強化學習的主要任務就是通過在環境中不斷地嘗試,根據嘗試獲得的反饋資訊調整策略,最終生成一個較好的策略π,機器根據這個策略便能知道在什麼狀態下應該執行什麼動作。常見的策略表示方法有以下兩種:

確定性策略:π(x)=a,即在狀態x下執行a動作; 
隨機性策略:P=π(x,a),即在狀態x下執行a動作的概率。

一個策略的優劣取決於長期執行這一策略後的累積獎賞,換句話說:可以使用累積獎賞來評估策略的好壞,最優策略則表示在初始狀態下一直執行該策略後,最後的累積獎賞值最高。長期累積獎賞通常使用下述兩種計算方法:

16.2 K搖擺賭博機
首先我們考慮強化學習最簡單的情形:僅考慮一步操作,即在狀態x下只需執行一次動作a便能觀察到獎賞結果。易知:欲最大化單步獎賞,我們需要知道每個動作帶來的期望獎賞值,這樣便能選擇獎賞值最大的動作來執行。若每個動作的獎賞值為確定值,則只需要將每個動作嘗試一遍即可,但大多數情形下,一個動作的獎賞值來源於一個概率分佈,因此需要進行多次的嘗試。

單步強化學習實質上是K-搖臂賭博機(K-armed bandit)的原型,一般我們嘗試動作的次數是有限的,那如何利用有限的次數進行有效地探索呢?這裡有兩種基本的想法:

 

僅探索法:將嘗試的機會平均分給每一個動作,即輪流執行,最終將每個動作的平均獎賞作為期望獎賞的近似值。 
僅利用法:將嘗試的機會分給當前平均獎賞值最大的動作,隱含著讓一部分人先富起來的思想。

可以看出:上述兩種方法是相互矛盾的,僅探索法能較好地估算每個動作的期望獎賞,但是沒能根據當前的反饋結果調整嘗試策略;僅利用法在每次嘗試之後都更新嘗試策略,符合強化學習的思(tao)維(lu),但容易找不到最優動作。因此需要在這兩者之間進行折中。

16.2.1 ε-貪心
ε-貪心法基於一個概率來對探索和利用進行折中,具體而言:在每次嘗試時,以ε的概率進行探索,即以均勻概率隨機選擇一個動作;以1-ε的概率進行利用,即選擇當前最優的動作。ε-貪心法只需記錄每個動作的當前平均獎賞值與被選中的次數,便可以增量式更新。

16.2.2 Softmax
Softmax演算法則基於當前每個動作的平均獎賞值來對探索和利用進行折中,Softmax函式將一組值轉化為一組概率,值越大對應的概率也越高,因此當前平均獎賞值越高的動作被選中的機率也越大。Softmax函式如下所示:


16.3 有模型學習
若學習任務中的四個要素都已知,即狀態空間、動作空間、轉移概率以及獎賞函式都已經給出,這樣的情形稱為“有模型學習”。假設狀態空間和動作空間均為有限,即均為離散值,這樣我們不用通過嘗試便可以對某個策略進行評估。

16.3.1 策略評估
前面提到:在模型已知的前提下,我們可以對任意策略的進行評估(後續會給出演算過程)。一般常使用以下兩種值函式來評估某個策略的優劣:

狀態值函式(V):V(x),即從狀態x出發,使用π策略所帶來的累積獎賞; 
狀態-動作值函式(Q):Q(x,a),即從狀態x出發,執行動作a後再使用π策略所帶來的累積獎賞。

根據累積獎賞的定義,我們可以引入T步累積獎賞與r折扣累積獎賞:


由於MDP具有馬爾可夫性,即現在決定未來,將來和過去無關,我們很容易找到值函式的遞迴關係:

類似地,對於r折扣累積獎賞可以得到:

易知:當模型已知時,策略的評估問題轉化為一種動態規劃問題,即以填表格的形式自底向上,先求解每個狀態的單步累積獎賞,再求解每個狀態的兩步累積獎賞,一直迭代逐步求解出每個狀態的T步累積獎賞。演算法流程如下所示:

對於狀態-動作值函式,只需通過簡單的轉化便可得到:

16.3.2 策略改進
理想的策略應能使得每個狀態的累積獎賞之和最大,簡單來理解就是:不管處於什麼狀態,只要通過該策略執行動作,總能得到較好的結果。因此對於給定的某個策略,我們需要對其進行改進,從而得到最優的值函式。


最優Bellman等式改進策略的方式為:將策略選擇的動作改為當前最優的動作,而不是像之前那樣對每種可能的動作進行求和。易知:選擇當前最優動作相當於將所有的概率都賦給累積獎賞值最大的動作,因此每次改進都會使得值函式單調遞增。

將策略評估與策略改進結合起來,我們便得到了生成最優策略的方法:先給定一個隨機策略,現對該策略進行評估,然後再改進,接著再評估/改進一直到策略收斂、不再發生改變。這便是策略迭代演算法,演算法流程如下所示:

可以看出:策略迭代法在每次改進策略後都要對策略進行重新評估,因此比較耗時。若從最優化值函式的角度出發,即先迭代得到最優的值函式,再來計算如何改變策略,這便是值迭代演算法,演算法流程如下所示:

16.4 蒙特卡羅強化學習
在現實的強化學習任務中,環境的轉移函式與獎賞函式往往很難得知,因此我們需要考慮在不依賴於環境引數的條件下建立強化學習模型,這便是免模型學習。蒙特卡羅強化學習便是其中的一種經典方法。

由於模型引數未知,狀態值函式不能像之前那樣進行全概率展開,從而運用動態規劃法求解。一種直接的方法便是通過取樣來對策略進行評估/估算其值函式,蒙特卡羅強化學習正是基於取樣來估計狀態-動作值函式:對取樣軌跡中的每一對狀態-動作,記錄其後的獎賞值之和,作為該狀態-動作的一次累積獎賞,通過多次取樣後,使用累積獎賞的平均作為狀態-動作值的估計,並引入ε-貪心策略保證取樣的多樣性。

在上面的演算法流程中,被評估和被改進的都是同一個策略,因此稱為同策略蒙特卡羅強化學習演算法。引入ε-貪心僅是為了便於取樣評估,而在使用策略時並不需要ε-貪心,那能否僅在評估時使用ε-貪心策略,而在改進時使用原始策略呢?這便是異策略蒙特卡羅強化學習演算法。

16.5 AlphaGo原理淺析
本篇一開始便提到強化學習是AlphaGo的核心技術之一,剛好藉著這個東風將AlphaGo的工作原理了解一番。正如人類下棋那般“手下一步棋,心想三步棋”,Alphago也正是這個思想,當處於一個狀態時,機器會暗地裡進行多次的嘗試/取樣,並基於反饋回來的結果資訊改進估值函式,從而最終通過增強版的估值函式來選擇最優的落子動作。

其中便涉及到了三個主要的問題:(1)如何確定估值函式(2)如何進行取樣(3)如何基於反饋資訊改進估值函式,這正對應著AlphaGo的三大核心模組:深度學習、蒙特卡羅搜尋樹、強化學習。

1.深度學習(擬合估值函式)

由於圍棋的狀態空間巨大,像蒙特卡羅強化學習那樣通過取樣來確定值函式就行不通了。在圍棋中,狀態值函式可以看作為一種局面函式,狀態-動作值函式可以看作一種策略函式,若我們能獲得這兩個估值函式,便可以根據這兩個函式來完成:(1)衡量當前局面的價值;(2)選擇當前最優的動作。那如何精確地估計這兩個估值函式呢?這就用到了深度學習,通過大量的對弈資料自動學習出特徵,從而擬合出估值函式。

2.蒙特卡羅搜尋樹(取樣)

蒙特卡羅樹是一種經典的搜尋框架,它通過反覆地取樣模擬對局來探索狀態空間。具體表現在:從當前狀態開始,利用策略函式儘可能選擇當前最優的動作,同時也引入隨機性來減小估值錯誤帶來的負面影響,從而模擬棋局執行,使得棋盤達到終局或一定步數後停止。

3.強化學習(調整估值函式)

在使用蒙特卡羅搜尋樹進行多次取樣後,每次取樣都會反饋後續的局面資訊(利用局面函式進行評價),根據反饋回來的結果資訊自動調整兩個估值函式的引數,這便是強化學習的核心思想,最後基於改進後的策略函式選擇出當前最優的落子動作。