日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

DeepMind 的马尔可夫决策过程(MDP)课堂笔记

發(fā)布時(shí)間:2023/12/4 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DeepMind 的马尔可夫决策过程(MDP)课堂笔记 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

DeepMind Teaching by David Silver

視頻課程鏈接(Youtube資源,需梯子):https://youtu.be/lfHX2hHRMVQ

文章目錄

    • DeepMind Teaching by David Silver
      • 1. 馬爾可夫過(guò)程(Markov Processes)
      • 2. 馬爾可夫回報(bào)過(guò)程(Markov Reward Processes)
      • 3. 馬爾可夫決策過(guò)程(Markov Decision Processes)
      • 4. 動(dòng)態(tài)規(guī)劃(Planning by Dynamic Programming)
        • 4.1 利用動(dòng)態(tài)規(guī)劃求解MDP問(wèn)題
        • 4.2 策略評(píng)估(Policy Evaluation)和策略迭代(Policy Iteration)
        • 4.3 值迭代(Value Iteration)
        • 4.4 小結(jié)

1. 馬爾可夫過(guò)程(Markov Processes)

馬爾可夫過(guò)程是一種形式化描述強(qiáng)化學(xué)習(xí)過(guò)程中的環(huán)境的數(shù)學(xué)模型,與字面理解的意思可能有所不同,馬爾可夫過(guò)程并沒(méi)有涉及到跟“過(guò)程”相關(guān)的問(wèn)題,僅僅只是對(duì)“環(huán)境”進(jìn)行了定義。一個(gè)問(wèn)題要想被定義為馬爾可夫問(wèn)題,必須具備以下幾個(gè)特征:

  • 整個(gè)環(huán)境需要完全可觀測(cè)(fully observable),這意味著整個(gè)環(huán)境中不可以出現(xiàn)部分可觀測(cè)。
  • 環(huán)境中下一時(shí)刻的狀態(tài)(St+1S_{t+1}St+1?)只與當(dāng)前的狀態(tài)(StS_tSt?)有關(guān),不能依賴(lài)于之前的歷史狀態(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)的問(wèn)題都可以轉(zhuǎn)化為MDP問(wèn)題,部分可觀測(cè)的問(wèn)題(POMDP)問(wèn)題同樣也可以轉(zhuǎn)換為MDP問(wèn)題,因此MDP問(wèn)題是所有問(wèn)題的核心基礎(chǔ)問(wèn)題。

狀態(tài)轉(zhuǎn)移矩陣(State Transition Matrix

在馬爾可夫過(guò)程中,一個(gè)狀態(tài)sss在被執(zhí)行了一個(gè)行為aaa后會(huì)轉(zhuǎn)變?yōu)橄乱粋€(gè)狀態(tài)s′s's,但從 s→s′s \rightarrow s'ss 的轉(zhuǎn)移并不一定是百分之百成功的,因此定義一個(gè)狀態(tài)轉(zhuǎn)移概率來(lái)描述狀態(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?=sSt?=s]
由于在馬爾可夫過(guò)程中,環(huán)境是完全可觀測(cè)的,因此所有可能的出現(xiàn)狀態(tài)都能被觀測(cè)到,我們把每一個(gè)可能的狀態(tài)列舉出來(lái),并統(tǒng)計(jì)他們的狀態(tài)轉(zhuǎn)移概率,最終可以得到整個(gè)環(huán)境下?tīng)顟B(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: 矩陣中每一行加起來(lái)的和為1。

馬爾可夫過(guò)程的定義

馬爾可夫過(guò)程(馬爾科夫鏈)是一個(gè)隨機(jī)過(guò)程,是一個(gè)由若干個(gè)隨機(jī)的、具有馬爾可夫性質(zhì)的狀態(tài)(SSS)組成的序列。一條 Markov Chain 是一個(gè)元組<S,PS, PS,P>,由2個(gè)部分組成:

  • S→S \rightarrowS 一個(gè)狀態(tài)(state)的集合
  • P→P \rightarrowP 一個(gè)狀態(tài)轉(zhuǎn)移概率矩陣

2. 馬爾可夫回報(bào)過(guò)程(Markov Reward Processes)

在第1章中我們講了 Markov 決策過(guò)程,是一個(gè)的狀態(tài)的集合和一個(gè)狀態(tài)轉(zhuǎn)移概率矩陣,但我們?nèi)绾稳ピu(píng)判在一個(gè)狀態(tài)下我們應(yīng)該往哪一個(gè)狀態(tài)去轉(zhuǎn)移是最優(yōu)的呢?這里我們將引入回報(bào)(Reward)來(lái)對(duì)狀態(tài)轉(zhuǎn)移效用進(jìn)行一個(gè)量化表示。

馬爾可夫回報(bào)過(guò)程的定義

馬爾可夫回報(bào)過(guò)程是在馬爾可夫決策過(guò)程上添加了匯報(bào)函數(shù) RRR 和折扣因子 γ\gammaγ,是一個(gè)4元組 <S,P,R,γS, P, R, \gammaS,P,R,γ> :

  • S→S \rightarrowS 一個(gè)狀態(tài)(state)的集合
  • P→P \rightarrowP 一個(gè)狀態(tài)轉(zhuǎn)移概率矩陣
  • R→R \rightarrowR 一個(gè)用于計(jì)算回報(bào)的函數(shù),計(jì)算的是在 ttt 時(shí)刻下的即時(shí)回報(bào)
  • γ→\gamma \rightarrowγ 一個(gè)折扣因子,用于做未來(lái)回報(bào)計(jì)算時(shí)的衰減系數(shù),γ∈(0,1)\gamma \in (0, 1)γ(0,1)

上面所提到的回報(bào)函數(shù) RRR 只是用于計(jì)算在某一時(shí)刻下某一狀態(tài)的即時(shí)回報(bào),但為了能更有遠(yuǎn)見(jiàn)的評(píng)估當(dāng)前這個(gè)狀態(tài)的效用,我們通常會(huì)計(jì)算包含從該時(shí)刻起一直到最后一個(gè)時(shí)刻,這個(gè)狀態(tài)之后所有可能的轉(zhuǎn)移到的后續(xù)狀態(tài)所引起的回報(bào)總值 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

上面說(shuō)到在MRP問(wèn)題中,我們通常會(huì)引入總回報(bào) GGG 來(lái)表示一個(gè)狀態(tài)的長(zhǎng)遠(yuǎn)回報(bào),但由于 GGG 只是計(jì)算的一個(gè) 具體sample 中的具體得分,而真實(shí)的 GGG 是一個(gè)隨機(jī)變量,我們是無(wú)法通過(guò)一次采樣就確定其取值,因此我們引入值函數(shù) v(s)v(s)v(s) 來(lái)描述狀態(tài) StS_tSt? 的效用,使用期望值來(lái)代替一次采樣中的具體得分:
v(s)=E[Gt∣St=s]v(s) = E[G_t|S_t=s] v(s)=E[Gt?St?=s]
值函數(shù)可以通過(guò)貝爾曼方程(Bellman Equation)拆分為2個(gè)部分:

  • 當(dāng)前狀態(tài) StS_tSt? 的即時(shí)回報(bào) Rt+1R_{t+1}Rt+1?

  • 衰減后的下一個(gè)狀態(tài) St+1S_{t+1}St+1? 的值函數(shù)回報(bào) γv(St+1)\gamma v(S_{t+1})γv(St+1?)

因此,當(dāng)前狀態(tài)值函數(shù)又可以表示為當(dāng)前狀態(tài)的既時(shí)回報(bào)加上下一個(gè)狀態(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 S2S1S2,也有可能出現(xiàn) S1→S3S1 \rightarrow S3S1S3,下一時(shí)刻的狀態(tài)是有概率進(jìn)行隨機(jī)轉(zhuǎn)移的,這個(gè)我們之前使用狀態(tài)轉(zhuǎn)移概率矩陣 PPP 來(lái)描述,我們現(xiàn)在將其引入進(jìn)來(lái):
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í)回報(bào)值,可以得到值函數(shù)的計(jì)算公式:
[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. 馬爾可夫決策過(guò)程(Markov Decision Processes)

馬爾可夫決策過(guò)程(MDP)是在馬爾可夫回報(bào)過(guò)程(MRP)上加上“決策”這一個(gè)元素,決策我們使用 AAA 來(lái)表示,代表 agent 的決策行為,因此MDP是一個(gè)5元組問(wèn)題:<S,P,A,R,γS, P, A, R, \gammaS,P,A,R,γ>:

  • S→S \rightarrowS 一個(gè)狀態(tài)(state)的集合
  • P→P \rightarrowP 一個(gè)受行為影響的狀態(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]Pssa?=P[St+1?=sSt?=s,At?=a]
  • A→A \rightarrowA 一個(gè)有限動(dòng)作集
  • R→R \rightarrowR 一個(gè)用于計(jì)算回報(bào)的函數(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γ 一個(gè)折扣因子,用于做未來(lái)回報(bào)計(jì)算時(shí)的衰減系數(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] π(as)=P[At?=aSt?=s]
note:策略 π\(zhòng)piπ 直接決定了 agent 的行為選擇,在 MDP 問(wèn)題中,策略 π\(zhòng)piπ 只能與當(dāng)前的狀態(tài)相關(guān),歷史狀態(tài)無(wú)法對(duì)策略起到任何影響。這是因?yàn)槲覀冊(cè)诙x MP 問(wèn)題的時(shí)候就已經(jīng)定義了,下一個(gè)時(shí)刻的狀態(tài)與歷史狀態(tài)是完全獨(dú)立的(參考第一章-馬爾可夫過(guò)程特性)。

給定一個(gè)MDP問(wèn)題M=<S,P,A,R,γ>M = <S, P, A, R, \gamma>M=<S,P,A,R,γ>,再給定一個(gè)策略 π\(zhòng)piπ,產(chǎn)生的狀態(tài)序列 S1,S2,S3,...S1, S2, S3, ...S1,S2,S3,... 就是一個(gè)馬爾可夫過(guò)程 (MP)<S,PπS, P^{\pi}S,Pπ>。產(chǎn)生的狀態(tài)-回報(bào)序列 S1,R2,S2,...S1, R2, S_2, ...S1,R2,S2?,... 就是一個(gè)馬爾可夫回報(bào)過(guò)程(MRP)<S,Pπ,R,γS, P^{\pi}, R, \gammaS,Pπ,R,γ>。

MDP問(wèn)題中的值函數(shù)

在MRP問(wèn)題中,我們引入過(guò)值函數(shù)來(lái)描述一個(gè)狀態(tài)的好壞,但在MRP問(wèn)題中是沒(méi)有涉及到策略 π\(zhòng)piπ 的,因此在MDP問(wèn)題中,同一個(gè)狀態(tài)在不同策略下所得到的評(píng)分也有可能不同,因此我們?cè)谠u(píng)價(jià)一個(gè)狀態(tài)的好壞時(shí),還需要考慮目前所使用的策略 π\(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問(wèn)題中,引入了最為關(guān)鍵的元素 AAA,即 agent 的行為,那么在有些時(shí)候,我們不僅需要想要評(píng)價(jià)一個(gè)策略的好壞,同時(shí)還想要知道 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π? 稱(chēng)為行為值函數(shù), VπV_\piVπ? 稱(chēng)為狀態(tài)值函數(shù)。在行為值函數(shù)中,一般不會(huì)單獨(dú)評(píng)價(jià)一個(gè)動(dòng)作的效用,而是會(huì)評(píng)價(jià)動(dòng)作-狀態(tài)的效用,動(dòng)作的效用與狀態(tài)是緊密相關(guān)的,同樣的動(dòng)作在不同狀態(tài)下產(chǎn)生的效用不同,同樣的狀態(tài)采取不同的行為效用也會(huì)不同。

狀態(tài)值函數(shù)和行為值函數(shù)之間的轉(zhuǎn)換

通過(guò)貝爾曼方程(Bellman Equation),我們可以將行為值函數(shù)拆解為:當(dāng)前狀態(tài)下得到的即時(shí)回報(bào) + 下一個(gè)狀態(tài)的狀態(tài)值函數(shù),這樣我們就建立起了 t 時(shí)刻的行為值函數(shù)和 t+1 時(shí)刻的狀態(tài)值函數(shù)的關(guān)系,表達(dá)式為:
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?+γsS?Pssa?V(s)
在同一時(shí)刻,一個(gè)狀態(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)=aA?π(as)q(s,a)

狀態(tài)值函數(shù)的求解形式

通過(guò)貝爾曼方程,我們可以把狀態(tài)值函數(shù)表示為:
Vπ=Rπ+γPπVπV_\pi = R^\pi + \gamma P^{\pi}V_{\pi} Vπ?=Rπ+γPπVπ?
進(jìn)而可以轉(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)用這個(gè)矩陣求解的示例參見(jiàn)這個(gè)鏈接:https://www.cnblogs.com/initial-h/p/9321961.html)

最優(yōu)策略的求解

在一個(gè)環(huán)境中可能存在多種策略 π\(zhòng)piπ,當(dāng)一個(gè)策略的值函數(shù)能夠大于其他所有策略時(shí)(Vπ(s)>V?(s)V_{\pi}(s) > V_*(s)Vπ?(s)>V??(s),則說(shuō)明策略 π\(zhòng)piπ 為最優(yōu)策略。最優(yōu)策略可以通過(guò)最優(yōu)行為值函數(shù)(q?(s,a)q_*(s, a)q??(s,a))來(lái)確定,最高效用行為的概率為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) 我們就能找到一個(gè)最優(yōu)策略 π\(zhòng)piπ,我們使用最優(yōu)貝爾曼方程進(jìn)行求解,我們知道,一個(gè)狀態(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)前的即時(shí)回報(bào)加上下一時(shí)刻各個(gè)狀態(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?+γss?Pssa?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?+γss?Pssa?maxa?q??(s,a)
以上我們就得到了一個(gè)遞歸的式子,想要計(jì)算此刻最優(yōu)的行為值函數(shù)取值只需要在之后的狀態(tài) s′s's 中選取具有最大效用的行為 a′a'a 即可。遺憾的是,貝爾曼最優(yōu)方程并不是一個(gè)線性方程,我們需要使用迭代的方法進(jìn)行求解,包括:值迭代、策略迭代、Q-Learning等方法,在之后的章節(jié)會(huì)著重討論。

4. 動(dòng)態(tài)規(guī)劃(Planning by Dynamic Programming)

如何理解動(dòng)態(tài)規(guī)劃?“動(dòng)態(tài)” 是指我們每次只能看到整個(gè)任務(wù)的 “一部分” ,整個(gè)任務(wù)是由若干個(gè)連續(xù)的部分組成起來(lái)的一個(gè)任務(wù)串,動(dòng)態(tài)規(guī)劃的核心思想就是將一個(gè)問(wèn)題分解成若干個(gè)子問(wèn)題再進(jìn)行求解。

舉個(gè)例子來(lái)說(shuō):公司里面都有一定的組織架構(gòu),可能有高級(jí)經(jīng)理、經(jīng)理、總監(jiān)、組長(zhǎng)然后才是小開(kāi)發(fā)。到了一年一度的考核季的時(shí)候,公司要挑選出三個(gè)最優(yōu)秀的員工。一般高級(jí)經(jīng)理會(huì)跟手下的經(jīng)理說(shuō),你去把你們那邊最優(yōu)秀的3個(gè)人報(bào)給我,經(jīng)理又跟總監(jiān)說(shuō)你把你們那邊最優(yōu)秀的人報(bào)給我,經(jīng)理又跟組長(zhǎng)說(shuō),你把你們組最優(yōu)秀的三個(gè)人報(bào)給我,這個(gè)其實(shí)就動(dòng)態(tài)規(guī)劃的思想。將整個(gè)公司 “最優(yōu)秀人員” 的問(wèn)題(原問(wèn)題)分解為各個(gè)部門(mén)“最優(yōu)秀的人員”(子問(wèn)題),最終再根據(jù)所有部門(mén)“最優(yōu)秀的人員”(子問(wèn)題)來(lái)進(jìn)行比較推導(dǎo)出整個(gè)公司“最優(yōu)秀的人員”(父問(wèn)題)。一般來(lái)講,動(dòng)態(tài)規(guī)劃問(wèn)題可分為以下4個(gè)步驟來(lái)解決:

  • 劃分狀態(tài):即劃分子問(wèn)題,例如上面的例子,我們可以認(rèn)為每個(gè)組下面、每個(gè)部門(mén)、每個(gè)中心下面最優(yōu)秀的3個(gè)人,都是全公司最優(yōu)秀的3個(gè)人的子問(wèn)題

  • 狀態(tài)表示:即如何讓計(jì)算機(jī)理解子問(wèn)題。上述例子,我們可以實(shí)用f[i][3]表示第i個(gè)人,他手下最優(yōu)秀的3個(gè)人是誰(shuí)。

  • 狀態(tài)轉(zhuǎn)移:即父問(wèn)題是如何由子問(wèn)題推導(dǎo)出來(lái)的。上述例子,每個(gè)人大Leader下面最優(yōu)秀的人等于他下面的小Leader中最優(yōu)秀的人中最優(yōu)秀的幾個(gè)。

  • 確定邊界:確定初始狀態(tài)是什么?最小的子問(wèn)題?最終狀態(tài)又是什么。例如上述問(wèn)題,最小的子問(wèn)題就是每個(gè)小組長(zhǎng)下面最優(yōu)秀的人,最終狀態(tài)是整個(gè)企業(yè),初始狀態(tài)為每個(gè)領(lǐng)導(dǎo)下面都沒(méi)有最優(yōu)名單,但是小組長(zhǎng)下面擁有每個(gè)人的評(píng)分。

  • 以上內(nèi)容引自:沙茶敏碎碎念的動(dòng)態(tài)規(guī)劃入門(mén)博客

    4.1 利用動(dòng)態(tài)規(guī)劃求解MDP問(wèn)題

    動(dòng)態(tài)規(guī)劃在MDP問(wèn)題中通常用于以下兩個(gè)方面:

    • 評(píng)判一個(gè)策略 π\(zhòng)piπ 的好壞:在給定一個(gè)MDP <S,P,A,R,γS, P, A, R, \gammaS,P,A,R,γ> 和一個(gè)策略 π\(zhòng)piπ 的情況下, 計(jì)算該策略 π\(zhòng)piπ 的評(píng)價(jià)函數(shù) vπv_{\pi}vπ?
    • 訓(xùn)練出一個(gè)好的策略 π?\pi_*π??:在一個(gè)給定的MDP <S,P,A,R,γS, P, A, R, \gammaS,P,A,R,γ> 中,求解一個(gè)最優(yōu)策略 π?\pi_*π??

    4.2 策略評(píng)估(Policy Evaluation)和策略迭代(Policy Iteration)

    策略評(píng)估是指給定一個(gè)固定的策略 π\(zhòng)piπ,我們?nèi)绾卧u(píng)判這個(gè)策略的好壞?通常我們使用貝爾曼方程的迭代法來(lái)得到求解:

  • 首先我們隨機(jī)化一個(gè)狀態(tài)值函數(shù) v1v_1v1?v1v_1v1? 是一個(gè)表,其存放了當(dāng)前所有狀態(tài)的效用值,v1(s1),v1(s2),...,v1(sn)v_1(s_1), v_1(s_2), ..., v_1(s_n)v1?(s1?),v1?(s2?),...v1?(sn?)
  • 由于一開(kāi)始的 v1v_1v1? 是一個(gè)隨機(jī)出來(lái)的表,不能正確的評(píng)價(jià)場(chǎng)景中狀態(tài)的正確效用,我們需要讓這個(gè)表中的效用值變成在采取策略 π\(zhòng)piπ 下的真實(shí)狀態(tài)效用值,因此我們會(huì)不斷更新這個(gè)表,從 v1→v2→...→vπv_1 \rightarrow v_2 \rightarrow ... \rightarrow v_\piv1?v2?...vπ?,最終vπv_\pivπ? 就是一個(gè)在策略 π\(zhòng)piπ 下,所有狀態(tài)的效用值表。
  • 上面說(shuō)到我們會(huì)不斷更新 vvv 表,最終更新為一個(gè) vπv_\pivπ? 表,但我們?nèi)绾芜M(jìn)行更新這個(gè)表中各個(gè)狀態(tài)的效用值呢?我們先來(lái)看第一種方法 —— 同步backup法

    • 在第 k+1次迭代中:
      • 對(duì)于每一個(gè)狀態(tài) s∈Ss \in SsS
      • 根據(jù) vk(s′)v_k(s')vk?(s) 的值來(lái)更新 vk+1(s)v_{k+1}(s)vk+1?(s) ,意思就是利用上一次迭代中的下個(gè)狀態(tài) s′s's 來(lái)更新這次迭代的當(dāng)前狀態(tài) sss 的效用值。

    用數(shù)學(xué)公式來(lái)表示:
    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)=aA?π(as)(Rsa?+γsS?Pssa?vk?(s))
    上述式子表達(dá)的意思是,在計(jì)算第 k+1k+1k+1 次迭代的狀態(tài) sss 的效用值時(shí),用當(dāng)前得到的即時(shí)回報(bào)值 RsaR_s^aRsa? 再加上上一輪迭代表中的 s′s's 的效用值 vk(s′)v_k(s')vk?(s),可以簡(jiǎn)化表示為:
    vk+1=Rπ+γPπvkv^{k+1} = R^\pi + \gamma P^\pi v^k vk+1=Rπ+γPπvk

    同步backup法應(yīng)用舉例

    一個(gè) 4x4 的方格,一共有 4 種 action(上下左右),每走一步(除了走到灰色格子內(nèi))得到的 reward 都是 -1,目標(biāo)是使得 agent 學(xué)會(huì)走到左上或右下的兩個(gè)灰色格子中去。我們給定一個(gè)策略 π\(zhòng)piπ,該策略在任意一個(gè)狀態(tài)下都隨機(jī)進(jìn)行行為選擇(即上下左右行為的概率都是0.25),一個(gè)格子代表一個(gè)state,我們?nèi)绾稳ビ?jì)算在策略 π\(zhòng)piπ 下每一個(gè) state 的 vvv 值?

    下圖左邊是我們的 vvv 表迭代的過(guò)程,我們先隨機(jī)初始化 vvv 表中所有狀態(tài)的取值為0,在下一次迭代中(k=1),我們通過(guò) backup 法一次計(jì)算每一個(gè)格子的狀態(tài)值,這里用格子1(第一排第二個(gè))進(jìn)行舉例:由于上下左右四個(gè)行為的采取概率均等(隨機(jī)選取動(dòng)作),即 π(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 的迭代中時(shí),由于向上走后會(huì)停留在原地,因此向上走后轉(zhuǎn)移到的狀態(tài)還是自身,同樣帶公式計(jì)算可得到計(jì)算結(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 表一定會(huì)收斂(有數(shù)學(xué)公式證明,這里不做講解),收斂后的 vvv 表代表了在我們給定的策略 π\(zhòng)piπ 下每一個(gè)狀態(tài)的真實(shí)取值。此時(shí)我們不僅得到了策略 π\(zhòng)piπ 下的狀態(tài)值表,同時(shí)我們還可以根據(jù)這個(gè) vvv 表通過(guò)貪婪算法得到一個(gè)新的更優(yōu)策略 π′\pi'π(下圖右),即在一個(gè)狀態(tài)下每次都選擇具有最大狀態(tài)值的狀態(tài)作為下一個(gè)轉(zhuǎn)移狀態(tài),這個(gè)新策略 π′\pi'π 明顯優(yōu)于我們一開(kāi)始給定的隨機(jī)選擇行為的策略 π\(zhòng)piπ(在k=3的時(shí)候最優(yōu)策略就已經(jīng)出現(xiàn)了,之后再?zèng)]有變化過(guò))。

    上面的整個(gè)示例展示了 backup 法的兩個(gè)功能:

    • 給定一個(gè)策略 π\(zhòng)piπ,評(píng)價(jià)在這個(gè)策略下各狀態(tài)的好壞(vπv_\pivπ? 表)
    • improve 策略 π\(zhòng)piπ,得到一個(gè)更好的策略 π′\pi'π

    在大多數(shù)情況下,我們需要重復(fù)這兩個(gè)步驟:評(píng)價(jià)一個(gè)給定策略 →\rightarrow 改善這個(gè)策略得到新策略 →\rightarrow 評(píng)價(jià)新策略 →\rightarrow 改善新策略得到另一個(gè)新策略 →\rightarrow ……,因此這是一個(gè) **Evaluation - Improve **的迭代循環(huán)過(guò)程,這個(gè)過(guò)程我們就稱(chēng)之為 Policy Iteration(策略迭代)。在若干個(gè)策略迭代過(guò)程后,策略 π′\pi'π 會(huì)收斂到最優(yōu)策略 π?\pi_*π?? ,最優(yōu)策略就是我們最終的求解策略了。

    note:改善策略(Improvement)的方法有許多種,上面的實(shí)例我們使用的是貪婪策略(greedy)進(jìn)行的策略提升,但大多數(shù)時(shí)候貪婪策略能夠取得很好的結(jié)果。

    4.3 值迭代(Value Iteration)

    在策略迭代的部分我們提到,我們?cè)谧铋_(kāi)始需要給定一個(gè)策略,并對(duì)該策略進(jìn)行不斷的 improve,通常我們選擇等概率的行為選擇策略作為初始策略,那我們能不能有一種方法完全不需要一開(kāi)始給定初始策略呢?其實(shí)我們可以發(fā)現(xiàn),在策略迭代的方法中我們給定初始策略就是為了得到一張 vvv 表,我們是根據(jù)這個(gè) vvv 表來(lái)找出最優(yōu)策略的,如果我們能不依賴(lài)一個(gè)初始策略就能計(jì)算出 vvv 表,那我們就能解決這個(gè)問(wèn)題了,這就是值迭代法的由來(lái)。

    首先我們思考,什么算是最優(yōu)策略?最優(yōu)策略是指不僅能在當(dāng)前獲取最大的行為效用值,在下一個(gè)狀態(tài)應(yīng)該也能取得最大的行為效用值,在之后的每一個(gè)狀態(tài)都應(yīng)該取得最大的行為效用值。按照這個(gè)定義,假定我們已知了一個(gè)最優(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?+γsS?Pssa?v??(s)
    上述式子表達(dá)了當(dāng)前狀態(tài) sss 的狀態(tài)值等于采取當(dāng)前所有行為里有著最高效用值的行為得到的回報(bào) + 下一個(gè)狀態(tài)在最優(yōu)策略下的狀態(tài)值。因此,我們可以從后往前開(kāi)始迭代計(jì)算了,由于終止?fàn)顟B(tài) v(st)v(s_t)v(st?) 的得分我們可知,終止?fàn)顟B(tài)的前一個(gè)狀態(tài) v(st?1)v(s_{t-1})v(st?1?) 的值 = 采取最大效用行為得到的回報(bào)值 Rst?1R_{s_{t-1}}Rst?1??+ 終止?fàn)顟B(tài)的狀態(tài)值 v(st)v(s_{t})v(st?),再前一個(gè)狀態(tài) v(st?2)v(s_{t-2})v(st?2?) 的狀態(tài)值 = 采取最大效用行為得到的回報(bào)值 Rst?2R_{s_{t-2}}Rst?2?? + 后一個(gè)狀態(tài)的狀態(tài)值 v(st?1)v(s_{t-1})v(st?1?),…,依次迭代就可以求出每個(gè)狀態(tài)的狀態(tài)值了,vvv 表也就求解完成了。

    Value Iteration 求解法舉例

    以下是一個(gè) 4x4 的方格,左上角是目標(biāo)點(diǎn),我們需要求出在任意一個(gè)格子到目標(biāo)點(diǎn)的最短路徑。我們把每一個(gè)格子看成是一個(gè)狀態(tài),每走一步得到的 reward 是 -1。下圖表示了整個(gè)問(wèn)題的求解流程:初始化所有狀態(tài)值都為0,緊接著每一個(gè)格子都選擇上下左右臨近格子中狀態(tài)值最大的那個(gè)格子,并用即時(shí)回報(bào) -1 加上最大值鄰居格子的狀態(tài)值(參照上面的公式)。一直這么迭代下去,直到第 7 次的時(shí)候該表格收斂了,求到了最終的結(jié)果。有了 vvv 表我們的策略就相應(yīng)的出現(xiàn)了,對(duì)于任意一個(gè)狀態(tài)選擇最大狀態(tài)值的鄰居格子就能夠最快的到達(dá)終點(diǎn)格子了。

    值迭代的方法要求人們需要枚舉出該狀態(tài) sss 之后所有可能到達(dá)的狀態(tài) s′s's,并選擇出具有最高效用值的狀態(tài)作為自己的后續(xù)狀態(tài);并且整個(gè)問(wèn)題必須存在終點(diǎn)(end point),畢竟是從后向前推的思路,如果環(huán)境無(wú)法全部可知或者終點(diǎn)狀態(tài)不存在就無(wú)法使用該方法進(jìn)行問(wèn)題求解了。

    4.4 小結(jié)

    對(duì)整個(gè)利用動(dòng)態(tài)規(guī)劃解決 MDP 問(wèn)題的方法進(jìn)行一個(gè)歸納總結(jié):

    功能貝爾曼方程算法
    狀態(tài)值估計(jì)(vvv 表求解)貝爾曼期望方程迭代策略評(píng)估法(Iterative Policy Evaluation)
    策略學(xué)習(xí)貝爾曼期望方程 + 貪婪策略策略迭代法(Policy Iteration)
    策略學(xué)習(xí)貝爾曼最優(yōu)方程值函數(shù)迭代法(Value Iteration)

    總結(jié)

    以上是生活随笔為你收集整理的DeepMind 的马尔可夫决策过程(MDP)课堂笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。