[Reinforcement Learning] 動態規劃(Planning)

動態規劃

動態規劃(Dynamic Programming,簡稱DP)是一種經過把原問題分解爲相對簡單的子問題的方式求解複雜問題的方法。html

動態規劃經常適用於具備以下性質的問題:web

  • 具備最優子結構(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

動態規劃方法所耗時間每每遠少於樸素解法。app

馬爾可夫決策過程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"。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\)
    \[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] 智庫百科-最優化原理
[2] Reinforcement Learning: An Introduction, Richard S. Sutton and Andrew G. Barto, 2018
[3] David Silver's Homepage

相關文章
相關標籤/搜索