劉全,姜玉斌,胡智慧
(1. 蘇州大學計算機科學與技術學院,江蘇 蘇州 215006;2. 蘇州大學江蘇省計算機信息處理技術重點實驗室,江蘇 蘇州 215006;3. 吉林大學符號計算與知識工程教育部重點實驗室,吉林 長春 130012;4. 軟件新技術與產業(yè)化協(xié)同創(chuàng)新中心,江蘇 南京 210093)
強化學習(RL, reinforcement learning)[1]利用智能體(agent)與環(huán)境交互獲得的反饋信息進行自學習以獲得最優(yōu)策略。根據狀態(tài)特征的表示方式,可以將強化學習分為3種:1)表格形式,將所有狀態(tài)特征存儲在表格中,每個狀態(tài)都可以被準確地表達出來,這種形式有利于理論分析,但是無法應用到大規(guī)模狀態(tài)空間和連續(xù)狀態(tài)空間任務中;2)線性函數近似,通過人工標注或構造編碼函數[2]等人為的方式產生每個狀態(tài)的特征,狀態(tài)的特征值在學習中不會改變,使用線性函數近似將強化學習的應用范圍擴大,但是無法處理非線性任務;3)非線性函數近似,利用多層神經網(MLP, multilayer perceptron)[3]、卷積神經網絡(CNN, convolutional neural network)[4]等深度網絡對狀態(tài)進行特征提取,狀態(tài)的特征值在學習中不固定。深度網絡將強化學習從線性任務推廣到非線性任務,但是深度網絡生成特征的不確定性會導致算法的穩(wěn)定性不足[5]。
深度強化學習(DRL, deep reinforcement learning)將強化學習與深度學習(DL, deep learning)[6]結合,在游戲、機器人控制、機器人運動等眾多領域中取得了引人矚目的成功。DeepMind公司的Mnih等[7]將強化學習中的Q學習算法與深度網絡結合,提出了深度 Q網絡(DQN, deep Q-network)模型。DQN將Atari 2600游戲的原始圖像作為輸入,通過卷積神經網提取狀態(tài)特征并通過全連接構造 Q值網絡。為了保證樣本的獨立同分布,DQN使用經驗重放機制打破樣本間的關聯(lián),提高了模型的穩(wěn)定性。DQN在許多游戲中都達到了人類水平,但是經驗重放機制會導致模型樣本利用率低、收斂速度慢。Mnih等[8]提出了優(yōu)先級經驗重放機制,對樣本優(yōu)先級進行排序,高優(yōu)先級的樣本更容易被采用,提高了樣本利用率。Van等[9]將雙 Q學習算法擴展到 DQN,提出了雙層深度 Q網絡(DDQN, double deep Q-network)模型,解決了DQN最大化偏差問題。Wang等[10]將Q值拆分成狀態(tài)值與動作優(yōu)勢值,提出了競爭深度 Q網絡(dueling deep Q-network),能夠大幅提升學習效果,加快算法的收斂。
但是上述深度強化學習算法并未解決信用分配的問題[11]。信用分配是強化學習中的眾多挑戰(zhàn)之一,用于解決動作與長期回報延遲的問題。在強化學習中,解決信用分配問題最常用的方法就是資格跡(eligibility trace)[12]。資格跡的向前觀點λ回報最早由Watkins等[13]提出并給出性質,Sutton等[14]提出了向后觀點TD(λ)算法,從實踐角度簡化了資格跡并使其可以進行在線學習,提高了計算效率。Van等[15]通過構造截斷式λ回報,將資格跡的向前觀點與向后觀點統(tǒng)一,提出了真實在線 TD(λ)算法。在深度學習中,為了保證網絡參數的穩(wěn)定性,通常使用批量數據進行訓練。使用批量數據意味著無法進行完全在線的訓練,并且深度學習提取的特征會隨著訓練而改變,這使資格跡無法應用到深度強化學習中。為了解決深度強化學習的信用分配問題,Ho等[16]利用λ回報的思想,構造了通用優(yōu)勢估計器(GAE, generalized advantage estimator),提高了樣本利用率。Mnih等[17]提出了異步優(yōu)勢行動者評論家(A3C, asynchronous advantage actor-critic)算法,將異步方法與 GAE結合,替代了經驗重放機制。在大量減少內存使用與訓練時間的情況下,A3C算法在Atari 2600游戲中的表現超越了DQN。Schulman等[18]提出了置信域策略優(yōu)化(TRPO, trust region policy optimization)算法,使用GAE作為策略函數的估計器,將GAE應用到高維連續(xù)動作中,并證明了該算法在隨機梯度更新下對策略的改進是單調遞增的。TRPO為了保證單調性,每次更新都要計算新舊策略的交叉熵,計算量較大。為此,Schulman等[19]了改進TRPO,提出了近端策略優(yōu)化(PPO, proximal policy optimization)算法,使用截斷的更新步長保證策略改進的單調性。PPO算法在MuJoCo環(huán)境中表現優(yōu)異,但是使用高斯策略進行動作選擇會導致邊界動作被選擇的概率陡然升高,影響值函數的準確性,降低了訓練的收斂速度。Fujita等[20]提出了截斷動作策略梯度(CAPG,clipped action policy gradient)算法,通過改變邊界動作的策略梯度減少了目標函數的方差,提高了算法的穩(wěn)定性。
本文在 GAE的基礎上提出了重要性采樣優(yōu)勢估計器(ISAE, importance sampling advantage estimator)。針對高斯策略下截斷動作引起的邊界動作出現概率陡然升高的問題,ISAE通過引入重要性采樣來解決邊界動作行動策略與目標策略不一致的問題,同時引入了L參數用于保證數據的上下界不會相差過大。將 ISAE運用到 PPO中,并在MuJoCo平臺進行對比實驗。實驗結果表明,與GAE相比,ISAE能夠提高值函數的準確性,且具有更快的收斂速度。
強化學習通常將問題建模成一個馬爾可夫決策過程(MDP, Markov decision process)[21]。本文使用一個無限有折扣的MDP,該MDP可以表示為一個五元組M=<S,A,T,R,γ>,其中,S表示所有狀態(tài)的集合;A表示所有動作的集合;T:S×A×S表示狀態(tài)轉移概率,表示在狀態(tài)做出動作到達下一狀態(tài)的轉移概率;R表示獎賞函數,R(st)表示在狀態(tài)st獲得的立即獎賞;γ∈(0,1)表示折扣因子,表示對未來獎賞的重視程度,γ越大,說明當前的MDP越重視長期回報。
在強化學習中,agent的當前狀態(tài)根據策略π在狀態(tài)st選擇動作at,與環(huán)境交互獲得獎賞R(st)∈R并到達下一狀態(tài)st+1。agent到達st+1后重復上述步驟,則可獲得當前軌跡的累計折扣獎賞通過定義狀態(tài)動作值函數來確定動作的好壞,以更好地進行策略改進。
為了解決深度強化學習中的信用分配問題,Ho等[16]提出了通用優(yōu)勢估計器,將TD(λ)的思想運用到優(yōu)勢函數估計器中,優(yōu)勢函數定義為
優(yōu)勢函數能夠直觀地表示動作的好壞,使用式(4)作為目標函數能夠大幅提高算法的收斂速度。為了構造GAE,定義n步優(yōu)勢目標函數為
GAE通過加權平均的方式將一步優(yōu)勢目標函數到n步優(yōu)勢目標函數進行融合,即
GAE解決了信用分配問題,在實際使用中可以根據需求調整λ的大小,當λ=0時,相當于把一步優(yōu)勢作為估計器,此時方差小但引入了誤差;當λ= 1時,意味著將累計優(yōu)勢作為估計器,此時沒有引入誤差但方差大[22]。人們可以通過調整GAE的λ參數使算法在方差與誤差之間進行權衡,從而達到更好的效果。
近端策略優(yōu)化在置信域策略優(yōu)化的基礎上進行了簡化,并提出了新的損失函數,如式(5)所示。
其中,T表示目標損失函數;θ表示深度網絡參數;表示新舊策略動作概率的比值;表示目標優(yōu)勢函數,在PPO中使用GAE作為;?表示超參數,用于限制策略的更新幅度,一般取值為0.1或0.2;clip函數的作用是將rt限制在[1-? ,1+?]區(qū)間內。PPO利用clip函數限制策略改進,實現了一種近似置信區(qū)間的方法,同時簡化了算法,提高了算法的靈活性和計算效率。
PPO在連續(xù)動作任務中的表現超過了TRPO,說明簡化后的算法不僅降低了計算復雜度,同時還提高了收斂速度。圖1展示了PPO在連續(xù)動作任務中所使用的網絡結構。
圖1 PPO網絡結構
圖1的輸入為84×84×3的RGB三通道圖片,PPO網絡結構分為兩部分:1) 值函數,輸入與包含64個神經元的隱藏層全連接,經過 tanh激活函數后再與 64個神經元的隱藏層全連接,最后再經過tanh激活函數后與單個神經元全連接;2) 策略函數,輸入與包含64個神經元的隱藏層全連接,經過tanh激活函數后再與64個神經元的隱藏層全連接,最后再經過 tanh激活函數后與對應可控制動作數量的神經元全連接。策略函數輸出值作為高斯策略的均值,高斯分布的標準差初始值為 1,作為單獨的參數,不隨輸入的變化而變化,只與訓練階段有關。
在連續(xù)動作任務中,通常采用高斯分布作為動作選擇的策略函數,即
其中,A表示策略選擇動作的分布,N表示高斯分布,μ表示高斯分布的均值,σ表示高斯分布的標準差。使用高斯策略的原因主要有兩點:1)確定性策略函數由于沒有隨機的探索動作,容易導致策略進入局部最優(yōu),無法學習到最優(yōu)策略,使用隨機的高斯分布作為策略函數能夠保證動作空間得到充分的探索;2)連續(xù)動作任務無法像離散動作任務那樣將所有動作枚舉出來,因此采用高斯分布的方式表示策略函數。圖2展示了均值為0、標準差為1的高斯策略函數的概率密度。
圖2 均值為0、標準差為1的高斯策略函數的概率密度
高斯策略函數能夠解決連續(xù)動作任務中的動作選擇問題,但是在 MuJoCo環(huán)境中可能會因為截斷動作導致性能下降,例如,在HalfCheetah任務中,動作空間為[-1.0,1.0]6,這表示agent需要控制6個范圍在[-1.0,1.0]的連續(xù)動作。為了保證算法的頑健性,當策略函數給出超出邊界的動作時,這些動作都會被約束到范圍的邊界,即大于1的動作視為1,小于-1的動作視為-1,這會導致邊界動作選擇的概率大大增加。這種現象會引起2個問題:1)值函數因為邊界動作出現概率的升高無法得到準確的評估,使網絡的穩(wěn)定性受到影響,從而導致算法收斂速度變慢;2)策略函數網絡通常輸出高斯分布的均值,高斯分布的標準差會隨著訓練的推進逐漸減小,邊界動作選擇概率的異常升高會導致均值的偏離,從而影響策略函數的改進,導致算法的性能下降。
為了解決截斷動作帶來的問題,本文引入了重要性采樣[23],重要性采樣率ρ為
其中,π(s,a)為目標策略,b(s,a)為行動策略。目標策略是算法要評估并計算值函數的策略,行動策略是實際進行動作選擇的策略。高斯策略的重要性采樣定義為
其中,PDF是概率密度函數(probability density function),PDF(st,at)表示狀態(tài)st選擇動作at的概率;CDF是累計分布函數(cumulative distribution function),CDF(st,at)表示狀態(tài)st選擇動作小于或等于at的累計概率;[a,b]表示動作空間的范圍,當動作在區(qū)間或者區(qū)間邊界外時,目標策略與行動策略不一致,需要計算相應的重要性采樣率,例如當動作在(a,b)中時,目標策略與行動策略一致,則重要性采樣率為1。
本文將式(8)運用到GAE中,提出了重要性采樣優(yōu)勢估計器,并推導出簡化后目標函數的計算式為
相較于式(4),式(9)增加了重要性采樣的部分,可以計算目標函數。在計算復雜度上,tρ的復雜為O(1)。由于使用批量更新,計算目標函數時可以從后向前計算,這意味每個時間步不需要重復計算后續(xù)時間步的重要性采樣,每個時間步可以利用后一時間步計算好的數據,因此每個時間步的計算復雜度與 GAE相同,為O(1)。在空間復雜度上,由于需要記錄每個時間步的重要性采樣率,因此需要增加O(N)的空間。
ISAE主要對目標函數進行改進,接下來分情況討論ISAE的作用。
1) 當策略生成的動作在動作區(qū)間內時,目標策略與行動策略相同,ISAE中的重要性采樣為1,此時通過ISAE計算得到的目標值與GAE相同。
2) 當策略生成的動作超出了動作區(qū)間時,將會被視為邊界動作,若左邊界動作a在目標策略下的生成概率為PDF(s,a),那么邊界動作的實際生成概率為CDF(s,a),即小于或等于左邊界a所有動作生成概率之和,右邊界動作同理。這會造成采樣生成的樣本中邊界動作出現的概率異常升高,值函數將會因為邊界動作得到大量更新而產生偏移,而在策略梯度中,動作截斷則不會體現出來,導致訓練過程的值函數與策略不統(tǒng)一。并且值函數的偏移會導致對于動作評估的不準確,從而影響策略改進,使算法收斂變慢。此時,ISAE使用重要性采樣,通過降低更新幅度的方式,解決邊界動作值函數由于過度采樣導致的高估或低估問題,緩解了值函數的偏移。通過這一改進,可以提高值函數的準確性,降低評估誤差,使策略能夠正確改進。
在實際任務中,通常會有多維的連續(xù)動作空間,這意味著策略進行動作選擇時超出邊界的可能性大大提高,因此在動作空間維數更多的任務中,ISAE的重要性采樣機制將會更頻繁地使用,算法收斂速度的提升將更加明顯。但是由于ISAE限制了邊界動作的更新,導致策略向邊界動作收斂更慢,因此在最優(yōu)策略在邊界動作的任務中時,算法的收斂速度會有所下降。
綜上所述,ISAE在GAE的基礎上,限制了對于邊界動作的更新,解決了算法因為動作超出邊界導致的值函數與策略不統(tǒng)一的問題,提高了算法的收斂速度和收斂精度。
引入重要性采樣在一定程度上解決了截斷動作帶來的不穩(wěn)定問題,但是過高或過低的重要性采樣率同樣會影響算法的穩(wěn)定性。一方面,由于使用批量更新可能產生過高的重要性采樣率(ρt>1),經過多輪的累乘會使誤差變得十分巨大,這會導致值函數不穩(wěn)定,且過高的誤差會導致訓練無法繼續(xù)進行。另一方面,由于動作選擇的隨機性以及計算誤差,重要性采樣率可能過低,影響后續(xù)時間步數據的計算,導致信用分配機制失效。
采用式(9)這種累積的方式計算目標函數,過高與過低的重要性采樣率同時出現會使批量更新中的數據上下限差距較大,從而導致網絡參數波動較大,收斂速度變慢。因此在實際運用中,設定重要性采樣上界為 1,下界則引入參數L,L根據具體任務決定。通過將重要性采樣率控制在[L,1]中來限制邊界動作的更新幅度。
為了比較ISAE在具體任務中相較于GAE的差異,本文選取PPO算法作為策略梯度優(yōu)化算法。
本文使用MuJoCo平臺作為實驗環(huán)境。MuJoCo是一個物理模擬器,可以用于機器人控制優(yōu)化等研究。本文選取MuJoCo平臺的8個任務,即Ant、Hopper、HalfCheetah、InvertedDoublePendulum、InvertedPendulum、Reacher、Swimmer和Walker2d進行對比實驗。表1展示了不同任務輸入的狀態(tài)空間和輸出的動作空間,其中,?表示實數。
表1 MuJoCo平臺8個任務的狀態(tài)空間和動作空間
為了更好地對比ISAE與GAE的性能差異,本文的所有算法均使用相同的參數和Adam梯度下降方法。具體參數設置為梯度下降步長PPO超參數?=0.2,MDP折扣因子γ=0.99,GAE與ISAE信用分配參數λ=0.95。網絡更新方式為每輪更新使用2 048個時間步的數據,更新分為10個循環(huán),每個循環(huán)將2 048個時間步的數據隨機打散分成32個Mini-Batch,每個Mini-Batch用64個時間步的數據對網絡進行更新。實驗一共訓練1 000 000個時間步。
在深度強化學習中,使用不同的隨機種子進行訓練會影響算法的收斂速度和收斂結果,不同環(huán)境下的表現體現了算法的穩(wěn)定性。為了體現不同估計器之間真實的性能差異,本文所有實驗均在相同參數下使用20組隨機種子進行訓練,得到20組不同的數據。訓練階段中將最近100個情節(jié)得到的獎賞的平均值作為實驗結果。
為了探究ISAE中L參數對估計器性能的影響,使用不同的L在Swimmer環(huán)境中進行對比實驗,實驗結果如圖3所示。從圖3中可以看出,當L=0.90和L=0.95時算法的收斂速度最快,當L=0.80和L=0.99時性能下降。當L=0時,ISAE中的重要性采樣不會受到L參數的影響,最終的結果和3.3節(jié)中分析的一致,當不限制重要性采樣的作用范圍時,會使批量更新中的數據上下界懸殊過大,導致網絡參數產生較大波動,從而引起收斂速度的降低。由于L=0.90和L=0.95時兩者的性能與收斂速度相近,因此在4.3節(jié)的對比實驗中使用這2個參數。
圖3 L參數對比實驗
圖4 3種算法在Hopper、Walker2d、HalfCheetah、Ant任務中的對比實驗結果
為了驗證ISAE的有效性,本文使用PPO算法作為基礎的梯度優(yōu)化算法,并在8個基準任務中對比ISAE、GAE和CAPG的性能。每個算法在每個基準實驗中都進行 20次不同隨機的訓練,最終結果由 20次的結果取平均得到。首先,在動作空間維度較高的任務中進行對比實驗,圖4展示了3種算法在Hopper、Walker2d、HalfCheetah、Ant任務中的訓練曲線,橫坐標為訓練步長,縱坐標為最近100個情節(jié)的平均獎賞。
將圖 4中的動作空間維數的數量從小到大排布,可以看出,2組 ISAE算法的收斂速度與平均獎賞均優(yōu)于 GAE與 CAPG,并且當動作空間維度大于 2時,ISAE對于算法性能的提升隨著動作空間維度的增加而越發(fā)明顯。例如,在 Hopper任務中,動作空間的維度為3,ISAE在200 000步之前與GAE和CAPG這2種算法并未有較大差距,直到400 000步之后才逐漸拉開差距。但在動作空間維度為6的Walker2d任務中,ISAE在訓練截斷的最開始便與GAE和CAPG拉開差距,而在動作空間維數更多的Ant任務中,這種情況更加突出。產生這一現象的原因是動作空間的維度越高,策略生成的動作則越多,動作超出邊界的可能性就越大。當動作超出邊界時,ISAE會利用重要性采樣來限制值函數的更新,保證值函數不會偏離策略太遠,提高了策略評估的準確性,并從側面驗證了 ISAE的有效性。
接下來,將3種算法在其他4個MuJoCo控制任務中進行對比實驗,結果如圖5所示,橫坐標為訓練步長,縱坐標為最近100個情節(jié)的平均獎賞。
圖5 3種算法在其他4個MuJoCo任務中對比實驗結果
結合圖4和圖5可以看出,在Ant、Hopper、HalfCheetah、Walker2d、InvertedDoublePendulum、InvertedPendulum這 6個任務中,ISAE無論是L=0.90還是L=0.95,收斂速度和平均獎賞都要優(yōu)于GAE和CAPG。不同參數的ISAE在不同的任務中表現得各不相同,這是因為在不同的任務中,最優(yōu)動作的分布各不相同。某些任務中最優(yōu)動作更傾向于邊界動作,而ISAE則會在一定程度上阻礙策略向邊界動作靠攏,這時L=0.95則會更具有優(yōu)勢。在動作空間維度較小的任務中,相較于 GAE和CAPG,ISAE在收斂速度上的優(yōu)勢不夠明顯,這是因為當動作空間維度較小時,策略生成超出邊界的動作概率較小,所以在性能表現上會趨向于GAE,并且會受到任務特殊性的影響。當在某些最優(yōu)動作傾向于非邊界動作的任務中,如InvertedPendulum,該任務由2個部分組成,一個只能水平移動的小車和一端固定在小車中部且可以自由轉動的長桿,該任務的目標是控制小車在水平方向移動(動作空間為[-3.0,3.0]1),使長桿盡可能地保持豎立,保持平衡的時間越長,agent得到的獎賞就越大。任何幅度過大的動作(邊界動作)都會使長桿的平衡被打破,所以在大部分狀態(tài)下的最優(yōu)動作都不是邊界動作。由圖5可知,ISAE的參數L=0.90性能表現最好,收斂速度最快。平均獎賞在達到最高點后下降的原因是,當策略收斂到最優(yōu)時,訓練不會立即停止,而后續(xù)訓練中會因為隨機動作導致值函數變化,從而影響到策略。這種情況通常會出現在需要精細控制對隨機動作敏感的任務(如InvertedDoublePendulum)中,而在對隨機動作不敏感的任務(如 Reacher)中,agent控制手臂使末端到達隨機指定位置,到達的時間越短,獎賞越高,任務簡單且沒有干擾因素,雖然算法很快收斂,但是并沒有產生波動,3種算法的性能沒有較大差距。但是在最優(yōu)策略靠近邊界動作的任務(如Swimmer)中,GAE與CAPG的收斂速度要稍快于 ISAE。產生這一現象的原因是在Swimmer任務中,agent通過控制2個關節(jié)讓3節(jié)機器人在平地上向前移動,規(guī)定時間內向前移動的距離越長,得到的獎賞就越高。該任務的最優(yōu)策略可以參考蛇的行進方式,2個關節(jié)向相反的方向發(fā)力,到達極限后調轉方向,如此循環(huán)往復。這意味著最優(yōu)策略傾向于選擇邊界動作,而ISAE會阻礙策略向邊界動作收斂,L越小,阻礙的力度越大,所以在圖4中L=0.95比L=0.90時收斂速度更快。
為了驗證訓練得到模型的有效性,將訓練后的模型在對應的任務中使用測試集進行比較,平均獎賞結果如表2所示。
本文實驗中所使用的測試集都由 20個隨機種子下的100個情節(jié)(共2 000個情節(jié))組成,最終的結果則由所有情節(jié)的累計獎賞取平均得到。這樣做一方面對應之前訓練的過程,另一方面保證了對比實驗不受隨機種子的影響。從表2中可以看出,測試集上的結果與訓練階段的結果基本一致,ISAE在大部分任務中的表現明顯優(yōu)于GAE和CAPG,2個不同參數的ISAE的表現相差不大,從總體上看L=0.90略優(yōu)于L= 0.95。
本文針對在高斯策略下截斷動作帶來的收斂速度慢的問題,提出了 ISAE。該估計器在 GAE的基礎上,引入了重要性采樣。利用邊界動作的行動策略和目標策略不一致,計算相應的重要性采樣率,并將計算好的重要性采樣率運用到GAE中。同時,為了保證網絡的穩(wěn)定性,引入了L參數,通過調節(jié)L使算法適應不同的任務。將ISAE應用于 PPO算法,通過對比不同的參數確定了L=0.90和L=0.95,并在MuJoCo平臺的8個基準任務上與GAE和CAPG進行對比實驗。實驗結果表明,ISAE相較于GAE具有更快的收斂速度和更優(yōu)的收斂結果。
ISAE在大部分任務中的表現都優(yōu)于GAE和CAPG,但是對于最優(yōu)策略傾向于邊界動作的任務,ISAE由于使用了重要性采樣會阻礙策略向邊界動作收斂,導致ISAE的收斂速度略慢于GAE和CAPG。未來的工作就是完善ISAE,使其能夠適用于邊界動作為最優(yōu)策略的任務,使估計器具有更廣泛的通用性。