强化学习 1 --- 马尔科夫决策过程详解(MDP)
強化學習 --- 馬爾科夫決策過程(MDP)
1、強化學習介紹
? 強化學習任務通常使用馬爾可夫決策過程(Markov Decision Process,簡稱MDP)來描述,具體而言:機器處在一個環境中,每個狀態為機器對當前環境的感知;機器只能通過動作來影響環境,當機器執行一個動作后,會使得環境按某種概率轉移到另一個狀態;同時,環境會根據潛在的獎賞函數反饋給機器一個獎賞。綜合而言,強化學習主要包含四個要素:狀態、動作、轉移概率以及獎賞函數。
? 根據上圖,agent(智能體)在進行某個任務時,首先與environment進行交互,產生新的狀態state,同時環境給出獎勵reward,如此循環下去,agent和environment不斷交互產生更多新的數據。強化學習算法就是通過一系列動作策略與環境交互,產生新的數據,再利用新的數據去修改自身的動作策略,經過數次迭代后,agent就會學習到完成任務所需要的動作策略。
2、馬爾科夫過程(Markov Process)
? 馬爾可夫性當前狀態包含了對未來預測所需要的有用信息,過去信息對未來預測不重要,該就滿足了馬爾科夫性,嚴格來說,就是某一狀態信息包含了所有相關的歷史,只要當前狀態可知,所有的歷史信息都不再需要,當前狀態就可以決定未來,則認為該狀態具有馬爾科夫性。用公式描述為:
[P(S_{t+1}|S_t) = p(S_{t+1}|S_1, S_2, cdots , S_t)
]
? 馬爾科夫過程又叫做馬爾科夫鏈(Markov Chain),它是一個無記憶的隨機過程,可以用一個元組<S, P>表示,其中
S是有限數量的狀態集 (S ={s_1, s_2, s_3, cdots, s_t})
P是狀態轉移概率矩陣 (p(S_{t+1} = s'|s_t=s) ;) 其中 (s') 表示下一時刻的狀態,(s) 表示當前狀態
如下如所示:對于狀態(s_1)來說,有0.1的概率保持不變,有0.2的概率轉移到(s_2)狀態,有0.7的概率轉移到(s_4)狀態。
我們可以使用矩陣來表示:
[ P = egin{pmatrix}
P(s_1|s_1) & P(s_2|s_1) & cdots & P(s_N|s_1) \
P(s_1|s_2) & P(s_2|s_2) & cdots & P(s_N|s_2) \
vdots & vdots & ddots & vdots \
P(s_1|s_N) & P(s_2|s_N) & cdots & P(s_N|s_N) \
end{pmatrix}
]
3、馬爾科夫獎勵過程(Markov Reward Process)
3.1、概念介紹
馬爾科夫獎勵過程是在馬爾科夫過程基礎上增加了獎勵函數 (R) 和衰減系數 (gamma), 用 (<S, R,P, gamma>)表示
(R) : 表示 (S) 狀態下某一時刻的狀態(S_t) 在下一個時刻 ((t + 1)) 能獲得的獎勵的期望
[R_s = E[R_{t+1}|S_t=s]
]
(G_t) : 收獲 (G_t)為在一個馬爾科夫獎勵鏈上從t時刻開始往后所有的獎勵的有衰減的收益總和
[G_t = R_{t+1} + gamma R_{t+2} + gamma^2 R_{t+3} + cdots + gamma^{T-t-1}R_T
]
(gamma) : 折扣因子((Discount ; factor γ ∈ [0, 1]))
1、為了避免出現狀態循環的情況
2、系統對于將來的預測并不一定都是準確的,所以要打折扣
很顯然越靠近1,考慮的利益越長遠。
(V(s)) : 狀態價值函數(state value function) 表示從從該狀態開始的馬爾科夫鏈收獲(G_t)的期望
[v(s) = E[G_t|S_t = s]
]
例子:對于如下狀態,我們設定進入 (S_1) 狀態獎勵為 5,進入(S_7) 狀態獎勵為 10,其余狀態獎勵為 0。則(R)可以如下表示:(R = [5,0,0,0,0,0,10]) ,折扣 因子 (gamma) 為 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) : 0 + 0.5 ×0 + 0.25×0 + 0.125×5 = 0.625
3.2、Bellman Equation 貝爾曼方程
(v(s) = E[G_t|S_t = s])
(= E[R_{t+1} + gamma R_{t+2} + gamma^2 R_{t+3} + cdots|S_t = s])
(= E[R_{t+1} + gamma(R_{t+2} + R_{t+3} + cdots)|S_t=s])
(=E[R_{t+1} + gamma 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]}_{下一時刻狀態的價值期望})
使用貝爾曼方程狀態價值(V)可以表示為:
[V(s) = underbrace{R(s)}_{Immediate ; reward} + underbrace{gamma sum_{s' in S}P(s'|s)V(s')}_{Discounted ; sum ; of ; future ; reward}
]
S 表示下一時刻的所有狀態,s' 表示下一時刻可能的狀態
? 通過貝爾曼方程,可以看到價值函數(v(s))有兩部分組成,一個是當前獲得的獎勵的期望,即(R(s)),另一個是下一時刻的狀態期望,即下一時刻 可能的狀態能獲得獎勵期望與對應狀態轉移概率乘積的和,最后在加上折扣。如下圖所示,對于狀態 (s_1),它的價值函數為:(V(s_1) = R(s_1) + gamma(0.1*V(s_1) + 0.2*V(s_2) + 0.7*V(s_4)))
4、馬爾科夫決策過程(Markov Decision Process)
馬爾科夫決策過程是在馬爾科夫獎勵過程的基礎上加了 Decision 過程,相當于多了一個動作集合,可以用 (<S, A, P, R, gamma>),這里的 P 和 R 都與具體的行為 a 對應,而不像馬爾科夫獎勵過程那樣僅對應于某個狀態。
(A) 表示有限的行為集合
(S)表示有限的狀態集合
(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]
]
(R) 是獎勵函數 (R(s_t=s, a_t = a) = E[R_t|s_t=s, a_t=a])
4.1、策略 (Policy)
用 (pi) 表示策略的集合,其元素 (pi(a|s)) 表示某一狀態 s 采取可能的行為 a 的概率
[pi(a|s) = P(A_t=a|S_t=s)
]
這里需要注意的是:
Policy定義完整定義的個體行為方式,即包括了個體在各狀態下的所有行為和概率
同時某一確定的Policy是靜態的,與時間無關
Policy僅和當前的狀態有關,與歷史信息無關,但是個體可以隨著時間更新策略
在馬爾科夫獎勵過程中 策略 (pi) 滿足以下方程,可以參照下面圖來理解
[狀態轉移概率:quad P^pi(s'|s) = sum_{a in A}pi(a|s)P(s'|s, a) \
獎勵函數:quad R^pi(s) = sum_{ain A}pi(a|s)R(s,a)
]
狀態轉移概率可以描述為:在執行策略 (pi) 時,狀態從 s 轉移至 s' 的概率等于執行該狀態下所有行為的概率與對應行為能使狀態從 s 轉移至 s’ 的概率的乘積的和。參考下圖
獎勵函數可以描述為:在執行策略 (pi) 時獲得的獎勵等于執行該狀態下所有行為的概率與對應行為產生的即時獎勵的乘積的和。
我們引入策略,也可以理解為行動指南,更加規范的描述個體的行為,既然有了行動指南,我們要判斷行動指南的價值,我們需要再引入基于策略的價值函數。
基于策略的狀態價值函數(state value function)
(V(s)) 表示從狀態 (s) 開始,遵循當前策略時所獲得的收獲的期望
[v_{pi}(s) = E_{pi}[G_t|S_t = s]
]
? 其中 (G_t) 可以參照馬科夫獎勵過程。我們有了價值衡量標準,如果狀態 s 是一個好的狀態,如何選擇動作到達這個狀態,這時就需要判斷動作的好壞,衡量行為價值。
基于策略的行為價值函數(action value function)
(q_{pi}(s,a))當前狀態s執行某一具體行為a所能的到的收獲的期望
[q_{pi}(s, a) = E_{pi}[G_t|S_t=s, A_t=a]
]
根據 Bellman 公式推導可得(參照馬爾科夫獎勵過程中 V 的推導)
[q_{pi}(s,a) = R(s, a) + gamma sum_{s' in S} P_{(s'|s, a)} cdot V_{pi}(s')
]
在某一個狀態下采取某一個行為的價值,可以分為兩部分:其一是離開這個狀態的價值,其二是所有進入新的狀態的價值于其轉移概率乘積的和。參考下圖右理解
由狀態價值函數和行為價值函數的定義,可得兩者的關系
[v_{pi}(s) = sum_{a in A}pi(a|s) cdot q_{pi}(s,a)
]
? 我們知道策略就是用來描述各個不同狀態下執行各個不同行為的概率,而狀態價值是遵循當前策略時所獲得的收獲的期望,即狀態 s 的價值體現為在該狀態下遵循某一策略而采取所有可能行為的價值按行為發生概率的乘積求和。參照下圖左理解
上面兩個公式組合可得 Bellman Expectation Equation
[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')ight)
]
[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')
]
5、最優價值函數
解決強化學習問題意味著要尋找一個最優的策略讓個體在與環境交互過程中獲得始終比其它策略都要多的收獲,這個最優策略我們可以用 (pi_*) 表示。一旦找到這個最優策略(pi_*) ,那么我們就解決了這個強化學習問題。一般來說,比較難去找到一個最優策略,但是可以通過比較若干不同策略的優劣來確定一個較好的策略,也就是局部最優解。
我們一般是通過對應的價值函數來比較策略的優劣,也就是說,尋找較優策略可以通過尋找較優的價值函數來完成。可以定義最優狀態價值函數是所有策略下產生的眾多狀態價值函數中的最大者,即:
[V_*(s) = max_pi V_pi(s)
]
同理也可以定義最優動作價值函數是所有策略下產生的眾多動作狀態價值函數中的最大者,即:
[q_*(s, a) = max_pi q_pi (s,a)
]
我們可以最大化最優行為價值函數找到最優策略:
[pi^*(a|s) =
egin{cases}
1, & ext{if $a = argmax ; q_*(s,a)$} \
0, & ext{otherwise}
end{cases}
]
Bellman Optimality Equation
只要我們找到了最大的狀態價值函數或者動作價值函數,那么對應的策略 (pi_*) 就是我們強化學習問題的解。同時,利用狀態價值函數和動作價值函數之間的關系,我們也可以得到:
[v_*(s) = max_a q_*(s,a) \
]
當到達 最優的時候,一個狀態的價值就等于在當前 狀態下最大的那個動作價值
[q_*(s,a) = R(s, a) + gamma sum_{s' in S} P_{s's}^a cdot V_*(s')
]
把上面兩個式子結合起來有Bellman Optimality Equation
[v_*(s) = max_a (R(s, a) + gamma sum_{s' in S} P_{s's}^a cdot v_*(s'))
]
[q_*(s,a) = R(s, a) + gamma sum_{s' in S} P_{s's}^a cdot max_{a'}q_*(s', a')
]
6、MDP 實例
下面給出一個例子,希望能能好的理解MDP過程
例子是一個學生學習考試的MDP。里面左下那個圓圈位置是起點,方框那個位置是終點。上面的動作有study, pub, facebook, quit, sleep,每個狀態動作對應的即時獎勵R已經標出來了。我們的目標是找到最優的動作價值函數或者狀態價值函數,進而找出最優的策略。
為了方便,我們假設衰減因子 $gamma = 1, quad pi(a|s)=0.5 $
對于終點方框位置,由于其沒有下一個狀態,也沒有當前狀態的動作,因此其狀態價值函數為0。對于其余四個狀態,我們依次定義其價值為(v_1, v_2, v_3, v_4) 分別對應左上,左下,中下,右下位置的圓圈。我們基于
[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')ight)
]
來計算所有狀態的價值函數,可以得到如下方程組
對于 v_1: (v_1 = 0.5 * (-1 + v_1) + 0.5 * (0 + v_2))
對于 v_2: (v_2 = 0.5 * (-1 + v_1) + 0.5 * (-2 + v_3))
對于 v_3: (v_3 = 0.5 * (0+0) + 0.5 * (-2 + v_4))
對于 v_4: (v_4 = 0.5 * (10+0) + 0.5 * (1 + 0.2 * v_2 + 0.4 * v_3 + 0.4 * v_4))
解這個方程組可得:(v_1 = -2.3, v_2 = -1.3, v_3 = 2.7, v_4 = 7.4) 既是每個狀態的價值函數
上面我們固定了策略(π(a|s)π(a|s),)雖然求出了每個狀態的狀態價值函數,但是卻并不一定是最優價值函數。那么如何求出最優價值函數呢?這里由于狀態機簡單,求出最優的狀態價值函數 (v_*(s)) 或者動作價值函數 (q_*(s)) 比較容易。
我們這次以動作價值函數(q_*(s)) 來為例求解。然后我們按照下面公式,
[q_*(s, a) = R_s^a + gamma sum_{s' in S} P_{ss'}^a max_{a'}q_*(s',a')
]
可以得到下面等式
[egin{align}
q_*(s_4, study) & = 10 \
q_*(s_4, pub) & = 1 + 0.2 * max_{a'}q_*(s_2, a') + 0.4 * max_{a'}q_*(s_3, a') + 0.4 * max_{a'}q_*(s_4, a') \
q_*(s_3, sleep) & = 0 \
q_*(s_3, study) & = -2 + max_{a'}q_*(s_4, a') \
q_*(s_2, study) & = -2 + max_{a'}q_*(s_3, a') \
q_*(s_2, facebook) & = -1 + max_{a'}q_*(s_1, a') \
q_*(s_1, facebook) & = -1 + max_{a'}q_*(s_1, a') \
q_*(s_1, quit) & = 0 + max_{a'}q_*(s_2, a')
end{align}
]
然后求出所有的 (q_*(s,a)) ,然后再 利用 (v_*(s, a) = max_aq_*(s,a)) 就可以求出所有的 (v_*(s)) ,最終結果如下圖所示
7、MDP 小結
雖然MDP可以直接用方程組求解簡單的問題,但是卻不能解決復雜的問題,因此我們需要尋找其他的方法來求解
下篇文章使用動態規劃方法來解決 MDP問題,涉及到 Policy Iteration 和 Value Iteration 兩個算法,還請大家多多關注。
本篇文章是我的強化學習開篇之作,如果覺得文章寫的不錯,還請各位看官老爺點贊收藏加關注啊,后面會一直寫下去的,再此謝謝啦
參考資料:
B站 周老師強化學習綱要第二講上
博客園 劉建平Pinard
總結
以上是生活随笔為你收集整理的强化学习 1 --- 马尔科夫决策过程详解(MDP)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 车载冰箱放哪里 车内装备必备,车载冰箱放
- 下一篇: 国产车规级贴片电感的发展趋势是怎样的?