動態規劃(Dynamic Programming,簡稱DP)是一種經過把原問題分解爲相對簡單的子問題的方式求解複雜問題的方法。html
動態規劃經常適用於具備以下性質的問題:web
動態規劃方法所耗時間每每遠少於樸素解法。app
馬爾可夫決策過程MDP知足上述兩個性質:框架
動態規劃須要知足MDP過程是已知的(model-based)。異步
策略評估(Policy Evaluation)指的是計算給定策略的價值,解決的問題是 "How to evaluate a policy"。async
策略評估的思路:迭代使用貝爾曼指望方程(關於 MDP 的貝爾曼指望方程形式見《馬爾可夫決策過程》)。ide
策略評估過程以下圖所示:
函數
\[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)\]優化
使用向量形式表示:ui
\[\mathbf{v^{k+1}} = \mathbf{R^{\pi}} + \gamma \mathbf{P^{\pi}v^{k}}\]
策略迭代(Policy Iteration,簡稱PI)解決的問題是 "How to improve a policy"。
給定一個策略 \(\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)\]
也就是說,咱們能夠從最後開始向前回退從而獲得最優解,值迭代就是基於上述思想進行迭代更新的。
值迭代(Value Iteration,簡稱VI)解決的問題也是 "Find optimal policy $\pi $"。
可是不一樣於策略迭代使用貝爾曼指望方程的是,值迭代使用貝爾曼最優方程進行迭代提高。
值迭代與策略迭代不一樣的地方在於:
以下圖所示:
對應的向量表示爲:
\[\mathbf{v}_{k+1} = \max_{a\in A}\mathbf{R}^a + \gamma \mathbf{P^av}^k\]
下圖爲三種方法的總結:
維度災難:Number of states \(n = |S|\) grows exponentially with number of state variables
後續將要討論的時序差分方法
[1] 智庫百科-最優化原理
[2] Reinforcement Learning: An Introduction, Richard S. Sutton and Andrew G. Barto, 2018
[3] David Silver's Homepage