強(qiáng)化學(xué)習(xí)–值函數(shù)近似和策略梯度
文章目錄
強(qiáng)化學(xué)習(xí)--值函數(shù)近似和策略梯度
前兩節(jié)內(nèi)容都是強(qiáng)化學(xué)習(xí)的一些基礎(chǔ)理論 ,只能解決一些中小規(guī)模的問題沪斟,實(shí)際情況下很多價值函數(shù)需要一張大表來存儲剖踊,獲取某一狀態(tài)或動作價值的時候通常需要一個查表操作柱蟀,這對于某些狀態(tài)或動作空間很大的問題幾乎無法求解蝎困,而許多實(shí)際問題擁有大量狀態(tài)或動作离赫,甚至是連續(xù)的狀態(tài)和動作。那么癞尚,如何解決實(shí)際問題呢舆驶?主要有兩種方法:值函數(shù)近似和策略梯度瞬铸。
強(qiáng)化學(xué)習(xí)可以用來解決大規(guī)模問題,例如西洋雙陸棋(Backgammon)有10^{20}1020個狀態(tài)空間经伙,圍棋AlphaGo有10^{170}10170狀態(tài)空間扶叉,機(jī)器人控制以及無人機(jī)控制需要的是一個連續(xù)狀態(tài)空間。如何才能將強(qiáng)化學(xué)習(xí)應(yīng)用到這類大規(guī)模的問題中帕膜,進(jìn)而進(jìn)行預(yù)測和控制呢枣氧?
(1)使用值函數(shù)近似的解決思路可以是這樣的:
①、通過函數(shù)近似來估計實(shí)際的價值函數(shù):
\hat v(s,\omega ) \approx {v_\pi }(s)v^(s,ω)≈vπ?(s)
\hat q(s,a,\omega ) \approx {q_\pi }(s,a)q^?(s,a,ω)≈qπ?(s,a)
其中垮刹,\omegaω表示函數(shù)的參數(shù)达吞,如神經(jīng)網(wǎng)絡(luò)的參數(shù);
②荒典、把從已知狀態(tài)學(xué)到的函數(shù)通用化推廣到那些未碰到的狀態(tài)中酪劫;
③吞鸭、使用蒙特卡洛算法或時序差分學(xué)習(xí)來更新函數(shù)參數(shù)。
(2)值函數(shù)近似的類型:
①契耿、針對狀態(tài),輸出這個狀態(tài)的近似狀態(tài)價值螃征;
②搪桂、針對狀態(tài)動作對,輸出狀態(tài)動作對的近似動態(tài)價值盯滚;
③踢械、針對狀態(tài),輸出一個向量魄藕,向量中每一個元素是該狀態(tài)下采取一種可能動作的動作價值内列;注:此時不能用于連續(xù)的動作。
(3)有哪些函數(shù)近似器背率?
所有和機(jī)器學(xué)習(xí)相關(guān)的算法都可以應(yīng)用到強(qiáng)化學(xué)習(xí)中來话瞧,其中線性回歸和神經(jīng)網(wǎng)絡(luò)在強(qiáng)化學(xué)習(xí)里應(yīng)用比較廣泛,主要是因?yàn)檫@兩類方法針對狀態(tài)可導(dǎo)寝姿。
強(qiáng)化學(xué)習(xí)應(yīng)用的場景其數(shù)據(jù)通常是非靜態(tài)的(non-stationary)和非獨(dú)立同分布(non-iid)的交排,因?yàn)橐粋€狀態(tài)數(shù)據(jù)是可能是持續(xù)流入的,而且下一個狀態(tài)通常與前一個狀態(tài)是高度相關(guān)的饵筑。因此埃篓,函數(shù)近似器也需要適用于非靜態(tài)、非獨(dú)立同分布的數(shù)據(jù)根资。
注:iid: independent and identically distributed 獨(dú)立和均勻分布
獨(dú)立:每次抽樣之間是沒有關(guān)系的架专,不會相互影響;就像拋骰子每次拋到幾就是幾這就是獨(dú)立的玄帕,但如果要兩次拋的和大于8部脚,其余的不算,那么第一次拋和第二次拋就不獨(dú)立了裤纹,因?yàn)榈诙螔伒臅r候結(jié)果是和第一次相關(guān)的睛低。
同分布:每次抽樣,樣本都服從同樣一個分布服傍;拋骰子每次得到任意點(diǎn)數(shù)的概率都是1/6钱雷,這就是同分布的。但如果第一次拋一個6面的色子吹零,第二次拋一個正12面體的色子罩抗,就不再是同分布了。
(4)值函數(shù)近似的目標(biāo):
尋找參數(shù)向量\omegaω灿椅,從而最小化近似值函數(shù)\hat v(s,\omega)v^(s,ω)和真實(shí)的值函數(shù)v_{\pi}(s)vπ?(s)的均方誤差(mean squared error套蒂,MSE):
J(\omega ) = {E_\pi }[{({v_\pi }(S) - \hat v(S,\omega ))^2}]J(ω)=Eπ?[(vπ?(S)?v^(S,ω))2]
然后使用隨機(jī)梯度下降對梯度進(jìn)行更新钞支。每一步,參數(shù)朝著實(shí)際的價值函數(shù)進(jìn)行一度程度地逼近操刀。
用一個特征向量表示一個狀態(tài):
x(S) = \left( \begin{array}{l} {x_1}(S)\\ \ \ \ \ \vdots \\ {x_n}(S) \end{array} \right)x(S)=????x1?(S)?????xn?(S)?????
通過對特征的線性求和來近似狀態(tài)價值函數(shù):
\hat v(S,\omega) = x(S)^T\omega = \sum\limits_{j = 1}^n {{x_j}(S){\omega _j}}v^(S,ω)=x(S)Tω=j=1∑n?xj?(S)ωj?
這樣烁挟,目標(biāo)函數(shù)可以表示為:
J(\omega ) = {E_\pi }[{({v_\pi }(S) - x(S)^{\top}\omega)^2}]J(ω)=Eπ?[(vπ?(S)?x(S)?ω)2]
使用隨機(jī)梯度下降可以收斂至全局最優(yōu)解。
參數(shù)更新規(guī)則比較簡單:
{\nabla}_{\omega} \hat v(S,\omega)=x(S)?ω?v^(S,ω)=x(S)
\Delta \omega = \alpha(v_{\pi}(S)-\hat v(S,\omega))x(S)Δω=α(vπ?(S)?v^(S,ω))x(S)
即:參數(shù)更新量=步長*預(yù)測誤差*特征值骨坑;
“查表”方法是一個特殊的線性價值函數(shù)近似方法:每一個狀態(tài)看成一個特征撼嗓,個體具體處在某一個狀態(tài)時,該狀態(tài)特征取1欢唾,其余取0且警。參數(shù)的數(shù)目就是狀態(tài)數(shù),也就是每一個狀態(tài)特征有一個參數(shù)礁遣。
事實(shí)上斑芜,之前所列的公式都不能直接用于強(qiáng)化學(xué)習(xí),因?yàn)楣嚼锒加幸粋€實(shí)際價值函數(shù)v_{\pi}(S)vπ?(S)祟霍,但在強(qiáng)化學(xué)習(xí)環(huán)境中杏头,只有即時獎勵,沒有真實(shí)的價值函數(shù)沸呐,因此不能直接使用上述公式大州,需要找到能代替v_{\pi}(S)vπ?(S)的目標(biāo)值。
①垂谢、對于蒙特卡洛算法厦画,目標(biāo)值就是回報:
\Delta \omega = \alpha(G_t-\hat v(S_t,\omega)){\nabla}_{\omega} \hat v(S_t,\omega)Δω=α(Gt??v^(St?,ω))?ω?v^(St?,ω)
其中,回報G_tGt?是真實(shí)狀態(tài)價值的無偏估計滥朱,可以把它看成是監(jiān)督學(xué)習(xí)的標(biāo)簽數(shù)據(jù)根暑,這時,訓(xùn)練數(shù)據(jù)集可以是:, , ..., <S1?,G1?>,<S2?,G2?>,...,<ST?,GT?>徙邻;
②排嫌、對于時序差分學(xué)習(xí),目標(biāo)值就是TD目標(biāo):
\Delta \omega = \alpha(R_{t+1}+\gamma \hat v(S_{t+1},\omega)-\hat v(S_t,\omega)){\nabla}_{\omega} \hat v(S_t,\omega)Δω=α(Rt+1?+γv^(St+1?,ω)?v^(St?,ω))?ω?v^(St?,ω)
其中缰犁,TD目標(biāo)值是真實(shí)狀態(tài)價值的有偏估計淳地;這時,訓(xùn)練集是:, ..., <S1?,R2?+γv^(S2?,ω)>,<S2?,R3?+γv^(S3?,ω)>...,<ST?1?,RT?>帅容;
動作價值函數(shù)近似和上述狀態(tài)價值函數(shù)近似類似颇象。
動作價值函數(shù)近似表示為:
\hat q(S,A,\omega) \approx q_{\pi}(S,A)q^?(S,A,ω)≈qπ?(S,A)
用一個特征向量表示一個狀態(tài)動作對:
x(S,A) = \left( \begin{array}{l}{x_1}(S,A)\\ \ \ \ \ \ \ \ \vdots \\{x_n}(S,A)\end{array} \right)x(S,A)=????x1?(S,A)????????xn?(S,A)?????
通過對特征的線性求和來近似動作價值函數(shù):
\hat q(S,A,\omega) = x(S,A)^T\omega = \sum\limits_{j = 1}^n {{x_j}(S,A){\omega _j}}q^?(S,A,ω)=x(S,A)Tω=j=1∑n?xj?(S,A)ωj?
這樣,目標(biāo)函數(shù)可以表示為:
J(\omega ) = {E_\pi }[{({q_\pi }(S,A) - x(S,A)^{\top}\omega)^2}]J(ω)=Eπ?[(qπ?(S,A)?x(S,A)?ω)2]
使用隨機(jī)梯度下降可以收斂至全局最優(yōu)解并徘。
參數(shù)更新規(guī)則比較簡單:
{\nabla}_{\omega} \hat q(S,A,\omega)=x(S,A)?ω?q^?(S,A,ω)=x(S,A)
\Delta \omega = \alpha(q_{\pi}(S,A)-\hat q(S,A,\omega))x(S,A)Δω=α(qπ?(S,A)?q^?(S,A,ω))x(S,A)
同樣遣钳,需要找到能代替q_{\pi}(S,A)qπ?(S,A)的目標(biāo)值。
①麦乞、對于蒙特卡洛算法蕴茴,目標(biāo)值就是回報:
\Delta \omega = \alpha(G_t-\hat q(S_t,A_t,\omega)){\nabla}_{\omega} \hat q(S_t,A_t,\omega)Δω=α(Gt??q^?(St?,At?,ω))?ω?q^?(St?,At?,ω)
其中劝评,回報G_tGt?是真實(shí)動作價值的無偏估計;
②倦淀、對于時序差分學(xué)習(xí)蒋畜,目標(biāo)值就是TD目標(biāo):
\Delta \omega = \alpha(R_{t+1}+\gamma \hat q(S_{t+1}, A_{t+1},\omega)-\hat q(S_t,A_t,\omega)){\nabla}_{\omega} \hat q(S_t,A_t,\omega)Δω=α(Rt+1?+γq^?(St+1?,At+1?,ω)?q^?(St?,At?,ω))?ω?q^?(St?,At?,ω)
其中,TD目標(biāo)值是真實(shí)動作價值的有偏估計撞叽;
在上一講中姻成,我們講到,在無模型情況下能扒,對策略評估時佣渴,使用狀態(tài)動作對下的動作價值函數(shù)對策略進(jìn)行評估辫狼。
從一系列參數(shù)開始初斑,得到一個在狀態(tài)動作對下近似的動作價值函數(shù),在\epsilon-greedy??greedy策略下產(chǎn)生一個動作膨处,執(zhí)行該動作得到一個即時獎勵见秤,以此數(shù)據(jù)計算目標(biāo)值,進(jìn)行近似函數(shù)參數(shù)的更新真椿,再利用這個策略得到后續(xù)的狀態(tài)和對應(yīng)的目標(biāo)值鹃答,每經(jīng)歷一次狀態(tài)就更新一次次數(shù),如此反復(fù)進(jìn)行策略的優(yōu)化突硝,同時逼近最優(yōu)價值函數(shù)测摔。
策略評估:使用動作價值函數(shù)近似方法來進(jìn)行近似策略評估,特別是早期誤差會較大解恰,而且這種近似無法最終收斂于最優(yōu)策略對應(yīng)的行為價值函數(shù)锋八,只能在其周圍震蕩;
策略改善:使用\epsilon-greedy??greedy策略护盈。
在計算機(jī)視覺挟纱、語音識別領(lǐng)域,深度神經(jīng)網(wǎng)絡(luò)可以直接從場景數(shù)據(jù)(如圖像腐宋,聲音)中提取出高層特征紊服,實(shí)現(xiàn)端到端的學(xué)習(xí),無需再人工設(shè)計特征胸竞。一個自然的想法時能否用深度學(xué)習(xí)來為強(qiáng)化學(xué)習(xí)的原始輸入數(shù)據(jù)進(jìn)行建模欺嗤。
深度強(qiáng)化學(xué)習(xí)的基本思想是用神經(jīng)網(wǎng)絡(luò)擬合強(qiáng)化學(xué)習(xí)中的價值函數(shù)和策略函數(shù),是深度學(xué)習(xí)與強(qiáng)化學(xué)習(xí)相結(jié)合的產(chǎn)物卫枝。在這里剂府,講到的使用深度神經(jīng)網(wǎng)絡(luò)對價值函數(shù)進(jìn)行近似的方法稱為基于價值函數(shù)的深度強(qiáng)化學(xué)習(xí)。
用深度神經(jīng)網(wǎng)絡(luò)來近似動作價值函數(shù)QQ時剃盾,網(wǎng)絡(luò)的輸入為狀態(tài)數(shù)據(jù)腺占,如原始的游戲畫面淤袜,輸出值為在當(dāng)前狀態(tài)下執(zhí)行各種動作所得到的最大QQ函數(shù)值。但是深度學(xué)習(xí)用于強(qiáng)化學(xué)習(xí)將面臨以下挑戰(zhàn):
①衰伯、有監(jiān)督學(xué)習(xí)一般要求訓(xùn)練樣本之間是相互獨(dú)立的铡羡,在強(qiáng)化學(xué)習(xí)中,經(jīng)常遇到的是前后高度相關(guān)的狀態(tài)序列意鲸。在某個狀態(tài)下執(zhí)行一個動作后進(jìn)入下一個狀態(tài)烦周,前后兩個狀態(tài)存在著明顯的概率關(guān)系,不是獨(dú)立的怎顾;
②读慎、在強(qiáng)化學(xué)習(xí)中,隨著學(xué)習(xí)到新的動作槐雾,樣本數(shù)據(jù)的概率分布會發(fā)生變化夭委,而在深度學(xué)習(xí)中,要求訓(xùn)練樣本的概率分布是固定的募强;
即深度學(xué)習(xí)中一般要求樣本滿足獨(dú)立同分布株灸,而強(qiáng)化學(xué)習(xí)不滿足。
2013年擎值,DeepMind公司提出了一種用深度神經(jīng)網(wǎng)絡(luò)打Atari游戲的方法慌烧,僅通過觀察游戲畫面和得分,就可以學(xué)會打這種游戲鸠儿。該方法使用深度卷積神經(jīng)網(wǎng)絡(luò)擬合動作價值函數(shù)屹蚊,即QQ函數(shù),成為深度QQ網(wǎng)絡(luò)(DQN)进每,它是第一個成功具有通用性的深度強(qiáng)化學(xué)習(xí)算法汹粤。
早在1995年,人們就開始嘗試將神經(jīng)網(wǎng)絡(luò)與強(qiáng)化學(xué)習(xí)進(jìn)行結(jié)合品追,比如當(dāng)時Gerald Tesauro提出的TD-gammon方法玄括,用多層感知器模型逼近狀態(tài)價值函數(shù),然而肉瓦,此時只對西洋雙陸棋有較好的效果遭京,對于國際象棋等效果非常差,不具有通用性泞莉。
關(guān)于Atari游戲示例:
接下來主要講一下DQN哪雕。
網(wǎng)絡(luò)的輸入為經(jīng)過處理后的若干幀游戲圖像畫面,輸出為在這種狀態(tài)下執(zhí)行各種動作的動作價值函數(shù)鲫趁,即QQ函數(shù)斯嚎。
輸入輸出有兩種形式:
①、將狀態(tài)和動作當(dāng)成神經(jīng)網(wǎng)絡(luò)的輸入,然后輸出狀態(tài)動作對對應(yīng)的QQ值堡僻;
②糠惫、只輸入狀態(tài)值,輸出所有動作值對應(yīng)的QQ值钉疫;
這里硼讽,采用的是第②種方法,因?yàn)槿绻吹冖俜N方法輸入狀態(tài)動作對的話牲阁,神經(jīng)網(wǎng)絡(luò)的每一次前向傳播只是來計算一個動作的QQ值固阁,導(dǎo)致成本會隨動作數(shù)量而線性增加。而采用第②種方法城菊,能夠計算給定狀態(tài)下所有可能動作的QQ值且只需要通過網(wǎng)絡(luò)進(jìn)行一次前向傳播备燃,提高了計算效率。
DQN的網(wǎng)絡(luò)架構(gòu)如下所示:
在圖中凌唬,輸入的是經(jīng)過處理的84*84的游戲圖像畫面并齐,然后經(jīng)過2個卷積層,2個全連接層法瑟,最后網(wǎng)絡(luò)的輸出是在輸入狀態(tài)下執(zhí)行每個動作的QQ函數(shù)值冀膝。
卷積神經(jīng)網(wǎng)絡(luò)用于近似最優(yōu)QQ函數(shù):
Q(S,A,\omega) \approx Q_{\pi}(S,A)Q(S,A,ω)≈Qπ?(S,A)
其中唁奢,\omegaω是網(wǎng)絡(luò)參數(shù)霎挟。
對于網(wǎng)絡(luò)結(jié)構(gòu),針對不同的問題可以有不同的設(shè)置麻掸。
總之酥夭,用神經(jīng)網(wǎng)絡(luò)來表示QQ值非常簡單,QQ值也就是變成QQ網(wǎng)絡(luò)來表示脊奋。
那么熬北,怎么訓(xùn)練QQ網(wǎng)絡(luò)呢?
神經(jīng)網(wǎng)絡(luò)的訓(xùn)練是一個最優(yōu)化問題诚隙,最優(yōu)化一個損失函數(shù)讶隐,也就是標(biāo)簽和網(wǎng)絡(luò)輸出的偏差,目標(biāo)是讓損失函數(shù)最小化久又。因此巫延,需要有樣本,即大量有標(biāo)簽的數(shù)據(jù)地消,然后通過反向傳播使用梯度下降的方法來更新網(wǎng)絡(luò)參數(shù)炉峰。
所以,要訓(xùn)練QQ網(wǎng)絡(luò)脉执,要能夠?yàn)镼Q網(wǎng)絡(luò)提供有標(biāo)簽的樣本疼阔。
那么,問題變?yōu)椋?b>如何為QQ網(wǎng)絡(luò)提供有標(biāo)簽的樣本?
答案是利用Q-learningQ?learning算法婆廊,依靠的是目標(biāo)QQ值迅细,即即時獎勵和其后繼狀態(tài)執(zhí)行動作的最大QQ值:
R_{t+1}+\lambda \mathop {\max }\limits_a Q(S_{t+1},a)Rt+1?+λamax?Q(St+1?,a)
所以,可以目標(biāo)QQ值當(dāng)作標(biāo)簽淘邻。那么疯攒,損失函數(shù)是:
L(\omega) = {E}[{(R + \gamma \mathop {\max }\limits_{a'} Q(s',a',\omega) - Q(s,a,\omega ))^2}]L(ω)=E[(R+γa′max?Q(s′,a′,ω)?Q(s,a,ω))2]
其中,s',a's′,a′分別是下一個狀態(tài)和動作列荔。
DQN的一個創(chuàng)新是使用了經(jīng)驗(yàn)回放(Experience Replay)機(jī)制敬尺。
①、動機(jī):深度神經(jīng)網(wǎng)絡(luò)作為有監(jiān)督學(xué)習(xí)模型贴浙,要求數(shù)據(jù)滿足獨(dú)立同分布砂吞,而Atari游戲得到的訓(xùn)練樣本是一個時間序列,樣本之間存在相關(guān)性崎溃,而且訓(xùn)練樣本的概率分布不固定蜻直,為了解決上述問題,提出了經(jīng)驗(yàn)回放機(jī)制袁串。
②概而、具體做法:在每個時間點(diǎn)存儲智能體的經(jīng)驗(yàn)e_t=(s_t,a_t,r_{t+1},s_{t+1})et?=(st?,at?,rt+1?,st+1?)形成回放記憶序列D={e_1,...,e_N}D=e1?,...,eN?,將這些數(shù)據(jù)存儲起來囱修,訓(xùn)練神經(jīng)網(wǎng)絡(luò)時從DD中隨機(jī)采樣得到每次迭代所用的訓(xùn)練樣本赎瑰,并使用隨機(jī)梯度下降算法更新網(wǎng)絡(luò)參數(shù)。
③破镰、作用:經(jīng)驗(yàn)回放機(jī)制通過重復(fù)采樣歷史數(shù)據(jù)增加了數(shù)據(jù)的使用效率餐曼,同時打破按照動作序列執(zhí)行時前后兩個時間步樣本之間的依賴關(guān)系,即減少了數(shù)據(jù)之間的相關(guān)性鲜漩。
DQN算法偽代碼:
在上述DQN中源譬,每次迭代時QQ值與Q-learningQ?learning的目標(biāo)值(目標(biāo)QQ值)之間存在相關(guān)性,因?yàn)樗鼈冇赏粋€QQ網(wǎng)絡(luò)預(yù)測產(chǎn)生孕似。因此踩娘,在2015年,2013年提出DQN的Volodymyr Mnih等人為消除上述的相關(guān)性喉祭,對DQN進(jìn)行了改進(jìn)养渴,提出了固定QQ函數(shù)的策略,即使用另外一個QQ網(wǎng)絡(luò)(稱為目標(biāo)QQ網(wǎng)絡(luò))來計算訓(xùn)練時的目標(biāo)函數(shù)值臂拓,目標(biāo)QQ網(wǎng)絡(luò)周期性地與QQ網(wǎng)絡(luò)進(jìn)行同步厚脉。
DQN方法的其他改進(jìn):
在這里就不對這些改進(jìn)方法進(jìn)行一一介紹了,有興趣的可以查看相關(guān)論文胶惰。
上面見了對價值函數(shù)進(jìn)行近似的參數(shù)化表達(dá)傻工,包括狀態(tài)價值函數(shù)和動作價值函數(shù),隨后一個策略可以直接從價值函數(shù)中產(chǎn)生,比如使用\epsilon -greedy??greedy探索方法中捆。但是鸯匹,如果動作集合是連續(xù)的或維數(shù)很高,這種方法將面臨問題泄伪。
這時殴蓬,可以直接參數(shù)化策略本身,同時參數(shù)化的策略將不再是一個概率集合而是一個函數(shù):
{\pi}_{\theta} = P[a|s,\theta]πθ?=P[a∣s,θ]
策略函數(shù)確定了在給定的狀態(tài)和一定的參數(shù)設(shè)置下蟋滴,執(zhí)行任何可能動作的概率染厅,事實(shí)上它是一個概率密度函數(shù)。在實(shí)際應(yīng)用策略產(chǎn)生動作時津函,是按照這個概率分布進(jìn)行動作采樣的肖粮。策略函數(shù)里的參數(shù)決定了概率分布的形態(tài)。
目的是利用參數(shù)化的策略函數(shù)尔苦,通過調(diào)整這些參數(shù)來得到一個較優(yōu)策略涩馆,遵循這個策略產(chǎn)生的行為將得到較多的獎勵。具體的機(jī)制是設(shè)計一個目標(biāo)函數(shù)允坚,對其使用梯度上升(Gradient Ascent)算法優(yōu)化參數(shù)以最大化獎勵魂那。
(1)目標(biāo)函數(shù)
目標(biāo):用一個參數(shù)\thetaθ建模策略{\pi}_{\theta}(s,a)πθ?(s,a),尋找最優(yōu)的參數(shù)\thetaθ稠项。
但是涯雅,如何尋找呢?
值函數(shù)近似時皿渗,優(yōu)化的目標(biāo)是使值函數(shù)的輸出接近目標(biāo)值斩芭。
策略梯度算法是通過最大化回報逼近最優(yōu)策略轻腺。
因此乐疆,我們需要設(shè)計一個目標(biāo)函數(shù)來評估策略的好壞。
針對不同的問題類型贬养,有3種典型的目標(biāo)函數(shù):
①挤土、Start Value
要有起始狀態(tài),并且能夠得到完整的episode误算,即在有限步之后能到達(dá)終止?fàn)顟B(tài)仰美。根據(jù)當(dāng)前的策略函數(shù)執(zhí)行動作可以得到的一個完整的episode,然后計算這個episode的累計回報值:
J_1(\theta)=V^{{\pi}_{\theta}}(s_1)=E_{{\pi}_{\theta}}[v_1]J1?(θ)=Vπθ?(s1?)=Eπθ??[v1?]
②儿礼、Average Value
對于連續(xù)環(huán)境條件咖杂,不存在一個起始狀態(tài),蚊夫,此時計算狀態(tài)價值的數(shù)學(xué)期望:即考慮智能體在某時刻處在某狀態(tài)下的概率,也就是智能體在該時刻的狀態(tài)分布壤圃,針對每個可能的狀態(tài)計算從該時刻開始一直持續(xù)與環(huán)境交互下去能夠得到的獎勵,按該時刻各狀態(tài)的概率分布求和:
J_{av}v(\theta)=\sum\limits_s d^{{\pi}_{\theta}}(s) V^{{\pi}_{\theta}}(s)Jav?v(θ)=s∑?dπθ?(s)Vπθ?(s)
其中伍绳,d^{{\pi}_{\theta}}dπθ?是在當(dāng)前策略下踊挠,馬爾可夫鏈關(guān)于狀態(tài)的一個靜態(tài)分布(stationary distribution)冲杀,可以理解為狀態(tài)ss出現(xiàn)的概率。
③权谁、Average Reward Per Time-Step(單步平均回報)
每執(zhí)行一個動作的立即回報的均值扁凛,即在各種狀態(tài)時,執(zhí)行各種動作的回報的概率求和闯传。
也就是說:在某一時刻,首先得到智能體處于所有狀態(tài)的可能性;
然后每一種狀態(tài)下執(zhí)行所有動作能夠得到的即時獎勵
最后所有獎勵按概率求和字币。
J_{av}R(\theta)=\sum\limits_s d^{{\pi}_{\theta}}(s) \sum\limits_a {{\pi}_{\theta}}(s,a) R_s^aJav?R(θ)=s∑?dπθ?(s)a∑?πθ?(s,a)Rsa?
其實(shí)上述三個式子的目標(biāo)都是同一個目標(biāo)洗出,都是試圖描述(衡量)智能體在某一時刻的價值图谷。
(2)目標(biāo)函數(shù)優(yōu)化
確定了目標(biāo)函數(shù)之后,接下來就是優(yōu)化策略參數(shù)使得目標(biāo)函數(shù)值最大化菠镇;也就是得到一組參數(shù)向量\thetaθ承璃,使得目標(biāo)函數(shù)最大。如果策略函數(shù)可到隘梨,則可以根據(jù)樣本計算目標(biāo)函數(shù)的梯度值舷嗡,用梯度上升法(因?yàn)橐竽繕?biāo)函數(shù)的極大值进萄,因此烦秩,要將梯度下降改為梯度上升)更新策略函數(shù)的參數(shù)郎仆。此時扰肌,問題的關(guān)鍵就變成了如何計算目標(biāo)函數(shù)對策略參數(shù)的梯度值。
策略梯度定理:
對于一個可導(dǎo)的策略函數(shù){\pi}_{\theta}πθ?盗舰,無論采用上述三種定義的哪種目標(biāo)函數(shù)桂躏,策略的梯度都可以寫為:
\nabla_{\theta}J(\theta)=E_{{\pi}_{\theta}} [{\nabla}_{\theta}log{{\pi}_{\theta}(s,a)}Q^{{\pi}_{\theta}}(s,a)]?θ?J(θ)=Eπθ??[?θ?logπθ?(s,a)Qπθ?(s,a)]
其中剂习,定義{\nabla}_{\theta}log{{\pi}_{\theta}(s,a)}?θ?logπθ?(s,a)為score函數(shù)。
(3)策略函數(shù)的構(gòu)造
策略函數(shù)的構(gòu)造對離散動作和連續(xù)動作有不同的處理失仁。
①们何、對于離散型動作冤竹,策略函數(shù)給出的是執(zhí)行每個動作的概率,所有動作的概率之和為1冒签。這可以看成是多分類問題片部,根據(jù)輸入的狀態(tài)確定要執(zhí)行的動作的類型档悠。通常采用Softmax策略望浩。
使用Softmax策略時磨德,可以把動作看成是多個特征在一定權(quán)重下的線性代數(shù)和:\phi (s,a)^{\top} \theta?(s,a)?θ吆视;
然后執(zhí)行某一具體動作的概率為:
{\pi _\theta }(s,a) = \frac{{{e^{\phi (s,a)}}^{\top}\theta }}{{\sum\limits_b {{e^{\phi (s,b) ^{\top}\theta }}} }}πθ?(s,a)=b∑?e?(s,b)?θe?(s,a)?θ?
②啦吧、對于連續(xù)型動作拙寡,無法將所有的動作都列舉出來,輸出執(zhí)行每個動作的概率值般堆,只能得到動作的概率密度函數(shù)诚啃。在運(yùn)行時,動作參數(shù)根據(jù)概率分布采樣得到和橙,即生成服從此分布的一個隨機(jī)數(shù)作為最后的動作參數(shù)造垛。通常采用高斯策略筋搏。
使用高斯策略時,通常對于均值有一個參數(shù)化表示俄周,可以是一些狀態(tài)特征的線性代數(shù)求和:
\mu (s) = \phi (s)^{\top} \thetaμ(s)=?(s)?θ
方差可以是固定值\sigma ^2σ2髓迎,也可以參數(shù)化表示排龄。
動作對應(yīng)于某一個具體的數(shù)值,該數(shù)值從以均值為\mu (s)μ(s)尺铣,標(biāo)準(zhǔn)差為\sigmaσ的高斯分布中隨機(jī)采樣產(chǎn)生:
a \sim N(\mu(s),{\sigma}^2)a~N(μ(s),σ2)
(4)蒙特卡洛策略梯度
針對具有完整episode的情況凛忿,應(yīng)用策略梯度定理竞川,使用隨機(jī)梯度上升來更新參數(shù)叁熔,然后通過采用的方式荣回,使用tt時刻的回報作為當(dāng)前策略下動作價值的無偏估計戈咳。
算法過程是這樣的:
①除秀、隨機(jī)初始化策略函數(shù)的參數(shù)\thetaθ;
②泳姐、對當(dāng)前策略下的一個episode:
\{s_1, a_1, r_2,...,s_{T-1}, a_{T-1},r_T \} \sim {\pi}_{\theta}{s1?,a1?,r2?,...,sT?1?,aT?1?,rT?}~πθ?
從t=1t=1到t=T-1t=T?1間的每一個時刻胖秒,計算智能體獲得的回報慕的;
③、使用隨機(jī)梯度上升更新參數(shù)\thetaθ风题;
④沛硅、重復(fù)每一個episode绕辖,直到結(jié)束仪际。
偽代碼如下所示:
(5) Actor-Critic算法
雖然Actor-Critic算法里用到了價值函數(shù)的近似,但是肯适,其核心還是策略梯度赴恨,所以直接在該策略梯度章節(jié)里講伦连。
Actor-Critic的字面意思是“演員-評論”,相當(dāng)于演員在演戲的同時有評論家指點(diǎn)繼而演員演得越來越好额港。
Actor-Critic包含兩部分:
①移斩、Actor:策略函數(shù)绢馍,負(fù)責(zé)產(chǎn)生動作舰涌;以Critic所指導(dǎo)的方向更新策略參數(shù)\thetaθ;
②朱躺、Critic:價值函數(shù)长搀,負(fù)責(zé)評價Actor產(chǎn)生的動作的好壞鸡典;更新動作價值函數(shù)參數(shù)\omegaω;
Actor-Critic的網(wǎng)絡(luò)結(jié)構(gòu)圖如下:
大致流程是:
①谁尸、Actor根據(jù)目前的狀態(tài)症汹,輸出一個動作贷腕,
②泽裳、Actor輸出的狀態(tài)和動作一起輸入到Critic中涮总,Critic如時序差分學(xué)習(xí)的策略評價方法,通過估計動作價值函數(shù)來對Actor輸出的動作進(jìn)行評價烹笔,并更新參數(shù)\omegaω;
③饰豺、Actor根據(jù)Critic輸出的動作價值函數(shù)冤吨,來更新自己的策略{\pi}_{\theta}(s)πθ?(s)的參數(shù)\thetaθ饶套;
這里給一個Actor-Critic的算法流程總結(jié)妓蛮,Critic使用神經(jīng)網(wǎng)絡(luò)計算TD誤差并更新網(wǎng)絡(luò)參數(shù),Actor也使用神經(jīng)網(wǎng)絡(luò)來更新網(wǎng)絡(luò)參數(shù)扔仓。
算法輸入:迭代輪數(shù)TT翘簇,狀態(tài)特征維度nn儿倒,動作集AA, 步長α,βα,β夫否,衰減因子γγ,探索率\epsilon?汞幢,Critic網(wǎng)絡(luò)結(jié)構(gòu)和Actor網(wǎng)絡(luò)結(jié)構(gòu)森篷;
輸出:Actor 網(wǎng)絡(luò)參數(shù)\thetaθ豺型,Critic網(wǎng)絡(luò)參數(shù)\omegaω姻氨;
1、隨機(jī)初始化所有的狀態(tài)和動作對應(yīng)的價值QQ前联, 隨機(jī)初始化Critic網(wǎng)絡(luò)的所有參數(shù)ww蛀恩。隨機(jī)初始化Actor網(wǎng)絡(luò)的所有參數(shù)\thetaθ茂浮。
2席揽、for?ii?from 1 to?TT幌羞,進(jìn)行迭代。
? a) 初始化SS為當(dāng)前狀態(tài)序列的第一個狀態(tài)熊痴,得到其特征向量\phi (S)?(S)果善;
b) 在Actor網(wǎng)絡(luò)中使用\phi(S)?(S)作為輸入,輸出動作AA系谐,基于動作AA得到新的狀態(tài)S′S′纪他,即時獎勵RR;
c) 在Critic網(wǎng)絡(luò)中分別使用\phi(S),\phi(S')?(S),?(S′)作為輸入梯刚,得到QQ值輸出V(S),V(S')V(S),V(S′)亡资;
? d) 計算TD誤差\delta = R+\gamma V(S')-V(S)δ=R+γV(S′)?V(S)沟于;
e) 使用均方差損失函數(shù){\sum {(R + \gamma V(S') - V(S,\omega ))} ^2}∑(R+γV(S′)?V(S,ω))2作Critic網(wǎng)絡(luò)參數(shù)\omegaω的梯度更新植康;
? f) 更新Actor網(wǎng)絡(luò)參數(shù)\thetaθ?:
\theta=\theta+\alpha{\nabla}_{\theta}log{\pi}_{\theta}(S_t,A)\deltaθ=θ+α?θ?logπθ?(St?,A)δ
(6)基于梯度策略的DRL分類
基于梯度策略的DRL分類如下:
在這里就不對各個方法進(jìn)行一一介紹了,有興趣的可以查看相關(guān)論文存崖。
本博客所有內(nèi)容僅供學(xué)習(xí)睡毒,不為商用演顾,如有侵權(quán)钠至,請聯(lián)系博主,謝謝屿脐。
[1]?David Silver強(qiáng)化學(xué)習(xí)公開課
[2]?David Silver強(qiáng)化學(xué)習(xí)公開課中文講解
[3] 機(jī)器學(xué)習(xí)原理的诵、算法與應(yīng)用佑钾,雷明
[4] 人工智能:一種現(xiàn)代的方法(第3版)
[5] An Introduction to Reinforcement Learning
[6] Algorithms for Reinforcement Learning
[7]?經(jīng)驗(yàn)回放(Experience replay)
[8] 基于值函數(shù)和策略梯度的深度強(qiáng)化學(xué)習(xí)綜述次绘,計算機(jī)學(xué)報邮偎,劉建偉、高峰豁跑、羅雄麟
[9] Playing Atari with Deep Reinforcement Learning艇拍,2013
[10] Human-level control through deep reinforcement learning卸夕,2015
[11]?Actor-Critic
] 人工智能:一種現(xiàn)代的方法(第3版)
[5] An Introduction to Reinforcement Learning
[6] Algorithms for Reinforcement Learning
[7]?經(jīng)驗(yàn)回放(Experience replay)
[8] 基于值函數(shù)和策略梯度的深度強(qiáng)化學(xué)習(xí)綜述快集,計算機(jī)學(xué)報,劉建偉乖寒、高峰楣嘁、羅雄麟
[9] Playing Atari with Deep Reinforcement Learning珍逸,2013
[10] Human-level control through deep reinforcement learning弄息,2015
[11]?Actor-Critic