學習目標
-
Agent和Environment之間的交互過程;
-
理解馬爾科夫決策過程(Markov Decision Processes,MDPs)和如何解讀轉換圖;
-
理解值函數(Value Functions)、動作值函數(Action-Value Functions)和決策函數(Policy Functions)
-
理解貝爾曼方程(Bellman Equations)和值函數或者動作值函數的貝爾曼最優方程。
Agent與Environment的交互
對於從交互過程中學習,最終達到目標的這種問題,MDPs旨在建立一種簡單直接的框架來描述這種問題,上一節已經簡單的說明了Agent與Environment的關係,如下圖所示
Agent每完成一個action,就會從environment得到反饋——state和reward。總結起來說,action就是一個任務中agent做出的選擇;state是做出選擇的基礎;reward是評價這個選擇做的好不好的基礎。
馬爾科夫過程(Markov Process,MP)
我們說一個state若滿足 ,則其具有馬爾可夫性,即該state完全包含了歷史中的所有信息。馬爾科夫過程是無記憶的隨機過程,即隨機狀態序列 具有馬爾可夫屬性。
一個馬爾科夫過程可以由一個元組組成 ⟨S,P⟩
- S 爲(有限)的狀態(state)集;
- P 爲狀態轉移矩陣, Pss′=P[St+1=s′∣St=s] 。所謂狀態轉移矩陣就是描述了一個狀態到另一個狀態發生的概率,所以矩陣每一行元素之和爲1。
馬爾科夫決策過程(Markov Decision Process,MDP)
MDP相對於MP加入了瞬時獎勵 R(Immediate reward)、動作集合 A 和折扣因子 γ(Discount factor),這裏的瞬時獎勵說的是從一個狀態 s 到下一個狀態 s′ 即可獲得的rewards,雖然是“獎勵”,但如果這個狀態的變化對實現目標不利,就是一個負值,變成了“懲罰”,所以reward就是我們告訴agent什麼是我們想要得到的,但不是我們如何去得到。
MDP由元組⟨S,A,P,R,γ⟩ 定義。其中
- S 爲(有限)的狀態(state)集;
- A 爲有限的動作集;
- P 爲狀態轉移矩陣。所謂狀態轉移矩陣就是描述了一個狀態到另一個狀態發生的概率,所以矩陣每一行元素之和爲1。Pss′a=P[St+1=s′∣St=s,At=a]
- R 爲回報函數(reward function), Rsa=E[Rt+1∣St=s,At=a]
- γ 爲折扣因子,範圍在[0,1]之間, 越大,說明agent看得越“遠”。
值函數(Value Function)和動作值函數(action-value function)
這裏就不得不提一個概念——回報 Gt (Return),回報 描述了從時間 t 起的總折扣獎勵,即
Gt=Rt+1+γRt+2+…=k=0∑∞γkRt+k+1
一般來說,我們的任務分兩種類型,一種是可以分爲一個個episode的任務,我們稱之爲episodic tasks,這裏的折扣因子一般取 γ=1 ;另一種是連續的任務,與前一種相對應,我們稱之爲continuing tasks,這時折扣因子一般取0到1之間的一個數。
我們的最終的目標就是讓回報的期望(expected return)最大。
我們如何去衡量一個agent轉移到一個state對於我們達到目的有“多有用(how good)”呢?上面也提到了,那就是使回報的期望最大,而agent每一步得到的reward與其採取的action有關,所以值函數是在一個(一組)action下定義的,我們稱之爲策略(policy)。所以 MDP中一個狀態s在策略 π 下的值函數記爲 vπ(s) ,它代表從s開始的回報的期望。
vπ(s)=Eπ[Gt∣St=s]
相似的,我們定義從狀態s開始,並執行動作a,然後遵循策略 π 所獲得的回報的期望記爲動作值函數(action-value function)
qπ(s,a)=Eπ[Gt∣St=t,At=a]
我剛接觸這兩個概念的時候很迷惑,爲什麼要定義這麼兩個概念,不就是在狀態s多執行了一個動作a麼?這樣做有什麼意義呢?於是我請教了 @鹹魚天
,他這樣回答道:
這是兩個概念,分別是狀態價值V(s)和動作價值Q(s,a),前者是對環境中某一個狀態的價值大小做的評估,後者是對在某狀態下的動作的價值大小的評估。概念類似,但主要區別應該是體現在用途以及算法上吧,比如對於離散型的動作空間,可以單純基於動作Q值去尋優(DQN算法),如果是動作空間巨大或者動作是連續型的,那麼可以判斷狀態價值並結合策略梯度來迭代優化(AC算法)~
簡單來說就是不同場景下我們會選擇動作值函數或者狀態值函數來尋找最優策略,學到後面就會有更深的體會了。下面學習就帶着這個問題思考。
貝爾曼方程(Bellman Equation)
狀態值函數可以分解爲瞬時回報加上後續狀態的折扣值,即
vπ(s)=Eπ[Rt+1+γvπ(St+1)∣St=s]
動作值函數也可以如此分解:
qπ(s,a)=Eπ[Rt+1+γqπ(St+1,At+1)∣St=s,At=a]
下面這幅圖叫做backup diagrams,其中每一個空心圓圈代表一個狀態(state),一個實心的圓圈代表一個狀態-動作對(state-action pair)
vπ(s)=a∈A∑π(a∣s)qπ(s,a)
qπ(s,a)=Rsa+γs′∈S∑Pss′avπ(s′)
於是有
vπ(s)=a∈A∑π(a∣s)(Rsa+γs′∈S∑Pss′avπ(s′))
qπ(s,a)=Rsa+γs′∈S∑Pss′aa′∈A∑π(a′∣s′)qπ(s′,a′)
上述兩個式子分別稱爲關於 vπ(s) 和qπ(s,a) 的貝爾曼方程,其描述了當前狀態值函數和其後續狀態值函數之間的關係,即狀態值函數(動作值函數)等於瞬時回報的期望加上下一狀態的(折扣)狀態值函數(動作值函數)的期望。
貝爾曼最優方程(Bellman Optimality Equation)
強化學習的目標是找到一個最優策略,使得回報最大。準確的說是使值函數最大,包括狀態值函數和動作值函數,分別記爲 v∗(s) 和q∗(s,a)
v∗(s)=πmax vπ(s)
q∗(s,a)=πmax qπ(s,a)
對於任意一個MDPs,總是存在一個最優的策略 π∗ ,在使用這個策略時就能取得最優值函數,即vπ∗(s)=v∗(s) , qπ∗(s,a)=q∗(s,a) ,於是我們可以得到貝爾曼最優方程
v∗(s)=amaxRsa+γs′∈S∑Pss′av∗(s′)
q∗(s,a)=Rsa+γs′∈S∑Pss′aa′maxq∗(s′,a′)
上述貝爾曼最優方程是非線性的,不存在閉式解,常常使用一些迭代的方法求解,比如值迭代、策略迭代、Q-learning、Sarsa等,這就是我們後面要學習的內容了。
學習資料
- Reinforcement Learning: An Introduction- Chapter 3: Finite Markov Decision Processes
- David Silver’s RL Course Lecture 2 - Markov Decision Processes (video, slides)
《Reinforcement Learning: An Introduction 第二版》PDF書籍與David Silver課程,歡迎關注我的公衆號“野風同學”,回覆“RL”即可獲取。
一個程序員的自我成長之路,持續分享機器學習基礎與應用、LeetCode面試算法和Python基礎與應用等技術乾貨文章,同時也經常推薦高質量軟件工具、網站和書籍。