[Reinforcement Learning] 動態規劃(Planning)
動態規劃
動態規劃(Dynamic Programming,簡稱DP)是一種通過把原問題分解為相對簡單的子問題的方式求解複雜問題的方法。
動態規劃常常適用於具有如下性質的問題:
- 具有最優子結構(Optimal substructure)
- Principle of optimality applies
- Optimal solution can be decomposed into subproblems
- 重疊子問題(Overlapping subproblems)
- Subproblems recur many times
- Solutions can be cached and reused
動態規劃方法所耗時間往往遠少於樸素解法。
馬爾可夫決策過程MDP滿足上述兩個性質:
- 貝爾曼方程提供了遞迴分解的結構;
- 價值函式可以儲存和重複使用遞迴時的結果。
使用動態規劃解決MDP/MRP
動態規劃需要滿足MDP過程是已知的(model-based)。
- For Predict:
- Input:MDP \(<S, A, P, R, \gamma>\) 和策略 $\pi $ 或者是 MRP \(<S, P, R, \gamma>\)
- Output:價值函式 \(v_{\pi}\)
- For Control:
- Input:MDP \(<S, A, P, R, \gamma>\)
- Output:最優價值函式 \(v_{*}\) 或者最優策略 \(\pi_{*}\)
策略評估
策略評估(Policy Evaluation)指的是計算給定策略的價值,解決的問題是 "How to evaluate a policy"。
策略評估的思路:迭代使用貝爾曼期望方程(關於 MDP 的貝爾曼期望方程形式見《馬爾可夫決策過程》)。
策略評估過程如下圖所示:
\[v_{k+1} = \sum_{a\in A}\pi(a|s) \Bigl( R_{s}^a + \gamma\sum_{s'\in S}P_{ss'}^a v_{k}(s') \Bigr)\]
使用向量形式表示:
\[\mathbf{v^{k+1}} = \mathbf{R^{\pi}} + \gamma \mathbf{P^{\pi}v^{k}}\]
策略迭代
策略迭代(Policy Iteration,簡稱PI)解決的問題是 "How to improve a policy"。
給定一個策略 \(\pi\) :
- 評估策略 \(\pi\) :
\[v_{\pi}(s) = E[R_{t+1} + \gamma R_{t+2} + ...| S_t = s]\] - 提升策略:通過採用貪婪方法來提升策略:
\[\pi ' = \text{greedy}(v_{\pi})\]
可以證明,策略迭代不斷進行總是能收斂到最優策略,即 \(\pi ' = \pi^{*}\) 。
策略迭代可以使用下圖來形式化的描述:
廣義策略迭代
通過上述提到的策略評估我們不難發現,策略評估是一個不斷迭代的過程:
\[v_{\pi}(s) = E[R_{t+1} + \gamma R_{t+2} + ...| S_t = s]\]
那麼問題來了,Does policy evaluation need to converge to \(v_{\pi}\) ?
我們是不是可以引入一個停止規則或者規定在迭代 \(k\) 次後停止策略評估?
再進一步想,我們為什麼不在每次策略評估的迭代過程中進行策略提升(等同於策略評估迭代1次後停止)?
注:這和後續要介紹的值迭代等價。
因此我們可以把上述策略迭代的過程一般化,即廣義策略迭代(Generalised Policy Iteration,簡稱GPI)框架:
值迭代
介紹值迭代之前,我們先介紹下最優化原理。
最優化原理
最優化原理(Principle of Optimality)定義:
一個過程的最優決策具有這樣的性質:即無論其初始狀態和初始決策如何,其今後諸策略對以第一個決策所形成的狀態作為初始狀態的過程而言,必須構成最優策略。
最優化原理如果用數學化一點的語言來描述的話就是:
以狀態 \(s\) 為起始點,策略 \(\pi(a|s)\) 可以得到最優值 \(v_{\pi}(s) = v_*(s)\) 當且僅當:
- 任意狀態 \(s'\) 對於狀態 \(s\) 均可達;
- 以狀態 \(s'\) 為起始點,策略 \(\pi\) 可以得到最優值 \(v_{\pi}(s') = v_*(s')\) 。
根據最優化原理可知,如果我們得到了子問題的解 $ v_*(s')$,那麼以狀態 \(s\) 為起始點的最優解 \(v_*(s)\) 可以通過一步回退(one-step lookahead)就能獲取:
\[v_*(s) ← \max_{a\in A}\Bigl(R_s^a + \gamma \sum_{s'\in S}P_{ss'}^{a}v_*(s') \Bigr)\]
也就是說,我們可以從最後開始向前回退從而得到最優解,值迭代就是基於上述思想進行迭代更新的。
MDP值迭代
值迭代(Value Iteration,簡稱VI)解決的問題也是 "Find optimal policy $\pi $"。
但是不同於策略迭代使用貝爾曼期望方程的是,值迭代使用貝爾曼最優方程進行迭代提升。
值迭代與策略迭代不同的地方在於:
- Use Bellman optimal function, rather than Bellman expectation function
- Unlike policy iteration, there is no explicit policy
- Intermediate value functions may not correspond to any policy
如下圖所示:
\[v_{k+1}(s) = \max_{a\in A}\Bigl(R_s^a + \gamma\sum_{s'\in S}P_{ss'}^a v_k(s') \Bigr)\]
對應的向量表示為:
\[\mathbf{v}_{k+1} = \max_{a\in A}\mathbf{R}^a + \gamma \mathbf{P^av}_k\]
下圖為三種方法的總結:
動態規劃擴充套件
非同步動態規劃(Asynchronous Dynamic Programming)
- In-place dynamic programming
- Prioritised sweeping
- Real-time dynamic programming
Full-Width Backups vs. Sample Backups
Full-Width Backups
- DP uses full-width backups(DP is model-based)
- Every successor state and action is considered
- Using knowledge of the MDP transitions and reward function
- DP is effective for medium-sized problems (millions of states)
- For large problems, DP suffers Bellman’s curse of dimensionality(維度災難)
維度災難:Number of states \(n = |S|\) grows exponentially with number of state variables
- Even one backup can be too expensive
Sample Backups
後續將要討論的時序差分方法
- Using sample rewards and sample transitions \(⟨S, A, R, S′⟩\)
- Instead of reward function R and transition dynamics P
- Advantages:
- Model-free: no advance knowledge of MDP required
- Breaks the curse of dimensionality through sampling
- Cost of backup is constant, independent of \(n = |S|\)
Reference
[1] ofollow,noindex" target="_blank">智庫百科-最優化原理
[2] Reinforcement Learning: An Introduction, Richard S. Sutton and Andrew G. Barto, 2018