強化學習 — 馬爾科夫決策過程(MDP)
一、馬爾科夫過程(Markov Process)
馬爾科夫性 某一狀態信息包含了所有相關的歷史,只要當前狀態可知,所有的歷史信息都不再需要,當前狀態就可以決定未來,則認爲該狀態具有馬爾科夫性
P ( S t + 1 ∣ S t ) = p ( S t + 1 ∣ S 1 , S 2 , ⋯ , S t )
P(S_{t+1}|S_t) = p(S_{t+1}|S_1, S_2, \cdots , S_t)
P ( S t + 1 ∣ S t ) = p ( S t + 1 ∣ S 1 , S 2 , ⋯ , S t )
馬爾科夫過程 又叫做馬爾科夫鏈(Markov Chain)
,它是一個無記憶的隨機過程,可以用一個元組<S, P>
表示,其中
S
是有限數量的狀態集 S = s 1 , s 2 , s 3 , ⋯ , s t S ={s_1, s_2, s_3, \cdots, s_t} S = s 1 , s 2 , s 3 , ⋯ , s t
P
是狀態轉移概率矩陣 p ( S t + 1 = s ′ ∣ s t = s ) , 其 中 s ′ 表 示 下 一 時 刻 的 狀 態 , s 表 示 當 前 狀 態 p(S_{t+1} = s'|s_t=s) , 其中 s' 表示下一時刻的狀態,s 表示當前狀態 p ( S t + 1 = s ′ ∣ s t = s ) , 其 中 s ′ 表 示 下 一 時 刻 的 狀 態 , s 表 示 當 前 狀 態
二、馬爾科夫獎勵過程(Markov Reward Process)
馬爾科夫獎勵過程 是在馬爾科夫過程基礎上增加了獎勵函數 R R R 和衰減係數 γ \gamma γ , 用 < S , R , P , γ > <S, R,P, \gamma> < S , R , P , γ > 表示
R R R : 表示 S S S 狀態下某一時刻的狀態S t S_t S t 在下一個時刻 ( t + 1 ) (t + 1) ( t + 1 ) 能獲得的獎勵的期望
R s = E [ R t + 1 ∣ S t = s ]
R_s = E[R_{t+1}|S_t=s]
R s = E [ R t + 1 ∣ S t = s ]
G t G_t G t : 收穫 G t G_t G t 爲在一個馬爾科夫獎勵鏈上從t時刻開始往後所有的獎勵的有衰減的收益總和
G t = R t + 1 + γ R t + 2 + γ 2 R t + 3 + ⋯ + γ T − t − 1 R T
G_t = R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \cdots + \gamma^{T-t-1}R_T
G t = R t + 1 + γ R t + 2 + γ 2 R t + 3 + ⋯ + γ T − t − 1 R T
γ \gamma γ : 折扣因子( D i s c o u n t f a c t o r γ ∈ [ 0 , 1 ] ) (Discount \; factor γ ∈ [0, 1]) ( D i s c o u n t f a c t o r γ ∈ [ 0 , 1 ] )
1、爲了避免出現狀態循環的情況
2、系統對於將來的預測並不一定都是準確的,所以要打折扣
很顯然 越靠近1,考慮的利益越長遠。
V ( s ) V(s) V ( s ) : 狀態價值函數(state value function) 表示從從該狀態開始的馬爾科夫鏈收穫G t G_t G t 的期望
v ( s ) = E [ G t ∣ S t = s ]
v(s) = E[G_t|S_t = s]
v ( s ) = E [ G t ∣ S t = s ]
例子:
獎勵:S 1 S_1 S 1 +5, S 7 S_7 S 7 +10, 其餘獎勵爲 0,則 R = [ 5 , 0 , 0 , 0 , 0 , 0 , 10 ] R = [5,0,0,0,0,0,10] R = [ 5 , 0 , 0 , 0 , 0 , 0 , 1 0 ]
γ = 0.5 \gamma = 0.5 γ = 0 . 5
$S_4, S_5, S_6, S_7: $ 0 + 0.5*0 + 0.5*0 + 0.125 *10 = 1.25
S 4 , S 3 , S 2 , S 1 S_4,S_3,S_2,S_1 S 4 , S 3 , S 2 , S 1 : 0 + 0.5 ×0 + 0.25×0 + 0.125×5 = 0.625
Bellman Equation 貝爾曼方程
v ( s ) = E [ G t ∣ S t = s ] v(s) = E[G_t|S_t = s] v ( s ) = E [ G t ∣ S t = s ]
= E [ R t + 1 + γ R t + 2 + γ 2 R t + 3 + ⋯ ∣ S t = s ] = E[R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \cdots|S_t = s] = E [ R t + 1 + γ R t + 2 + γ 2 R t + 3 + ⋯ ∣ S t = s ]
= E [ R t + 1 + γ ( R t + 2 + R t + 3 + ⋯ ) ∣ S t = s ] = E[R_{t+1} + \gamma(R_{t+2} + R_{t+3} + \cdots)|S_t=s] = E [ R t + 1 + γ ( R t + 2 + R t + 3 + ⋯ ) ∣ S t = s ]
= E [ R t + 1 + γ v ( S t + 1 ) ∣ S t = s ] =E[R_{t+1} + \gamma v(S_{t+1})|S_t = s] = E [ R t + 1 + γ v ( S t + 1 ) ∣ S t = s ]
= E [ R t + 1 ∣ S t = s ] ⏟ 當 前 的 獎 勵 + γ E [ v ( S t + 1 ) ∣ S t = s ] ⏟ 下 一 時 刻 狀 態 的 價 值 期 望 =\underbrace{E[R_{t+1}|S_t=s]}_{當前的獎勵} + \underbrace{\gamma E[v(S_{t+1})|S_t = s]}_{下一時刻狀態的價值期望} = 當 前 的 獎 勵 E [ R t + 1 ∣ S t = s ] + 下 一 時 刻 狀 態 的 價 值 期 望 γ E [ v ( S t + 1 ) ∣ S t = s ]
使用貝爾曼方程狀態價值V V V 可以表示爲:
V ( s ) = R ( s ) ⏟ I m m e d i a t e r e w a r d + γ ∑ s ′ ∈ S P ( s ′ ∣ s ) V ( s ′ ) ⏟ D i s c o u n t e d s u m o f f u t u r e r e w a r d
V(s) = \underbrace{R(s)}_{Immediate \; reward} + \underbrace{\gamma \sum_{s' \in S}P(s'|s)V(s')}_{Discounted \; sum \; of \; future \; reward}
V ( s ) = I m m e d i a t e r e w a r d R ( s ) + D i s c o u n t e d s u m o f f u t u r e r e w a r d γ s ′ ∈ S ∑ P ( s ′ ∣ s ) V ( s ′ )
S 表示下一時刻的所有狀態
s’ 表示下一時刻可能的狀態
三、馬爾科夫決策過程(Markov Decision Process)
馬爾科夫決策過程 是在馬爾科夫獎勵過程的基礎上加了 Decision
過程,相當於多了一個動作集合,可以用 < S , A , P , R , γ > <S, A, P, R, \gamma> < S , A , P , R , γ >
A A A 表示有限的行爲集合
S S S 表示有限的狀態集合
P a P^a P a is dynamics / transition model for each action
P ( s t + 1 = s ′ ∣ s t = s , a t = a ) P(s_{t+1} = s'|s_t = s, a_t = a) P ( s t + 1 = s ′ ∣ s t = s , a t = a )
R R R 是獎勵函數 R ( s t = s , a t = a ) = E [ R t ∣ s t = s , a t = a ] R(s_t=s, a_t = a) = E[R_t|s_t=s, a_t=a] R ( s t = s , a t = a ) = E [ R t ∣ s t = s , a t = a ]
策略 (Policy)
用 π \pi π 表示策略的集合,其元素 π ( a ∣ s ) \pi(a|s) π ( a ∣ s ) 表示某一狀態 s
採取可能的行爲 a
的概率
π ( a ∣ s ) = P ( A t = a ∣ S t = s )
\pi(a|s) = P(A_t=a|S_t=s)
π ( a ∣ s ) = P ( A t = a ∣ S t = s )
在馬爾科夫獎勵過程中 策略 π \pi π 滿足以下方程,可以參照下面圖來理解
狀 態 轉 移 概 率 : P π ( s ′ ∣ s ) = ∑ a ∈ A π ( a ∣ s ) P ( s ′ ∣ s , a ) 獎 勵 函 數 : R π ( s ) = ∑ a ∈ A π ( a ∣ s ) R ( s , a )
狀態轉移概率:\quad P^\pi(s'|s) = \sum_{a \in A}\pi(a|s)P(s'|s, a) \\
獎勵函數:\quad R^\pi(s) = \sum_{a\in A}\pi(a|s)R(s,a)
狀 態 轉 移 概 率 : P π ( s ′ ∣ s ) = a ∈ A ∑ π ( a ∣ s ) P ( s ′ ∣ s , a ) 獎 勵 函 數 : R π ( s ) = a ∈ A ∑ π ( a ∣ s ) R ( s , a )
狀態轉移概率可以描述爲:在執行策略 π \pi π 時,狀態從 s 轉移至 s’ 的概率等於執行該狀態下所有行爲的概率與對應行爲能使狀態從 s 轉移至 s’ 的概率的乘積的和。參考下圖
獎勵函數可以描述爲:在執行策略 π \pi π 時獲得的獎勵等於執行該狀態下所有行爲的概率與對應行爲產生的即時獎勵的乘積的和。
我們引入策略,也可以理解爲行動指南,更加規範的描述個體的行爲,既然有了行動指南,我們要判斷行動指南的價值,我們需要再引入基於策略的價值函數。
基於策略的狀態價值函數(state value function)
V ( s ) V(s) V ( s ) 表示從狀態 s s s 開始,遵循當前策略時所獲得的收穫的期望
v π ( s ) = E π [ G t ∣ S t = s ]
v_{\pi}(s) = E_{\pi}[G_t|S_t = s]
v π ( s ) = E π [ G t ∣ S t = s ]
其中 G t G_t G t 可以參照馬科夫獎勵過程。我們有了價值衡量標準,如果狀態 s 是一個好的狀態,如何選擇動作到達這個狀態,這時就需要判斷動作的好壞,衡量行爲價值。
基於策略的行爲價值函數(action value function)
q π ( s , a ) q_{\pi}(s,a) q π ( s , a ) 當前狀態s執行某一具體行爲a所能的到的收穫的期望
q π ( s , a ) = E π [ G t ∣ S t = s , A t = a ]
q_{\pi}(s, a) = E_{\pi}[G_t|S_t=s, A_t=a]
q π ( s , a ) = E π [ G t ∣ S t = s , A t = a ]
根據 Bellman 公式推導可得(參照馬爾科夫獎勵過程中 V 的推導)
q π ( s , a ) = R ( s , a ) + γ ∑ s ′ ∈ S P ( s ′ ∣ s , a ) ⋅ V π ( s ′ )
q_{\pi}(s,a) = R(s, a) + \gamma \sum_{s' \in S} P_{(s'|s, a)} \cdot V_{\pi}(s')
q π ( s , a ) = R ( s , a ) + γ s ′ ∈ S ∑ P ( s ′ ∣ s , a ) ⋅ V π ( s ′ )
在某一個狀態下采取某一個行爲的價值,可以分爲兩部分:其一是離開這個狀態的價值,其二是所有進入新的狀態的價值於其轉移概率乘積的和。參考下圖右理解
由狀態價值函數和行爲價值函數的定義,可得兩者的關係
v π ( s ) = ∑ a ∈ A π ( a ∣ s ) ⋅ q π ( s , a )
v_{\pi}(s) = \sum_{a \in A}\pi(a|s) \cdot q_{\pi}(s,a)
v π ( s ) = a ∈ A ∑ π ( a ∣ s ) ⋅ q π ( s , a )
我們知道策略就是用來描述各個不同狀態下執行各個不同行爲的概率,而狀態價值是遵循當前策略時所獲得的收穫的期望,即狀態 s 的價值體現爲在該狀態下遵循某一策略而採取所有可能行爲的價值按行爲發生概率的乘積求和。參照下圖左理解
上面兩個公式組合可得 Bellman Expectation Equation
v π ( s ) = ∑ a ∈ A π ( a ∣ s ) ( R ( s , a ) + γ ∑ s ′ ∈ S P ( s ′ ∣ s , a ) ⋅ V π ( s ′ ) )
v_{\pi}(s) = \sum_{a \in A}\pi(a|s)\left(R(s, a) + \gamma \sum_{s' \in S} P_{(s'|s, a)} \cdot V_{\pi}(s')\right)
v π ( s ) = a ∈ A ∑ π ( a ∣ s ) ( R ( s , a ) + γ s ′ ∈ S ∑ P ( s ′ ∣ s , a ) ⋅ V π ( s ′ ) )
q π ( s , a ) = R ( s , a ) + γ ∑ s ′ ∈ S P ( s ′ ∣ s , a ) ⋅ ∑ a ′ ∈ A π ( a ′ ∣ s ′ ) ⋅ q π ( s ′ , a ′ )
q_{\pi}(s,a) = R(s, a) + \gamma \sum_{s' \in S} P_{(s'|s, a)} \cdot \sum_{a' \in A}\pi(a'|s') \cdot q_{\pi}(s',a')
q π ( s , a ) = R ( s , a ) + γ s ′ ∈ S ∑ P ( s ′ ∣ s , a ) ⋅ a ′ ∈ A ∑ π ( a ′ ∣ s ′ ) ⋅ q π ( s ′ , a ′ )
實例
假設γ = 1 \gamma = 1 γ = 1 上圖數字值爲對於狀態價值v(s),根據公式價值函數需要下一個狀態的價值,終點的狀態價值爲0,利用遞歸的方式即可得到
五、Decision Making in MDP
可以把 Decision Making 分爲兩個過程
Prediction (評估給定的策略)
輸入: MDP< S , A , P , R , γ > <S, A, P, R, \gamma> < S , A , P , R , γ > 和 策略 $\pi $
輸出:value function V π V_\pi V π
Control (尋找最優策略)
輸入:MDP$<S, A, P, R, \gamma> $
輸出:最優的價值函數 V ∗ V^* V ∗ 和最優的策略 π ∗ \pi^* π ∗
1、Policy evaluation on MDP
Prediction 滿足動態規劃的條件:
貝爾曼等式可以遞歸分解
value function 可以被存儲和重用
Iteration on Bellman exception backup
我們可以用所有的狀態 s 在 t 時刻的價值 v t ( s ′ ) v_t(s') v t ( s ′ ) 來更新 v t + 1 ( s ) v_{t+1}(s) v t + 1 ( s ) 時刻的價值,然後迭代下去
V t + 1 ( s ) = ∑ a ∈ A π ( a ∣ s ) ( R ( s , a ) + γ ∑ s ′ ∈ S P ( s ′ ∣ s , a ) ⋅ V t ( s ′ ) ) V t + 1 ( s ) = R π ( s ) + γ ∑ s ′ ∈ S P π ( s ′ ∣ s ) ⋅ V t ( s ′ )
V_{t+1}(s) = \sum_{a \in A}\pi(a|s)(R(s, a) + \gamma \sum_{s' \in S} P_{(s'|s, a)} \cdot V_t(s')) \\
V_{t+1}(s) = R_\pi(s) + \gamma \sum_{s' \in S} P_{\pi}(s'|s) \cdot V_t(s')
V t + 1 ( s ) = a ∈ A ∑ π ( a ∣ s ) ( R ( s , a ) + γ s ′ ∈ S ∑ P ( s ′ ∣ s , a ) ⋅ V t ( s ′ ) ) V t + 1 ( s ) = R π ( s ) + γ s ′ ∈ S ∑ P π ( s ′ ∣ s ) ⋅ V t ( s ′ )
最優狀態價值函數指的是在從所有策略產生的狀態價值函數中,選取使狀態s價值最大的函數:
V ∗ ( s ) = m a x π V π ( s )
V_*(s) = max_\pi V_\pi(s)
V ∗ ( s ) = m a x π V π ( s )
π ∗ ( s ) = a r g m a x π V ∗ ( s )
\pi^*(s) = argmax_\pi V^*(s)
π ∗ ( s ) = a r g m a x π V ∗ ( s )
對於任何MDP,下面幾點成立:
1.存在一個最優策略,比任何其他策略更好或至少相等;
2.所有的最優策略有相同的最優價值函數;
3.所有的最優策略具有相同的行爲價值函數。
根據以上幾點,我們可以最大化最優行爲價值函數 找到最優策略
π ∗ ( a ∣ s ) = { 1 , if a = a r g m a x q ∗ ( s , a ) 0 , otherwise
\pi^*(a|s) =
\begin{cases}
1, & \text{if $a = argmax \; q^*(s,a)$} \\
0, & \text{otherwise}
\end{cases}
π ∗ ( a ∣ s ) = { 1 , 0 , if a = a r g ma x q ∗ ( s , a ) otherwise
策略的個數爲 ∣ A ∣ ∣ S ∣ |A|^{|S|} ∣ A ∣ ∣ S ∣ 個,對於狀態比較多的環境,計算量太大
更加高效的方法是 policy iteration 和 value iteration
2、MDP Control
(1) Policy Iteration
分爲兩個部分
Evaluate the policy $ \pi $,(通過給定的 $ \pi $ 計算 V)
Improve the policy $ \pi $,(通過貪心策略)
π ′ = g r e e d y ( v π )
\pi' = greedy(v^{\pi})
π ′ = g r e e d y ( v π )
如果我們有 一個 策略 π \pi π ,我們可以用策略 估計出它的狀態價值函數 v π ( s ) v_\pi(s) v π ( s ) , 然後根據策略改進提取出更好的策略 π ′ \pi' π ′ ,接着再計算 v π ′ ( s ) v_{\pi'}(s) v π ′ ( s ) , 然後再獲得更好的 策略 π ′ ′ \pi'' π ′ ′ ,直到相關滿足相關終止條件。
v i ( s ) = ∑ a ∈ A π ( a ∣ s ) ( R ( s , a ) + γ ∑ s ′ ∈ S P ( s ′ ∣ s , a ) ⋅ v i − 1 ( s ′ ) )
v_i(s) = \sum_{a \in A}\pi(a|s)(R(s, a) + \gamma \sum_{s' \in S} P_{(s'|s, a)} \cdot v_{i-1}(s'))
v i ( s ) = a ∈ A ∑ π ( a ∣ s ) ( R ( s , a ) + γ s ′ ∈ S ∑ P ( s ′ ∣ s , a ) ⋅ v i − 1 ( s ′ ) )
q π i ( s , a ) = R ( s , a ) + γ ∑ s ′ ∈ S P ( s ′ ∣ s , a ) ⋅ v π i ( s ′ ) π i + 1 ( s ) = a r g m a x a q π i ( s , a )
q^{\pi_i}(s,a) = R(s, a) + \gamma \sum_{s' \in S} P_{(s'|s,a)} \cdot v^{\pi_i}(s') \\
\pi_{i+1}(s) = argmax_a \; q^{\pi_i}(s,a)
q π i ( s , a ) = R ( s , a ) + γ s ′ ∈ S ∑ P ( s ′ ∣ s , a ) ⋅ v π i ( s ′ ) π i + 1 ( s ) = a r g m a x a q π i ( s , a )
可以把 q π i ( s , a ) q^{\pi_i}(s,a) q π i ( s , a ) 想象成一個表格,其中橫軸代表不同的狀態,縱軸代表每種狀態下不同的動作產生的價值,然後選擇一個最大的行爲價值作爲當前的狀態價值
Bellman Optimality Equation
v ∗ ( s ) = m a x a q ∗ ( s , a )
v_*(s) = max_a q_*(s,a)
v ∗ ( s ) = m a x a q ∗ ( s , a )
q ∗ ( s , a ) = R ( s , a ) + γ ∑ s ′ ∈ S P s ′ s a ⋅ V ∗ ( s ′ )
q_*(s,a) = R(s, a) + \gamma \sum_{s' \in S} P_{s's}^a \cdot V_*(s')
q ∗ ( s , a ) = R ( s , a ) + γ s ′ ∈ S ∑ P s ′ s a ⋅ V ∗ ( s ′ )
把上面兩個式子結合起來有Bellman Optimality Equation
v ∗ ( s ) = m a x a ( R ( s , a ) + γ ∑ s ′ ∈ S P s ′ s a ⋅ V ∗ ( s ′ ) )
v_*(s) = max_a (R(s, a) + \gamma \sum_{s' \in S} P_{s's}^a \cdot V_*(s'))
v ∗ ( s ) = m a x a ( R ( s , a ) + γ s ′ ∈ S ∑ P s ′ s a ⋅ V ∗ ( s ′ ) )
q ∗ ( s , a ) = R ( s , a ) + γ ∑ s ′ ∈ S P s ′ s a ⋅ m a x a ′ q ∗ ( s ′ , a ′ )
q_*(s,a) = R(s, a) + \gamma \sum_{s' \in S} P_{s's}^a \cdot max_{a'}q_*(s', a')
q ∗ ( s , a ) = R ( s , a ) + γ s ′ ∈ S ∑ P s ′ s a ⋅ m a x a ′ q ∗ ( s ′ , a ′ )
(2) Value Iteration
如果我們解決了子問題的 V ∗ ( s ′ ) V^*(s') V ∗ ( s ′ )
那麼我們就可以通過反覆迭代Bellman Optimality Equation 找到 $ V^*(s) $
v ∗ ( s ) = m a x a q ∗ ( s , a ) ⇓ v i + 1 ( s ) ← m a x a ∈ A ( R ( s , a ) + γ ∑ s ′ ∈ S P ( s ′ ∣ s , a ) ⋅ V i ( s ′ ) )
v_*(s) = max_a q_*(s,a) \\
\Downarrow \\
v_{i+1}(s) \leftarrow max_{a \in A} \; \left(R(s, a) + \gamma \sum_{s' \in S} P_{(s'|s,a)} \cdot V_i(s')\right)
v ∗ ( s ) = m a x a q ∗ ( s , a ) ⇓ v i + 1 ( s ) ← m a x a ∈ A ( R ( s , a ) + γ s ′ ∈ S ∑ P ( s ′ ∣ s , a ) ⋅ V i ( s ′ ) )
π ∗ ( s ) = a r g m a x a q π ( s , a ) ⇓ π ∗ ( s ) ← a r g m a x a ( R ( s , a ) + γ ∑ s ′ ∈ S P ( s ′ ∣ s , a ) ⋅ V e n d ( s ′ ) )
\pi^*(s) = argmax_a \; q^{\pi}(s,a) \\
\Downarrow \\
\pi^*(s) \leftarrow argmax_a \; \left(R(s, a) + \gamma \sum_{s' \in S} P_{(s'|s,a)} \cdot V_{end}(s')\right)
π ∗ ( s ) = a r g m a x a q π ( s , a ) ⇓ π ∗ ( s ) ← a r g m a x a ( R ( s , a ) + γ s ′ ∈ S ∑ P ( s ′ ∣ s , a ) ⋅ V e n d ( s ′ ) )
六 後記
關於直觀的理解 Policy Iteration 和 Value Iteration 可以訪問下面的網址
https://cs.stanford.edu/people/karpathy/reinforcejs/gridworld_dp.html