JOVANA
Explore Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

動態規劃:當你知道規則時如何解 MDP

如果你擁有世界的完美模型,就不必靠試誤學習——你可以直接把答案算出來。來認識專門做這件事的方法家族。

改變一切的那個假設

動態規劃(dynamic programming, DP)是當你擁有環境的完美模型時所做的事——你知道 馬可夫決策過程(Markov decision process, MDP)裡的每一個 轉移機率 與每一個 獎勵。有了這份知識,你完全不必真的去行動來學習;你可以坐下來面對方程式,直接計算出任何策略的價值,以及最佳策略。

马尔可夫链把模型具体化:各状态由动态规划假定已知的转移概率连接起来。

代表状态的节点由标注转移概率的箭头连接。

這聽起來像作弊,某種意義上確實如此——大多數真實問題不會把模型直接交給你。但 DP 仍然重要,因為它是所有實用方法所逼近的理想範本。理解 DP,你就理解了 時序差分(temporal-difference)學習、蒙地卡羅(Monte Carlo)方法、甚至 深度 Q 網路 內部的骨架。

核心觀念:自舉

DP 建立在一個技巧上:自舉(bootstrapping)——用一個狀態所通往的那些狀態的估計值,來估計這個狀態的價值。你不必等一整集(episode)結束;你用對下一步的猜測來更新對當下的猜測。貝爾曼期望方程(Bellman expectation equation)把這件事講得很精確:一個狀態的價值,等於即時獎勵加上你接下來抵達之處的折扣後價值。

把那條方程式變成反覆執行的更新,就得到 貝爾曼回溯(Bellman backup):掃過每一個狀態,用貝爾曼方程的右側取代它的舊價值,然後重複。每一次掃描都把估計值往真值再推近一點。「回溯」(backup)這個詞是字面意思——價值資訊從後繼狀態往回流到你正在更新的那個狀態。

v_{k+1}(s)=\sum_a \pi(a\mid s)\sum_{s',r} p(s',r\mid s,a)\bigl[r+\gamma\, v_k(s')\bigr]

贝尔曼回溯:每次遍历都用期望奖励加上后继状态的折扣价值来替换某状态的价值——一行式的自举。

DP 的兩項工作

這條學習軌的一切都由兩項任務組成。預測(prediction)問的是:給定一個固定的策略,它有多好?這就是 策略評估(policy evaluation)。控制(control)問的是:什麼是最好的策略?DP 透過交替進行評估與改進來解決控制問題,這正是接下來幾篇要逐步建立的內容。

  1. 預測——固定一個策略,計算它的價值函數(策略評估)。
  2. 改進——讓策略對那些價值貪婪(greedy)。
  3. 控制——重複「預測+改進」,直到策略不再變化。

完整回溯,而非採樣

因為 DP 擁有模型,它可以做 完整回溯(full backup):更新一個狀態時,它會考慮每一個可能的下一個狀態,並依照其真實機率加權。像 TD 和蒙地卡羅這類基於採樣的方法只能負擔得起 採樣回溯(sample backup)——它們一次只跟隨一個隨機採樣到的轉移。完整回溯精確但昂貴;採樣回溯便宜但有雜訊。這個取捨正是「規劃」與「學習」之間的分界線。

這條學習軌的走向

接下來我們會把策略評估具體化——一個你一個下午就能寫出來的實際掃描演算法。然後加入策略改進,朝最佳策略爬升,把整個迴圈壓縮成值迭代,研究它為何能被證明收斂,最後面對那道實務上的高牆——維度詛咒(curse of dimensionality)——它正是把我們推向採樣式強化學習的原因。