強化學習讀書筆記 - 04 - 動態規划


強化學習讀書筆記 - 04 - 動態規划

學習筆記:
Reinforcement Learning: An Introduction, Richard S. Sutton and Andrew G. Barto c 2014, 2015, 2016
數學符號看不懂的,先看看這里:

動態規划(Dynamic Programming) - 計算最優策略的一組算法。

策略

強化學習的一個主要目的是:找到最優策略。
我們先要明白什么是策略?
策略告訴主體(agent)在當前的狀態下,應該選擇哪個行動。
我們稍微數據化上面的說法,變成:
策略告訴主體(agent)在每個狀態\(s\)下,選擇行動\(a\)的可能性。

腦補一下:想象一個矩陣:
每一行代表一個state,
每一列代表一個action,
單元的值是一個取值區間為\([0, 1]\)的小數,代表對應狀態-行動的選擇概率。

最優策略(Optimal Policy)

最優策略是可以取得最大的長期獎賞的策略。
長期獎賞就是\(G_t\)
因此,我們需要對策略進行價值計算。計算的方法在強化學習讀書筆記 - 03 - 有限馬爾科夫決策過程講了。
有兩個計算公式:一個是策略的狀態價值公式,一個是策略的行動價值公式。
策略的狀態價值公式有利於發現哪個狀態的價值高。也就是找到最優狀態。
策略的行動價值公式有利於發現(在特定狀態下)哪個行動的價值高。也就是找到最優行動。

通用策略迭代(Generalized Policy Iteration)

動態規划的基本思想 - 通用策略迭代是:

  1. 先從一個策略\(\pi_0\)開始,
  2. 策略評估(Policy Evaluation) - 得到策略\(\pi_0\)的價值\(v_{\pi_0}\)
  3. 策略改善(Policy Improvement) - 根據價值\(v_{\pi_0}\),優化策略為\(\pi_0\)
  4. 迭代上面的步驟2和3,直到找到最優價值\(v_*\),因此可以得到最優策略\(\pi_*\)(終止條件:得到了穩定的策略\(\pi\)和策略價值\(v_{pi}\))。

這個被稱為通用策略迭代(Generalized Policy Iteration)。
數學表示如下:

\[\pi_0 \xrightarrow{E} v_{\pi_0} \xrightarrow{I} \pi_1 \xrightarrow{E} v_{\pi_1} \xrightarrow{I} \pi_2 \xrightarrow{E} \cdots \xrightarrow{I} \pi_* \xrightarrow{E} v_* \]

因此,我們需要關心兩個問題:如何計算策略的價值,以及如何根據策略價值獲得一個優化的策略。

策略迭代(Policy Iteration)的實現步驟

步驟如下:請參照書上的圖4.1。

  1. 初始化 - 所有狀態的價值(比如:都設為0)。
    所有的狀態\(\mathcal{S} = \{ s_0, s_1,...,s_n\}\)是一個集合。
    數學表示:\(\vec{V_0(s)} = [0, \dots, 0]\)

  2. 初始化 - 一個等概率隨機策略\(\pi_0\) (the equiprobable random policy)
    等概率隨機策略 - 意味着每個行動的概率相同。
    數學表示:

\[\pi = \begin{bmatrix} \dots & \dots & \dots \\ \dots & \pi(s, a) & \dots \\ \dots & \dots & \dots \\ \end{bmatrix} \\ where \\ \pi \text{ - a matrix for each state s and action a} \\ \pi(s, a) = \begin{cases} \frac{1}{N_a}, \text{a is selected under state s by } \pi \\ 0, otherwise \\ \end{cases} \\ N_a \text{ - the count of actions selected under state s by } \pi \]

矩陣\(\pi\)就是我們的策略,我們反過來看,如果一個單元的值不是0,說明該策略選擇了這個行動,如果為0,說明該策略不選擇這個行動。
初始的時候:一個狀態\(s\)對應的所有可能行動\(a\),都是有值的。
關鍵理解: 找到最優策略的過程就是優化矩陣\(\pi\) - 減少每個狀態\(s\)選的行動\(a\)

  1. 策略迭代 - 策略評估過程
    根據\(\pi\)計算狀態價值\(\vec{V_{k+1}(s)}\)
    迭代策略評估公式 - iterative policy evaluation - Bellman update rule

\[\begin{align} v_{k+1}(s) & = \mathbb{E}_{\pi} \left [ R_{t+1} + \gamma v_k(S_{t+1}) \ | \ S_t = s \right ] \\ & = \sum_{a} \pi(a|s) \sum_{s',r} p(s',r|s,a) \left [ r + \gamma v_{k}(s') \right], \ \forall s \in \mathcal{S} \end{align} \]

  1. 策略迭代 - 策略優化過程
    根據狀態價值\(\vec{V_{k+1}(s)}\),優化策略\(\pi\)
    關鍵: 優化方法 - 對於每個狀態\(s\),只保留可達到最大狀態價值的行動
    舉例說明:
    你是一個初級程序員(5),你有4個選擇:成為A: 架構師(10),B: 項目經理(10),C: 測試(8),D: 運營(8)。
    括號里的是狀態價值。由於架構師(10),項目經理(10)的價值最大。
    所以,只保留行動A和B。

數學表示:

\[\begin{align} \pi'(s) & = \underset{a}{argmax} \ q_{\pi}(s, a) \\ & = \underset{a}{argmax} \ \sum_{s', r} p(s',r|s,a) \left [ r + \gamma v_{\pi}(s') \right ] \\ \end{align} \\ \because q_{\pi}(s, \pi'(s)) \ge v(\pi), \ \forall s \in \mathcal{S} \\ \therefore v_{\pi}'(s) \ge v_{\pi}(s) \\ v_{\pi}(s) = v_{\pi}'(s) \\ where \\ \pi'(s) \text{ - action(s) selected under the state s by policy } \pi' \]

注意:這是一個貪戀的策略(greedy policy),因為只做了一步價值計算。

  1. 迭代結束條件 - 得到了穩定的策略\(\pi\)和策略價值\(v_{pi}\)
    策略\(\pi\)穩定 - 即\(\pi_{k+1} = \pi_k\)

策略評估公式說明

下面這個是第三章講的策略狀態價值公式:

\[\begin{align} v_{\pi}(s) & \doteq \mathbb{E}_{\pi} \left [ \sum_{k=0}^{\infty} \gamma^k R_{t+k+1} | S_t = s \right ] \\ & = \sum_{a} \pi(a|s) \sum_{s',r} p(s',r|s,a) \left [ r + \gamma v_{\pi}(s') \right], \ \forall s \in \mathcal{S} \end{align} \]

可以看出狀態\(s\)在策略\(v_pi\)上的價值是由其它狀態\(s'\)在策略\(v_pi\)的價值決定的。
簡單地想一想,就會發現這個公式難以(不能)被實現。

因此:我們使用了一個迭代的公式:
迭代策略評估公式 - iterative policy evaluation - Bellman update rule

\[\begin{align} v_{k+1}(s) & = \mathbb{E}_{\pi} \left [ R_{t+1} + \gamma v_k(S_{t+1}) \ | \ S_t = s \right ] \\ & = \sum_{a} \pi(a|s) \sum_{s',r} p(s',r|s,a) \left [ r + \gamma v_{k}(s') \right], \ \forall s \in \mathcal{S} \end{align} \]

這個公式和策略狀態價值公式很像。
仔細比較一下,就會發現這個公式的\(v_{k+1}(s)\)是由\(v_{k}(s')\)計算得到的。
這就有了可行性。為什么呢?因為我們可以定義\(v_0(s) = 0, \ \forall s \in \mathcal{S}\)
這樣就可以計算\(v_1(s), \ \forall s \in \mathcal{S}\),以此類推,經過多次迭代(\(k \to \infty\)), \(v_k \cong v_{\pi}\)

價值迭代(Value Iteration)

價值迭代方法是對上面所描述的方法的一種簡化:
在策略評估過程中,對於每個狀態\(s\),只找最優(價值是最大的)行動\(a\)。這樣可以減少空間的使用。

  1. 初始化 - 所有狀態的價值(比如:都設為0)。
  2. 初始化 - 一個等概率隨機策略\(\pi_0\) (the equiprobable random policy)
  3. 策略評估
    對於每個狀態\(s\),只找最優(價值是最大的)行動\(a\)
    數學表示:
    簡化策略評估迭代公式

\[\begin{align} v_{k+1}(s) & \doteq \underset{a}{max} \ \mathbb{E} \left [ R_{t+1} + \gamma v_k(S_{t+1}) \ | \ S_t = s , A_t = a\right ] \\ & = \underset{a}{max} \ \sum_{s',r} p(s',r|s,a) \left [ r + \gamma v_{k}(s') \right] \end{align} \\ where \\ \underset{a}{max}(.) \text{ - get the max value } \forall a \in \mathcal{A(s)} \]

  1. 策略優化
    沒有變化。

總結

通用策略迭代(DPI)是一個強化學習的核心思想,影響了幾乎所有的強化學習方法。
通用策略迭代(DPI)的通用思想是:兩個循環交互的過程,迭代價值方法(value function)和迭代優化策略方法。

動態規划(DP)對復雜的問題來說,可能不具有可行性。主要原因是問題狀態的數量很大,導致計算代價太大。

參照


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM