趙沛堯, 黃 蔚
(1.蘇州大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 江蘇 蘇州 215006; 2.蘇州大學(xué) 江蘇省計(jì)算機(jī)信息處理技術(shù)重點(diǎn)實(shí)驗(yàn)室 江蘇 蘇州 215006; 3.蘇州大學(xué) 東吳學(xué)院 江蘇 蘇州 215006)
強(qiáng)化學(xué)習(xí)屬于機(jī)器學(xué)習(xí)的一個(gè)分支,具有很強(qiáng)的通用性,可以被應(yīng)用于各個(gè)領(lǐng)域,如博弈論、控制論、運(yùn)籌學(xué)、遺傳算法等[1-3]。由于強(qiáng)化學(xué)習(xí)算法與動(dòng)態(tài)規(guī)劃[4-7]息息相關(guān),智能體所交互的環(huán)境通常使用馬爾可夫決策過(guò)程(Markov decision process,MDP)進(jìn)行建模。相比于傳統(tǒng)的控制算法,強(qiáng)化學(xué)習(xí)算法并不要求MDP的狀態(tài)轉(zhuǎn)移概率是已知的,因此可以適應(yīng)極其復(fù)雜的環(huán)境。與機(jī)器學(xué)習(xí)的另一個(gè)分支監(jiān)督學(xué)習(xí)不同的是,強(qiáng)化學(xué)習(xí)中沒(méi)有用來(lái)訓(xùn)練的輸入-輸出序列,所以無(wú)法像監(jiān)督學(xué)習(xí)一樣在每一個(gè)時(shí)間步精準(zhǔn)地評(píng)價(jià)智能體選擇的動(dòng)作是否正確。同時(shí),強(qiáng)化學(xué)習(xí)更強(qiáng)調(diào)與環(huán)境的交互及實(shí)時(shí)決策,需要考慮探索與利用的權(quán)衡問(wèn)題。為了促進(jìn)智能體的探索,通常采用ε-greedy策略,即在每個(gè)時(shí)間步下,智能體有ε的概率隨機(jī)選擇動(dòng)作,有1-ε的概率根據(jù)最優(yōu)策略選擇動(dòng)作。
智能體的最終目的就是最大化累積獎(jiǎng)勵(lì)值。強(qiáng)化學(xué)習(xí)同時(shí)兼顧了長(zhǎng)期獎(jiǎng)勵(lì)值與短期獎(jiǎng)勵(lì)值,它已經(jīng)成功地被應(yīng)用于各個(gè)領(lǐng)域,如自動(dòng)駕駛、機(jī)器人控制、調(diào)度問(wèn)題、通訊、圍棋等[5]。
強(qiáng)化學(xué)習(xí)算法主要分為基于值函數(shù)的算法與基于策略梯度的算法[8-11]。基于值函數(shù)的算法包括Q-learning、Sarsa、蒙特卡洛等,其基本思想是在學(xué)習(xí)過(guò)程中計(jì)算某個(gè)策略的期望獎(jiǎng)勵(lì)值,從而選擇估計(jì)值更高的策略,并最終收斂到一個(gè)最優(yōu)策略。Q-learning屬于典型的離線學(xué)習(xí)策略,Sarsa則屬于在線學(xué)習(xí)策略。傳統(tǒng)的基于值函數(shù)的算法可以很好地解決狀態(tài)動(dòng)作空間為離散的學(xué)習(xí)問(wèn)題,然而對(duì)于連續(xù)的環(huán)境,傳統(tǒng)算法會(huì)遭遇“維數(shù)災(zāi)難”問(wèn)題[12-16]。深度學(xué)習(xí)[17]作為機(jī)器學(xué)習(xí)的一個(gè)分支,具有強(qiáng)大的數(shù)據(jù)擬合能力,能夠從大規(guī)模的數(shù)據(jù)中尋找相應(yīng)的規(guī)律。因此研究人員將深度學(xué)習(xí)的數(shù)據(jù)處理能力和強(qiáng)化學(xué)習(xí)與環(huán)境進(jìn)行交互的能力結(jié)合起來(lái),提出了深度強(qiáng)化學(xué)習(xí)。研究人員提出了DQN模型[18],利用深度神經(jīng)網(wǎng)絡(luò)擬合與更新Q函數(shù),在復(fù)雜的雅達(dá)利游戲平臺(tái)上取得了超過(guò)人類專家的效果。由于原始的DQN只使用單個(gè)神經(jīng)網(wǎng)絡(luò),因此存在計(jì)算目標(biāo)值與更新神經(jīng)網(wǎng)絡(luò)依賴性過(guò)強(qiáng)的問(wèn)題,不利于神經(jīng)網(wǎng)絡(luò)的收斂。為了解決這一問(wèn)題,人們提出了NatureDQN,使用兩個(gè)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,在此基礎(chǔ)上,進(jìn)一步提出了DoubleDQN[19],解決了Q-learning固有的過(guò)估計(jì)問(wèn)題。同時(shí),為了提高樣本利用的效率,人們提出了prioritized replay DQN,優(yōu)先利用經(jīng)驗(yàn)池中重要性更高的樣本。DuelingDQN[20]增加了優(yōu)勢(shì)函數(shù)模塊,提升了模型的穩(wěn)定程度。強(qiáng)化學(xué)習(xí)算法的基于策略梯度算法是直接對(duì)參數(shù)化的策略空間進(jìn)行搜索,即對(duì)策略空間進(jìn)行求導(dǎo)來(lái)更新策略參數(shù)。
把強(qiáng)化學(xué)習(xí)的兩種算法結(jié)合起來(lái)便形成了演員-評(píng)論家(actor-critic,AC)算法,其中演員負(fù)責(zé)選擇動(dòng)作并與環(huán)境進(jìn)行交互,評(píng)論家用以評(píng)估動(dòng)作的好壞。AC算法是當(dāng)前強(qiáng)化學(xué)習(xí)中應(yīng)用最為廣泛的算法,在游戲、機(jī)器人控制等領(lǐng)域取得了良好的效果。研究人員也因此提出了針對(duì)AC的一系列改進(jìn)算法。異步梯度更新(asynchronous advantage actor-critic,A3C)[1]同時(shí)運(yùn)行多個(gè)線程與環(huán)境進(jìn)行交互,減少了經(jīng)驗(yàn)項(xiàng)之間的相關(guān)性,改善了收斂性。確定性策略梯度算法(deterministic deep policy gradient,DDPG),緩解了隨機(jī)策略樣本需求量過(guò)大的問(wèn)題。優(yōu)勢(shì)函數(shù)AC算法(advantage actor critic,A2C)使用優(yōu)勢(shì)函數(shù)代替了動(dòng)作值函數(shù),使得學(xué)習(xí)過(guò)程更加穩(wěn)定。對(duì)于深度強(qiáng)化學(xué)習(xí)算法來(lái)說(shuō),學(xué)習(xí)率的設(shè)置是一個(gè)至關(guān)重要的問(wèn)題:若學(xué)習(xí)率設(shè)置得過(guò)小則神經(jīng)網(wǎng)絡(luò)會(huì)收斂得很慢,若學(xué)習(xí)率設(shè)置得過(guò)大,則會(huì)造成學(xué)習(xí)不穩(wěn)定等問(wèn)題。基于信賴域的AC算法(trust region policy optimization,TRPO)在每一步的更新過(guò)程中添加了相應(yīng)的約束條件,保證了學(xué)習(xí)效果的穩(wěn)定提升。由于TRPO的計(jì)算量較大,近端策略優(yōu)化算法(proximal policy optimization,PPO)利用一階近似簡(jiǎn)化了計(jì)算量而保證了與TRPO相同的效果。由于PPO能夠?qū)崿F(xiàn)平穩(wěn)的學(xué)習(xí)過(guò)程,本文將在CMDP的基礎(chǔ)上實(shí)現(xiàn)平衡的強(qiáng)化學(xué)習(xí)。
傳統(tǒng)強(qiáng)化學(xué)習(xí)算法的目標(biāo)通常是針對(duì)單個(gè)目標(biāo)進(jìn)行優(yōu)化,然而現(xiàn)實(shí)生活中的控制規(guī)劃問(wèn)題通常都涉及若干個(gè)目標(biāo),并且各個(gè)目標(biāo)之間常常是相互沖突的。例如對(duì)于一個(gè)掃地機(jī)器人來(lái)說(shuō),其目標(biāo)是清潔盡可能多的面積同時(shí)降低電力損耗[10]。在設(shè)計(jì)通信網(wǎng)絡(luò)時(shí),由于網(wǎng)絡(luò)總的傳輸能力是有限的,設(shè)計(jì)者需要同時(shí)考慮數(shù)據(jù)傳輸效率與傳輸延遲這兩個(gè)目標(biāo)[12]。在自動(dòng)駕駛領(lǐng)域,設(shè)計(jì)汽車的自動(dòng)控制算法時(shí)要同時(shí)考慮能源效率、路徑規(guī)劃、駕駛員安全等因素。多目標(biāo)強(qiáng)化學(xué)習(xí)算法作為目前強(qiáng)化學(xué)習(xí)算法的一個(gè)分支可以用來(lái)解決涉及多個(gè)目標(biāo)的問(wèn)題,即同時(shí)對(duì)多個(gè)目標(biāo)進(jìn)行優(yōu)化。然而現(xiàn)實(shí)生活中人們通常只關(guān)心單個(gè)目標(biāo)是否最優(yōu)而其他目標(biāo)只需要保持在底線值之上。CMDP能更準(zhǔn)確地描述此類問(wèn)題。在CMDP中,受限算法的目標(biāo)是最優(yōu)化單個(gè)目標(biāo)并確保其他目標(biāo)高于某個(gè)具體的值。與MDP類似,CMDP對(duì)于每個(gè)目標(biāo)的狀態(tài)值定義為
該值函數(shù)為Bellman方程的解
V(S)=E[r(s,a)+V(S′)]。
目標(biāo)為最大化總體獎(jiǎng)勵(lì)值
在此基礎(chǔ)上,CMDP添加了額外的約束項(xiàng)
于是CMDP的目標(biāo)可以被描述為
多目標(biāo)強(qiáng)化學(xué)習(xí)利用不同的權(quán)重進(jìn)行學(xué)習(xí),因此會(huì)獲得多個(gè)策略,但是此種方案會(huì)消耗大量的計(jì)算資源?;诖?,本文提出通過(guò)動(dòng)態(tài)調(diào)整目標(biāo)與約束的相對(duì)權(quán)重來(lái)實(shí)現(xiàn)受限強(qiáng)化學(xué)習(xí)的算法。即利用一個(gè)初始權(quán)重構(gòu)造一個(gè)綜合目標(biāo),在學(xué)習(xí)過(guò)程中,在最優(yōu)化主目標(biāo)的同時(shí),不斷評(píng)估約束目標(biāo)是否得到了滿足:若某值滿足約束,則保持當(dāng)前權(quán)重;而若約束值沒(méi)有符合要求,則不斷提高約束值對(duì)應(yīng)的權(quán)重,此時(shí)智能體會(huì)更加傾向優(yōu)化約束值,從而促使約束值符合要求。傳統(tǒng)的CMDP模型是基于離散環(huán)境的,并不適用于連續(xù)的機(jī)器人環(huán)境。本文提出一種結(jié)合了CMDP算法與PPO算法的模型,稱為CRODP(constrained reward optimization with dynamic priority)。該模型以CMDP為基礎(chǔ),并引入PPO算法使其可以處理連續(xù)的環(huán)境,根據(jù)給定的約束學(xué)習(xí)一個(gè)滿足要求的策略。最后,在復(fù)雜的機(jī)器人環(huán)境中將該算法與固定權(quán)重獎(jiǎng)勵(lì)構(gòu)造算法進(jìn)行比較,實(shí)驗(yàn)結(jié)果驗(yàn)證了此算法的有效性。
利用拉格朗日松弛技巧[21-22],可以將原始的CMDP轉(zhuǎn)化為等價(jià)的無(wú)約束問(wèn)題,
(1)
λ為拉格朗日系數(shù),反映了約束值的優(yōu)先級(jí),當(dāng)系數(shù)不斷增大時(shí),算法更傾向于對(duì)此項(xiàng)進(jìn)行優(yōu)化。本文使用AC算法更新策略參數(shù)θ,同時(shí)在每個(gè)情節(jié)結(jié)束時(shí),根據(jù)約束條件的滿足情況來(lái)更新λ。算法的目標(biāo)是找到一個(gè)極值點(diǎn)(λ*,θ*),使得智能體能夠?qū)W習(xí)一個(gè)滿足約束的最優(yōu)策略。利用梯度法,更新式(1),
求出對(duì)λ與θ的梯度,
(2)
(3)
L對(duì)應(yīng)的λ與θ的更新公式為
(4)
(5)
其中:η1與η2為學(xué)習(xí)率;clip代表將每次更新后的參數(shù)值控制在某一范圍內(nèi),防止參數(shù)過(guò)大或者過(guò)小。同時(shí),為了減小訓(xùn)練過(guò)程中的方差,使用優(yōu)勢(shì)函數(shù)代替策略更新式(3)中的Q函數(shù)[1],
其中優(yōu)勢(shì)函數(shù)的計(jì)算為
其中:r(i)、rC(i)分別代表i時(shí)刻主目標(biāo)和約束的瞬時(shí)獎(jiǎng)勵(lì)值;γi代表折損系數(shù)。用υ表示AC框架中critic網(wǎng)絡(luò)的參數(shù),則υ的更新公式為
(6)
算法1動(dòng)態(tài)優(yōu)先級(jí)受限算法
輸入: 主目標(biāo)和約束項(xiàng)對(duì)應(yīng)的約束值α1、α2;λ、θ、υ更新對(duì)應(yīng)的學(xué)習(xí)率;初始化參數(shù)λ0、θ0、υ0;每一個(gè)episode的時(shí)間長(zhǎng)度T;訓(xùn)練的episode個(gè)數(shù)NUM_EPISODE。
輸出: 符合約束的最優(yōu)策略πθ。
1) R, R_c=[];
2) InitializeEnv();
3) CreateActorNetwork();
4) CreateCriticNetwork();
5) For i_episode in range(0, NUM_EPISODE):
6) For i_step in range(0, episode):
7) s ←env.observation();
8) a ←Actor.select_action(state);
9) Next_state, reward, c_reward←env.step(a);
10) R←R+[reward], R_c←R_c+[c_reward];
11) ret, ret_c ←CalRet(R, R_c);
12) v, v_c←Critic(state);
13) ad, ad_c←ret-v, ret_c-v_c;
14) Update_Actor(ad,ad_c);
15) Update_Critic(ad,ad_c);
16) i_step←i_step+1;
17) End For
18) update_lamda(R,R_c,λ);
19) i_episode=i_episode+1;
20) End For
由于AC算法本身屬于隨機(jī)策略[23],式(4)~(6)的每一步都會(huì)伴隨一定的誤差,所以可以重新表述為
(7)
(8)
(9)
其中:Mθ、Mλ與Mυ分別代表每一個(gè)式子中的誤差以及環(huán)境中的噪聲項(xiàng)。
式(7)~(9)可看作微分方程(10)的估計(jì)策略,
(10)
導(dǎo)數(shù)項(xiàng)為0的點(diǎn)對(duì)應(yīng)式(1)的極值點(diǎn)。在一定的前提條件下,基于式(7)~(9)的算法1能夠收斂到一個(gè)符合約束的可行解。
假設(shè)1式(1)的極值點(diǎn)或平衡點(diǎn)構(gòu)成的集合非空,并且每個(gè)極值點(diǎn)或者平衡點(diǎn)都為近似的可行解。
假設(shè)3式(7)~(9)迭代過(guò)程中每一步所積累的{Mθ}、{Mλ}與{Mυ}構(gòu)成了鞅序列,即E(Mθ,Mλ,Mυ)=0。
假設(shè)4在迭代過(guò)程中λ、θ、υ的值保持有界。
定理1微分方程(10)是適定的,即對(duì)于任意θ0、λ0、υ0,式(10)都有解,且方程的軌跡收斂于平衡點(diǎn)。
證明根據(jù)假設(shè)2,迭代公式的更新項(xiàng)是Lipschitz連續(xù)的,根據(jù)微分方程理論[13],式(10)是適定的。又根據(jù)假設(shè)4,λ、θ、υ的值保持有界,因此三者的軌跡在一個(gè)有界的區(qū)域內(nèi)擺動(dòng),在擺動(dòng)過(guò)程中必定會(huì)經(jīng)過(guò)平衡點(diǎn),并最終收斂。
定理2在另外兩個(gè)變量保持不變的前提下,式(7)~(9)每一步迭代構(gòu)成的{λn}、{θn}、{υn}分別循跡于微分方程(10)。
證明對(duì)于λ,在θ和υ保持不變的情況下,構(gòu)造線性插值函數(shù)為
可得
即迭代公式所對(duì)應(yīng)的插值函數(shù)會(huì)最終逼近微分方程對(duì)應(yīng)的函數(shù)[24],θ與υ同理。
證明因?yàn)棣?的值最大,所以式(9)相對(duì)于式(7)、(8)來(lái)說(shuō)收斂得更快,所以在每一步的迭代過(guò)程中,式(8)、(9)都將υ作為一個(gè)接近平穩(wěn)變化的量。而對(duì)于υ來(lái)說(shuō),式(7)、(8)每次更新的幅度更小,可以近似認(rèn)為λ與θ的值保持不變。同理可以推出在每一個(gè)變量迭代過(guò)程中,都可以近似認(rèn)為另外兩個(gè)變量保持不變,因此符合定理2的前提條件。
在基于PyBullet的機(jī)器人平臺(tái)上測(cè)試本算法,測(cè)試的4個(gè)機(jī)器人環(huán)境分別為:Ant、Humanoid、Hopper以及Walker2D。智能體需要控制4種不同形態(tài)的機(jī)器人,每種機(jī)器人都由不同數(shù)量的關(guān)節(jié)組成,智能體需要在每個(gè)時(shí)間步?jīng)Q定作用在各個(gè)關(guān)節(jié)上的扭矩以實(shí)現(xiàn)機(jī)器人的正常行走。在每個(gè)時(shí)間步智能體的狀態(tài)包含智能體重心的位置(若重心過(guò)低則認(rèn)為機(jī)器人已經(jīng)跌倒),各個(gè)關(guān)節(jié)之間的角度、角速度和機(jī)器人的行進(jìn)方向以及行進(jìn)速度。在訓(xùn)練過(guò)程中,智能體接受機(jī)器人當(dāng)前的狀態(tài),并根據(jù)神經(jīng)網(wǎng)絡(luò)的參數(shù)決定施加在機(jī)器人各個(gè)關(guān)節(jié)上的扭矩來(lái)對(duì)機(jī)器人進(jìn)行控制。機(jī)器人所涉及的目標(biāo)包括保持平穩(wěn)、靠近目的地、降低電力損耗、防止關(guān)節(jié)相互碰撞等。算法的學(xué)習(xí)目的即獲得合適的神經(jīng)網(wǎng)絡(luò)參數(shù),使得智能體在各種狀態(tài)下選擇能夠滿足上述目標(biāo)的動(dòng)作?;谄脚_(tái)上的比較結(jié)果見圖1。
圖1 機(jī)器人平臺(tái)上CROPD與獎(jiǎng)勵(lì)塑造方法的比較
在機(jī)器人實(shí)驗(yàn)平臺(tái)中,智能體的主要目標(biāo)為控制機(jī)器人的正常行走,同時(shí)實(shí)驗(yàn)環(huán)境也給每個(gè)關(guān)節(jié)動(dòng)作給出了電力損耗,機(jī)器人每次活動(dòng)的電力損耗為各個(gè)關(guān)節(jié)的電力損耗值之和,因此將機(jī)器人行走時(shí)的電力損耗值作為一個(gè)約束。根據(jù)各個(gè)機(jī)器人的構(gòu)造,其電力損耗的約束值如表1所示。
表1 機(jī)器人的電力損耗約束
選取電力損耗作為約束的原因是對(duì)于機(jī)器人來(lái)說(shuō),電力損耗與主要目標(biāo)之間是相互沖突的,即行走的距離越長(zhǎng),電力損耗越高。約束算法需要同時(shí)兼顧行走目標(biāo)與電力損耗,即要使電力損耗符合約束值,又要使機(jī)器人能夠正常行走,若算法過(guò)于偏向降低電力損耗,則有可能使得機(jī)器人無(wú)法正常行走。
本文將提出的算法與基于獎(jiǎng)勵(lì)塑造的算法進(jìn)行比較,獎(jiǎng)勵(lì)塑造算法固定了主目標(biāo)與電力損耗之間的權(quán)重λ。本文中令λ=0.3,λ=0.5,λ=0.7,分別代表主目標(biāo)優(yōu)先模式、默認(rèn)模式、約束優(yōu)先模式。本文中的算法都基于PPO,其中actor網(wǎng)絡(luò)與critic網(wǎng)絡(luò)的架構(gòu)相同,都由一個(gè)輸入層、一個(gè)64×64的全連接層、一個(gè)輸出層構(gòu)成。算法的其他參數(shù)設(shè)置為η1=1×10-7,η2=1×10-6,η3=1×10-4;情節(jié)數(shù)量T=2 000,每個(gè)情節(jié)的時(shí)間步數(shù)H=2 048;每個(gè)算法的實(shí)驗(yàn)次數(shù)N=20;實(shí)驗(yàn)的軟件環(huán)境為Ubuntu16.0,python版本為3.7,實(shí)驗(yàn)硬件為Nvidia 2080s。
根據(jù)圖1可知,在所有的4個(gè)環(huán)境中,本文提出的CROPD算法都找到了一個(gè)符合約束的近似可行解,即電力損耗值在約束線(圖中的虛線對(duì)應(yīng)于表1)附近,并且除了Walker2D環(huán)境,都能夠使機(jī)器人正常行走。機(jī)器人正常行走的含義是電力損耗值處在一個(gè)合理的數(shù)值區(qū)間,若電力損耗值過(guò)于接近0以及主目標(biāo)的獎(jiǎng)勵(lì)值過(guò)低,則說(shuō)明機(jī)器人無(wú)法正常移動(dòng)。從曲線圖中可知,默認(rèn)模式和主目標(biāo)優(yōu)先模式獎(jiǎng)勵(lì)對(duì)應(yīng)的算法都沒(méi)有給出一個(gè)可行策略,即機(jī)器人的電力損耗超過(guò)了給定的約束值。另一方面,約束優(yōu)先模式獎(jiǎng)勵(lì)對(duì)應(yīng)的算法由于約束過(guò)高,使得損耗值接近0而主目標(biāo)值過(guò)低,這意味著機(jī)器人無(wú)法正常行走。從實(shí)驗(yàn)結(jié)果還可以看出,獎(jiǎng)勵(lì)塑造算法只能抽象地規(guī)定主目標(biāo)與約束間的權(quán)重而無(wú)法滿足具體數(shù)值約束的要求。即使同一個(gè)權(quán)重,不同的機(jī)器人會(huì)表現(xiàn)出不同的行為。例如在Humanoid環(huán)境中,默認(rèn)模式和主目標(biāo)優(yōu)先模式獎(jiǎng)勵(lì)對(duì)應(yīng)的獎(jiǎng)勵(lì)值與約束值并沒(méi)有區(qū)別。因此,本文提出的算法能夠根據(jù)具體的約束值要求學(xué)習(xí)到一個(gè)合適的λ值。
本文提出的CRODP算法是基于CMDP的動(dòng)態(tài)調(diào)整約束與獎(jiǎng)勵(lì)之間的優(yōu)先級(jí)來(lái)實(shí)現(xiàn)受限強(qiáng)化學(xué)習(xí)的算法。實(shí)驗(yàn)證明,相比于預(yù)先規(guī)定約束與獎(jiǎng)勵(lì)之間的權(quán)重,本文提出的算法能夠更好地滿足不同環(huán)境下對(duì)于約束的具體要求,即在滿足約束的條件下保證智能體的正常運(yùn)行,尤其是在獎(jiǎng)勵(lì)與約束相互沖突的情況下。未來(lái)的工作計(jì)劃將一個(gè)約束擴(kuò)展到多個(gè)約束,使得智能體能夠在不同環(huán)境中自動(dòng)學(xué)習(xí)不同約束之間以及約束與獎(jiǎng)勵(lì)之間的權(quán)重。