劉川莉,蔡樂才,高 祥,居錦武,吳昊霖
(1.四川輕化工大學(xué)自動(dòng)化與信息工程學(xué)院,四川 自貢643000;2.人工智能四川省重點(diǎn)實(shí)驗(yàn)室,四川 自貢643000;3.宜賓學(xué)院,四川 宜賓644000;4.企業(yè)信息化與物聯(lián)網(wǎng)測(cè)控技術(shù)四川省高校重點(diǎn)實(shí)驗(yàn)室,四川 自貢643000;5.四川大學(xué)計(jì)算機(jī)學(xué)院,成都610065)
深度強(qiáng)化學(xué)習(xí)作為人工智能領(lǐng)域一個(gè)新的并且最活躍的研究熱點(diǎn),得到了廣泛的關(guān)注和長期的發(fā)展[1]。近年來,深度學(xué)習(xí)(Deep Learning,DL)作為機(jī)器學(xué)習(xí)領(lǐng)域一個(gè)研究熱點(diǎn)[2],其基本思想是對(duì)于多層的網(wǎng)絡(luò)結(jié)構(gòu),通過非線性變化,結(jié)合底層特征,形成容易區(qū)分、抽象的高層表示,以便于發(fā)現(xiàn)數(shù)據(jù)特征表示[3]。強(qiáng)化學(xué)習(xí)(Reinforcement Learning,RL)是機(jī)器學(xué)習(xí)領(lǐng)域另一個(gè)分支[4]。強(qiáng)化學(xué)習(xí)又稱為評(píng)價(jià)學(xué)習(xí)、再勵(lì)學(xué)習(xí)[5],在一些任務(wù)中,需要利用深度學(xué)習(xí)來學(xué)習(xí)大規(guī)模的數(shù)據(jù)表征,并根據(jù)此表征進(jìn)行自我激勵(lì)的強(qiáng)化學(xué)習(xí),以達(dá)到優(yōu)化策略。深度強(qiáng)化學(xué)習(xí)(Deep Reinforcement Learning,DRL)應(yīng)運(yùn)而生,它使用深度學(xué)習(xí)來擬合強(qiáng)化學(xué)習(xí)中與確定動(dòng)作策略有關(guān)的參數(shù),如值函數(shù),其本質(zhì)是強(qiáng)化學(xué)習(xí)算法的一個(gè)發(fā)展。深度強(qiáng)化學(xué)習(xí)被認(rèn)為是實(shí)現(xiàn)通用人工智能的重要途徑[6],因其通用性在眾多領(lǐng)域中受到推崇,如機(jī)器人手臂控制、參數(shù)優(yōu)化[6]、機(jī)器人控制[7-9]、機(jī)器視覺[10]、游戲[11]等。
2015年,Mnih等人[12]提出了深度Q神經(jīng)網(wǎng)絡(luò)(Deep Q-Network,DQN)算法,該算法采用神經(jīng)網(wǎng)絡(luò)來逼近值函數(shù),實(shí)現(xiàn)了使用少量的先驗(yàn)知識(shí)完成端對(duì)端的自主學(xué)習(xí)任務(wù)。在DQN算法中,通常使用的是Q-learning算法,該算法以下一個(gè)狀態(tài)最大的動(dòng)作值函數(shù)作更新目標(biāo),表面上看似短期內(nèi)會(huì)直接向“貪婪”的方向收斂,其實(shí)際可能不是以長期回報(bào)作為最大方向。針對(duì)此問題,采用期望值思想求解的期望值函數(shù)取代深度Q神經(jīng)網(wǎng)絡(luò)算法中最大動(dòng)作值函數(shù)作為更新目標(biāo),提出了基于期望值函數(shù)的離策略DQN算法(DQN Based on Expected Value Function,EVDQN)。
強(qiáng)化學(xué)習(xí)按照評(píng)估策略和行為策略是否一致可以分為兩種:在策略(on-policy)強(qiáng)化學(xué)習(xí)算法和離策略(off-policy)強(qiáng)化學(xué)習(xí)算法[13]。強(qiáng)化學(xué)習(xí)最終是以迭代的基本思想持續(xù)不斷地基于行為策略產(chǎn)生動(dòng)作并作用于環(huán)境,在環(huán)境中對(duì)產(chǎn)生的策略進(jìn)行評(píng)估并用于更新值函數(shù),以達(dá)到獲得最為穩(wěn)定的策略輸出。
時(shí)間差分學(xué)習(xí)(Temporal-Difference learning,TD learning)結(jié)合了動(dòng)態(tài)規(guī)劃算法(DP)和蒙特卡羅方法(MC)兩種算法的優(yōu)點(diǎn)。蒙特卡羅狀態(tài)值函數(shù)更新表示為:
其中:Rt是每一個(gè)episode結(jié)束以后獲得的實(shí)際累積回報(bào);α是學(xué)習(xí)率,利用實(shí)際累積回報(bào)Rt當(dāng)作是狀態(tài)值函數(shù)V(st)的估計(jì)值。也就是針對(duì)每一個(gè)episode,先得到實(shí)際回報(bào)和當(dāng)前狀態(tài)值函數(shù)的偏差,利用該偏差值乘以學(xué)習(xí)率α來更新得到V(st)新的估計(jì)值。
將公式(1)中Rt更換成rt+1+γV(st+1),得到了時(shí)間差分學(xué)習(xí)的狀態(tài)值函數(shù)更新公式:
在策略強(qiáng)化學(xué)習(xí)方法主要特點(diǎn)是用于評(píng)估和改進(jìn)策略的評(píng)估策略(Estimation Policy)和用于產(chǎn)生動(dòng)作的行為策略(Behavior Policy)是同一個(gè)策略[14]。Sarsa算法屬于on-policy算法[15],Sarsa算法估計(jì)的是動(dòng)作值函數(shù)而不是狀態(tài)值函數(shù),一個(gè)狀態(tài)-動(dòng)作對(duì)序列片段以及相應(yīng)回報(bào)值如圖1所示。
圖1 狀態(tài)-動(dòng)作對(duì)序列片段相應(yīng)回報(bào)值
Sarsa算法動(dòng)作值函數(shù)的更新表示為[16]:
其中,針對(duì)每一個(gè)非終止?fàn)顟B(tài)St,當(dāng)下一個(gè)狀態(tài)到達(dá)后,都用公式(3)更新Q(st,at),如果St是終止?fàn)顟B(tài),則表示當(dāng)前迭代完畢。由于動(dòng)作值函數(shù)的每次更新都與st,at,at+1,st+1有關(guān),所以該算法被命名為Sarsa算法,也就是說Agent在狀態(tài)執(zhí)行動(dòng)作獲得動(dòng)作值函數(shù),狀態(tài)轉(zhuǎn)移到st+1;接著Agent在狀態(tài)執(zhí)行動(dòng)作得到動(dòng)作值函數(shù);最后使用下一狀態(tài)動(dòng)作值函數(shù)更新當(dāng)前狀態(tài)動(dòng)作值函數(shù)。
在實(shí)際問題中,會(huì)面臨復(fù)雜性較高的決策問題,這就使得在策略學(xué)習(xí)算法無法進(jìn)行求解,此時(shí)需要用到離策略強(qiáng)化學(xué)習(xí)算法。離策略算法通過遵循另一個(gè)策略(行為策略)來估計(jì)某一個(gè)策略的值函數(shù)(評(píng)估策略)。離策略算法可以看作是基于在策略算法的一個(gè)改進(jìn)。離策略方法中最為常用的算法是Q-learning算法,它選取動(dòng)作時(shí)遵循的策略與動(dòng)作值函數(shù)更新時(shí)的策略不同。Q-learning算法的動(dòng)作值函數(shù)更新表示為:
Sarsa算法和Q-learning算法最大的不同點(diǎn)在于更新Q值的時(shí)候,Q-learning算法采用了Q(st+1,a)值的最大動(dòng)作,也就是直接使用了最大Q(st+1,a)的值,并且選取動(dòng)作at時(shí)采用的策略與當(dāng)前執(zhí)行的策略沒有任何關(guān)系。
同理,動(dòng)作值函數(shù)的遞推關(guān)系式為:
深度Q神經(jīng)網(wǎng)絡(luò)算法是通過Q-learning使用reward來構(gòu)造標(biāo)簽,通過經(jīng)驗(yàn)回放(Experience Replay)的方法將系統(tǒng)探索環(huán)境得到的數(shù)據(jù)儲(chǔ)存起來,隨機(jī)采樣樣本更新深度神經(jīng)網(wǎng)絡(luò)的參數(shù),可以解決相關(guān)性及非靜態(tài)分布問題。
從式(3)可以看出,在策略(on-policy)的更新方式除了使用當(dāng)前狀態(tài)st、當(dāng)前狀態(tài)執(zhí)行動(dòng)作at、下一狀態(tài)st+1以及當(dāng)前狀態(tài)st執(zhí)行動(dòng)作at所獲得的立即回報(bào)rt以外,還需要在下一狀態(tài)st+1執(zhí)行的動(dòng)作at+1用于滿足使用實(shí)際的行為策略進(jìn)行評(píng)估策略工作。在策略算法是一種單步更新法,在環(huán)境中每走一步,更新一次自己的行為準(zhǔn)則。在策略方法訓(xùn)練使用五元組Transition<st,at,st+1,at+1,done>,而該五元組需要進(jìn)行兩次動(dòng)作才可以獲得。
“經(jīng)驗(yàn)回放”方法可以消除相關(guān)性,而經(jīng)驗(yàn)池獲取樣本的方式是每執(zhí)行一次動(dòng)作策略便存儲(chǔ)五元組,該種機(jī)制明顯不適合在策略方法。因此將DQN算法應(yīng)用于在策略方法中是沒有意義且不可行的。
DQN算法中另外一個(gè)重要的改進(jìn)是增加了一個(gè)直接與目標(biāo)值函數(shù)有關(guān)的神經(jīng)網(wǎng)絡(luò),使用原逼近值函數(shù)的神經(jīng)網(wǎng)絡(luò)參數(shù)來評(píng)估下一個(gè)狀態(tài)的動(dòng)作值函數(shù)Q(s′,a′;w-),通過下一個(gè)狀態(tài)的動(dòng)作值函數(shù)Q(s′,a′;w-)為Q-network提供一個(gè)較為穩(wěn)定的訓(xùn)練目標(biāo)。經(jīng)過足夠多的訓(xùn)練后,可以使學(xué)習(xí)得到有效的動(dòng)作策略,最小化了損失函數(shù)。
在DQN算法中,將Q-network的訓(xùn)練目標(biāo)來定義Q-learning算法的迭代目標(biāo)函數(shù):
式(7)使用了下一狀態(tài)最大的動(dòng)作值函數(shù)提供訓(xùn)練目標(biāo)。該方法使用最典型的離策略Q-learning算法的思想來為Q-network提供訓(xùn)練目標(biāo)。使用該訓(xùn)練目標(biāo)減去在當(dāng)前狀態(tài)所執(zhí)行動(dòng)作的動(dòng)作值函數(shù)獲得均方誤差,其形式為:
Q-learning算法相對(duì)于Sarsa算法來說要大膽一些,因?yàn)镼-learning算法永遠(yuǎn)都想著max Q最大化,正是由于這個(gè)max Q所以變得貪婪,不會(huì)再去考慮其他非max Q的結(jié)果。Q-learning算法可以理解為是貪婪的、大膽的算法。因此,離策略最終還是不利于獲得長期回報(bào)。
離策略在“探索”階段,直接逼近最優(yōu)動(dòng)作值函數(shù)的方法有傾向于“激進(jìn)”策略的可能性,不利于獲得長期回報(bào)?;诖?,提出一種基于期望值函數(shù)的離策略深度Q神經(jīng)網(wǎng)絡(luò)改進(jìn)方法(Off-Policy Based on Expected Value Function,EVDQN)。
神經(jīng)網(wǎng)絡(luò)Target-network根據(jù)當(dāng)前狀態(tài)st執(zhí)行策略所確定的動(dòng)作at來獲得下一狀態(tài)st+1,去逼近下一個(gè)狀態(tài)-動(dòng)作值函數(shù)Q(st+1,a)。在DQN算法中,由于神經(jīng)網(wǎng)絡(luò)需要進(jìn)行足夠多的訓(xùn)練,所以一般在動(dòng)作策略中使用ε-貪婪策略。通過ε-貪婪策略和各動(dòng)作方向動(dòng)作值函數(shù)Q(st+1,a)的期望可以估算出下一狀態(tài)st+1的狀態(tài)值函數(shù)V∧(st+1)。其具體形式為:
將式(9)得到的結(jié)果代入DQN算法的迭代目標(biāo)函數(shù)中,可以得到一個(gè)新的逼近目標(biāo):
那么此時(shí)新的逼近目標(biāo)函數(shù)的神經(jīng)網(wǎng)絡(luò)訓(xùn)練的損失函數(shù)表達(dá)式為:
其中,outputDQN(s,aΔ;w)神經(jīng)網(wǎng)絡(luò)在aΔ維度上的輸出,aΔ為當(dāng)前樣本中所執(zhí)行的某一具體動(dòng)作策略;在經(jīng)過訓(xùn)練之后,可認(rèn)為是在aΔ維度上的逼近目標(biāo),r+γV∧(st+1)是上述基于期望值函數(shù)的新的逼近目標(biāo)。
式(10)所示的逼近目標(biāo)在形式上可以看作是通過式(3)所估計(jì)的下一個(gè)狀態(tài)的期望狀態(tài)值函數(shù)。在DQN算法中使用的是式(11)所示的均方差計(jì)算方法,使用逼近目標(biāo)減去執(zhí)行動(dòng)作方向aΔ的神經(jīng)網(wǎng)絡(luò)輸出[17]。式(10)中,由于神經(jīng)網(wǎng)絡(luò)所使用的逼近目標(biāo)為根據(jù)下一狀態(tài)的狀態(tài)值函數(shù)V∧(s+1)的迭代近似值r+γV∧(st+1),所以不斷通過式(11)所示的均方誤差更新神經(jīng)網(wǎng)絡(luò)參數(shù),最終神經(jīng)網(wǎng)絡(luò)輸出的是當(dāng)前狀態(tài)的狀態(tài)值函數(shù)V∧(st)。
DQN神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
從圖2中可知,在實(shí)際的DQN算法訓(xùn)練過程中實(shí)際參與的僅在當(dāng)前狀態(tài)st具有執(zhí)行動(dòng)作aΔ維度上的輸出,又由于采用隨機(jī)策略方式,所以每次狀態(tài)st會(huì)執(zhí)行不同的動(dòng)作,最終導(dǎo)致每次參與訓(xùn)練的動(dòng)作維度不同,繼而使得神經(jīng)網(wǎng)絡(luò)在狀態(tài)st上每個(gè)動(dòng)作維度的輸出均不相同。因此可以認(rèn)為通過V∧(st+1)逼近所得的V∧(st)是在某一方向上的狀態(tài)值函數(shù),即可近似認(rèn)為神經(jīng)網(wǎng)絡(luò)輸出的是動(dòng)作值函數(shù)Q∧(st,aΔ)。
圖2 離策略改進(jìn)方法神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)示意圖
為進(jìn)一步說明,假設(shè)在當(dāng)前狀態(tài)st,基于策略執(zhí)行動(dòng)作a1到達(dá)下一狀態(tài)st+1,得到立即回報(bào)r,并且將Transition<st,a1,r,st+1,done>存入經(jīng)驗(yàn)池。在此后的某次訓(xùn)練,同樣在狀態(tài)st基于策略執(zhí)行其他動(dòng)作a2到達(dá)另一個(gè)下一狀態(tài)s′t+1,得到立即回報(bào)r′,并且Transition<st,a2,r′,s′t+1,done>也存入經(jīng)驗(yàn)池。在使用“經(jīng)驗(yàn)回放”方法隨機(jī)抽取樣本的過程中,當(dāng)抽取到樣本Transition<st,a1,r,st+1,done>時(shí)根據(jù)式(11)更新神經(jīng)網(wǎng)絡(luò);由于DQN神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)在參數(shù)更新時(shí)采用one-h(huán)ot形式,只針對(duì)a1維度上的輸出代入式(11)進(jìn)行參數(shù)更新,使得在狀態(tài)st時(shí)神經(jīng)網(wǎng)絡(luò)的輸出中在動(dòng)作a1的維度上所獲得期望狀態(tài)值函數(shù)更加準(zhǔn)確。同理當(dāng)隨機(jī)抽取到樣本Transition<st,a2,r′,s′t+1,done>時(shí),DQN神經(jīng)網(wǎng)絡(luò)也只將a2維度上輸出代入式(11)使得以狀態(tài)s′t為輸入的神經(jīng)網(wǎng)絡(luò)的輸出中在動(dòng)作a2的維度上所獲得期望狀態(tài)值函數(shù)更加準(zhǔn)確。由于上述兩次訓(xùn)練所獲得的立即回報(bào)r不同,參與訓(xùn)練的輸出維度也不同,所以經(jīng)過不斷的訓(xùn)練,神經(jīng)網(wǎng)絡(luò)在維度a1和維度a2的輸出值也必然不同。
此外,神經(jīng)網(wǎng)絡(luò)的每個(gè)輸出在形式上根據(jù)式(1)和式(11)可視為是在逼近狀態(tài)值函數(shù)V∧(st)。但根據(jù)上述內(nèi)容可知,神經(jīng)網(wǎng)絡(luò)在狀態(tài)st上每個(gè)動(dòng)作維度的輸出均不相同(圖2)。由于在同樣的狀態(tài)st上,每個(gè)動(dòng)作維度的值函數(shù)V∧(st;w)。均表示在狀態(tài)st執(zhí)行相應(yīng)動(dòng)作的好壞程度,其作用和動(dòng)作值函數(shù)相同,也可以用于衡量動(dòng)作策略確定。因此,式(11)實(shí)際上是將神經(jīng)網(wǎng)絡(luò)的逼近目標(biāo)設(shè)置為動(dòng)作值函數(shù)Q∧(st,a;w)。
綜上所述,在每次訓(xùn)練中,實(shí)際上總是使用執(zhí)行某動(dòng)作aΔ得到的逼近目標(biāo)與當(dāng)前狀態(tài)上該動(dòng)作aΔ的神經(jīng)網(wǎng)絡(luò)輸出的該動(dòng)作維度的值函數(shù)均方誤差來更新神經(jīng)網(wǎng)絡(luò)Q-network的參數(shù);經(jīng)過若干次訓(xùn)練之后,Q-network神經(jīng)網(wǎng)絡(luò)在每個(gè)狀態(tài)st所對(duì)應(yīng)的動(dòng)作值函數(shù)都逐漸逼近基于下一狀態(tài)st+1的動(dòng)作值函數(shù)Q∧(st+1,a;w-)的訓(xùn)練目標(biāo),而Q∧(st+1,a;w-)由 定 期 復(fù) 制Q-network參 數(shù) 的Target-network神經(jīng)網(wǎng)絡(luò)所輸出。
基于期望值函數(shù)的離策略DQN算法(EVDQN)初始化經(jīng)驗(yàn)回放緩存空間D,并設(shè)置經(jīng)驗(yàn)回放緩存空間為N初始化DQN神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)中的Q-network的參數(shù)初始化DQN神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)中的Target-network的參數(shù)即令θ-=θ for episode=1,2,...,M do 初始化狀態(tài)St=S0 for STEP=1,2,...,m∩step?。絊terminal do 根據(jù)Q-network得到Q(St,a) 根據(jù)ε-貪婪策略確定在當(dāng)前狀態(tài)st的動(dòng)作策略at π(a s)=arg max a Q(st,a),if q>ε arandom,{ otherwise 執(zhí)行動(dòng)作at并得到立即回報(bào)r和下一狀態(tài)st+1
將st,at,r,st+1存儲(chǔ)到經(jīng)驗(yàn)回放緩存D 令st,st+1 令iter=iter+1 if iter%train_period=0 從經(jīng)驗(yàn)回放緩存D中隨機(jī)選取數(shù)量為 Batch的訓(xùn)練集<st,at,r,st+1> 分別得到Q-network和Target-network的輸出 Q(st,at;θ)和Q(st+1,a;θ-) 根據(jù)式(5)~式(6)獲得在下一狀態(tài)St+1所獲得狀態(tài)值函數(shù)V∧(st+1) V∧(st+1)=Q(st+1,agreedy;θ-)1-2ε1-ε( )()A +∑a∈AQ(st+1,a;θ-)ε1-ε( )A 根據(jù)式(5)~式(8)采用隨機(jī)梯度方法訓(xùn)練Q-network的參數(shù)θ L(wp)=E[(r+γ^V(st+1)-Q(s,aΔ;w))2] end if if iter%update_period=0 更新Target-network的參數(shù),即令θ-=θ end if end end
為了驗(yàn)證期望值函數(shù)的離策略DQN算法能夠較快地得到回報(bào)較高的動(dòng)作策略和更高的穩(wěn)定性,以及EVDQN算法的有效性,在基于OpenAI Gym的CartPole環(huán)境和Acrobot環(huán)境中進(jìn)行實(shí)驗(yàn)分析。
實(shí)驗(yàn)采用兩個(gè)相同的神經(jīng)網(wǎng)絡(luò),Q-network神經(jīng)網(wǎng)絡(luò)和Target-network神經(jīng)網(wǎng)絡(luò)。并且神經(jīng)網(wǎng)絡(luò)設(shè)置有兩個(gè)隱含層,最后一層是輸出為動(dòng)作空間維度A的輸出層。將Q-network與Target-network分別運(yùn)用于DQN算法和EVDQN算法,實(shí)驗(yàn)開始前的初始參數(shù)均采用正態(tài)分布的隨機(jī)初始化。
將兩種算法所獲得策略的性能進(jìn)行對(duì)比,兩種算法的情節(jié)數(shù)均設(shè)置為300。在ε-貪婪策略中使用動(dòng)態(tài)變化的ε:將其初始值設(shè)置1.0,此時(shí)Agent處于“探索與利用”的“探索階段”,完全按照隨機(jī)策略確定動(dòng)作;隨著訓(xùn)練的進(jìn)行,當(dāng)ε大于0.001時(shí),按照式(12)進(jìn)行數(shù)值更新:
式中,SUM為設(shè)置的總訓(xùn)練情節(jié)數(shù),step為訓(xùn)練的情節(jié)數(shù),fa為設(shè)置的加速因子。因?yàn)橛辛思铀僖蜃拥拇嬖?,加快了ε進(jìn)入“利用階段”的速度。本實(shí)驗(yàn)采用的是定期更新的方法,設(shè)置周期為100次,即Agent通過執(zhí)行動(dòng)作完成狀態(tài)轉(zhuǎn)移100次。
在實(shí)驗(yàn)中,設(shè)置了訓(xùn)練階段每情節(jié)所獲得的回報(bào)、訓(xùn)練回報(bào)、測(cè)試回報(bào)三個(gè)參數(shù)對(duì)不同算法的性能進(jìn)行判斷。訓(xùn)練階段每情節(jié)所獲回報(bào)表示的是在訓(xùn)練過程中,記錄Agent在CartPole環(huán)境中每情節(jié)從初始狀態(tài)到終止?fàn)顟B(tài)所經(jīng)歷的步數(shù)(在本實(shí)驗(yàn)環(huán)境下即該情節(jié)學(xué)習(xí)所獲回報(bào)的直接疊加)。
訓(xùn)練回報(bào)是在訓(xùn)練中,記錄Agent在CartPole環(huán)境中從初始狀態(tài)到終止?fàn)顟B(tài)經(jīng)歷的步數(shù)(在本實(shí)驗(yàn)環(huán)境下即每一情節(jié)學(xué)習(xí)收獲的累積回報(bào)進(jìn)行疊加)。每一情節(jié)訓(xùn)練的初始狀態(tài)和終止?fàn)顟B(tài)的具體設(shè)置均由CartPole環(huán)境所決定,在CartPole-v0實(shí)驗(yàn)環(huán)境中,終止?fàn)顟B(tài)指實(shí)驗(yàn)次數(shù)達(dá)到200次和判定實(shí)驗(yàn)為失?。ㄖ绷U觸碰到黑線的情況)兩種情況。
測(cè)試回報(bào)是在訓(xùn)練一定的次數(shù)后,開展的10次測(cè)試實(shí)驗(yàn)。測(cè)試實(shí)驗(yàn)中Agent直接使用貪婪策略確定動(dòng)作,記錄每次實(shí)驗(yàn)所執(zhí)行的步數(shù),然后將10次測(cè)試實(shí)驗(yàn)的結(jié)果分別保存。進(jìn)行測(cè)試實(shí)驗(yàn)的訓(xùn)練次數(shù)周期設(shè)置為5情節(jié)。此外,測(cè)試實(shí)驗(yàn)所獲得的實(shí)驗(yàn)樣本并不放入經(jīng)驗(yàn)池參與訓(xùn)練,以避免額外干擾。測(cè)試實(shí)驗(yàn)的仿真環(huán)境使用CartPole-v1,其最大終止步數(shù)為500;訓(xùn)練階段所使用的CartPole-v0實(shí)驗(yàn)環(huán)境的最大終止步數(shù)為200。
仿真實(shí)驗(yàn)中強(qiáng)化學(xué)習(xí)算法相關(guān)的參數(shù)設(shè)置見表1。
表1 強(qiáng)化學(xué)習(xí)算法相關(guān)參數(shù)設(shè)置
在兩種算法中,都包含了深度Q神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),其中的Q-network通過優(yōu)化算法不斷更新參數(shù)(如隨機(jī)梯度下降算法),Target-network的參數(shù)是通過直接復(fù)制Q-network參數(shù)獲得。Q-network是在每一個(gè)步驟后進(jìn)行訓(xùn)練;將Target-network參數(shù)的更新周期設(shè)置為500,以便Agent能夠更好地進(jìn)行學(xué)習(xí)。在“經(jīng)驗(yàn)回放”方法中將經(jīng)驗(yàn)緩存的大小設(shè)置為10 000。使用RMSProp優(yōu)化方法進(jìn)行神經(jīng)網(wǎng)絡(luò)的參數(shù)訓(xùn)練,其學(xué)習(xí)率設(shè)置為0.0005,且每批隨機(jī)取出的樣本數(shù)為32。在CartPole環(huán)境中,動(dòng)作空間的維度為2,所以將所有神經(jīng)網(wǎng)絡(luò)的輸出層神經(jīng)元個(gè)數(shù)均設(shè)置為2,保證每個(gè)動(dòng)作對(duì)應(yīng)輸出一個(gè)相應(yīng)的動(dòng)作值函數(shù)或信息強(qiáng)度。相關(guān)參數(shù)設(shè)置見表2。
表2 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)設(shè)置
在上述仿真實(shí)驗(yàn)環(huán)境中,分別采用DQN算法和EVDQN算法進(jìn)行對(duì)比實(shí)驗(yàn),其實(shí)驗(yàn)結(jié)果如圖3所示。從圖3中可知,兩種算法經(jīng)過有限訓(xùn)練,最后都能夠通過學(xué)習(xí)得到有效策略,但EVDQN算法較DQN算法來說容易獲得更高的累積回報(bào)。
圖3 CartPole實(shí)驗(yàn)每幕所獲回報(bào)結(jié)果圖
訓(xùn)練階段累積回報(bào)結(jié)果如圖4所示,圖中對(duì)比顯示了兩種算法學(xué)習(xí)的總體情況,兩條斜線的斜率分別表示兩種算法累積回報(bào)的增加量。從圖4可知,訓(xùn)練情節(jié)數(shù)大于100后,累積回報(bào)開始出現(xiàn)差異。整體來說,在整個(gè)訓(xùn)練階段EVDQN算法所獲得的累積回報(bào)要高于DQN算法。
圖4 CartPole實(shí)驗(yàn)訓(xùn)練階段累積回報(bào)結(jié)果圖
圖5 為每經(jīng)過5幕訓(xùn)練,使用貪婪策略進(jìn)行10次測(cè)試實(shí)驗(yàn)所累計(jì)的回報(bào)情況。從圖5可知,EVDQN算法測(cè)試?yán)鄯e回報(bào)的斜率增長明顯早于DQN算法,說明EVDQN算法可更先學(xué)習(xí)到能獲得更高回報(bào)的策略。且最終EVDQN算法曲線的斜率要高于DQN算法,說明使用EVDQN算法能獲得更好的策略。
圖5 CartPole實(shí)驗(yàn)測(cè)試階段累積回報(bào)結(jié)果圖
在Acrobot環(huán)境中使用DQN算法和使用EVDQN算法所得到的每一幕回報(bào)總數(shù)如圖6所示。
從圖6可知,EVDQN算法性能提升較為明顯,所以比DQN算法能更快地學(xué)習(xí)到有效策略,且EVDQN算法采用基于動(dòng)作策略和動(dòng)作值函數(shù)的期望的訓(xùn)練目標(biāo),相比于采用最大動(dòng)作值函數(shù)的DQN算法,其穩(wěn)定性也更好。
圖6 Acrobot實(shí)驗(yàn)每幕所獲回報(bào)結(jié)果圖
Acrobot環(huán)境中使用兩種算法在訓(xùn)練階段所獲得的累積回報(bào)的對(duì)比結(jié)果如圖7所示。從圖7可知,由于在Acrobot環(huán)境中希望通過較少次數(shù)的狀態(tài)轉(zhuǎn)移達(dá)到目標(biāo)位置,所以每幕的次數(shù)越少越好(由于每一步的回報(bào)為-1,所以在數(shù)值上依然表現(xiàn)為越大越好,也可以說絕對(duì)值越小越好)。隨著訓(xùn)練情節(jié)數(shù)的增大,兩條曲線差異越來越大,充分說明了隨著復(fù)雜環(huán)境中動(dòng)作策略復(fù)雜性的提高,EVDQN算法的性能表現(xiàn)較之DQN算法的提升更突出。
圖7 Acrobot實(shí)驗(yàn)訓(xùn)練階段累積回報(bào)結(jié)果圖
Acrobot實(shí)驗(yàn)中測(cè)試階段累積回報(bào)結(jié)果如圖8所示,從中可知EVDQN算法的確能夠較快學(xué)習(xí)到有效動(dòng)作策略。且在訓(xùn)練階段和測(cè)試階段中EVDQN算法累積回報(bào)曲線的斜率低于DQN算法,即此時(shí)每幕執(zhí)行狀態(tài)轉(zhuǎn)移的次數(shù)少于DQN算法(在Acrobot環(huán)境中,有效策略能夠使Agent在更少的狀態(tài)轉(zhuǎn)移次數(shù)內(nèi)達(dá)到成功的終止?fàn)顟B(tài),無效策略會(huì)導(dǎo)致Agent運(yùn)行到最大的狀態(tài)轉(zhuǎn)移次數(shù)而判定為失敗的終止?fàn)顟B(tài)),表明EVDQN算法所獲得動(dòng)作策略優(yōu)于DQN算法的。
圖8 Acrobot實(shí)驗(yàn)測(cè)試階段累積回報(bào)結(jié)果圖
本文介紹了在策略和離策略兩種強(qiáng)化學(xué)習(xí)算法中更新值函數(shù)常用的算法,并結(jié)合神經(jīng)網(wǎng)絡(luò)的訓(xùn)練,給出該改進(jìn)方法的工作原理。針對(duì)深度Q神經(jīng)網(wǎng)絡(luò)算法較易采取“激進(jìn)”策略傾向的離策略Q-learning算法思想作為神經(jīng)網(wǎng)絡(luò)損失函數(shù),而不利于獲得長期穩(wěn)定策略的問題,以期望值函數(shù)代替Q-learning算法中貪婪值函數(shù)的逼近目標(biāo),提出基于期望值函數(shù)的離策略DQN算法。從神經(jīng)網(wǎng)絡(luò)參數(shù)更新的角度給出基于期望值函數(shù)的離策略DQN算法的工作原理,最后在基于OpenAI的Cartpole和Acrobot環(huán)境中進(jìn)行仿真實(shí)驗(yàn),驗(yàn)證了基于期望值函數(shù)的離策略DQN算法所獲取策略的穩(wěn)定性改善情況。