Skip to content

Markov Decision Process (馬可夫列決策過程) 線上影片筆記 (上)

以一個決策問題開場

Q: 如何用最少的時間到達山景城?

  1. 腳踏車
  2. 開車
  3. uber
  4. 飛行

search problem:
以自動機的角度,目前就是輸入狀態s 與 行為a,轉移到新狀態Succ(s,a)

問題是現實問題中,一組(s,a)可能有隨機不同的結果
比如
機械手臂 決定移動軌跡,但可能有未預期的障礙
農業 決定種植甚麼作物,但可能有未預期的天氣

例子1:移動遊戲
影片中以一支的程式講解,其中各格會有獎勵與懲罰來講解
比如遇到岩漿 -50 ,到達目的 +20
並且可以調整隨機掉入岩漿的參數

例子2: 擲骰子
另一支的程式遊戲
每一回合可以選擇留下 或 離開
離開可以得到10塊,並結束遊戲
留下可以獲得4塊,並且投一次六面骰子
如果骰出1、2,則結束遊戲,反之進入下一回合

其中虛紅線被稱為chance node, 即轉移後的狀態是有機率性的
以此例而言,進入遊戲有可能輸,也有可能贏
並且就算結果存在100%也可以當chance node

這些例子中都可以使用期待值,來求出optimal policy
所謂policy,就是一連串的狀態轉移 (狀態,行為,新狀態)

Markvoc Decision Process 定義

Markvoc Decision Process 定義 (search problem加上未定機率轉移)

  • T(s,a,s’) 移動發生的機率
    從s採取a行為後,到達s’的機率
    以上例而言

很明顯的 固定s,a 對s’求和必為1

  • R(s,a,s’) 獎勵 (通常會追求這個最大化)
  • 0 <= γ <= 1 discount (通常為1)

search problem 定義:

States : 一群狀態的集合
s_start 屬於 States : 初始狀態
Action(s): 所有可能在狀態s下採取的行動
Succ(s,a): 在s狀態採取a後會到的新狀態s’ => 對應轉移機率T(s,a,s’)
Cost(s,a): 在s狀態採取a後的成本 => 對應獎勵 R(s,a,s’)
IsEnd(s): 判定s是否為終點狀態

接下來影片使用一個問題與實際程式碼講解
問題:
有N段路
從N ~ N+1 要花一分鐘 (walk)
從N ~ 2N 要兩分鐘,並可能有0.5機率失敗 (tram)

程式會用一個物件包住上述的函式

What is solution

就搜尋問題而言,解就是狀態圖中從起始位置到終點位置的path , aka一連串狀態轉移
對MDP而言,解是policy,policy是一個將狀態映射到行動的函式

Policy evaluation

用衡量來決定policy的好壞

定義: utility

policy會創造一個隨機路徑
utility會將這條路徑上的reward加總 (取discount)
utility會是隨機的
以骰子例子而言

path會應用上折抵率
u = r1 + γ*r2 + γ^2 * r3 + …

γ 是表達對"未來"的調整
比如γ=1
就是save for future的感覺
γ=0
就是live in the moment (未來狀態不重要,也有種greedy的感覺)

γ 會依問題決定,通常不是超參數

定義: value

utility的期待值
E[u]

定義: Q-value of policy

chance node的utility
可以Recursive的定義


文字來說就是
[某點期待值]為
對於所有可能採取行為與他們的結果, 將(行為,結果)的發生機率乘上 [總獎勵] (獎勵期待值)
[總獎勵] 為 行為=>結果 的獎勵 與 [未來會發生的獎勵] (當下獎勵+未來獎勵)

[未來會發生的獎勵]則是 [該可能結果的點期待值] <= 此處為遞迴定義 (未來獎勵相當於用這套方法套用至未來點)

Dice Game 的例子

求 policy value值得演算法 : iterative algorithm

概念: 一開始隨機給值 (通常給0),然後重複求值,直到收斂

演算法

# init
for all states:
  	V_pi_0(s) = 0  # 對pi策略,0表示iteration 0  


# iter

for iter = 1 ~ t_pe :
	for each state s :
		V_pi_t (s) = sum (T(s,a,s') [R(s,a,s') + gamma * V_pi_(t-1)(s') ] )
# 本回合的s ,由"上一回合" "周圍點" 決定  

一個求值的例子


如圖,可以看出收斂至4

問題 : 何時該停止 (確定收斂)?

答案: 可以效法求小數精度 ==> 設誤差值
上一回合 與 本回合 的絕對值差小於這個誤差就可以停止

增進效率 : 只需紀錄上回合

由於本回合資訊取決於上一回合,上上之前的資訊其實都沒必要紀錄
(表格只需要紀錄前一行)

時間複雜度

O (遞迴次數 * #狀態數 * #每個狀態可能的結果狀態) (想想演算法)

可以試著用這套演算法解Dice game的解
大概需要跑100次迴圈

目前小結

MDP (markov decision process) 與
狀態圖形、chance node , 轉移機率、獎勵 有關

Policy(策略) : 一個將狀態對應到行動的函數 , 也是MDP的解

Value of policy : 於隨機path的utility的期待值

Policy evaluation : 一個迭代演算法去解value of policy

最優的值與策略

Goal : 找到期待值最大的策略 定義 optimal value : 在所有任意策略中,V_opt(s) 是最大的

很直覺的,要找到最佳值,就是要找到最佳策略opt
pi_opt(s) = argmax Q_opt (s,a)

一樣可以由iteration value 求法
只是這次需要每次都尋找最大值

時間複雜度

O (遞迴次數 * #狀態數 * 狀態可採取的行為 * #每個狀態可能的結果狀態) (想想演算法)

心得: 就是暴力的去嘗試所有的可能性而已

接著用程式實作 前面提到的走路題

Convergence

如果 gamma < 1 或者 MDP 沒有cycle => 一定會有收斂值
(有環又gamma == 1 => 沒有收練值 )

Relaxation

概念: 解除一些限制,得到近似解、或更簡單的問題
再用以有的(經驗的 heuristics)方法去解決

比如 把障礙物去掉就可以用曼哈頓距離解決

以及走路題 去掉條件,可以使用DP解

讓經驗解 h(s) 趨近 FutureCost(s)
如果差太多則不能使用

課程結束

補充: MDP就是強化式學習(Reinforcement Learning )的基本概念
包括 上下狀態獎勵遞迴式、未來遞減率
Q-learning 剛好跟Q_policy很像

不過會有 其他參數
比如 greedy => 幾趴按照Q最佳解選擇,幾趴隨機選
比如 alpha => 此次結果多少比例用於更新學習 (也就是learning - rate )

參考

Lecture 7: Markov Decision Processes - Value Iteration | Stanford CS221: AI (Autumn 2019)
https://www.youtube.com/watch?v=9g32v7bK3Co&t=181s&ab_channel=stanfordonline