李文韜,謝小紅,孫曉燕
(1.廣西水利電力職業(yè)技術(shù)學(xué)院,公共基礎(chǔ)部,南寧530023;2.廣西財經(jīng)學(xué)院,新聞與文化傳播學(xué)院,南寧530003;3.廣西財經(jīng)學(xué)院,管理科學(xué)與工程學(xué)院,南寧530003)
近年來,隨著人工智能的不斷發(fā)展,智能手機、智能聲控系統(tǒng)以及無人駕駛逐漸步入人們的生活。人工智能帶來的不僅僅是生活方式與工作方式的便捷,更是劃時代的產(chǎn)物,標(biāo)志著人類進入智能時代。當(dāng)前,無人駕駛正在進行廣泛的推廣,如何對未知復(fù)雜動態(tài)環(huán)境具備自動避障功能[1],同時還要兼具穩(wěn)定性和泛化能力已成為無人駕駛領(lǐng)域的熱門課題。而強化學(xué)習(xí)對復(fù)雜環(huán)境的適應(yīng)性,成為了無人駕駛的重要研究方法。
強化學(xué)習(xí)(Reinforcement Learning,RL)是人工智能中的一種重要學(xué)習(xí)方法,其采用試錯的方式進行訓(xùn)練,并得出最優(yōu)的行為策略[2]。目前,強化學(xué)習(xí)已被廣泛應(yīng)用于手工業(yè)制造[3]、優(yōu)化與調(diào)度[4]、機器人控制[5]、模擬仿真[6],以及游戲博弈[7]等領(lǐng)域。強化學(xué)習(xí)的主要思想是由實驗智能體(agent)在模擬環(huán)境中累計得到的獎勵值,根據(jù)獎勵值訓(xùn)練得到目標(biāo)的最優(yōu)策略[8]。因此,強化學(xué)習(xí)主要側(cè)重于完成高維度非線性的函數(shù)逼近和多維特征的策略學(xué)習(xí)問題。
隨著深度學(xué)習(xí)(Deep Learning,DL)[2]逐漸成為機器學(xué)習(xí)領(lǐng)域中的重要發(fā)展方向。深度學(xué)習(xí)已被廣泛應(yīng)用于圖像處理、語音識別以及自然語言處理等領(lǐng)域,并取得了重大的突破[9]。深度學(xué)習(xí)最重要的特性是能夠自動尋找到高維數(shù)據(jù)(如圖像、文本、聲音等)的低維表征,通過將歸納偏置值(Inductive bias)引入到分層卷積神經(jīng)網(wǎng)絡(luò)架構(gòu)中,使機器學(xué)習(xí)研究者很好地解決了高維度的問題。深度學(xué)習(xí)出現(xiàn)的同時也推進了強化學(xué)習(xí)的發(fā)展,通過將深度學(xué)習(xí)和強化學(xué)習(xí)兩種學(xué)習(xí)模式組合,形成深度強化學(xué)習(xí)(Deep Reinforcement Learning,DRL)這一新領(lǐng)域[10]。深度強化學(xué)習(xí)通過利用兩種學(xué)習(xí)模式各自的優(yōu)勢,處理決策問題中的高維狀態(tài)空間與離散或連續(xù)動作空間。
在深度強化學(xué)習(xí)取得的成果中,已有許多達到甚至趕超人類的先進水平。Mnih 等人[11]結(jié)合深度學(xué)習(xí)和Q-learning 算法,提出了深度Q 網(wǎng)絡(luò)(Deep Q Network,DQN)算法,在一定程度上解決了非線性函數(shù)計算的不穩(wěn)定性問題。Chae 等人[12]通過DQN 對無人駕駛展開了研究,并將動作劃分為無、輕、中以及強的四種制動,設(shè)計了防碰撞的獎勵函數(shù)來達到防止過早或過遲制動,結(jié)果表明,車輛基本實現(xiàn)了自主剎車。楊順等人[13]提出了一種基于多類型傳感數(shù)據(jù)訓(xùn)練自動駕駛策略的方法,在TORCS 中進行了仿真模擬,在車速和車輛橫向偏移的控制中取得了不錯的效果。Xie 等人[14]提出了一個新的學(xué)習(xí)框架——輔助深度確定性策略梯度算法(Assisted Deep Deterministic Policy Gradient,AsDDPG),此算法使無人駕駛汽車避障訓(xùn)練的速度更快,對DRL 網(wǎng)絡(luò)結(jié)構(gòu)的敏感性更低,并且始終優(yōu)于標(biāo)準(zhǔn)的深度確定性策略梯度網(wǎng)絡(luò)。盡管以上研究都取得了不錯的成果,但仍存在以下一些問題:①由于評價網(wǎng)絡(luò)的一體化,容易產(chǎn)生一些無用動作,尋找最優(yōu)動作難度較大,導(dǎo)致學(xué)習(xí)效率低。②學(xué)習(xí)訓(xùn)練效率不高,智能體需要和環(huán)境進行多次試錯以獲得大量樣本數(shù)據(jù)后才能放入神經(jīng)網(wǎng)絡(luò)中迭代獲得最優(yōu)解。由于網(wǎng)絡(luò)參數(shù)在訓(xùn)練前是隨機的,初始值與最優(yōu)策略存在較大的差距,需要經(jīng)過較長的時間才能收斂。
本文借鑒了深度確定性策略梯度(Deep Determin?istic Policy Gradient,DDPG)[15]算法具有連續(xù)動作空間、收斂速度快的優(yōu)點,提出了一種基于DDPG 算法的優(yōu)化評價改進算法,目的是進一步提高算法的性能。
強化學(xué)習(xí)[16]又稱試錯學(xué)習(xí),是智能體和環(huán)境之間通過交互,使智能體獲得最大的獎勵。強化學(xué)習(xí)原理如圖1 所示。
圖1 強化學(xué)習(xí)原理圖
在RL 中,Agent 根據(jù)當(dāng)前的狀態(tài)St選擇一個動作At使環(huán)境發(fā)生變化,并從中獲得Rt且改變當(dāng)前狀態(tài),Agent 再根據(jù)獲得的狀態(tài)選擇一個使其獎勵最大的動作A。采用馬爾科夫決策過程(Markov decision pro?cess,MDP)可以對RL 進行建模。馬爾科夫決策過程可以定義為:(S,A,P,R,γ),其中S表示狀態(tài)空間;A表示動作空間;P代表下一狀態(tài)的遷移概率,Pa(s,s' )=Pa(s'|s,a)為一個條件概率,代表Agent 在狀態(tài)s和動作a下,到達狀態(tài)s’的概率;R代表獎勵函數(shù),Ra(s,s')則是一個激勵函數(shù),是Agent 在動作a下從狀態(tài)s到狀態(tài)s’所獲得的獎勵;γ為折扣因子,γ∈( 0,1] 。
Agent 所執(zhí)行的動作由策略π 定義,策略π :S→A是從狀態(tài)到動作空間的映射。表示狀態(tài)st選擇動作at,并以概率函數(shù)f(s,at)獲得下一狀態(tài)st+1,同時得到環(huán)境反饋量化獎勵rt。
狀態(tài)動作值函數(shù)Qπ(s,a)表示在st下執(zhí)行at,并遵循策略π 所獲得的累積回報表示為:當(dāng)策略π*的期望回報大于或者等于其他所有策略期望匯報時,π*成為最優(yōu)策略,它們有同一個狀態(tài)動作值函數(shù):
該式也成為最有狀態(tài)動作值函數(shù),它遵循貝爾曼方程,即:
根據(jù)傳統(tǒng)的強化學(xué)習(xí),往往是經(jīng)過不斷迭代貝爾曼方程求解狀態(tài)動作函數(shù),但僅局限于解決具有離散動作空間的問題。針對強化學(xué)習(xí)的這一缺陷,一般使用線性函數(shù)逼近器近似表達狀態(tài)動作值函數(shù),即Q(s,a|θ)≈Q*(s,a),但在狀態(tài)空間較大時,很難找到最優(yōu)解。因此大部分研究者開始用深度神經(jīng)網(wǎng)絡(luò)來求解并展示值函數(shù)或策略,深度強化學(xué)習(xí)也就應(yīng)運而生。
DDPG 是2015 年Deep Mind 在確定性策略梯度算法(Deterministic Policy Gradient,DPG)的基礎(chǔ)上改進的一種深度強化學(xué)習(xí)算法。該算法是在Actor-Critic 方法的本質(zhì)上結(jié)合了DQN 的經(jīng)驗回放和雙網(wǎng)絡(luò)結(jié)構(gòu)方法對DPG 的改進。
Actor-Critic 算法的模型主要由Actor 網(wǎng)絡(luò)和Crit?ic 網(wǎng)絡(luò)組成。如圖2 所示。
圖2 Actor-Critic結(jié)構(gòu)
Actor 網(wǎng)絡(luò)的輸入是st,通過網(wǎng)絡(luò)后輸出動作at,環(huán)境執(zhí)行動作at獲得下一狀態(tài)st+1,再將st,rt、st+1輸入到Critic 網(wǎng)絡(luò)。再通過時序差分方法得出TD_error,之后再重新調(diào)整Critic 的網(wǎng)絡(luò)參數(shù)。由于Actor-Critic算法的輸出是隨機選擇的動作,將運算出選擇此動作的概率并用對數(shù)表示。概率對數(shù)和TD_error 的乘積就是Actor 網(wǎng)絡(luò)的損失函數(shù)。
經(jīng)驗回放指的是在Agent 學(xué)習(xí)前,將探索到的經(jīng)驗儲存到經(jīng)驗池中。在學(xué)習(xí)過程中,Agent 從檢驗緩存池中隨機采樣訓(xùn)練神經(jīng)網(wǎng)絡(luò),消除連續(xù)數(shù)據(jù)相關(guān)性,同時能夠提高樣本利用率。在Agent 在與環(huán)境交互過程所獲得的經(jīng)驗樣本中,不同的經(jīng)驗樣本對神經(jīng)網(wǎng)絡(luò)的訓(xùn)練所起作用大不相同。因此也存在一些不可忽略的問題,例如隨機抽取經(jīng)驗樣本的質(zhì)量不能夠有很好的保障,從而導(dǎo)致訓(xùn)練效率低,收斂速度慢。所以需要用到雙網(wǎng)絡(luò)結(jié)構(gòu)來緩解問題。
雙網(wǎng)絡(luò)結(jié)構(gòu)是建立兩個神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)一樣而參數(shù)不一樣的方法。其分為評價網(wǎng)絡(luò)(eval net)和目標(biāo)網(wǎng)絡(luò)(target net)。評價網(wǎng)絡(luò)主要是對目標(biāo)網(wǎng)絡(luò)間歇性的更新網(wǎng)絡(luò)參數(shù),目標(biāo)網(wǎng)絡(luò)主要是構(gòu)建出目標(biāo)Q值(tar?get_Q)和評價網(wǎng)絡(luò)構(gòu)建出估計Q值(eval_Q)。再使用時間差分法(TD):
計算出目標(biāo)Q值和估計Q值的差,即TD_error。Critic 網(wǎng)絡(luò)的損失函數(shù)就是使用經(jīng)驗樣本的均方誤差方法。但也存在以下問題:對較高動作維度的連續(xù)控制不均衡和訓(xùn)練效率不高的問題。DDPG 算法結(jié)構(gòu)如圖3所示。
本文在DDPG 的基礎(chǔ)上改進損失函數(shù)并引入Dropout,將網(wǎng)絡(luò)中一些次優(yōu)的神經(jīng)網(wǎng)絡(luò)單元暫時丟棄,使最優(yōu)動作與次優(yōu)動作拉開差距,進而提高訓(xùn)練的效率。
圖3 DDPG算法結(jié)構(gòu)圖
在DDPG 算法中,由于評價網(wǎng)絡(luò)評價的一體化,容易出現(xiàn)產(chǎn)生一些無用動作,尋找最優(yōu)動作難度較大導(dǎo)致學(xué)習(xí)效率較低的問題。損失函數(shù)主要是用來表達網(wǎng)絡(luò)的預(yù)測值和真實值之間的相近關(guān)系。本文提出改進損失函數(shù),使選擇的動作之間存在最優(yōu)和無效的區(qū)別,Critic 網(wǎng)絡(luò)能夠更好地來評估動作,進而提高模型的魯棒性。
DDPG 算法通常使用的損失函數(shù)是均方誤差:
其中target_Q 為目標(biāo)Q 值,eval_Q 為評估Q 值,在求和平均后所獲得的最優(yōu)動作與次優(yōu)動作無法拉開差距,難以做出良好的評價,主要是將動作維度替換取平均,拉開最優(yōu)動作與次優(yōu)動作之間無法拉開距離,表達式如下:
其中target_Q 和eval_Q 的差值是TD_error,TD_error 的平方再對action_dim 取整可以對action 做到優(yōu)化評價。換而言之,Agent 在學(xué)習(xí)一段時間后選擇動作的部分差值會變小,而動作差值越大在經(jīng)驗池中占有的比例也越大。在Critic 網(wǎng)絡(luò)測試動作的好與壞的過程中,次優(yōu)動作的差值相比較大,對神經(jīng)網(wǎng)絡(luò)的參數(shù)的影響也就加大了。算法根據(jù)所有的動作分布做了動作評估,擴大了最優(yōu)動作與其他動作的TD_error 差距,也提高了算法收斂速度。
雖然公式(8)能夠?qū)ψ顑?yōu)動作和無效動作做出良好的評價,但是在同數(shù)值的情況下2×target_Q×eval_Q是明顯大于target_Q2和eval_Q2,因此本文在公式(8)的基礎(chǔ)上進行改進,表達式如下:
其中target_Q2和eval_Q2的差值要大于完全平方的,雖然Loss 的值會變大,但這也使得最優(yōu)動作與次優(yōu)動作的距離拉開,使評價網(wǎng)絡(luò)更好地對動作進行優(yōu)化評價。
在深度學(xué)習(xí)中神經(jīng)網(wǎng)絡(luò)訓(xùn)練時經(jīng)常出現(xiàn)網(wǎng)絡(luò)過擬合的問題,而Dropout 是一種可以有效緩解這一現(xiàn)象的正則化方法。在網(wǎng)絡(luò)訓(xùn)練的過程中,將神經(jīng)網(wǎng)絡(luò)單元從訓(xùn)練模型中有概率性的暫時去掉。前向傳播公式如下:
其中,r(l)服從伯努利分布概率為p,y(l)為第l 層的激活值,y~(l)為第l 層的輸出值,為第l+1 層的權(quán)重,為隱藏層的輸入,f(?)為激活函數(shù)。由于在使用隨機樣本進行訓(xùn)練網(wǎng)絡(luò)時,會讓網(wǎng)絡(luò)進入往次優(yōu)動作方向?qū)W習(xí),從而導(dǎo)致網(wǎng)絡(luò)彌亂,本文引入Dropout 能夠緩解經(jīng)驗緩沖池的隨機采樣。使用Dropout 時會將網(wǎng)絡(luò)中一些次優(yōu)的神經(jīng)網(wǎng)絡(luò)單元暫時丟棄,為了不讓較優(yōu)的神經(jīng)元丟失,選擇神經(jīng)元置零的概率為0.3。本文在Critic 網(wǎng)絡(luò)的最后一層全連接層后引入Dropout,對于神經(jīng)網(wǎng)絡(luò)而言,其性能得以提高,并且各個網(wǎng)絡(luò)參數(shù)共享又互相獨立,減少特定神經(jīng)元之間的協(xié)同作用,使每個神經(jīng)元的提取更加具有魯棒性。
OE-DDPG 算法是將改進的損失函數(shù)和引入的Dropout 機制相結(jié)合。其主要作用是利用改進損失函數(shù)把最優(yōu)動作和次優(yōu)動作的TD_error 差距進行區(qū)分,再引入Dropout 機制放棄一些的神經(jīng)網(wǎng)絡(luò)參數(shù)使得eval_Q 的值更小,可以更有效地利用經(jīng)驗緩沖池中抽取的隨機經(jīng)驗樣本,能夠讓Critic 網(wǎng)絡(luò)更好地評估動作,進而提高算法的收斂速度。本文提出的OE-DDPG算法偽代碼如下:
為了驗證方法的有效性,我們在多種環(huán)境下進行了測試,搭建了簡單、中等和復(fù)雜的模擬仿真環(huán)境對無人駕駛汽車進行方法驗證。在仿真中,使用Python 庫中的Pyglet 模塊模擬構(gòu)建2D 無人駕駛汽車環(huán)境,其中包含了連續(xù)的動作空間,5 個感應(yīng)器,可以使小車進行前進、左微轉(zhuǎn)彎、右微轉(zhuǎn)彎、左轉(zhuǎn)彎和右轉(zhuǎn)彎的操作。動機與動作映射關(guān)系見表1 所示。
表1 無人駕駛汽車動機與動作映射表
本文利用OE-DDPG 算法仿真無人駕駛汽車在三種不同的環(huán)境下的障礙物規(guī)避實驗。每一種環(huán)境下有不同數(shù)量的障礙物,分為簡單、中等和復(fù)雜三種實驗環(huán)境。無人駕駛汽車模擬仿真區(qū)域大小為500×500,目標(biāo)無人駕駛汽車大小為20×20。在模擬仿真的過程中,如果無人駕駛汽車在模擬環(huán)境內(nèi)沒有碰撞障礙物并能夠回到原點視為完成任務(wù),若碰撞到障礙物則需要重新開始。本文設(shè)計三種不同無人駕駛汽車環(huán)境進行比較模擬仿真,如圖4 所示。
圖4 三種不同仿真環(huán)境
為保證仿真實驗的公平性,三種環(huán)境中的參數(shù)保持相同,其中經(jīng)驗緩沖池大小為2000,批次選取樣本數(shù)量為16,最大情節(jié)為500,每情節(jié)最大時間步數(shù)為300,折扣因子γ為0.9,Actor 網(wǎng)絡(luò)學(xué)習(xí)率為1×10-4,Critic網(wǎng)絡(luò)學(xué)習(xí)率為1×10-3。
OE-DDPG 算法是通過改進損失函數(shù)并加入Drop?out 機制相結(jié)合。為區(qū)分算法的名稱,我們將原始DDPG 算法加入Dropout 機制得到的算法稱為OE1-DDPG,將僅改進損失函數(shù)得到的算法稱之為OE2-DDPG。
圖5 簡單環(huán)境算法比較
如圖5 所示,OE-DDPG 算法在簡單環(huán)境下與算法OE1-DDPG 和算法OE2-DDPG 及原始DDPG 的性能對比。在模擬環(huán)境中,由于前50 代是累計緩沖經(jīng)驗池,所以獲取獎勵基本重合。在50 代后網(wǎng)絡(luò)模型進行學(xué)習(xí),OE-DDPG 算法學(xué)習(xí)的效率明顯高于其他算法。而原始DDPG 的學(xué)習(xí)效率比較低,大約在150 代才開始學(xué)習(xí),顯然收斂速度不好。OE-DDPG 算法在學(xué)習(xí)效率和收斂速度效果上均優(yōu)于原始DDPG 算法。
在中等環(huán)境下的算法性能對比,如圖6 所示。是在模擬環(huán)境中,100 代到250 代之間算法OE2-DDPG效果優(yōu)于其他兩個算法,缺點是學(xué)習(xí)速率緩慢。OEDDPG 算法在開始進行網(wǎng)絡(luò)學(xué)習(xí)時沒有快速的對最優(yōu)動作進行優(yōu)化,但是在學(xué)習(xí)速率和收斂速度上效果是優(yōu)于其他兩個算法的。從曲線可以看出OE-DDPG 算法在碰到障礙物時能夠及時地做出調(diào)整,OE1-DDPG算法使用的均方誤差在學(xué)習(xí)速率和最優(yōu)動作的優(yōu)化上都遜色于OE-DDPG 算法。前120 代兩個算法學(xué)習(xí)的速率都不高,但是OE-DDPG 算法的比較平滑,無梯度消失問題。
圖6 中等環(huán)境算法比較
在復(fù)雜環(huán)境下的算法性能對比,如圖7 所示。在仿真環(huán)境中,OE-DDPG 算法在100 代左右獎勵開始逐漸提升,將最優(yōu)動作與次優(yōu)動作區(qū)分開,進行動作優(yōu)化,直到訓(xùn)練結(jié)束效果都優(yōu)于其他兩個算法。而OE2-DDPG 算法的整體效果也由于OE1-DDPG 算法。無論是學(xué)習(xí)速率還是收斂速度都由于原始DDPG 算法,且算法OE-DDPG 的效果遠超于原始DDPG 算法。
圖7 復(fù)雜環(huán)境算法比較
通過無人駕駛汽車在簡單、中等到復(fù)雜三個不同的仿真環(huán)境進行實驗對比,本文提出的OE-DDPG 算法效果比原始DDPG 算法中使用的均方誤差要好,所獲得的平均獎勵較高,也驗證了算法的有效性和魯棒性,同時可以看出OE-DDPG 算法能夠快速適應(yīng)無人駕駛環(huán)境。
隨著動作維度的增加,DDPG 算法在動作的連續(xù)控制和動作數(shù)量方面難以用離散的形式表示。另外,在動作維度較高的復(fù)雜環(huán)境下,DDPG 算法無法快速地確定最優(yōu)動作和次優(yōu)動作。針對這兩方面的問題,本文提出了OE-DDPG 算法,并將其用于不同環(huán)境中的無人駕駛汽車的仿真中。結(jié)果顯示OE-DDPG 算法能夠使無人駕駛汽車快速和有效地避障,同時所獲得的平均獎勵也較高,并具有較好的魯棒性。