(十三)從零開始學(xué)人工智能-強(qiáng)化學(xué)習(xí):值函數(shù)近似和策略梯度

強(qiáng)化學(xué)習(xí)–值函數(shù)近似和策略梯度

文章目錄

強(qiáng)化學(xué)習(xí)--值函數(shù)近似和策略梯度

1. 值函數(shù)近似

1.1 線性函數(shù)近似

1.1.1 狀態(tài)價值函數(shù)近似

1.1.2 動作價值函數(shù)近似

1.2 深度神經(jīng)網(wǎng)絡(luò)近似

2. 策略梯度

聲明

參考資料

前兩節(jié)內(nèi)容都是強(qiáng)化學(xué)習(xí)的一些基礎(chǔ)理論 ,只能解決一些中小規(guī)模的問題沪斟,實(shí)際情況下很多價值函數(shù)需要一張大表來存儲剖踊,獲取某一狀態(tài)或動作價值的時候通常需要一個查表操作柱蟀,這對于某些狀態(tài)或動作空間很大的問題幾乎無法求解蝎困,而許多實(shí)際問題擁有大量狀態(tài)或動作离赫,甚至是連續(xù)的狀態(tài)和動作。那么癞尚,如何解決實(shí)際問題呢舆驶?主要有兩種方法:值函數(shù)近似和策略梯度瞬铸。

1. 值函數(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)行一度程度地逼近操刀。

1.1 線性函數(shù)近似

1.1.1 狀態(tài)價值函數(shù)近似

用一個特征向量表示一個狀態(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?>帅容;

1.1.2 動作價值函數(shù)近似

動作價值函數(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策略护盈。

1.2 深度神經(jīng)網(wǎng)絡(luò)近似

在計算機(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)論文胶惰。

2. 策略梯度

上面見了對價值函數(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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末摹量,一起剝皮案震驚了整個濱河市缨称,隨后出現(xiàn)的幾起案子祝迂,更是在濱河造成了極大的恐慌型雳,老刑警劉巖纠俭,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件冤荆,死亡現(xiàn)場離奇詭異钓简,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)撤蚊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進(jìn)店門侦啸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來匹中,“玉大人顶捷,你說我怎么就攤上這事服赎。” “怎么了践付?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵永高,是天一觀的道長命爬。 經(jīng)常有香客問我饲宛,道長嗜价,這世上最難降的妖魔是什么久锥? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任奴拦,我火速辦了婚禮错妖,結(jié)果婚禮上暂氯,老公的妹妹穿的比我還像新娘。我一直安慰自己擎厢,他們只是感情好动遭,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布厘惦。 她就那樣靜靜地躺著宵蕉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪别智。 梳的紋絲不亂的頭發(fā)上薄榛,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天蛇数,我揣著相機(jī)與錄音,去河邊找鬼倚评。 笑死天梧,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的霞丧。 我是一名探鬼主播呢岗,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蛹尝!你這毒婦竟也來了后豫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤突那,失蹤者是張志新(化名)和其女友劉穎挫酿,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體早龟,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡惫霸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了葱弟。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片壹店。...
    茶點(diǎn)故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖芝加,靈堂內(nèi)的尸體忽然破棺而出硅卢,到底是詐尸還是另有隱情,我是刑警寧澤妖混,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布老赤,位于F島的核電站,受9級特大地震影響制市,放射性物質(zhì)發(fā)生泄漏抬旺。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一祥楣、第九天 我趴在偏房一處隱蔽的房頂上張望开财。 院中可真熱鬧,春花似錦误褪、人聲如沸责鳍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽历葛。三九已至,卻和暖如春嘀略,著一層夾襖步出監(jiān)牢的瞬間恤溶,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工帜羊, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留咒程,地道東北人。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓讼育,卻偏偏與公主長得像帐姻,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子奶段,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 以西瓜書為主線饥瓷,以其他書籍作為參考進(jìn)行補(bǔ)充,例如《統(tǒng)計學(xué)習(xí)方法》忧饭,《PRML》等 第一章 緒論 1.2 基本術(shù)語 ...
    danielAck閱讀 4,522評論 0 6
  • 深入淺出強(qiáng)化學(xué)習(xí)原理入門 第2章 馬爾可夫決策過程 馬爾可夫性扛伍, 當(dāng)前系統(tǒng)的下一個狀態(tài)僅與當(dāng)前狀態(tài)有關(guān),而與以往狀...
    迷途的Go閱讀 2,440評論 0 0
  • 算法和數(shù)據(jù)結(jié)構(gòu) [TOC] 算法 函數(shù)的增長 漸近記號 用來描述算法漸近運(yùn)行時間的記號词裤,根據(jù)定義域?yàn)樽匀粩?shù)集$N=...
    wxainn閱讀 1,064評論 0 0
  • 在C語言中,五種基本數(shù)據(jù)類型存儲空間長度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來閱讀 3,345評論 0 2
  • 講真刺洒,我從小就討厭寫作文鳖宾,寫作文的時候最喜歡模仿別人的文章,說好聽些叫借鑒逆航,其實(shí)是懶得動腦思考鼎文。 就這樣一直文筆也...
    tutu_靡閱讀 144評論 4 1