強化學習筆記1-有限馬爾可夫決策過程

這個系列的筆記打算寫的是看了david silver的視頻和sutton的introduction to rl(前幾章)後的摘要,大概就是我覺得重要的東西。

我發現david silver的視頻和introduction在大綱內容上是非常相似的,具體細節上,David silver的視頻更強調實用,會有一些比較新的內容,sutton的書更理論,有助於完整地理解強化學習的本質。

這個筆記的內容不一定對,有些純屬個人瞎掰。另外由於本人是做無人機控制的,所以學習強化學習的過程中會比較關注控制相關的內容。

這次的筆記主要介紹強化學習的對象模型、重要的概念定義,一言以蔽之就是建模。

強化學習的“智能體”-“環境”結構

主要概念

強化學習研究的問題是智能體(agent)環境(environment)中進行一系列動作(action),然後如何通過環境反饋給智能體的狀態(state)和獎勵(reward)來不斷提升自身的策略(policy)的問題。示意圖如下:
rl0-interface

這裏麪包含幾個概念定義:

  • 智能體(Agent):也可以叫做學習者,決策者,我們設計的強化學習算法的載體。

  • 環境(Environment):外部的可以給智能體反饋信息的一切物體都可以成爲環境,這裏的外部不是以物理邊界作爲區分,比如機器人上的傳感器是可以給智能體反饋狀態信息的,所以傳感器屬於“環境”的一部分。

  • 時間序列:這裏假設智能體從環境採集信息以及改變動作都只能在一個離散的時刻序列上進行,表示爲t=0,1,2,3,,t=0,1,2,3,\dots,

  • 狀態(State):狀態是一個表示能夠表徵整個系統(包括智能體、環境的動力學)所有信息的向量,比如小車的位置、速度、方向,鍋爐的溫度、氣壓。實際一般通過傳感器來收集系統狀態,因此往往只能得到系統的一部分狀態,而非所有的狀態,這個過程成爲觀測(Observe)。但是,爲了方便前面的原理描述,往往假設可以拿到系統的完整狀態。系統狀態在
    tt 時刻的狀態簡寫爲 StS_t

  • 動作(Action):動作是智能體能夠進行的能影響環境的行爲,比如輸出電壓改變鍋爐溫度,輸出推力改變小車位置,系統狀態在tt 時刻的狀態簡寫爲 AtA_t

  • 獎勵(Reward):獎勵是一個標量,智能體完成一個動作後,環境就會給智能體下一時刻的狀態st+1s_{t+1}和獎勵rtr_t,獎勵是環境告訴智能體的對當前狀態或者狀態和動作的評價,這個評價一般是暫時的、粗糙的,比如下棋,在未分出勝負的步驟評價是0,輸了的步驟評價爲-1,贏了的步驟評價爲+1。

有限馬爾可夫決策過程

馬爾可夫性

馬爾可夫性是描述的是一個系統的未來的狀態St+1S_{t+1}只依賴當前狀態StS_t而非過去的所有狀態S0,S1,S2,S_0,S_1,S_2,\dots,簡單的說就是,根據系統的當前狀態,當前動作,系統的動力學,就可以推算下一時刻的狀態。用數學的語言來描述就是:

P[St+1St]=P[St+1S1,,St] P[S_{t+1} | S_t]=P[S_{t+1} | S_1,\dots,S_t]

大部分的控制系統的狀態都有馬爾可夫性。強化學習一般假設研究的對象的狀態具有馬爾可夫性,那麼一個片段的強化學習信息序列(軌跡)可以表述爲:

S0,A0,R1,S1,A1,S2,,St,At,Rt+1,St+1 S_0,A_0,R_1,S_1,A_1,S_2,\dots,S_t,A_t,R_{t+1},S_{t+1}

概率轉移矩陣

對於有馬爾可夫性的系統,存在一個概率矩陣,描述的是下一時刻的狀態與當前時刻的狀態的關係,稱爲概率轉移矩陣:

p(s,rs,a)=Pr{St+1=s,Rt+1=rSt=s,At=a} p(s',r|s,a)=Pr\{S_{t+1}=s',R_{t+1}=r|S_t=s,A_t=a\}

這裏大寫的StS_t等表示的是一個代表t時刻的隨機變量,而小寫的s,ss,s'表示的這個時刻的狀態值,下一個時刻的狀態值,是一個確定的常量。
一般地,轉移矩陣是一個nnn\cdot n的方陣,如果是一個確定性系統,那麼轉移矩陣的每行只有一個1,其他項爲0。

目標、回報和片段

強化學習的目標是通過設計合理的動作序列,使得智能體在需要的時間段內儘可能多地獲取獎勵。因此強化學習優化的目標具有以下特點:

  • 目標是一個長期累計的總體獎勵,而非某一時刻的獎勵

  • 目標是由獎勵這種簡單的標量組成,是一種易於衡量的指標

回報(Return)是用數學語言描述的強化學習的目標:
Gt=Rt+1+Rt+2++RT G_t=R_{t+1}+R_{t+2}+\dots+R_T
其中,TT是系統一個運行的最終時刻,對於棋牌類遊戲就是分出輸贏的那個時刻。一個系統從0時刻開始到TT時刻結束,這稱爲一個片段(episode),強化學習一般在經過大量片段的學習後,再通過少量的片段來測試學習到的算法的性能。

對於控制這種沒有最終時刻,就是需要連續源源不斷地運行下去的系統,往往需要引入折扣因子(discount)來防止回報趨向無窮大(訓練容易發散):

Gt=Rt+1+γRt+2+=k=0γkRt+k+1 G_t=R_{t+1}+\gamma R_{t+2}+\dots=\sum_{k=0}^\infty \gamma^kR_{t+k+1}

同時,可以通過調整γ\gamma來使算法變得更有遠見(趨向於1),或則更重視眼前的狀態(趨向於0)。

另外,回報還有一個有趣的特性:
Gt=Rt+1+γRt+2+γ2Rt+3=Rt+1+γ(Rt+2+γRt+3+)=Rt+1+γGt+1 \begin{aligned} G_t &= R_{t+1}+\gamma R_{t+2} + \gamma^2 R_{t+3}\dots \\ &= R_{t+1}+\gamma( R_{t+2} + \gamma R_{t+3} +\dots) \\ &= R_{t+1} + \gamma G_{t+1} \end{aligned}

策略與值函數

爲了完成上述目標,強化學習制定了兩個基本任務,一個是策略評價(policy evaluation),評價當前狀態(或者當前狀態做出指定動作)的優劣,一個是策略提升(policy improvement),根據評價的結果改進策略。

  • 策略(Policy):一個能夠根據某時刻的系統狀態(StS_t),輸出動作(AtA_t)的函數。

  • 值函數(value function): 用於策略評價的函數稱爲值函數。

一般地,策略用π\pi表示,π(as)\pi(a|s)是描述的是策略在狀態s時輸出動作a的概率。對於確定性的策略,在某一個狀態下只對應有一個a會輸出1,其餘爲0。由於,策略會影響系統狀態的轉移,從而影響系統的回報,一般地,一個策略會對應一個值函數,表示爲υπ\upsilon_\pi。對於具有馬爾可夫性的系統,υπ\upsilon_\pi的數學表示爲:
υπ=Eπ[k=0γkRt+k+1St=s] \upsilon_\pi=\mathcal{E}_\pi[\sum_{k=0}^\infty \gamma^kR_{t+k+1}|S_t=s]
其中E[]\mathcal{E}[\cdot]表示求取括號內隨機變量的期望,簡單的說,值函數是一個從某時刻狀態到相應標量評價的映射,而評價的理想值是回報的期望,描述的是當前的狀態有多好。

上述的值函數僅僅基於系統狀態,稱爲狀態值函數(state-value function),還有一種認爲動作與狀態是獨立的值函數qπ(s,a)q_\pi(s,a),它根據系統狀態和動作評價智能體在當前狀態做出這個動作有多好,數學表達式如下:
qπ=Eπ[k=0γkRt+k+1St=s,At+a] q_\pi=\mathcal{E}_\pi[\sum_{k=0}^\infty \gamma^kR_{t+k+1}|S_t=s, A_t+a]
這種值函數稱爲動作值函數(action-value function)。

值函數的回溯

回溯(backup),也有人翻譯成備份,我理解的它的概念:智能體在一個狀態下做一個動作,然後收穫下一個狀態以及獎勵,這稱爲一條經驗,那麼如何利用這條經驗來改進值函數的過程。

狀態值函數的回溯

貝爾曼方程(Bellman equation),強化學習的數學實質就是求解貝爾曼方程的解。狀態值函數對應的貝爾曼方程:
υπ(s)=Eπ[GtSt=s]=Eπ[rs+γGt+1St=s]=aπ(as)s,r[rs+γυπ(s)] \begin{aligned} \upsilon_\pi(s) &=\mathcal{E}_\pi[G_t|S_t=s]\\ &= \mathcal{E}_\pi[r_s + \gamma G_{t+1}|S_t=s]\\ &= \sum_a\pi(a|s)\sum_{s',r}[r_s + \gamma \upsilon_\pi(s')] \end{aligned}

上式就是狀態值函數的貝爾曼方程,其回溯示意圖如下:

rl1_backupV

在狀態s下,根據π\pi選擇不同的動作a,再以不同的概率進入下一個狀態s’並收穫獎勵r。注意,貝爾曼方程是有兩重求和,對應上圖的兩個分叉,所以,貝爾曼方程其實涵蓋了下一時刻發生的所有可能性,而根據馬爾可夫性,下一時刻理論上包含了後續所有的時刻的信息,即υπ(s)\upsilon_\pi(s)數學實質上是當前狀態在未來可能拿到的所有回報的期望。

動作值函數的回溯

動作值函數與狀態值函數有細微的差異,其貝爾曼方程爲:
qπ(s,a)=rs+γspssaaπ(as)qπ(s,a) q_\pi(s,a)=r_s + \gamma\sum_{s'}p_{ss'}^a\sum_{a'}\pi(a'|s')q_\pi(s',a')

可以看出相比於狀態值函數,動作值函數回溯時還需要下一個狀態的動作,求和順序不一樣。動作值函數的回溯圖如下所示:

rl1_backupQ

最優值函數與最優策略

強化學習的最終目標是要尋找最優的值函數和最優的策略,這裏的最優策略($ \pi^* )使)是指能使智能體拿到最大回報的策略,最優值函數是系統在最優策略的作用下采樣逼近得到的值函數,即( \upsilon_{ \pi^* }(s)=\upsilon^* (s) $ )。從數學上說,最優策略的定義如下:
ππυπ(s)υπ(s) \pi\ge\pi' 當且僅當任何狀態下\upsilon_{\pi}(s)\ge\upsilon_{\pi'}(s)

最優的狀態值函數定義如下:
υ(s)=maxπυπ(s) \upsilon^*(s)=\max_\pi \upsilon_\pi(s)

最優的動作值函數定義如下:
q(s)=maxπqπ(s,a) q^*(s)=\max_\pi q_\pi(s,a)

最優的狀態值函數和最優的動作值函數存在以下關係:
q(s,a)=E[Rt+1+γυ(St+1)St=s,At=a] q^* (s,a)=\mathcal{E}[R_{t+1}+\gamma\upsilon^*(S_{t+1})|S_t=s,A_t=a]

最優的值函數和最優策略都是唯一的,這裏先給一個結論,下一次的筆記做說明。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章