「馬爾可夫決策過程」學習筆記

狐王驾虎發表於2024-03-04

馬爾可夫決策過程

個人在學習「馬爾可夫過程」時(基於這本教材,強烈推薦),做了些總結,並將遇到了一些感到困惑自我解答了,在此整理並記錄一下。

1. 馬爾可夫性質

簡單的一句話:當前狀態 只取決於上一時刻 的狀態。這個影片很生動地解釋了這一性質。

2. 馬爾可夫過程

image

「馬爾可夫過程」也叫「馬爾可夫鏈」,可以用元組 \((S, P)\) 來表示,也就是組成馬爾可夫過程的這些東西。

圖中 綠圈 表示的 $s_1, s_2, s_3 …… $ 就是狀態(state),所有的狀態就組成了 狀態集合 \(S\)
圖中 藍色 的那些數字與它所在的箭頭就表示了「狀態之間的轉移機率」。將狀態視為節點,轉移機率視為單向邊,看得出來它就是圖結構。用「鄰接矩陣」表示就得到了 狀態轉移矩陣 \(P\)

\[P = \begin{bmatrix} 0.9 & 0.1 & 0 & 0 & 0 & 0 \\ 0.5 & 0 & 0.5 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0.6 & 0 & 0.4 \\ 0 & 0 & 0 & 0 & 0.3 & 0.7 \\ 0 & 0.2 & 0.3 & 0.5 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 1 \end{bmatrix}\]

所以,我們可以像尋路(圖搜尋)一樣,從一個狀態出發去往某個狀態,途徑節點所構成的「路徑」我們稱為 「狀態轉移序列」,例如從 \(s_2\) 出發,可以有這樣的序列:\(s_2 \to s_3 \to s_4 \to s_6\),我們也將尋路的這個步驟稱為 「取樣」

3. 馬爾可夫獎勵過程(MRP)

image

在「馬爾可夫過程」的基礎上新增 \(r 和 \gamma\),構成了「馬爾可夫獎勵過程」,可以用 \((S, P, r, \gamma)\) 表示。

其中 \(r\)「獎勵函式」,表示 到達狀態時 獲得的獎勵期望。圖中用紅色數字就表示了每個狀態的 \(r\)
\(\gamma\) 是一個 0 ~ 1 的數字,表示 「折扣因子」, 是對遠期收益的採取的限制,在計算狀態序列的「回報」時會用到。

1. 回報

計算「回報」需要透過「狀態轉移序列」,而且計算出來的這個「回報」是指這個 序列起點狀態的回報 。比如下圖紅線標出的選中的序列 \(s_1 \to s_2 \to s_3 \to s_6\):

image

取折扣因子 \(\gamma = 0.5\),那麼\(s_1\) 的回報

\[ \begin{aligned} G_1 &= 0.5^0 \times (-1) + 0.5^1 \times (-2) + 0.5 ^2 \times(-2) + 0.5^3 \times (0) \\ & = -1 + 0.5 \times (-2) + 0.5^2 \times (-2)\\ & = -2.5 \end{aligned} \]

回報的計算過程可以用「秦九昭演算法」進行簡化,這也是開篇提及的那本教材中的做法(程式碼部分)。

2. 價值函式

以一個狀態作為起點所生成的「狀態轉移序列」可以有很多,而且從一個狀態轉移到另外一個狀態是有機率的,把這點考慮在內後,我們可以求得 從一個狀態開始執行的所有可能狀態轉移序列的累積期望回報(這也是蒙特卡洛法的依據),這個期望值就稱為起點狀態的 「價值」

所有狀態的價值就組成了 「價值函式」,用 \(V\) 表示,它允許我們輸入一個狀態,就返回其對應的「價值」。根據「價值函式」的計算過程(不細說了),我們可以得出 貝爾曼方程

\[V(s) = r(s) + \gamma \sum_{s'\in S} p(s'|s)V(s') \]

對於小型的馬爾可夫鏈,可以直接透過矩陣運算將上述式子硬解出 \(V\),這也就是 「解析法」

4. 馬爾可夫決策過程(MDP)

image

「馬爾可夫過程」和「馬爾可夫獎勵過程」都是 自發改變 的隨機過程;而如果有「外力」來共同改變這個隨機過程,就有了「馬爾可夫決策過程」。在「馬爾可夫獎勵過程」的基礎上,再新增作為「外力」的 動作集合 \(A\) 就得到「馬爾可夫決策過程」,用 \((S, A, P, r, \gamma)\) 表示。

圖中黃色圓圈就表示「動作」,可以看出,在馬爾可夫決策過程中,狀態之間的切換必須透過動作。

透過與「馬爾可夫獎勵過程」的對比,來看看一些新概念:

image

二者都有藍色虛線箭頭,表示單向轉移的機率(「決策過程」沒有標出數字的藍色箭頭,是因為從那個動作出發只有一根箭頭,機率為1);但明顯「馬爾可夫決策過程」還有一種黑色實線箭頭,而且也沒有標註表示機率的數字,是因為沒有機率嗎?

非也,這個黑色箭頭也是要有機率的,只不過具體機率的多少是人為給定的,所有這樣人為制定的從「狀態」到「動作」的機率就稱為 「策略」,用 \(\pi\) 表示,例如,針對上面的決策過程,給出一個「策略」\(\pi_2\) ,那麼決策過程就相當於這樣:

image

還可以看到一個明顯的不同,獎勵過程中的 \(r\) 標在狀態上,而決策過程的 \(r\) 標在動作上。更具體地,獎勵過程中的獎勵函式只取決於狀態,可記為 \(r(s)\);決策過程的獎勵函式同時取決於狀態和動作,記為 \(r(s, a)\)

既然「獎勵函式」在動作身上,那我們也可以像「馬爾可夫獎勵過程」一樣求得動作的「價值函式」,只不過這個「價值函式」表示的是,在策略 \(\pi\) 下,從起點狀態 \(s\) 透過執行動作 \(a\) 所得的期望回報,我們稱其為 「動作價值函式」,用 \(Q^\pi(s, a)\) 表示:

\[Q^\pi(s,a)=r(s,a)+\gamma\sum_{s'\in S}P(s'|s,a)V^\pi(s') \]

透過「動作價值函式」可以進一步求得「從狀態 \(s\) 出發遵循策略 \(\pi\) 能獲得的期望回報」,也就是 「狀態價值函式」,用 \(V^\pi(s)\) 表示。它等於在該狀態下基於策略 \(\pi\) 採取所有動作的機率與相應的價值相乘再求和的結果:

\[V^\pi(s)=\sum_{n \in A}\pi(a|s)Q^\pi(s,a) \]

1. 貝爾曼期望方程

透過上述兩個價值函式,可以得出各自的 貝爾曼期望方程

image

5. 蒙特卡洛法求解 \(V\)

解析法的時間複雜度是 \(O(n^3)\),難以用於普遍情況。蒙特卡洛法對於每個狀態都進行大量「取樣」,各自得到大量狀態轉移序列,再分別求出這些序列的「回報」的平均值作為各自狀態的「價值」,從而求出「價值函式」。聽起來很無腦,但卻是合理的,因為這就是在模擬獲取狀態的所有可能序列,與「價值」的定義相符。

再求平均值時,推薦使用 增量式 方法:

image

6. 佔用度量

即便是同一個「馬爾可夫決策過程」,策略 \(\pi\) 不同,就會導致「價值函式」不同。

我們可以定義 「狀態訪問機率」,顧名思義,表示在執行某個策略時,狀態 被訪問到的機率。這意味著它告訴我們在與MDP互動並執行某個策略時,智慧體會花費多少時間在每個狀態上,或者說智慧體會以多大的機率處於每個狀態。

\(P_t^\pi(s)\) 表示採取策略 \(\pi\) 使得智慧體在時刻狀態 \(t\) 時刻狀態為 \(s\) 的機率,那麼

\[v^\pi(s) = (1-\gamma)\sum_{t=0}^\infty\gamma^tP_t^\pi(s) \]

注意,根據等比數列求和公式可知, \(\sum_{t=0}^\infty\gamma^t = \frac{1}{1-\gamma}\),所以乘上 \((1-\gamma)\) 進行歸一化。

同樣,我們定義 「佔用度量」,它表示執行某個策略時,行動 被訪問到的機率:

\[v^\pi(s) = (1-\gamma)\sum_{t=0}^\infty\gamma^tP_t^\pi(s)\pi(a|s) \]

7. 最優策略

強化學習的目標通常是找到一個策略,使得智慧體從初始狀態出發能獲得最多的期望回報。

因此,我們希望能找到一個最好的策略 \(\pi\),對於任一的狀態 \(s\),都能使得 $V^\pi(s) \ge V^\pi{'}(s) \((\)\pi'$指其它策略),那這個策略就稱為 「最優策略」,用 \(\pi^*\) 表示。

對應的,最優策略下得到的「狀態價值函式」也用 \(V^{*}(s)\) 表示,意為「最優狀態價值函式」。「動作價值函式」同理:「最優動作價值函式」\(Q^{*}(s,a)\)

1. 貝爾曼最優方程

同樣,我們可以寫出這兩個狀態函式的 貝爾曼最優方程

image

相關文章