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