·目錄
Iterative Policy Evaluation (迭代策略估計)
Prioritised Sweeping:優先級sweeping
Contraction Mapping Theorem 壓縮映射定理
Dynamic :sequential or temporal ;問題與時間/順序有關
Programming :
動態規劃是求解複雜問題的一類方法:它有兩個特性:
- 最優子結構Optimal substructure:問題的最優解可以分解爲子問題的最優解
- 重疊子問題Overlapping subproblems: 子問題重複出現多次,因此可以將其存儲起來並反覆利用。
而MDP【馬爾科夫決策過程,Markov decision processes】 滿足上述兩點,
- Bellman 方程給出了MDP的遞歸分解方法
- 值函數 存儲並反覆利用 解
動態規劃假設對MDP的結構、動態變化&獎勵,也就是完全瞭解環境的運行原理。
有兩類問題,分別是預測和控制
(1)預測:輸入 MDP和 或 MRP,輸出值函數。
(2)控制:輸入 MDP,輸出最優值函數和最優策略。
動態規劃的其他應用:Scheduling algorithms調度算法,字符串算法(序列對齊sequence alignment),圖論算法(最短路徑),圖模型( Viterbi算法),生物信息(晶格模型);這些字符串、晶格、圖通常具有最優子結構。
Policy Evaluation(策略評估)
Iterative Policy Evaluation (迭代策略估計)
用於解決問題:評估一個給定的策略,
從任意一個值(通常取0)出發,在每一步都運用貝爾曼方程往前看一步,來得到新的值函數,最終得到 。
每當進行一次迭代時,都要考慮到MDP中的所有狀態;即 同步備份【synchronous backups】,最終值函數會收斂到
它 使用貝爾曼期望方程迭代更新值函數,公式如下:
那些有一箇中止狀態的任務被稱爲episodic tasks。
例子:方格遊戲
估計一個方格上的隨機策略:假設可採取的動作有東南西北四個方向,方格上的兩個陰影區域代表終點,對於下圖的這個沒有折扣因子的 episodic MDP (γ = 1) ,有14個非終結狀態1,2,...,14,一個終止狀態(在圖中用了兩個方框表示,但它們是一個狀態。)移動到方格之外的動作不會改變狀態。在到達終止狀態之前,每移動一步帶來的回報是-1,agent遵循如下的均勻隨機策略(其中e,s,w,n分別代表東、南、西、北四個方向):
k取無窮大時,值函數會穩定下來,收斂到最終表格所示的值,對錶格中的值求平均說明:如果採取隨機的動作,那麼走到最終狀態所花的時間步大致是多少。-——大致是20.
上圖中 右邊的那個帶箭頭方向的一欄告訴我們如何選擇更好的策略。
從k= 1到K=2處, -1.7 = -1.0 +0.25*(-1.0 -1.0 -1.0 + 0)=-1.75 ,也就是說,1.7那個位置對應的上一步的值爲-1.0 ,而它往四個方向移動的值分別爲三個-1.0 和0 ,爲0是因爲有一個會移到陰影框中,而移到方格之外的那次不改變它的值就還是-1.0.
同理可驗證,從k=2 到k=3, 在下圖的紅色框中,它的四個移動後的狀態是4個標號的藍色框這樣,這幾個位置在k=2時的值是-2.0,-2.0,-2.0,和一個0.0 .再更新value時由於每轉移一步的return都是-1, 所以要加上-1 .
look one-step ahead!
策略迭代 policy iteration
怎麼優化一個策略? 不斷地 evaluate再 greedy !用貪心算法。策略的評估和改進交替進行。
先用值函數評估一個給定的策略,
再對 策略的值函數 用貪婪法優化策略 :
策略迭代過程總能收斂到最優值函數
策略改進 Policy Improvement
不僅可以用狀態值函數,也可以用動作-值函數來更新策略!當更新停止後,狀態值函數、動作值函數和策略函數均爲最優。
考慮一個確定性策略: ,可以acting greedily 來改進策略:
這樣能改進 任一狀態s在一個時間步上的值:
因此也優化了值函數 ,
如果停止了優化改進,那麼
那麼也滿足了貝爾曼最優方程:
因此對所有狀態 有 ,所以 是一個最優策略。
Modified Policy Iteration
在前面的基礎上,加上迭代停止條件。
策略估計需要收斂到 嗎?
或者需要引入一個停止條件嗎(比如,值函數的 收斂)?
或者在策略估計迭代k次後停止迭代? 比如之前的方格遊戲在k=3時就足以找出最優策略。
爲什麼不在每輪迭代都更新策略,也就是說,在k=1之後停止 ——> 這樣做就相當於值迭代了。
廣義的策略迭代
任何一個最優策略可以分解爲兩個部分:
- 一個最優的 first action ;
- Followed by an optimal policy from successor state
當且僅當 對任一狀態 到狀態s(經有限步後)都是可達的。。。策略才能從狀態s處開始找出最優解。
如果我們知道子問題的解 ,那麼可以通過向前看一步 【one-step lookahead】 來找出
值迭代的思想:不斷地重複更新,apply these updates iteratively 。 值迭代方法對於loopy, stochastic MDPs仍然可用。
對於沒有終止狀態的MDP,通過乘以折扣因子,仍然可以用動態規劃求解/。
直覺上怎麼理解它的原理: start with final rewards and work backwards 。從最終的回報開始,用逆序解法【回溯】。下面以最短路徑爲例:箭頭表示的最短路徑不唯一。
值迭代 Value Iteration
- 用於解決問題:找出最優策略 【已知環境的運行原理】
- 解法:迭代使用貝爾曼最優方程。
- 再用同步評估【 synchronous backups,如下圖描述。】這樣可以更快收斂到最優解。
- 與策略迭代的不同是,他沒有具體的策略,中間過程產生的值函數可能不與任一策略相關。
同步DP: Synchronous
- 算法是基於狀態-值函數 或者 ,
- 對於有m個和n個狀態的情形,每次迭代的複雜度爲
- 算法也同樣適用於 或者 :每次迭代的複雜度爲
- 目前爲止所講的動態規劃都是同步動態規劃,它使用了 synchronous backups, 也就是所有狀態都並行備份了,一次性更新所有S的value。
異步DP :
只要持續地選擇所有的狀態,不論以怎樣的順序選擇,孫發會更高效地收斂到最優值函數。
顯著地減少了計算量,如果 all states continue to be selected 則算法保證收斂。
異步動態規劃的三種類型:In-place dynamic programming、 Prioritised sweeping 、Real-time dynamic programming
In-place DP
同步動態規劃會保存兩份值函數的copies, 且對所有S中的狀態s,
但 In-place 值迭代只保存一份值函數的copies, 且對所有S中的狀態s,
i.e.(由於本輪的value本就是上一輪優化的結果 ),不對上一輪的value進行備份,直接使用這一週期的value)
Prioritised Sweeping:優先級sweeping
使用貝爾曼誤差的大小 衡量 值函數與最優的差距,每次只備份使貝爾曼誤差最大的狀態,然後更新這個狀態,再計算相應的貝爾曼誤差。貝爾曼誤差可以定義如下(不唯一):
- i.e.計算優化目標值和現實值之差,對多個S計算後排成一列,差值大的在前,依次優化對應的s的value。
- 這種方法需要已知reverse dynamics (predecessor states)的信息,可以通過 maintaining a priority queue來高效地實現。
real-time DP : 實時動態規劃
- real-time 實際上是 real time step【在環境中運行一個agent,選擇那些被agent真正訪問過的狀態,來蒐集到真是實樣本】:,只更新經歷過的S,不管其它的。
- 與agent有關的只有狀態,因此用agent的經驗來指導狀態的選擇,在每個時間步 之後,更新
Full-Width Backups
DP使用Full-Width Backups,也就是在每次同步or異步備份時,會考慮到所有的動作和所有的後續狀態,並使用MDP的轉移和回報函數的信息。
DP非常適合中等規模的問題求解,也就是狀態數爲百萬級的。對於大規模問題DP會 有Bellman維災難的問題。也就是狀態數目隨着狀態變量的數目增加承指數增長。即便是一次備份的成本也會很高。
sample backups
在後續課程裏會考慮用樣本備份:用樣本回報和樣本轉移 而不是用回報函數R和轉移概率陣P。
它的優勢在於:
- model-free :不需要MDP的先驗知識。
- 通過採樣解決了 維災難【 curse of dimensionality】
- 每次備份的花銷是常數級,與狀態數目無關。
Approximate DP
它使用一個函數近似器 來近似值函數,對運用DP求解,比如,
- 在每/(第k)輪 迭代時重複用 Fitted Value Iteration,
- 從S中採樣得到狀態 ,
- 對每一個狀態 使用貝爾曼最優等式【Bellmanoptimality equation】估計目標值。
- 使用目標值 訓練下一個值函數
值函數空間 Value Function Space
值函數上的向量空間 是維的,這個空間中的每個店都對應一個值函數,在這個向量空間中, Bellman backup 使得這些值函數更近,因此備份最終會收斂到唯一解。
壓縮映射
值函數的無窮範數 ∞-Norm
對於狀態-值函數u和v的距離,我們用無窮範數來衡量:也就是狀態值的largest difference
Bellman期望備份是一種 Contraction
定義一個貝爾曼期望備份算子【Bellman expectation backup operator】,它是 -contraction ,能使值函數至少以 的速度互相靠攏。
Contraction Mapping Theorem 壓縮映射定理
這個定理可以回答一下問題:
策略估計和策略迭代的收斂
由於 貝爾曼期望算子 有唯一 一個固定點,並且 【由貝爾曼期望方程可知】 是 的一個固定點,再根據壓縮映射定理,迭代策略估計 會收斂到 , 而 策略迭代會收斂到 .
定義一個貝爾曼最優備份算子【Bellman optimality backup operator】,
它是 -contraction ,能使值函數至少以 的速度互相靠攏。【證明過程與前面的類似】
值迭代的收斂
由於 貝爾曼最優 算子 有唯一 一個固定點,並且 【由貝爾曼最優方程 可知】 是 的一個固定點,再根據壓縮映射定理,值迭代會收斂到 .
參考:【1】David silver 強化學習公開課的屁屁踢
【2】 David silver 強化學習公開課筆記(三):Planning by Dynamic Programming