(十 一)從零開始學人工智能--強化學習: 強化學習入門基礎


強化學習入門基礎

1. 強化學習基礎知識

強化學習(reinforcement learning)是受行為心理學啟發的一個機器學習領域,其研究的是智能體(agent)如何在一個環境(environment)中采取動作(action)以最大化我們想要的獎勵(reward)。這是一個涵蓋領域非常廣的問題,也在博弈論、控制論、信息論、運籌學、基於模擬的優化、多代理系統、集群智能、統計學和遺傳算法等許多學科領域得到了研究。在運籌學和控制論領域,強化學習方法所在的領域被稱為近似動態規划。

1.1 強化學習發展歷程

  • 1956年Bellman提出了動態規划方法。

  • 1977年Werbos提出只適應動態規划算法。

  • 1988年sutton提出時間差分算法。

  • 1992年Watkins 提出Q-learning 算法。

  • 1994年rummery 提出Saras算法。

  • 1996年Bersekas提出解決隨機過程中優化控制的神經動態規划方法。

  • 2006年Kocsis提出了置信上限樹算法。

  • 2009年kewis提出反饋控制只適應動態規划算法。

  • 2014年silver提出確定性策略梯度(Policy Gradients)算法。

  • 2015年Google-deepmind 提出Deep-Q-Network算法。

可見,強化學習已經發展了幾十年,並不是一門新的技術。在2016年,AlphaGo擊敗圍棋世界冠軍李世石之后,融合了深度學習的強化學習技術大放異彩,成為這兩年最火的技術之一。總結來說,強化學習就是一個古老而又時尚的技術。

圖1 AlphaGo對戰李世石

1.2 強化學習特點

我們先看看機器學習的分類:

圖2 機器學習分類

可以看出機器學習包括三大類:有監督學習、無監督學習和強化學習。

回顧下前面課程講過的有監督學習和無監督學習:

(1)有監督學習:又稱為有導師的學習,即人工給定一組數據,每個數據的屬性值也給出,對於數據集中的每個樣本,想要算法預測並給出正確答案。以任務為驅動,主要包括兩類問題:回歸問題,分類問題。

(2)無監督學習:又稱為無導師學習,數據一般是沒有標簽的。以數據為驅動,包括聚類等。

那么,什么是強化學習呢?

強化學習(Reinforcement Learning, RL) 主要用於決策和控制領域,比如下棋,開車等;根據輸入信息確定行為。要解決的核心問題是在環境中執行動作以獲得最大的累積獎勵。

強化學習是基於當前環境的條件,而執行一個行動,以取得最大化的預期利益。其靈感源自於行為主義心理學,即有機體如何在環境給予的獎勵或懲罰的刺激下,逐步形成對刺激的預期,產生能獲得最大利益的慣性行為。比如:在訓練狗狗站起來時,如果狗狗站起來就給它獎勵,如給它肉條吃,如果不站起來就給它一些懲罰,如用鞭子打它,這樣的話,通過不斷的強化,從而讓狗能夠學會站起來這個動作。

強化學習也是如此,就是給很多樣本去學習算法,但是對於樣本沒有給出對錯,你執行完樣本后最后給出一個反饋,然后算法通過調整策略和行為來達到最優的狀態。

因此,相比於有監督學習和無監督學習,強化學習有以下特點:

(1)沒有監督數據,只有獎勵信號

(2)獎勵信號不一定是實時的,而很可能是延后的,即一般具有延時性

(3)時間(序列) 是一個重要因素,即強化學習的每一步與時間順序前后關系緊密;

(4)當前的行為影響后續接收到的數據;

1.3 強化學習應用

當前,強化學習在諸多領域內都得到廣泛的應用,包括金融、醫療、教育、計算機視覺、自然語言處理等領域。

圖3 強化學習應用

1.4 強化學習基本概念

強化學習是根據當前的條件作出決策和動作,以達到某一預期目標。

智能體(Agent) 是強化學習中的動作實體,處於某一環境 中。在每個時刻,智能體和環境都有自己的狀態。智能體根據當前狀態確定一個動作,並執行該動作。之后它和環境進入下一個狀態,同時系統給它一個反饋值,對動作進行獎勵或懲罰,以迫使智能體執行正確的動作。

(1)獎勵 Reward

獎勵\(R_t\)是信號反饋,是一個標量,反映智能體在\(t\)時刻做得怎么樣。智能體的目標是最大化累積獎勵。

強化學習主要基於這樣的“獎勵假設”:所有的目標都可以被描述成最大化累積獎勵。

例子:玩游戲時分數的增加/減少。

(2)序列決策 Sequential Decision Making

目標:選擇一系列動作來最大化未來的總體獎勵;

這些動作可能產生長期的后果;

獎勵可能是延遲的;

為了獲得更多的長期獎勵(long-term reward),有時會犧牲即時獎勵(immediate reward);

例子:下棋,每一步棋沒有獎勵,只有在棋局結束時才有輸/贏的反饋;

(3)智能體和環境 Agent and Environment

圖4 智能體和環境

上圖中,大腦代表智能體,地球代表環境。

(4)歷史和狀態 History and State

歷史是觀測(observations)、動作(actions)和獎勵(rewards)的序列:

\[H_t = O_1,R_1,A_1,...,A_{t-1},O_t,R_t \]

歷史決定接下來發生什么:

①、智能體選擇動作;

②、環境選擇觀測/獎勵;

狀態是用來決定接下來發生什么的信息,是關於歷史的一個函數:

\[S_t = f(H_t) \]

狀態分為:環境狀態智能體狀態信息狀態, 它們的含義分別如下所述:

①、環境狀態\(S^e_t\)是環境的私有表示,即環境用來決定下一個觀測/獎勵的所有數據,對智能體通常是不可見的。即使\(s^e_t\)是可見的,也可能包含不相關的信息。

②、智能體狀態\(S^a_t\)是智能體的內部表示,即智能體用來選擇下一個動作的所有信息。智能體狀態是強化學習算法可以利用的信息。它可以是歷史的任何函數:\(S^a_t = f(H_t)\)

③、信息狀態(又稱為Markov狀態)包括歷史的所有有用信息。

一個狀態\(S_t\)是Markov的,當且僅當:

\[P[S_{t+1}|S_t] = P[S_{t+1}|S_1,...,S_t] \]

即當前狀態包含了所有相關的歷史,只要當前狀態可知,所有的歷史信息都不需要。

(5)完全可觀測環境 Fully Observable Environments

圖5 完全可觀測環境

(6)部分可觀測環境 Partially Observable Environments

部分觀測性:智能體間接觀測環境,比如玩英雄聯盟或者王者榮耀只能觀察到有視野的部分。

在這種情況下,智能體狀態\(≠\)環境狀態;

這種問題是部分可觀測馬爾可夫決策過程(Partially Observable Markov Decision Process, POMDP);

此時,智能體必須構建自己的狀態表示\(S^a_t\),例如:

①、記住完整的歷史:\(S^a_t=H_t\)

②、使用循環神經網絡(Recurrent Neural Network, RNN),只根據智能體\(t-1\)時刻的狀態\(S^a_{t-1}\)和當前觀測\(O_t\)來獲得當前狀態\(S^a_t\)的表示:

\[S^a_t=\sigma(S^a_{t-1}W_s+O_tW_o) \]

其中,\(W_s\)\(W_o\)表示狀態和觀測的權重。

(7)學習和規划 Learning and Planning

在序列決策中主要包括兩類基本問題:

①、學習:環境在初始時是未知的,智能體通過與環境交互來改善它的策略;

②、規划:環境模型是已知的,智能體使用其模型執行計算,而不與環境進行任何交互,從而改善策略。

(8)探索和利用 Exploration and Exploitation

強化學習是一個試錯(trail-and-error) 的學習過程,智能體需要從與環境的交互中發現好的策略,同時在這個過程中不至於丟失太多的獎勵;

探索(Exploration)是為了發現關於環境更多的信息;即嘗試不同的行為繼而收集更多的信息、期望得到更好的決策。

利用(Exploitation)是根據現有的已知信息,采取當前認為最優的策略,從而來最大化獎勵;

探索(未知信息)和利用(已有信息)這兩者是矛盾的,如果“僅利用”,則可能只是得到局部最優,而得不到真正的最優策略;而“僅探索”則可能得到的策略或獎勵都比較差;因此,智能體在進行決策時需要在探索和利用之間進行權衡。

比如:去餐廳吃飯,探索是嘗試沒有去過的餐廳吃飯,而利用是選擇原先去過的餐廳中最喜歡吃的那家餐廳。

(9)預測和控制 Prediction and Control

預測:給定一個策略,來評估未來的獎勵;

控制:發現一個策略, 來優化未來的獎勵;

1.5 強化學習智能體的主要組成部分

強化學習智能體(RL agent)主要由三部分組成:

(1)策略 Policy

策略是智能體的行為,是狀態\(s\)到動作\(a\)的映射。

①、對於確定性策略,在每種狀態下智能體要執行的動作是唯一的:

\[a = \pi(s) \]

比如:在一個紅綠燈路口,狀態是綠燈時,執行的動作是通過;狀態是紅燈時,執行的動作是停止。

②、對於不確定性(隨機性)策略,智能體在一種狀態下可以執行的動作有多種,策略函數給出的是執行每種動作的概率,即按概率從各種動作中隨機選擇一種執行:

\[\pi(a|s)=P[A_t=a|S_t=s] \]

比如:在一個十字路口,定義3個動作:直行、左轉彎和右轉彎;此時這3種動作都可能被執行。

(2)價值函數 Value Function

價值函數是對未來獎勵的預測,用來評價狀態的好壞程度,進而來決定動作的選擇,例如:

\[{V_\pi }(s) = {{\rm E}_\pi }[{R_{t + 1}} + \gamma {R_{t + 2}} + {\gamma ^2}{R_{t + 3}} + ...|{S_t} = s] \]

(3)模型 Model

模型是智能體對環境的表示,體現了智能體是如何思考環境運行機制的。

模型至少解決兩個問題:

①、狀態轉移概率,即預測下一個狀態的概率:

\[p_{ss'}^a = P[{S_{t + 1}} = s'|{S_t} = s,{A_t} = a] \]

②、即時獎勵,即預測可能獲得的即時獎勵:

\[R_s^a = E[{R_{t + 1}}|{S_t} = s,{A_t} = a] \]

1.6 強化學習的分類

(1)按智能體的成分分類:

①、基於價值函數(Value Based):定義了狀態或動作的價值函數,來表示達到某種狀態或執行某種動作后得到的獎勵;傾向於選擇價值最大的狀態或動作;

②、基於策略(Policy Based):不需要定義價值函數,動作直接由策略函數產生,可以為動作分配概率分布,按照概率分布來執行動作;

③、Actor-Critic:既有價值函數,也有策略函數,兩者相互結合解決問題。

圖6 按智能體的成分分類

(2)按有無模型分類:

①、有模型/基於模型(Model Based):智能體嘗試建立一個描述環境動作過程的模型,以此來指導價值或策略函數的更新;主要是基於動態規划的算法,包括策略迭代算法值迭代算法

②、無模型/不基於模型(Model Free):智能體不需要關於環境的信息,不試圖了解環境如何工作,僅聚焦於價值或策略函數;主要包括蒙特卡洛算法時序差分學習等;

圖7 按有無模型分類

當然,還有其他分類方法,比如:按環境分類(完全可觀測環境和部分可觀測環境)、按使用手段分類(傳統強化學習和深度強化學習)等。

2. 動態規划

為什么要介紹動態規划?
正如開篇所講,在運籌學和控制論領域,強化學習方法所在的領域被稱為近似動態規划。
動態規划是將復雜問題拆分成相互聯系的小問題並按順序進行解決,即主要用於解決多階段決策問題,而從廣義上講,強化學習問題也是一種多階段決策問題,即智能體通過進行多階段決策來獲得最大化收益。因此,了解動態規划對學習強化學習有很大的幫助。

2.1 什么是動態規划

圖8 Quora關於動態規划的回答

用一句話解釋動態規划就是”記住之前做過的事“,如果更准確些,其實是”記住之前得到的答案“。

2.2 動態規划基本思想

首先說一下分治法:將原問題分解成規模更小的子問題,然后將這些子問題逐個擊破,將已解決的子問題合並,最終得到原問題的解。在這里,各個子問題之間是相互獨立的。

動態規划與分治法類似,但不同的是分解的各個子問題之間是是相互聯系的,通常具有時間或空間上的次序性,在求解的過程中按一定次序對子問題進行求解。為了避免多次解決這些子問題,它們的結果都逐漸被計算並儲存,從簡單的問題直到整個問題都被解決。

因此,對於一個動態規划問題,只需要從兩方面進行考慮:找出問題之間的聯系以及儲存子問題的結果。

2.3 動態規划基本概念

下面將通過圖9路徑選擇問題對動態規划進行詳解。

圖9 路徑選擇問題

2.3.1 多階段決策問題

如果一類活動過程可以分為若干個互相聯系的階段,在每一個階段都需要做出決策(采取措施),一個階段的決策確定以后,常常影響到下一個階段的決策,從而就完全確定一個過程的活動路線,則稱它為多階段決策問題。

在多階段決策問題中,各個階段采取的決策,一般來說是與時間相關的,決策依賴於當前狀態,又隨即引起狀態的轉移,一個決策序列就是在變化的狀態中產生出來的,因此有”動態“的含義,稱這種解決多階段決策最優化問題的方法為動態規划方法。

在圖9中,所求解的問題是:\(A\)點到\(E\)點;這個問題就是個多階段決策問題。

2.3.2 動態規划一些術語

(1)階段:把所給求解問題的過程恰當地分成若干個相互聯系的子問題,以便能夠按一定次序去求解,每次求解一個子問題,則對應一個階段。

在圖9中,階段:圖中的4個階段;

(2)狀態:狀態表示每個階段開始面臨的客觀條件,即在求解子問題時的已知條件。狀態描述了研究的問題過程中的狀態。

在圖9中,階段1的狀態是\(A\),階段2的狀態是\(B_1\)\(B_2\)\(B_3\),以此類推。那么,各個階段的狀態可以定義為:

\[S_1=\{A\} \]

\[S_2=\{B_1, B_2, B_3\} \]

\[S_3=\{C_1, C_2, C_3\} \]

\[S_4=\{D_1, D_2\} \]

最終階段(\(E\)點)在這里表示為\(S_5\),那么此階段的狀態定義為:

\[S_5=\{E\} \]

在這里,以上狀態的定義是為了與圖9相對應。而在實際應用中,我們一般以\(S_0\)作為初始狀態。

(3)決策:決策表示從當前階段的狀態出發到達下一階段的狀態所做出的的選擇。

在圖9中,比如當前階段是階段1,狀態是\(A\),到達下一階段2的狀態,可以選擇\(B_1\)\(B_2\)\(B_3\),這里的選擇就是決策;

(4)策略:策略表示由所有階段的決策組成的決策序列。

在圖9中,如果4個階段的選擇分別是\(B_1\)\(C_1\)\(D_1\)\(E\),那么,這些選擇組成的序列(\(A \rightarrow B_1 \rightarrow C_1 \rightarrow D_1 \rightarrow E\))就是其中一個策略。

(5)狀態轉移方程:狀態轉移方程是確定兩個相鄰階段的狀態的演變過程,描述了狀態之間是如何演變的。

在圖9中,假設\(x\)點和\(y\)點是相鄰兩個階段的點,\(dis[x]\)表示從\(x\)點到\(E\)點的距離,\(dis[y]\)表示從\(y\)點到\(E\)點的距離,\(map(x, y)\)表示從\(x\)點到\(y\)點的距離,那么,狀態轉移方程可以寫成:

\[dis[x]=dis[y]+map(x,y) \]

(6)最優策略:最優策略表示所有策略中代價最小、性能最優的策略。

在圖9中,如果尋找最優策略的話,即是求解從A點到E點的最短路徑問題,這里的最優策略是:\(A \rightarrow B_2 \rightarrow C_1 \rightarrow D_1 \rightarrow E\)

2.4 動態規划三要素

使用動態規划解決問題時,最重要的的是確定動態規划三要素:

(1)問題拆分:將原問題拆解為子問題,並找到子問題之間的具體聯系;

(2)狀態定義:定義每個階段的狀態;

(3)狀態轉移方程推導:找到從前一個階段轉化到后一個階段之間的遞推關系;

2.5 動態規划適用條件

(1)最優化原理:如果問題的最優解所包含的子問題的解也是最優的,就稱該問題具有最優子結構,即滿足最優化原理。簡而言之,一個最優化策略的子策略總是最優的。

(2)無后效性:某階段狀態一旦確定,這個狀態的決策只與當前狀態有關,與以前各個階段的狀態無關。即每個狀態都是過去歷史的一個完整總結。

(3)子問題重疊性:子問題之間不是相互獨立的,一個子問題在下一階段決策中可能被多次使用到。

2.6 動態規划例子

下面通過路徑迷宮0-1背包 兩個經典案例來溫習如何通過三要素求解 動態規划問題。

2.6.1 路徑迷宮問題

問題描述

一個機器人位於一個\(m \times n\)網格的左上角(起始點在下圖中標記為“\(Start\)”)。機器人每次只能向下或者向右移動一步。機器人試圖達到網格的右下角(在下圖中標記為“\(Finish\)”)。問總共有多少條不同的路徑?

圖10 路徑迷宮問題

例如:上圖是一個\(3 \times 7\)的網格,有多少可能的路徑?

根據動態規划三要素來對該問題進行求解:

(1)問題拆分

該問題是機器人從“\(Start\)”格到“\(Finish\)”格,機器人到達一個格子可以通過其上邊和左邊的格子到達,即第\((i, j)\)格可以從\((i-1, j)\)格和\((i, j-1)\)格到達,因此,可以把第\((i, j)\)格問題拆分為\((i-1, j)\)格和\((i, j-1)\)格問題,然后這兩個問題也可以按以上方式重復,直到“\(Start\)”位置。

(2)狀態定義

在問題階段中提到第\((i, j)\)格會和\((i-1, j)\)格和\((i, j-1)\)格有關聯,那有什么關聯呢?可以這樣考慮,第\((i-1, j)\)格問題的答案其實是從“\(Start\)”到第\((i-1, j)\)格的路徑總數,第\((i, j-1)\)格同理。因此,我們可以把第\((i, j)\)格的狀態定義為“\(Start\)到第\((i, j)\)格的路徑總數”。

(3)狀態轉移方程推導

根據狀態定義也知道,第\((i, j)\)格的總路徑數等於第\((i-1, j)\)格和\((i, j-1)\)格的路徑數之和,因此,狀態轉移方程為:

\[f(i, j)=f(i-1, j)+f(i, j-1) \]

注意:在實現過程中,當機器人處於第1行和第1列時,其對應路徑總數都是1。

參考代碼:

class Solution {
    public int countPaths(int m, int n) {
        int[][] f = new int[m][n];        
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                if (i == 0 || j == 0)
                    f[i][j] = 1;
                else {
                    f[i][j] = f[i - 1][j] + f[i][j - 1];
                }
            }
        }
        return f[m - 1][n - 1];        
    }
}

2.6.2 0-1背包問題

問題描述

一共有\(N\)個物品,它們有各自的重量和價值,第\(i\)\(i\)從1開始)件物品的重量為\(w[i]\),價值為\(v[i]\),在總重量不超過背包承載上限\(W\)的情況下,能夠裝入背包的最大價值是多少?

圖11 01背包問題

在這里,如果使用暴力窮舉的方法,每件物品都存在裝入和不裝入兩種情況,因此,一共需要\(2^N\)種情況,復雜度很高。

如果按照動態規划的方法,根據動態規划三要素來進行求解:

(1)問題拆分

該問題的目標是使得書包內物品的總價值最大,而變量是物品和書包的限重。

定義\(dp[i][j]\)表示將前\(i\)件商品裝進限重為\(j\)的背包可以獲得的最大價值,\(0<=i<=N,0<=j<=W\)

當背包的限重為\(j\)時,對於第\(i\)件物品,有兩種選擇:

①、背包限重充足,能夠裝下,選擇放入;此時背包的限重減少\(w[i]\),即\(j-w[i]\),裝入背包中物品的價值是裝入前\(i-1\)件物品的價值與第\(i\)件物品價值的總和,即\(dp[i-1][j-w[i]] + v[i]\)

②、背包限重不足,不放入;此時背包的限重為\(j\),價值為\(dp[i-1][j]\)

通過以上兩種方式進行重復,直到放入物品的數量為0為止。

(2)狀態定義

根據問題階段的描述,可以將第\(i\)個階段的狀態定義為\(dp[i][j]\),即前\(i\)件商品裝進限重為\(j\)的背包可以獲得的最大價值。

(3)狀態轉移方程推導

根據問題階段和狀態定義的描述,第i階段背包的總價值為上述兩種情況中取最大值的情況,即狀態轉移方程為:

\[dp[i][j] = max(dp[i-1][j], dp[i-1][j-w[i]]+v[i])\ \ if\ \ j>=w[i] \]

參考代碼:

for (int i = 0; i <= N; i++) {
	for (int j = 0; j <= W; j++) {
		if (j < w[i])
			dp[i][j] = dp[i - 1][j];
		else
			dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - w[i]] + v[i]);
		}
	} 

3. 馬爾可夫決策過程

在機器學習領域,環境通常被闡釋成一個馬爾可夫決策過程(Markov Decision Process, MDP),許多強化學習算法都是用了動態編程(dynamic programming)技術。傳統技術和強化學習算法之間主要不同在於后者並不需要關於 MDP 的知識並且它們的目標是無法獲取明確的方法的大型 MDP。強化學習要解決的問題可以抽象成馬爾可夫決策過程。這里先介紹下馬爾可夫過程,再進一步介紹馬爾可夫決策過程。

3.1 馬爾可夫過程

(1) 馬爾可夫特性 Markov Property

在上面介紹強化學習的信息狀態時,介紹到:

一個狀態\(S_t\)是Markov的,當且僅當:

\[P[S_{t+1}|S_t] = P[S_{t+1}|S_1,...,S_t] \]

即當前狀態包含了所有相關的歷史,只要當前狀態可知,所有的歷史信息都不需要。

馬爾可夫特性:當一個隨機過程在給定當前狀態及所有過去狀態情況下,其未來狀態的條件概率分布僅依賴於當前狀態。

(2) 馬爾可夫過程 Markov Process

馬爾可夫過程:又稱為馬爾可夫鏈(Markov Chain),是一個無記憶的隨機過程,其中,隨機過程是指一個系統的狀態隨着時間線隨機演化。也就是說,馬爾可夫過程是一個具有馬爾可夫特性的隨機狀態序列\(S_1\), \(S_2\), ...。

馬爾可夫過程可以表示成一個二元組:

\[<S, P> \]

其中,\(S\)是有限的狀態集合,\(P\)是一個狀態轉移概率矩陣。

對於馬爾可夫狀態\(s\)和其后繼狀態\(s'\),狀態轉移概率定義為:

\[P_{ss'} = P[S_{t+1}=s'|S_t=s] \]

狀態轉移矩陣\(P\)定義了所有狀態的轉移概率:

\[P = from\mathop {\left[ {\begin{array}{*{20}{c}} {{P_{11}}}& \cdots &{{P_{1n}}}\\ \vdots &{}&{}\\ {{P_{n1}}}& \cdots &{{P_{nn}}} \end{array}} \right]}\limits^{to} \]

其中,\(n\)是狀態數量,矩陣中的每一行元素之和為1。

3.2 馬爾可夫決策過程

與馬爾可夫過程不同的是,在馬爾可夫決策過程(MDP)中,智能體可以執行動作,從該改變自己和環境的狀態,並且得到反饋(即懲罰或獎勵)。

MDP可以表示成一個五元組:

\[<S, A, P, R, \gamma > \]

其中,\(S\)為有限的狀態集合;

\(A\)為有限的動作集合;

\(P\)為狀態轉移矩陣,\(P^a_{ss'} = P[S_{t+1}=s' | S_t=s, A_t=a]\)

\(R\)為獎勵函數(reward function),\(R_s^a = E[{R_{t + 1}}|{S_t} = s,{A_t} = a]\);這個函數是即時獎勵的期望,即在時刻\(t\)時,智能體的狀態為\(s\),在執行動作\(a\)后,下一個時刻\(t+1\)立即能得到的獎勵\(R_{t+1}\)的期望。

\(\gamma\)為折扣因子(discount factor),\(\gamma \in [0,1]\)

(1)回報 Return

強化學習的目標是達到某種預期,當前執行動作的結果會影響系統后續的狀態,因此,需要確定動作在未來是否能夠得到好的回報,這種回報具有延時性。

定義回報(Return)\(G_t\)是從\(t\)時刻之后未來執行一組動作能夠獲得的獎勵的總和,即:

\[{G_t} = {R_{t + 1}} + \gamma {R_{t + 2}} + ... = \sum\limits_{k = 0}^\infty {{\gamma ^k}{R_{t + k + 1}}} \]

這里,折扣因子\(\gamma\)體現了未來的獎勵在當前時刻的價值比例;

\(k+1\)步后,獲得的獎勵\(R\)\(t\)時刻體現的價值是\({\gamma} ^k R\)

\(\gamma\)接近0時,趨向於短期性評估;當\(\gamma\)趨向於1時,趨向於考慮遠期的利益;

使用折扣因子\(\gamma\)的原因:

①、沒有一個完美的模型能夠擬合出未來會發生什么,未來具有不確定性,執行特定的動作不一定得到特定的狀態,所以,將來的獎勵所占的權重隨着時間衰減;

②、如果不加上折扣因子,當狀態無限時,會導致求和項趨向於無窮大,不收斂;

③、更符合人類/動物的行為:偏好即時獎勵\(R_{t+1}\)

(2)策略 Policy

策略\(\pi\)是給定狀態下動作的概率分布,用\(\pi(a|s)\)表示在MDP中某一狀態\(s\)采取動作\(a\)的概率:

\[\pi(a|s)=P[A_t=a|S_t=s] \]

一個策略完整定義了智能體的行為,即定義了智能體在各個狀態下各種可能的動作及其概率的大小。

MDP的策略僅和當前狀態有關,與歷史信息無關;

(3)價值函數 Value Function

類似於有監督學習中需要定義損失函數來評價預測函數的優劣,在強化學習中也需要對策略的優劣進行評價,為此定義了了價值函數。

價值函數包括狀態價值函數(state-value function)\(v_{\pi}(s)\)動作價值函數(action-value function)\(q_{\pi}(s,a)\)

①、狀態價值函數\(v_{\pi}(s)\)表示在狀態\(s\)下,遵循策略\(\pi\)執行動作,能夠獲得的回報期望;或者說當執行策略\(\pi\)時,評估智能體處在狀態\(s\)時的價值大小,即:

\[v_{\pi}(s)=E_{\pi}[G_t|S_t=s] \]

②、動作價值函數\(q_{\pi}(s,a)\)表示在遵循策略\(\pi\)時,對當前狀態\(s\)執行具體的動作\(a\)時所能獲得的回報期望;或者說在執行策略\(\pi\)時,評估處在狀態\(s\)時執行動作\(a\)的價值大小,即:

\[q_{\pi}(s,a)=E_{\pi}[G_t|S_t=s,A_t=a] \]

動作價值函數除了指定狀態\(s\)和策略\(\pi\)外,還指定了在當前狀態\(s\)時執行的動作\(a\)。這個函數衡量的是按照某一策略,在某一狀態時執行各種動作的價值。

(4)貝爾曼期望方程 Bellman Expectation Equation

狀態價值函數\(v_{\pi}(s)\)可以分解為即時獎勵與其后繼狀態的折扣價值之和,即:

\[v_{\pi}(s)=E_{\pi}[R_{t+1}+{\gamma}v_{\pi}(S_{t+1})|S_t=s] \]

動作價值函數可以轉化為即時獎勵與后繼狀態執行相應動作的折扣價值之和,即:

\[q_{\pi}(s,a)=E_{\pi}[R_{t+1}+{\gamma}q_{\pi}(S_{t+1},A_{t+1})|S_t=s,A_t=a] \]

\(v_{\pi}(s)\)\(q_{\pi}(s,a)\)之間的關系:

下面圖中的空心圓圈表示狀態,黑色實心圓圈表示動作,連線表示把該狀態與執行的動作關聯起來。

①、使用\(q_{\pi}(s,a)\)表示\(v_{\pi}(s)\)

\[{v_\pi }(s) = \sum\limits_{a \in A} {\pi (a|s){q_\pi }(s,a)} \]

\[圖12\ 使用q_{\pi}(s,a)表示v_{\pi}(s) \]

②、使用\(v_{\pi}(s)\)表示\(q_{\pi}(s,a)\)

\[{q_\pi }(s,a) = R_s^a + \gamma \sum\limits_{s' \in S} {P_{ss'}^a{v_\pi }(s')} \]

\[圖13\ 使用v_{\pi}(s)表示q_{\pi}(s,a) \]

將上述兩種情況組合起來,可以得到:

\[{v_\pi }(s) = \sum\limits_{a \in A} {\pi (a|s)}(R_s^a + \gamma \sum\limits_{s' \in S} {P_{ss'}^a{v_\pi }(s'))} \]

\[{q_\pi }(s,a) = R_s^a + \gamma \sum\limits_{s' \in S} {P_{ss'}^a\sum\limits_{a' \in A} {\pi (a'|s'){q_\pi }(s',a')}} \]

(5)最優價值函數 Optimal Value Function

最優狀態價值函數\(v_*(s)\)是從所有策略產生的狀態價值函數中,選取使狀態\(s\)價值最大的函數:

\[{v_*}(s) = \mathop {max}\limits_\pi {v_\pi }(s) \]

類似的,最優動作價值函數\(q_*(s,a)\)是從所有策略產生的動作價值函數中,選取使狀態動作對\(<s,a>\)價值最大的函數:

\[{q_*}(s,a) = \mathop {\max }\limits_\pi {q_\pi }(s,a) \]

最優價值函數明確了MDP可能的最優表現。

(6)最優策略 Optimal Policy

對於任何狀態\(s\),當遵循策略\(\pi\)的價值不小於策略\(\pi'\)的價值時,則策略\(\pi\)優於策略\(\pi'\)

\[\pi \ge \pi ' \ if \ {v_\pi }(s) \ge {v_{\pi '}}(s),\ \forall s \]

對於任何MDP:

①、存在一個最優策略,好於或等於所有其他策略;

②、所有的最優策略都實現了最優價值函數,包括最優狀態價值函數和最優動作價值函數;

怎么尋找最優策略呢?

最優策略可以通過最大化最優動作價值函數\(q_*(s,a)\)來尋找:

\[{\pi _*}(a|s) = \left\{ \begin{array}{l} \begin{array}{*{20}{c}} 1&{if \ a = \mathop {\arg \max }\limits_{a \in A} {q_*}(s,a)} \end{array}\\ \begin{array}{*{20}{c}} 0&{otherwise} \end{array} \end{array} \right. \]

對於任何MDP問題,總存在一個確定性的最優策略;

如果知道了最優動作價值函數\(q_*(s,a)\),則表明找到了最優策略。

(7)貝爾曼最優方程 Bellman Optimality Equation

對於\(v_*\),一個狀態的最優價值等於從該狀態出發執行的所有動作中產生的動作價值中最大的那個動作價值:

\[{v_*}(s) = \mathop {\max }\limits_a {q_*}(s,a) \]

對於\(q_*\),在狀態\(s\),采取動作\(a\)的最優價值由兩部分組成,一部分是離開狀態\(s\)時的即時獎勵,另一部分是其后繼狀態\(s'\)的最優狀態價值的概率求和:

\[{q_*}(s,a) = R_s^a + \gamma \sum\limits_{s' \in S} {P_{ss'}^a{v_*}(s')} \]

將上述兩種情況組合起來,可以得到:

\[{v_*}(s) = \mathop {\max }\limits_a (R_s^a + \gamma \sum\limits_{s' \in S} {P_{ss'}^a{v_*}(s')}) \]

\[{q_*}(s,a) = R_s^a + \gamma \sum\limits_{s' \in S} {P_{ss'}^a\mathop {\max }\limits_{a'} {q_*}(s',a')} \]

貝爾曼最優方程是非線性的,一般通過迭代的方法來求解貝爾曼最優方程,例如:基於動態規划的算法(價值迭代、策略迭代)、蒙特卡洛算法和時序差分學習等,這些方法在前文中強化學習的分類中有提到,后續會進行講解。

聲明

本博客所有內容僅供學習,不為商用,如有侵權,請聯系博主,謝謝。

參考資料

[1] 動態規划之初識動規:有了四步解題法模板,再也不害怕動態規划

[2] 動態規划理解

[3] 路徑迷宮問題

[4] 動態規划之背包問題系列

[5] David Silver強化學習公開課

[6] David Silver強化學習公開課中文講解

[7] 機器學習原理、算法與應用

[8] 人工智能:一種現代的方法(第3版)

[9] An Introduction to Reinforcement Learning

[10] Algorithms for Reinforcement Learning


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM