強化學習基礎篇(三十)策略梯度(二)MC策略梯度算法
1、Score Function
假設策略是可微分的,并且在任何時候都不為0,我們可以使用下面的小技巧去轉換為從
到
的求解。
其中也叫作score function。
2、Score Function方式的優勢
這種轉換為對score function的優勢可以通過下面兩種策略的形式體現出來:
一是、當策略是softmax函數,其形式是,
,則score function則可以有著非常簡潔的如下形式:
二是、當策略是高斯函數,
,其中均值
,方差假設為固定值
(也可以對
進行參數化),其score function為:
這兩個例子可以看到Score Function在某些時候是比原來的形式更加容易進行計算。
3、一步MDP的策略梯度
如果我們考慮一個簡單的MDP場景,只需要一個動作步就會結束,初始狀態會從一個分布中產生,從初始狀態開始只需要經過一個時間步就結束,并得到獎勵
。這個場景里直接使用最大似然方法計算策略梯度。
然后對目標函數進行梯度計算,計算過程中使用了score function的技巧。
4、多步MDP的策略梯度
將前面簡單的one-step的MDP,擴展到多步的MDP的情況:
(a) 定義在一個episode中,我們采集的軌跡記為
:
(b) 定義軌跡
的獎勵之和為:
(c) 策略的目標函數定義為:
這里的表示在執行策略
的的時候軌跡
的概率。
(d) 然后我們目標就是找到最優的參數
可以極大化目標函數
。
(d) 其SGD的優化方法是要計算目標函數的梯度
。
在這一步中對的估計可以使用m次采樣的方法進行,即:
這里繼續對進行分解,分解過程中將消去所有與
無關的部分:
這里的結果很感人,將軌跡的概率梯度轉換為了求策略的梯度:
最終目標函數的梯度可以轉換為:
最終我們優化目標函數的時候就完全不需要了解模型的動態參數。
5、理解Score Function Gradient估計
我們的策略函數優化的目標函數是,其中
是參數,軌跡
是由采樣產生。如果我們將其重新為更加廣義的形式,通過函數
替換獎勵
:
其中函數的
由參數化的分布
采樣產生,需要優化參數
使得
的期望盡可能大。其中與策略函數優化的方式一樣使用了score function的技巧,然后對
進行采樣。這個過程可以通過下面這個圖理解下:
圖里面每個樣本是從采樣產生,我希望采樣產生出來的
能夠使得
盡量得大,
的優化過程即在優化函數的形狀,第一張圖的每個藍色箭頭表示
,中間的各種圈是函數
,將
分布采樣出的值給與一定的權重就得到中間圖,綠色的點是權重為正的值,紅色為權重為負的值。
然后我們需要使得的分布盡量往綠色的區域移動擬合,其擬合后的
如最右側的圖,將使得
能夠在后續采樣出的值盡可能有更大的可能性。
Policy Gradient估計 vs 最大似然估計
如果我們將Policy Gradient估計與最大似然估計進行對比:
Policy Gradient估計的形式為:
最大似然估計形式為:
這兩者是比較類似的,除了Policy Gradient估計的形式是包含了reward函數,reward函數對likelihood的結果進行加權。即Policy Gradient估計可以看做加權后的極大似然估計。這里目標是在策略優化過程中,鼓勵策略能夠進入到能夠產出盡可能多獎勵的區域中。比如下圖中,優化過程中希望軌跡的分布向著紅色更高獎勵的區域移動。
6、策略梯度的問題
我們策略梯度更新為:
其中存在的問題在于其軌跡為相當于MC方法產生出,雖然是unbiased,但是其方差(variance)很大。比如在采樣不同的軌跡可能差異特別大,有些時候無獎勵,有些時候獎勵特別大。
降低方差將是更加高級的強化學習算法的核心,降低方差即可保障學習過程更加穩定。
一般有兩種改進辦法,一是引入時序的因果關系,二是使用baseline。
7、利用時序的因果關系(Causality)降低方差
我們已經推導得出的Policy gradient形式為:
其由兩部分的sum構成,一個是對reward的累加,另一個是對score function的累加。
我們可以引入時序的因果關系(Causality)使得第一個加和的reward更小,我們在時間之前做的似然估計并不會對后續得到獎勵造成影響,
對于一個單個獎勵的梯度形式是:
若將所有時間步進行累加,經過推導可以得到簡化后的Policy gradient形式:
其中。這里是通過因果性去掉沒有必要的獎勵部分,在時間
的策略不會影響
部分的獎勵。最后得到的采樣形式是:
通過這種方式可以得到經典的REINFORCE算法: