強化學習基礎(chǔ)篇(三十一)策略梯度(3)Actor-Critic算法
1.引入Baseline
在使用策略梯度方法更新過程中旨枯,降低方差的另一種方法是使用baseline沙绝。
在REINFORCE算法得到的更新方式為:
其中的是由軌跡產(chǎn)生的回報厌衙,具有很高的方差将鸵,如果考慮其上減去一個baseline :
一般而言弧械,baseline的選擇可以是回報的期望:
Baseline的引入可以降低方差蜕乡,但是有baseline不含有參數(shù),所以不會改變更新過程的梯度:
這里的baseline的選擇還可以是一個另一個被參數(shù)化的函數(shù)设捐。
2借浊、Vanilla Policy Gradient算法
通過加入baseline,我們可以得到Vanilla Policy Gradient算法:
3萝招、使用Critic降低方差
在實際中更新過程的可以使用動作值函數(shù)代替蚂斤,動作值函數(shù)作為Critic可以由參數(shù)化的函數(shù)近似:
所以策略梯度更新可以修改為:
這樣就可以形成Actor-Critic算法,其中:
- Actor是策略函數(shù)槐沼,用于產(chǎn)生動作曙蒸,其更新過程會根據(jù)Critic提供的方向進行策略參數(shù)的更新捌治。
- Critic是價值函數(shù),用于評估Actor產(chǎn)生動作的獎勵纽窟,其更新過程會基于參數(shù)更新肖油。Critic相當于會評價通過Actor產(chǎn)生的動作。
如果使用線性函數(shù)進行Q函數(shù)的近似臂港,然后使用的方法更新Critic的參數(shù)森枪,使用PG更新Actor的參數(shù),這樣就有簡單的QAC算法:
4趋艘、Actor-Critc函數(shù)近似
在AC算法中疲恢,我們需要維護兩組參數(shù),在實現(xiàn)過程中可以由兩種網(wǎng)絡(luò)的設(shè)計瓷胧,一種是分別使用神經(jīng)網(wǎng)絡(luò)擬合兩組參數(shù)显拳,第一組輸出價值函數(shù),第二組輸出策略搓萧。
另一種方法是讓兩個輸出共享同一個網(wǎng)絡(luò):
5杂数、使用Baseline降低AC的方差
我們到Q函數(shù)的形式為:
價值函數(shù)為:
如果將價值函數(shù)作為一個baseline,可以定義優(yōu)勢函數(shù)如下:
這樣使用Advantage funtion的策略梯度就為:
使用N-step 近似
我們之前使用的是MC的回報,但也可以使用TD的方法進行更新瘸洛,或者n-step方法進行更新:
比如:
使用了n-step方法的優(yōu)勢函數(shù)可以為:
這里具有低variance揍移,但是高的bias,相反具有高variance反肋,但是低的bias那伐。