David Silver 強化學習Lecture3:Dynamic Programming
David Silver 強化學習系列部落格的內容整理自David Silver 強化學習的PPT和知乎葉強強化學習專欄。
1 Introduction
1.1 What is Dynamic Programming?
Dynamic:某個問題是由序列化狀態組成,狀態step-by-step的改變,從而可以step-by-step的來解這個問題。
Programming:是在已知環境動力學的基礎上進行評估和控制,具體來說就是在瞭解包括狀態和行為空間、轉移概率矩陣、獎勵等資訊的基礎上判斷一個給定策略的價值函式,或判斷一個策略的優劣並最終找到最優的策略和最優價值函式。
動態規劃演算法把求解複雜問題分解為求解子問題,通過求解子問題進而得到整個問題的解。
1.2 Requirements for Dynamic Programming
當問題具有下列特性時,通常可以考慮使用動態規劃來求解:
第一個特性是:一個複雜問題的最優解由數個小問題的最優解構成,可以通過尋找子問題的最優解來得到複雜問題的最優解;
第二個特性是:子問題在複雜問題內重複出現,使得子問題的解可以被儲存起來重複利用。
馬爾科夫決策過程具有上述兩個屬性:貝爾曼方程把問題遞迴為求解子問題,價值函式相當於儲存了一些子問題的解,可以複用。因此可以使用動態規劃來求解馬爾科夫決策過程。
1.3 Planning by Dynamic Programming
動態規劃求解最優策略,指的是在瞭解整個MDP的基礎上求解最優策略,也就是清楚模型結構的基礎上:包括狀態行為空間、轉換矩陣、獎勵等。
預測和控制是規劃的兩個重要內容。預測是對給定策略的評估過程,控制是尋找一個最優策略的過程。對預測和控制的數學描述是這樣:
預測(prediction):已知一個馬爾科夫決策過程MDP和一個策略,或者是給定一個馬爾科夫獎勵過程MRP,求解基於該策略的價值函式。
控制 (control):
2 Policy Evaluation
2.1 Iterative Policy Evaluation
策略評估 (policy evaluation) 指給定一個MDP和一個策略,我們來評價這個策略有多好。如何判斷這個策略有多好呢?根據基於當前策略的價值函式來決定。所以我們的關鍵就是給定一個MDP和一個策略,求出價值函式。
如何求解呢?我們可以使用同步迭代聯合動態規劃的演算法:從任意一個狀態價值函式開始,依據給定的策略,結合貝爾曼期望方程、狀態轉移概率和獎勵同步迭代更新狀態價值函式,直至其收斂,得到該策略下最終的狀態價值函式。理解該演算法的關鍵在於在一個迭代週期內如何更新每一個狀態的價值。該迭代法可以確保收斂形成一個穩定的價值函式。
用演算法的角度來描述就是:每次迭代過程中,對於第次迭代,所有的狀態的價值用貝爾曼方程計算並更新該狀態第次迭代中使用的價值,其中是的後繼狀態。此種方法通過反覆迭代最終將收斂至 。
舉例使用同步迭代法進行小型方格世界的策略評估:
這是一個強化學習的問題:如圖4×4 的方格陣列,我們把它看成一個小世界。這個世界環境有16個狀態,圖中每一個小方格對應一個狀態,依次用0−15標記它們。圖中狀態0和15分別位於左上角和右下角,是終止狀態,用灰色表示。假設在這個小型方格世界中有一個可以進行上、下、左、右移動的agent,它需要通過移動自己來到達兩個灰色格子中的任意一個來完成任務。這個小型格子世界作為環境有著自己的動力學特徵:當agent採取的移動行為不會導致agent離開格子世界時,agent將以 100% 的機率到達它所要移動的方向的相鄰的那個格子,之所以是相鄰的格子而不能跳格是由於環境約束agent每次只能移動一格,同時規定agent也不能斜向移動;如果agent採取會跳出格子世界的行為,那麼環境將讓agent以 100% 的概率停留在原來的狀態;如果agent到達終止狀態,任務結束,否則agent可以持續採取行為。每當agent採取了一個行為後,只要這個行為是agent在非終止狀態時執行的,不管agent隨後到達哪一個狀態,環境都將給予agent值為 −1 的獎勵值;而當agent處於終止位置時,任何行為將獲得值為 0 的獎勵並仍舊停留在終止位置。環境設定如此的獎勵機制是利用了agent希望獲得累計最大獎勵的天性,而為了讓agent在格子世界中用盡可能少的步數來到達終止狀態,因為agent在世界中每多走一步,都將得到一個負值的獎勵。為了簡化問題,我們設定衰減因子。
在這個小型格子世界的強化學習問題中,agent為了達到在完成任務時獲得儘可能多的獎勵(在此例中是為了儘可能減少負值獎勵帶來的懲罰)這個目標,它至少需要思考一個問題:“當處在格子世界中的某一個狀態時,我應該採取如何的行為才能儘快到達表示終止狀態的格子。”這個問題對於擁有人類智慧的我們來說不是什麼難題,因為我們知道整個世界環境的執行規律(動力學特徵)。但對於格子世界中的agent來說就不那麼簡單了,因為agent身處格子世界中一開始並不清楚各個狀態之間的位置關係,它不知道當自己處在狀態4時只需要選擇“向上”移動的行為就可以直接到達終止狀態。此時agent能做的就是在任何一個狀態時,它選擇朝四個方向移動的概率相等。agent想到的這個辦法就是一個基於均一概率的隨機策略(uniform random policy) 。agent遵循這個均一隨機策略,不斷產生行為,執行移動動作,從格子世界環境獲得獎勵(大多數是−1 代表的懲罰),併到達一個新的或者曾經到達過的狀態。長久下去,agent會發現:遵循這個均一隨機策略時,每一個狀態跟自己最後能夠獲得的最終獎勵有一定的關係:在有些狀態時自己最終獲得的獎勵並不那麼少;而在其他一些狀態時,自己獲得的最終獎勵就少得多了。agent最終發現,在這個均一隨機策略指導下,每一個狀態的價值是不一樣的。這是一條非常重要的資訊。對於agent來說,它需要通過不停的與環境互動,經歷過多次的終止狀態後才能對各個狀態的價值有一定的認識。agent形成這個認識的過程就是策略評估的過程。而作為人類,我們知曉描述整個格子世界的資訊特徵,不必要向格子世界中的agent那樣通過與環境不停的互動來形成這種認識,我們可以直接通過迭代更新狀態價值的辦法來評估該策略下每一個狀態的價值。
首先,我們假設所有除終止狀態以外的14個狀態的價值為0。同時,由於終止狀態獲得的獎勵為0,我們可以認為兩個終止狀態的價值始終保持為0。這樣產生了上圖(a)中第k=0次迭代的狀態價值函式。
在隨後的每一次迭代內,agent處於在任意狀態都以均等的概率(1/4)選擇朝上、下、左、右等四個方向中的一個進行移動;只要agent不處於終止狀態,隨後產生任意一個方向的移動後都將得到−1的獎勵,並依據環境動力學將100%進入行為指向的相鄰的格子或碰壁後留在原位,在更新某一狀態的價值時需要分別計算4個行為帶來的價值分量。
以上圖(b)(c)(d)中加粗的狀態價值-1.0,-1.7和-2.4為例,詳細的計算過程如下:
計算公式:
當前迭代時狀態s的價值=
當前狀態s向上移動行為的概率[當前狀態s向上移動行為的獎勵+ (當前狀態s向上移動行為進行下一狀態s’的狀態轉化概率) 上一輪迭代時狀態s’的價值 ] +
當前狀態s向下移動行為的概率[當前狀態s向下移動行為的獎勵+ (當前狀態s向下移動行為進行下一狀態s’的狀態轉化概率) 上一輪迭代時狀態s’的價值 ] +
當前狀態s向左移動行為的概率[當前狀態s向左移動行為的獎勵+ (當前狀態s向左移動行為進行下一狀態s’的狀態轉化概率) 上一輪迭代時狀態s’的價值 ] +
當前狀態s向右移動行為的概率[當前狀態s向右移動行為的獎勵+ (當前狀態s向右移動行為進行下一狀態s’的狀態轉化概率) 上一輪迭代時狀態s’的價值 ]
代入計算: