- 深度強化學習算法與實踐:基于PyTorch的實現
- 張校捷編著
- 1621字
- 2022-05-06 17:08:34
2.3.1 策略迭代
前面介紹了強化學習中的相關策略,以及這些策略的簡單應用。下面討論一下在實際的強化學習算法中,策略和對應的狀態價值函數如何進行迭代,并且最終收斂到最優的策略上。在前面介紹的算法過程中,因為對應的策略是貪心(或者?-貪心)策略,而這個策略是依賴于對應環境的狀態價值函數的,因此在整個迭代過程中,策略迭代和價值迭代是一起進行的。現在把策略推廣到任意策略,從而給出策略迭代(Policy Iteration)的概念。在式(2.3)中已經看到,所謂策略,其實就是一個條件概率π(a|s),代表當智能體處于狀態s的情況下,采取動作a的概率。固定了策略π,即代表π(a|s)的概率不變。當然在實際的算法中,為了能夠讓智能體獲取盡可能多的獎勵,需要考慮對策略進行逐步迭代,讓策略在每一步上有提高,最后達到讓策略收斂到最優策略的目的。這個過程被稱為策略迭代。
為了能夠對策略進行優化,要做的第一件事情是評估一個策略的好壞,即所謂的策略評估(Policy Evaluation)。一個直觀評價策略好壞的方法就是計算給定策略下的價值函數。這個可以通過迭代使用式(2.3)完成。通過計算在策略π(a|s)下狀態價值函數的期望,讓兩次迭代的價值函數最大差值小于給定的標準,就可以得到在策略π(a|s)下的價值函數V(s)。
這里簡單介紹一下算法的細節,在算法的初始化過程中,首先會給定一個初始的狀態價值函數。這個狀態價值函數在狀態比較少的情況下可以用一個數組來窮舉所有的狀態價值函數,我們稱之為表格法(Tabular Method),在初始狀態下所有的狀態價值函數的值可以設置為0。在狀態比較多,甚至連續狀態的情況下可以使用深度強化學習算法(使用深度強化學習算法對應估計狀態價值函數的神經網絡可以初始化為隨機權重的神經網絡),這樣神經網絡輸出的值也是隨機值,并且會在優化迭代過程中逐步逼近準確的價值函數。在這個初始狀態價值函數的基礎上,可以通過式(2.3)逐步修正狀態價值函數的值,即使用蒙特卡洛算法反復利用條件概率策略π(a|s)進行決策,并估算得到下一輪迭代的狀態函數,直到最后的算法收斂,即可得到策略π(a|s)下的狀態價值函數V(s)。這個過程就相當于使用策略π(a|s)來進行預測,因此也被稱為預測(Prediction)過程。
在對策略進行估計以后,就可以使用估計的狀態價值函數V(s)對策略進行優化了,這個過程被稱為策略提高(Policy Improvement)。為了定義策略是如何提高的,需要有一個關于策略“好壞”的定義。為了有一個定量的概念衡量策略的好壞,首先需要定義策略的排序(Order)。根據2.1.2節所述的內容,我們稱一個策略π′優于另一個策略π,如果對于所有的狀態s,都有狀態價值函數Vπ′(s)≥Vπ(s)成立。這個定義在直觀上很好理解,因為狀態價值函數在數學意義即為在某個狀態下,未來可能獲得回報的期望。在前面已經介紹過,回報的定義是帶了折扣系數的獎勵,因此狀態價值函數越高,意味著智能體能夠在未來獲得的獎勵越高。顯然,一個策略優于另一個策略,當且僅當一個策略的狀態價值函數在所有情況下都優于另一個策略的狀態價值函數。策略排序的意義不僅在于給定了判斷策略優劣的方法,也給出了策略提高的方向。假如智能體當前的決策并非最優,我們就會發現,對于所有的狀態s,總存在某一個動作a′,相比于當前策略做出的決策a是動作-狀態價值函數的值Q(s,a′)>Q(s,a)。在這種情況下就可以修改智能體的策略,使得π(a|s)>π(a′|s),可以證明,使用這樣的算法總可以提高當前的策略,直到最后的策略收斂,即對于策略提高的前后兩個策略π和π′,對于所有的狀態s,有狀態價值函數Vπ′(s)=Vπ(s)。在算法的實際實現過程中,可以簡單地讓策略選擇具有最高獎勵的動作,即式(2.10)。

如果使用的是深度強化學習的策略網絡,則應該對網絡進行梯度下降優化,增加獲取較高獎勵的動作的概率,同時減少獲取較低獎勵的動作的概率。需要注意的一點是,在更新了新的策略之后,因為狀態價值函數和策略綁定,所以需要根據新的策略來估計新的狀態價值函數,即進行新一輪的策略評估。