強化學習讀書筆記 - 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)
動態規划的基本思想 - 通用策略迭代是:
- 先從一個策略\(\pi_0\)開始,
- 策略評估(Policy Evaluation) - 得到策略\(\pi_0\)的價值\(v_{\pi_0}\)
- 策略改善(Policy Improvement) - 根據價值\(v_{\pi_0}\),優化策略為\(\pi_0\)。
- 迭代上面的步驟2和3,直到找到最優價值\(v_*\),因此可以得到最優策略\(\pi_*\)(終止條件:得到了穩定的策略\(\pi\)和策略價值\(v_{pi}\))。
這個被稱為通用策略迭代(Generalized Policy Iteration)。
數學表示如下:
因此,我們需要關心兩個問題:如何計算策略的價值,以及如何根據策略價值獲得一個優化的策略。
策略迭代(Policy Iteration)的實現步驟
步驟如下:請參照書上的圖4.1。
-
初始化 - 所有狀態的價值(比如:都設為0)。
所有的狀態\(\mathcal{S} = \{ s_0, s_1,...,s_n\}\)是一個集合。
數學表示:\(\vec{V_0(s)} = [0, \dots, 0]\) -
初始化 - 一個等概率隨機策略\(\pi_0\) (the equiprobable random policy)
等概率隨機策略 - 意味着每個行動的概率相同。
數學表示:
矩陣\(\pi\)就是我們的策略,我們反過來看,如果一個單元的值不是0,說明該策略選擇了這個行動,如果為0,說明該策略不選擇這個行動。
初始的時候:一個狀態\(s\)對應的所有可能行動\(a\),都是有值的。
關鍵理解: 找到最優策略的過程就是優化矩陣\(\pi\) - 減少每個狀態\(s\)選的行動\(a\)。
- 策略迭代 - 策略評估過程
根據\(\pi\)計算狀態價值\(\vec{V_{k+1}(s)}\)
迭代策略評估公式 - iterative policy evaluation - Bellman update rule
- 策略迭代 - 策略優化過程
根據狀態價值\(\vec{V_{k+1}(s)}\),優化策略\(\pi\)。
關鍵: 優化方法 - 對於每個狀態\(s\),只保留可達到最大狀態價值的行動。
舉例說明:
你是一個初級程序員(5),你有4個選擇:成為A: 架構師(10),B: 項目經理(10),C: 測試(8),D: 運營(8)。
括號里的是狀態價值。由於架構師(10),項目經理(10)的價值最大。
所以,只保留行動A和B。
數學表示:
注意:這是一個貪戀的策略(greedy policy),因為只做了一步價值計算。
- 迭代結束條件 - 得到了穩定的策略\(\pi\)和策略價值\(v_{pi}\)
策略\(\pi\)穩定 - 即\(\pi_{k+1} = \pi_k\)。
策略評估公式說明
下面這個是第三章講的策略狀態價值公式:
可以看出狀態\(s\)在策略\(v_pi\)上的價值是由其它狀態\(s'\)在策略\(v_pi\)的價值決定的。
簡單地想一想,就會發現這個公式難以(不能)被實現。
因此:我們使用了一個迭代的公式:
迭代策略評估公式 - iterative policy evaluation - Bellman update rule
這個公式和策略狀態價值公式很像。
仔細比較一下,就會發現這個公式的\(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\)。這樣可以減少空間的使用。
- 初始化 - 所有狀態的價值(比如:都設為0)。
- 初始化 - 一個等概率隨機策略\(\pi_0\) (the equiprobable random policy)
- 策略評估
對於每個狀態\(s\),只找最優(價值是最大的)行動\(a\)。
數學表示:
簡化策略評估迭代公式
- 策略優化
沒有變化。
總結
通用策略迭代(DPI)是一個強化學習的核心思想,影響了幾乎所有的強化學習方法。
通用策略迭代(DPI)的通用思想是:兩個循環交互的過程,迭代價值方法(value function)和迭代優化策略方法。
動態規划(DP)對復雜的問題來說,可能不具有可行性。主要原因是問題狀態的數量很大,導致計算代價太大。