DeepMind 的马尔可夫决策过程(MDP)课堂笔记
DeepMind Teaching by David Silver
視頻課程鏈接(Youtube資源,需梯子):https://youtu.be/lfHX2hHRMVQ
文章目錄
- DeepMind Teaching by David Silver
- 1. 馬爾可夫過程(Markov Processes)
- 2. 馬爾可夫回報過程(Markov Reward Processes)
- 3. 馬爾可夫決策過程(Markov Decision Processes)
- 4. 動態(tài)規(guī)劃(Planning by Dynamic Programming)
- 4.1 利用動態(tài)規(guī)劃求解MDP問題
- 4.2 策略評估(Policy Evaluation)和策略迭代(Policy Iteration)
- 4.3 值迭代(Value Iteration)
- 4.4 小結(jié)
1. 馬爾可夫過程(Markov Processes)
馬爾可夫過程是一種形式化描述強化學(xué)習(xí)過程中的環(huán)境的數(shù)學(xué)模型,與字面理解的意思可能有所不同,馬爾可夫過程并沒有涉及到跟“過程”相關(guān)的問題,僅僅只是對“環(huán)境”進行了定義。一個問題要想被定義為馬爾可夫問題,必須具備以下幾個特征:
- 整個環(huán)境需要完全可觀測(fully observable),這意味著整個環(huán)境中不可以出現(xiàn)部分可觀測。
- 環(huán)境中下一時刻的狀態(tài)(St+1S_{t+1}St+1?)只與當(dāng)前的狀態(tài)(StS_tSt?)有關(guān),不能依賴于之前的歷史狀態(tài),即:
P(St+1∣St)=P(St+1∣S1,...,St?1,St)P(S_{t+1}|S_t) = P(S_{t+1}|S_1,...,S_{t-1},S_t) P(St+1?∣St?)=P(St+1?∣S1?,...,St?1?,St?)
幾乎所有的RL相關(guān)的問題都可以轉(zhuǎn)化為MDP問題,部分可觀測的問題(POMDP)問題同樣也可以轉(zhuǎn)換為MDP問題,因此MDP問題是所有問題的核心基礎(chǔ)問題。
狀態(tài)轉(zhuǎn)移矩陣(State Transition Matrix
在馬爾可夫過程中,一個狀態(tài)sss在被執(zhí)行了一個行為aaa后會轉(zhuǎn)變?yōu)橄乱粋€狀態(tài)s′s's′,但從 s→s′s \rightarrow s's→s′ 的轉(zhuǎn)移并不一定是百分之百成功的,因此定義一個狀態(tài)轉(zhuǎn)移概率來描述狀態(tài)是否能夠成功轉(zhuǎn)移的概率:
Pss′=P[St+1=s′∣St=s]P_{ss'} = P[S_{t+1}=s'|S_t=s] Pss′?=P[St+1?=s′∣St?=s]
由于在馬爾可夫過程中,環(huán)境是完全可觀測的,因此所有可能的出現(xiàn)狀態(tài)都能被觀測到,我們把每一個可能的狀態(tài)列舉出來,并統(tǒng)計他們的狀態(tài)轉(zhuǎn)移概率,最終可以得到整個環(huán)境下狀態(tài)轉(zhuǎn)移矩陣為:
M=[P11P12...P1n...Pn1Pn1...Pnn]M= \left[ \begin{matrix} P_{11} & P_{12} & ... & P_{1n}\\ . \\ . \\ . \\ P_{n1} & P_{n1} & ... & P_{nn} \end{matrix} \right] M=???????P11?...Pn1??P12?Pn1??......?P1n?Pnn?????????
note: 矩陣中每一行加起來的和為1。
馬爾可夫過程的定義
馬爾可夫過程(馬爾科夫鏈)是一個隨機過程,是一個由若干個隨機的、具有馬爾可夫性質(zhì)的狀態(tài)(SSS)組成的序列。一條 Markov Chain 是一個元組<S,PS, PS,P>,由2個部分組成:
- S→S \rightarrowS→ 一個狀態(tài)(state)的集合
- P→P \rightarrowP→ 一個狀態(tài)轉(zhuǎn)移概率矩陣
2. 馬爾可夫回報過程(Markov Reward Processes)
在第1章中我們講了 Markov 決策過程,是一個的狀態(tài)的集合和一個狀態(tài)轉(zhuǎn)移概率矩陣,但我們?nèi)绾稳ピu判在一個狀態(tài)下我們應(yīng)該往哪一個狀態(tài)去轉(zhuǎn)移是最優(yōu)的呢?這里我們將引入回報(Reward)來對狀態(tài)轉(zhuǎn)移效用進行一個量化表示。
馬爾可夫回報過程的定義
馬爾可夫回報過程是在馬爾可夫決策過程上添加了匯報函數(shù) RRR 和折扣因子 γ\gammaγ,是一個4元組 <S,P,R,γS, P, R, \gammaS,P,R,γ> :
- S→S \rightarrowS→ 一個狀態(tài)(state)的集合
- P→P \rightarrowP→ 一個狀態(tài)轉(zhuǎn)移概率矩陣
- R→R \rightarrowR→ 一個用于計算回報的函數(shù),計算的是在 ttt 時刻下的即時回報
- γ→\gamma \rightarrowγ→ 一個折扣因子,用于做未來回報計算時的衰減系數(shù),γ∈(0,1)\gamma \in (0, 1)γ∈(0,1)
上面所提到的回報函數(shù) RRR 只是用于計算在某一時刻下某一狀態(tài)的即時回報,但為了能更有遠見的評估當(dāng)前這個狀態(tài)的效用,我們通常會計算包含從該時刻起一直到最后一個時刻,這個狀態(tài)之后所有可能的轉(zhuǎn)移到的后續(xù)狀態(tài)所引起的回報總值 GtG_tGt?:
Gt=Rt+1+γRt+2+...=∑k=0∞γkRt+k+1G_t = R_{t+1} + \gamma R_{t+2} + ... = \sum_{k=0}^\infty{\gamma^kR_{t+k+1}} Gt?=Rt+1?+γRt+2?+...=k=0∑∞?γkRt+k+1?
值函數(shù)(Value Function
上面說到在MRP問題中,我們通常會引入總回報 GGG 來表示一個狀態(tài)的長遠回報,但由于 GGG 只是計算的一個 具體sample 中的具體得分,而真實的 GGG 是一個隨機變量,我們是無法通過一次采樣就確定其取值,因此我們引入值函數(shù) v(s)v(s)v(s) 來描述狀態(tài) StS_tSt? 的效用,使用期望值來代替一次采樣中的具體得分:
v(s)=E[Gt∣St=s]v(s) = E[G_t|S_t=s] v(s)=E[Gt?∣St?=s]
值函數(shù)可以通過貝爾曼方程(Bellman Equation)拆分為2個部分:
-
當(dāng)前狀態(tài) StS_tSt? 的即時回報 Rt+1R_{t+1}Rt+1?
-
衰減后的下一個狀態(tài) St+1S_{t+1}St+1? 的值函數(shù)回報 γv(St+1)\gamma v(S_{t+1})γv(St+1?)
因此,當(dāng)前狀態(tài)值函數(shù)又可以表示為當(dāng)前狀態(tài)的既時回報加上下一個狀態(tài)的值函數(shù):v(St)=Rt+1+γv(St+1)v(S_t) = R_{t+1} + \gamma v(S_{t+1})v(St?)=Rt+1?+γv(St+1?)。
考慮到狀態(tài)轉(zhuǎn)移是有概率的,即有可能出現(xiàn) S1→S2S1 \rightarrow S2S1→S2,也有可能出現(xiàn) S1→S3S1 \rightarrow S3S1→S3,下一時刻的狀態(tài)是有概率進行隨機轉(zhuǎn)移的,這個我們之前使用狀態(tài)轉(zhuǎn)移概率矩陣 PPP 來描述,我們現(xiàn)在將其引入進來:
v(s)=Rt+1+γPv(s′)v(s) = R_{t+1} + \gamma P v(s') v(s)=Rt+1?+γPv(s′)
用 v(1)v(1)v(1) 代表狀態(tài)1的值函數(shù),R1R1R1 代表狀態(tài)1的即時回報值,可以得到值函數(shù)的計算公式:
[v(1)v(2)...v(n)]=[R1R2...Rn]+γ[P(11)...P(1n)...P(n1)...P(nn)][v(1)v(2)...v(n)]\left[ \begin{matrix} v(1) \\ v(2) \\ . \\ . \\ . \\ v(n) \end{matrix} \right] = \left[ \begin{matrix} R1 \\ R2 \\ . \\ . \\ . \\ Rn \end{matrix} \right] + \gamma \left[ \begin{matrix} P(11) \ \ ... \ \ P(1n) \\ . \\ . \\ . \\ P(n1) \ \ ... \ \ P(nn) \end{matrix} \right] \left[ \begin{matrix} v(1) \\ v(2) \\ . \\ . \\ . \\ v(n) \end{matrix} \right] ?????????v(1)v(2)...v(n)??????????=?????????R1R2...Rn??????????+γ???????P(11)??...??P(1n)...P(n1)??...??P(nn)?????????????????v(1)v(2)...v(n)??????????
3. 馬爾可夫決策過程(Markov Decision Processes)
馬爾可夫決策過程(MDP)是在馬爾可夫回報過程(MRP)上加上“決策”這一個元素,決策我們使用 AAA 來表示,代表 agent 的決策行為,因此MDP是一個5元組問題:<S,P,A,R,γS, P, A, R, \gammaS,P,A,R,γ>:
- S→S \rightarrowS→ 一個狀態(tài)(state)的集合
- P→P \rightarrowP→ 一個受行為影響的狀態(tài)轉(zhuǎn)移概率矩陣,Pss′a=P[St+1=s′∣St=s,At=a]P_{ss'}^a = P[S_{t+1} = s'|S_t = s, A_t = a]Pss′a?=P[St+1?=s′∣St?=s,At?=a]
- A→A \rightarrowA→ 一個有限動作集
- R→R \rightarrowR→ 一個用于計算回報的函數(shù),Rsa=E[Rt+1∣St=s,At=a]R_s^a = E[R_{t+1} | S_t = s, A_t = a]Rsa?=E[Rt+1?∣St?=s,At?=a]
- γ→\gamma \rightarrowγ→ 一個折扣因子,用于做未來回報計算時的衰減系數(shù),γ∈(0,1)\gamma \in (0, 1)γ∈(0,1)
策略(Policy)
策略 π\(zhòng)piπ 是指在給定狀態(tài)下,采取各種行為的一種概率分布:
π(a∣s)=P[At=a∣St=s]\pi(a|s) = P[A_t = a | S_t = s] π(a∣s)=P[At?=a∣St?=s]
note:策略 π\(zhòng)piπ 直接決定了 agent 的行為選擇,在 MDP 問題中,策略 π\(zhòng)piπ 只能與當(dāng)前的狀態(tài)相關(guān),歷史狀態(tài)無法對策略起到任何影響。這是因為我們在定義 MP 問題的時候就已經(jīng)定義了,下一個時刻的狀態(tài)與歷史狀態(tài)是完全獨立的(參考第一章-馬爾可夫過程特性)。
給定一個MDP問題M=<S,P,A,R,γ>M = <S, P, A, R, \gamma>M=<S,P,A,R,γ>,再給定一個策略 π\(zhòng)piπ,產(chǎn)生的狀態(tài)序列 S1,S2,S3,...S1, S2, S3, ...S1,S2,S3,... 就是一個馬爾可夫過程 (MP)<S,PπS, P^{\pi}S,Pπ>。產(chǎn)生的狀態(tài)-回報序列 S1,R2,S2,...S1, R2, S_2, ...S1,R2,S2?,... 就是一個馬爾可夫回報過程(MRP)<S,Pπ,R,γS, P^{\pi}, R, \gammaS,Pπ,R,γ>。
MDP問題中的值函數(shù)
在MRP問題中,我們引入過值函數(shù)來描述一個狀態(tài)的好壞,但在MRP問題中是沒有涉及到策略 π\(zhòng)piπ 的,因此在MDP問題中,同一個狀態(tài)在不同策略下所得到的評分也有可能不同,因此我們在評價一個狀態(tài)的好壞時,還需要考慮目前所使用的策略 π\(zhòng)piπ,即:
Vπ(s)=Eπ[Gt∣St=s]V_{\pi}(s) = E_{\pi}[G_t | S_t = s] Vπ?(s)=Eπ?[Gt?∣St?=s]
由于在MDP問題中,引入了最為關(guān)鍵的元素 AAA,即 agent 的行為,那么在有些時候,我們不僅需要想要評價一個策略的好壞,同時還想要知道 agent 做出的行為的具體效用好壞,因此我們還需要一種能夠描述行為 aaa 效用好壞的值函數(shù):
qπ(s,a)=E[Gt∣St=s,At=a]q_{\pi}(s, a) = E[G_t|S_t=s, A_t = a] qπ?(s,a)=E[Gt?∣St?=s,At?=a]
通常,qπq_\piqπ? 稱為行為值函數(shù), VπV_\piVπ? 稱為狀態(tài)值函數(shù)。在行為值函數(shù)中,一般不會單獨評價一個動作的效用,而是會評價動作-狀態(tài)的效用,動作的效用與狀態(tài)是緊密相關(guān)的,同樣的動作在不同狀態(tài)下產(chǎn)生的效用不同,同樣的狀態(tài)采取不同的行為效用也會不同。
狀態(tài)值函數(shù)和行為值函數(shù)之間的轉(zhuǎn)換
通過貝爾曼方程(Bellman Equation),我們可以將行為值函數(shù)拆解為:當(dāng)前狀態(tài)下得到的即時回報 + 下一個狀態(tài)的狀態(tài)值函數(shù),這樣我們就建立起了 t 時刻的行為值函數(shù)和 t+1 時刻的狀態(tài)值函數(shù)的關(guān)系,表達式為:
qπ(s,a)=Rsa+γ∑s′∈SPss′aV(s′)q_\pi(s, a) = R_s^a + \gamma \sum_{s'\in S} P_{ss'}^aV(s') qπ?(s,a)=Rsa?+γs′∈S∑?Pss′a?V(s′)
在同一時刻,一個狀態(tài)的值函數(shù)應(yīng)該等于所有可能的行為產(chǎn)生的行為值函數(shù)之和,即:
Vπ(s)=∑a∈Aπ(a∣s)q(s,a)V_\pi(s) = \sum_{a \in A}\pi(a|s)q(s, a) Vπ?(s)=a∈A∑?π(a∣s)q(s,a)
狀態(tài)值函數(shù)的求解形式
通過貝爾曼方程,我們可以把狀態(tài)值函數(shù)表示為:
Vπ=Rπ+γPπVπV_\pi = R^\pi + \gamma P^{\pi}V_{\pi} Vπ?=Rπ+γPπVπ?
進而可以轉(zhuǎn)化為:
(I?γPπ)Vπ=Rπ↓Vπ=(I?γPπ)?1Rπ(I - \gamma P^{\pi})V_\pi = R^\pi \\ \downarrow \\ V_\pi = (I - \gamma P^{\pi})^{-1}R^\pi (I?γPπ)Vπ?=Rπ↓Vπ?=(I?γPπ)?1Rπ
(具體怎么應(yīng)用這個矩陣求解的示例參見這個鏈接:https://www.cnblogs.com/initial-h/p/9321961.html)
最優(yōu)策略的求解
在一個環(huán)境中可能存在多種策略 π\(zhòng)piπ,當(dāng)一個策略的值函數(shù)能夠大于其他所有策略時(Vπ(s)>V?(s)V_{\pi}(s) > V_*(s)Vπ?(s)>V??(s),則說明策略 π\(zhòng)piπ 為最優(yōu)策略。最優(yōu)策略可以通過最優(yōu)行為值函數(shù)(q?(s,a)q_*(s, a)q??(s,a))來確定,最高效用行為的概率為1,其余行為取0:
KaTeX parse error: Got function '\newline' with no arguments as argument to '\begin{array}' at position 1: \?n?e?w?l?i?n?e?
因此一旦我們有了最優(yōu)的行為值函數(shù) q?(s,a)q_*(s, a)q??(s,a) 我們就能找到一個最優(yōu)策略 π\(zhòng)piπ,我們使用最優(yōu)貝爾曼方程進行求解,我們知道,一個狀態(tài)的值函數(shù)的最大取值應(yīng)當(dāng)是該策略下最優(yōu)行為的行為值函數(shù)取值:
v?(s)=maxaq?(s,a)v_*(s) = max_aq_*(s, a) v??(s)=maxa?q??(s,a)
而行為值函數(shù) q?(s,a)q_*(s, a)q??(s,a) 的取值可以轉(zhuǎn)換為當(dāng)前的即時回報加上下一時刻各個狀態(tài)的狀態(tài)值函數(shù)之和:
q?(s,a)=Rsa+γ∑s′∈sPss′av?(s′)q_*(s, a) = R_s^a + \gamma \sum_{s' \in s}P_{ss'}^av_*(s') q??(s,a)=Rsa?+γs′∈s∑?Pss′a?v??(s′)
將 v(s′)v(s')v(s′) 換算成 q(s,a)q(s, a)q(s,a) 的形式,可以得到最終結(jié)果:
q?(s,a)=Rsa+γ∑s′∈sPss′amaxa′q?(s′,a′)q_*(s, a) = R_s^a + \gamma \sum_{s' \in s}P_{ss'}^a max_{a'}q_*(s', a') q??(s,a)=Rsa?+γs′∈s∑?Pss′a?maxa′?q??(s′,a′)
以上我們就得到了一個遞歸的式子,想要計算此刻最優(yōu)的行為值函數(shù)取值只需要在之后的狀態(tài) s′s's′ 中選取具有最大效用的行為 a′a'a′ 即可。遺憾的是,貝爾曼最優(yōu)方程并不是一個線性方程,我們需要使用迭代的方法進行求解,包括:值迭代、策略迭代、Q-Learning等方法,在之后的章節(jié)會著重討論。
4. 動態(tài)規(guī)劃(Planning by Dynamic Programming)
如何理解動態(tài)規(guī)劃?“動態(tài)” 是指我們每次只能看到整個任務(wù)的 “一部分” ,整個任務(wù)是由若干個連續(xù)的部分組成起來的一個任務(wù)串,動態(tài)規(guī)劃的核心思想就是將一個問題分解成若干個子問題再進行求解。
舉個例子來說:公司里面都有一定的組織架構(gòu),可能有高級經(jīng)理、經(jīng)理、總監(jiān)、組長然后才是小開發(fā)。到了一年一度的考核季的時候,公司要挑選出三個最優(yōu)秀的員工。一般高級經(jīng)理會跟手下的經(jīng)理說,你去把你們那邊最優(yōu)秀的3個人報給我,經(jīng)理又跟總監(jiān)說你把你們那邊最優(yōu)秀的人報給我,經(jīng)理又跟組長說,你把你們組最優(yōu)秀的三個人報給我,這個其實就動態(tài)規(guī)劃的思想。將整個公司 “最優(yōu)秀人員” 的問題(原問題)分解為各個部門“最優(yōu)秀的人員”(子問題),最終再根據(jù)所有部門“最優(yōu)秀的人員”(子問題)來進行比較推導(dǎo)出整個公司“最優(yōu)秀的人員”(父問題)。一般來講,動態(tài)規(guī)劃問題可分為以下4個步驟來解決:
劃分狀態(tài):即劃分子問題,例如上面的例子,我們可以認為每個組下面、每個部門、每個中心下面最優(yōu)秀的3個人,都是全公司最優(yōu)秀的3個人的子問題
狀態(tài)表示:即如何讓計算機理解子問題。上述例子,我們可以實用f[i][3]表示第i個人,他手下最優(yōu)秀的3個人是誰。
狀態(tài)轉(zhuǎn)移:即父問題是如何由子問題推導(dǎo)出來的。上述例子,每個人大Leader下面最優(yōu)秀的人等于他下面的小Leader中最優(yōu)秀的人中最優(yōu)秀的幾個。
確定邊界:確定初始狀態(tài)是什么?最小的子問題?最終狀態(tài)又是什么。例如上述問題,最小的子問題就是每個小組長下面最優(yōu)秀的人,最終狀態(tài)是整個企業(yè),初始狀態(tài)為每個領(lǐng)導(dǎo)下面都沒有最優(yōu)名單,但是小組長下面擁有每個人的評分。
以上內(nèi)容引自:沙茶敏碎碎念的動態(tài)規(guī)劃入門博客
4.1 利用動態(tài)規(guī)劃求解MDP問題
動態(tài)規(guī)劃在MDP問題中通常用于以下兩個方面:
- 評判一個策略 π\(zhòng)piπ 的好壞:在給定一個MDP <S,P,A,R,γS, P, A, R, \gammaS,P,A,R,γ> 和一個策略 π\(zhòng)piπ 的情況下, 計算該策略 π\(zhòng)piπ 的評價函數(shù) vπv_{\pi}vπ?。
- 訓(xùn)練出一個好的策略 π?\pi_*π??:在一個給定的MDP <S,P,A,R,γS, P, A, R, \gammaS,P,A,R,γ> 中,求解一個最優(yōu)策略 π?\pi_*π??。
4.2 策略評估(Policy Evaluation)和策略迭代(Policy Iteration)
策略評估是指給定一個固定的策略 π\(zhòng)piπ,我們?nèi)绾卧u判這個策略的好壞?通常我們使用貝爾曼方程的迭代法來得到求解:
上面說到我們會不斷更新 vvv 表,最終更新為一個 vπv_\pivπ? 表,但我們?nèi)绾芜M行更新這個表中各個狀態(tài)的效用值呢?我們先來看第一種方法 —— 同步backup法:
- 在第 k+1次迭代中:
- 對于每一個狀態(tài) s∈Ss \in Ss∈S
- 根據(jù) vk(s′)v_k(s')vk?(s′) 的值來更新 vk+1(s)v_{k+1}(s)vk+1?(s) ,意思就是利用上一次迭代中的下個狀態(tài) s′s's′ 來更新這次迭代的當(dāng)前狀態(tài) sss 的效用值。
用數(shù)學(xué)公式來表示:
vk+1(s)=∑a∈Aπ(a∣s)(Rsa+γ∑s∈SPss′avk(s′))v_{k+1}(s) = \sum_{a\in A}\pi(a|s)(R_s^a + \gamma\sum_{s \in S}P_{ss'}^av_k(s')) vk+1?(s)=a∈A∑?π(a∣s)(Rsa?+γs∈S∑?Pss′a?vk?(s′))
上述式子表達的意思是,在計算第 k+1k+1k+1 次迭代的狀態(tài) sss 的效用值時,用當(dāng)前得到的即時回報值 RsaR_s^aRsa? 再加上上一輪迭代表中的 s′s's′ 的效用值 vk(s′)v_k(s')vk?(s′),可以簡化表示為:
vk+1=Rπ+γPπvkv^{k+1} = R^\pi + \gamma P^\pi v^k vk+1=Rπ+γPπvk
同步backup法應(yīng)用舉例
一個 4x4 的方格,一共有 4 種 action(上下左右),每走一步(除了走到灰色格子內(nèi))得到的 reward 都是 -1,目標是使得 agent 學(xué)會走到左上或右下的兩個灰色格子中去。我們給定一個策略 π\(zhòng)piπ,該策略在任意一個狀態(tài)下都隨機進行行為選擇(即上下左右行為的概率都是0.25),一個格子代表一個state,我們?nèi)绾稳ビ嬎阍诓呗?π\(zhòng)piπ 下每一個 state 的 vvv 值?
下圖左邊是我們的 vvv 表迭代的過程,我們先隨機初始化 vvv 表中所有狀態(tài)的取值為0,在下一次迭代中(k=1),我們通過 backup 法一次計算每一個格子的狀態(tài)值,這里用格子1(第一排第二個)進行舉例:由于上下左右四個行為的采取概率均等(隨機選取動作),即 π(up∣?)=π(down∣?)=π(left∣?)=π(right∣?)=0.25\pi(up|·) = \pi(down|·) = \pi(left|·) = \pi(right|·) = 0.25π(up∣?)=π(down∣?)=π(left∣?)=π(right∣?)=0.25,因此根據(jù)公式 vk+1=Rπ+γPπvkv^{k+1} = R^\pi + \gamma P^\pi v^kvk+1=Rπ+γPπvk (γ=1\gamma = 1γ=1)可得 v1(s1)=?1+0.25?0+0.25?0+0.25?0+0.25?0=?1v_1(s_1) = -1 + 0.25 * 0 + 0.25 * 0 + 0.25 * 0 + 0.25 * 0 = -1v1?(s1?)=?1+0.25?0+0.25?0+0.25?0+0.25?0=?1。在k=2 的迭代中時,由于向上走后會停留在原地,因此向上走后轉(zhuǎn)移到的狀態(tài)還是自身,同樣帶公式計算可得到計算結(jié)果:v2(s1)=?1+0.25?(?1)+0.25?(?1)+0.25?(?1)+0.25?0=?1.75≈?1.7v_2(s_1) = -1 + 0.25 * (-1) + 0.25 * (-1) + 0.25 * (-1) + 0.25 * 0 = -1.75 \approx -1.7v2?(s1?)=?1+0.25?(?1)+0.25?(?1)+0.25?(?1)+0.25?0=?1.75≈?1.7。
上圖展示了前 3 輪迭代結(jié)果,一直迭代下去,vvv 表一定會收斂(有數(shù)學(xué)公式證明,這里不做講解),收斂后的 vvv 表代表了在我們給定的策略 π\(zhòng)piπ 下每一個狀態(tài)的真實取值。此時我們不僅得到了策略 π\(zhòng)piπ 下的狀態(tài)值表,同時我們還可以根據(jù)這個 vvv 表通過貪婪算法得到一個新的更優(yōu)策略 π′\pi'π′(下圖右),即在一個狀態(tài)下每次都選擇具有最大狀態(tài)值的狀態(tài)作為下一個轉(zhuǎn)移狀態(tài),這個新策略 π′\pi'π′ 明顯優(yōu)于我們一開始給定的隨機選擇行為的策略 π\(zhòng)piπ(在k=3的時候最優(yōu)策略就已經(jīng)出現(xiàn)了,之后再沒有變化過)。
上面的整個示例展示了 backup 法的兩個功能:
- 給定一個策略 π\(zhòng)piπ,評價在這個策略下各狀態(tài)的好壞(vπv_\pivπ? 表)
- improve 策略 π\(zhòng)piπ,得到一個更好的策略 π′\pi'π′
在大多數(shù)情況下,我們需要重復(fù)這兩個步驟:評價一個給定策略 →\rightarrow→ 改善這個策略得到新策略 →\rightarrow→ 評價新策略 →\rightarrow→ 改善新策略得到另一個新策略 →\rightarrow→ ……,因此這是一個 **Evaluation - Improve **的迭代循環(huán)過程,這個過程我們就稱之為 Policy Iteration(策略迭代)。在若干個策略迭代過程后,策略 π′\pi'π′ 會收斂到最優(yōu)策略 π?\pi_*π?? ,最優(yōu)策略就是我們最終的求解策略了。
note:改善策略(Improvement)的方法有許多種,上面的實例我們使用的是貪婪策略(greedy)進行的策略提升,但大多數(shù)時候貪婪策略能夠取得很好的結(jié)果。
4.3 值迭代(Value Iteration)
在策略迭代的部分我們提到,我們在最開始需要給定一個策略,并對該策略進行不斷的 improve,通常我們選擇等概率的行為選擇策略作為初始策略,那我們能不能有一種方法完全不需要一開始給定初始策略呢?其實我們可以發(fā)現(xiàn),在策略迭代的方法中我們給定初始策略就是為了得到一張 vvv 表,我們是根據(jù)這個 vvv 表來找出最優(yōu)策略的,如果我們能不依賴一個初始策略就能計算出 vvv 表,那我們就能解決這個問題了,這就是值迭代法的由來。
首先我們思考,什么算是最優(yōu)策略?最優(yōu)策略是指不僅能在當(dāng)前獲取最大的行為效用值,在下一個狀態(tài)應(yīng)該也能取得最大的行為效用值,在之后的每一個狀態(tài)都應(yīng)該取得最大的行為效用值。按照這個定義,假定我們已知了一個最優(yōu)策略 v?v_*v??,那么狀態(tài) sss 在該策略下的狀態(tài)值函數(shù) v?(s)v_*(s)v??(s) 可以分解為:
v?(s)=argmaxaRsa+γ∑s′∈SPss′av?(s′)v_*(s) = argmax_aR_s^a + \gamma\sum_{s' \in S}P^a_{ss'}v_*(s') v??(s)=argmaxa?Rsa?+γs′∈S∑?Pss′a?v??(s′)
上述式子表達了當(dāng)前狀態(tài) sss 的狀態(tài)值等于采取當(dāng)前所有行為里有著最高效用值的行為得到的回報 + 下一個狀態(tài)在最優(yōu)策略下的狀態(tài)值。因此,我們可以從后往前開始迭代計算了,由于終止狀態(tài) v(st)v(s_t)v(st?) 的得分我們可知,終止狀態(tài)的前一個狀態(tài) v(st?1)v(s_{t-1})v(st?1?) 的值 = 采取最大效用行為得到的回報值 Rst?1R_{s_{t-1}}Rst?1??+ 終止狀態(tài)的狀態(tài)值 v(st)v(s_{t})v(st?),再前一個狀態(tài) v(st?2)v(s_{t-2})v(st?2?) 的狀態(tài)值 = 采取最大效用行為得到的回報值 Rst?2R_{s_{t-2}}Rst?2?? + 后一個狀態(tài)的狀態(tài)值 v(st?1)v(s_{t-1})v(st?1?),…,依次迭代就可以求出每個狀態(tài)的狀態(tài)值了,vvv 表也就求解完成了。
Value Iteration 求解法舉例
以下是一個 4x4 的方格,左上角是目標點,我們需要求出在任意一個格子到目標點的最短路徑。我們把每一個格子看成是一個狀態(tài),每走一步得到的 reward 是 -1。下圖表示了整個問題的求解流程:初始化所有狀態(tài)值都為0,緊接著每一個格子都選擇上下左右臨近格子中狀態(tài)值最大的那個格子,并用即時回報 -1 加上最大值鄰居格子的狀態(tài)值(參照上面的公式)。一直這么迭代下去,直到第 7 次的時候該表格收斂了,求到了最終的結(jié)果。有了 vvv 表我們的策略就相應(yīng)的出現(xiàn)了,對于任意一個狀態(tài)選擇最大狀態(tài)值的鄰居格子就能夠最快的到達終點格子了。
值迭代的方法要求人們需要枚舉出該狀態(tài) sss 之后所有可能到達的狀態(tài) s′s's′,并選擇出具有最高效用值的狀態(tài)作為自己的后續(xù)狀態(tài);并且整個問題必須存在終點(end point),畢竟是從后向前推的思路,如果環(huán)境無法全部可知或者終點狀態(tài)不存在就無法使用該方法進行問題求解了。
4.4 小結(jié)
對整個利用動態(tài)規(guī)劃解決 MDP 問題的方法進行一個歸納總結(jié):
| 狀態(tài)值估計(vvv 表求解) | 貝爾曼期望方程 | 迭代策略評估法(Iterative Policy Evaluation) |
| 策略學(xué)習(xí) | 貝爾曼期望方程 + 貪婪策略 | 策略迭代法(Policy Iteration) |
| 策略學(xué)習(xí) | 貝爾曼最優(yōu)方程 | 值函數(shù)迭代法(Value Iteration) |
總結(jié)
以上是生活随笔為你收集整理的DeepMind 的马尔可夫决策过程(MDP)课堂笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 李宏毅Reinforcement Lea
- 下一篇: GFS(Genetic Fuzzy Sy