強化學習基礎(chǔ)篇(三十一)策略梯度(3)Actor-Critic算法

強化學習基礎(chǔ)篇(三十一)策略梯度(3)Actor-Critic算法

1.引入Baseline

在使用策略梯度方法更新過程中旨枯,降低方差的另一種方法是使用baseline沙绝。

在REINFORCE算法得到的更新方式為:
\nabla_{\theta} \mathbb{E}_{\tau \sim \pi_{\theta}}[R]=\mathbb{E}_{\tau}\left[\sum_{t=0}^{T-1} G_{t} \cdot \nabla_{\theta} \log \pi_{\theta}\left(a_{t} \mid s_{t}\right)\right]
其中的G_{t}=\sum_{t^{\prime}=t}^{T-1} r_{t}是由軌跡產(chǎn)生的回報厌衙,具有很高的方差将鸵,如果考慮其上減去一個baseline b(s)
\nabla_{\theta} \mathbb{E}_{\tau \sim \pi_{\theta}}[R]=\mathbb{E}_{\tau}\left[\sum_{t=0}^{T-1}\left(G_{t}-b\left(s_{t}\right)\right) \cdot \nabla_{\theta} \log \pi_{\theta}\left(a_{t} \mid s_{t}\right)\right]
一般而言弧械,baseline的選擇可以是回報的期望:
b\left(s_{t}\right)=\mathbb{E}\left[r_{t}+r_{t+1}+\ldots+r_{T-1}\right]
Baseline的引入可以降低方差蜕乡,但是有baseline不含有參數(shù)\theta,所以不會改變更新過程的梯度:
\mathbb{E}_{\tau}\left[\nabla_{\theta} \log \pi_{\theta}\left(a_{t} \mid s_{t}\right) b\left(s_{t}\right)\right]=0

E_{\tau}\left[\nabla_{\theta} \log \pi_{\theta}\left(a_{t} \mid s_{t}\right)\left(G_{t}-b\left(s_{t}\right)\right)\right]=E_{\tau}\left[\nabla_{\theta} \log \pi_{\theta}\left(a_{t} \mid s_{t}\right) G_{t}\right]

\operatorname{Var}_{\tau}\left[\nabla_{\theta} \log \pi_{\theta}\left(a_{t} \mid s_{t}\right)\left(G_{t}-b\left(s_{t}\right)\right)\right]<\operatorname{Var}_{\tau}\left[\nabla_{\theta} \log \pi_{\theta}\left(a_{t} \mid s_{t}\right) G_{t}\right]

這里的baseline的選擇還可以是一個另一個被w參數(shù)化的函數(shù)设捐。
\nabla_{\theta} J(\theta)=\mathbb{E}_{\tau}\left[\sum_{t=0}^{T-1}\left(G_{t}-b_{w}\left(s_{t}\right)\right) \cdot \nabla_{\theta} \log \pi_{\theta}\left(a_{t} \mid s_{t}\right)\right]

2借浊、Vanilla Policy Gradient算法

通過加入baseline,我們可以得到Vanilla Policy Gradient算法:

image.png

3萝招、使用Critic降低方差

在實際中\nabla_{\theta} J(\theta)=\mathbb{E}_{\pi_{\theta}}\left[\sum_{t=0}^{T-1} G_{t} \cdot \nabla_{\theta} \log \pi_{\theta}\left(a_{t} \mid s_{t}\right)\right]更新過程的G_t可以使用動作值函數(shù)代替Q^{\pi_{\theta}}\left(s_{t}, a_{t}\right)蚂斤,動作值函數(shù)作為Critic可以由參數(shù)化的函數(shù)近似:
Q_{w}(s, a) \approx Q^{\pi_{\theta}}(s, a)
所以策略梯度更新可以修改為:
\nabla_{\theta} J(\theta)=\mathbb{E}_{\pi_{\theta}}\left[\sum_{t=0}^{T-1} Q_{w}\left(s_{t}, a_{t}\right) \cdot \nabla_{\theta} \log \pi_{\theta}\left(a_{t} \mid s_{t}\right)\right]
這樣就可以形成Actor-Critic算法,其中:

  • Actor是策略函數(shù)槐沼,用于產(chǎn)生動作曙蒸,其更新過程會根據(jù)Critic提供的方向進行策略參數(shù)\theta的更新捌治。
  • Critic是價值函數(shù),用于評估Actor產(chǎn)生動作的獎勵纽窟,其更新過程會基于參數(shù)w更新肖油。Critic相當于會評價通過Actor產(chǎn)生的動作。

如果使用線性函數(shù)進行Q函數(shù)的近似Q_{w}(s, a)=\psi(s, a)^{T} \mathbf{w}臂港,然后使用TD(0)的方法更新Critic的參數(shù)w森枪,使用PG更新Actor的參數(shù)\theta,這樣就有簡單的QAC算法:

image.png

4趋艘、Actor-Critc函數(shù)近似

在AC算法中疲恢,我們需要維護兩組參數(shù),在實現(xiàn)過程中可以由兩種網(wǎng)絡(luò)的設(shè)計瓷胧,一種是分別使用神經(jīng)網(wǎng)絡(luò)擬合兩組參數(shù)显拳,第一組輸出價值函數(shù),第二組輸出策略搓萧。

image.png

另一種方法是讓兩個輸出共享同一個網(wǎng)絡(luò):

image.png

5杂数、使用Baseline降低AC的方差

我們到Q函數(shù)的形式為:
Q^{\pi, \gamma}(s, a)=\mathbb{E}_{\pi}\left[r_{1}+\gamma r_{2}+\ldots \mid s_{1}=s, a_{1}=a\right]
價值函數(shù)為:
\begin{aligned} V^{\pi, \gamma}(s) &=\mathbb{E}_{\pi}\left[r_{1}+\gamma r_{2}+\ldots \mid s_{1}=s\right] \\ &=\mathbb{E}_{a \sim \pi}\left[Q^{\pi, \gamma}(s, a)\right] \end{aligned}
如果將價值函數(shù)作為一個baseline,可以定義優(yōu)勢函數(shù)如下:
A^{\pi, \gamma}(s, a)=Q^{\pi, \gamma}(s, a)-V^{\pi, \gamma}(s)
這樣使用Advantage funtion的策略梯度就為:
\nabla_{\theta} J(\theta)=\mathbb{E}_{\pi_{\theta}}\left[\nabla_{\theta} \log \pi_{\theta}(s, a) A^{\pi, \gamma}(s, a)\right]

使用N-step 近似

我們之前使用的是MC的回報G_t,但也可以使用TD的方法進行更新瘸洛,或者n-step方法進行更新:

比如:
\begin{array}{rl}n=1(T D) & G_{t}^{(1)}=r_{t+1}+\gamma v\left(s_{t+1}\right) \\ n=2 & G_{t}^{(2)}=r_{t+1}+\gamma r_{t+2}+\gamma^{2} v\left(s_{t+2}\right) \\ n=\infty(M C) & G_{t}^{(\infty)}=r_{t+1}+\gamma r_{t+2}+\ldots+\gamma^{T-t-1} r_{T}\end{array}
使用了n-step方法的優(yōu)勢函數(shù)可以為:
\begin{aligned} \hat{A}_{t}^{(1)} &=r_{t+1}+\gamma v\left(s_{t+1}\right)-v\left(s_{t}\right) \\ \hat{A}_{t}^{(2)} &=r_{t+1}+\gamma r_{t+2}+\gamma^{2} v\left(s_{t+2}\right)-v\left(s_{t}\right) \\ \hat{A}_{t}^{(\infty)} &=r_{t+1}+\gamma r_{t+2}+\ldots+\gamma^{T-t-1} r_{T}-v\left(s_{t}\right) \end{aligned}
這里\hat A^{(1)}具有低variance揍移,但是高的bias,相反\hat{A}_{t}^{(\infty)}具有高variance反肋,但是低的bias那伐。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市石蔗,隨后出現(xiàn)的幾起案子罕邀,更是在濱河造成了極大的恐慌,老刑警劉巖养距,帶你破解...
    沈念sama閱讀 216,843評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诉探,死亡現(xiàn)場離奇詭異,居然都是意外死亡棍厌,警方通過查閱死者的電腦和手機肾胯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來耘纱,“玉大人敬肚,你說我怎么就攤上這事∈觯” “怎么了帘皿?”我有些...
    開封第一講書人閱讀 163,187評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長畸陡。 經(jīng)常有香客問我鹰溜,道長,這世上最難降的妖魔是什么丁恭? 我笑而不...
    開封第一講書人閱讀 58,264評論 1 292
  • 正文 為了忘掉前任曹动,我火速辦了婚禮,結(jié)果婚禮上牲览,老公的妹妹穿的比我還像新娘墓陈。我一直安慰自己,他們只是感情好第献,可當我...
    茶點故事閱讀 67,289評論 6 390
  • 文/花漫 我一把揭開白布贡必。 她就那樣靜靜地躺著,像睡著了一般庸毫。 火紅的嫁衣襯著肌膚如雪仔拟。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,231評論 1 299
  • 那天飒赃,我揣著相機與錄音利花,去河邊找鬼。 笑死载佳,一個胖子當著我的面吹牛炒事,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蔫慧,決...
    沈念sama閱讀 40,116評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼挠乳,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了姑躲?” 一聲冷哼從身側(cè)響起睡扬,我...
    開封第一講書人閱讀 38,945評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎肋联,沒想到半個月后威蕉,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,367評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡橄仍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,581評論 2 333
  • 正文 我和宋清朗相戀三年韧涨,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片侮繁。...
    茶點故事閱讀 39,754評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡虑粥,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出宪哩,到底是詐尸還是另有隱情娩贷,我是刑警寧澤,帶...
    沈念sama閱讀 35,458評論 5 344
  • 正文 年R本政府宣布锁孟,位于F島的核電站彬祖,受9級特大地震影響茁瘦,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜储笑,卻給世界環(huán)境...
    茶點故事閱讀 41,068評論 3 327
  • 文/蒙蒙 一甜熔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧突倍,春花似錦腔稀、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至秕磷,卻和暖如春诵闭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背跳夭。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評論 1 269
  • 我被黑心中介騙來泰國打工涂圆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人币叹。 一個月前我還...
    沈念sama閱讀 47,797評論 2 369
  • 正文 我出身青樓润歉,卻偏偏與公主長得像,于是被迫代替她去往敵國和親颈抚。 傳聞我的和親對象是個殘疾皇子踩衩,可洞房花燭夜當晚...
    茶點故事閱讀 44,654評論 2 354