賴晨光,楊小青,胡 博, 龐玉涵, 鄒 宏
(1.重慶理工大學 汽車零部件制造及檢測技術教育部重點實驗室, 重慶 400054; 2.重慶理工大學 車輛工程學院, 重慶 400054)
近年來,汽車領域迎來了重大變革,由原始的機械制造朝著智能化方向發展,全球許多知名汽車生產制造企業大量投資到智能駕駛技術領域。而大多數的智能駕駛系統采用高度模塊化的設計方法,其優點是擁有很強的可解釋性,不過,對于復雜的城市道路,控制器的參數數目龐大,即使采取自適應的參數調節,通常也受限于模型的表達能力,魯棒性難以得到保證。
2016年,Nvidia團隊通過監督學習首次實現了智能駕駛的端到端控制輸出,該算法以RGB視頻圖像作為輸入,省略了中間感知、決策、控制等環節,直接輸出方向、油門、制動等動作[1]。雖然使用監督學習訓練的模型在大部分的環境下有良好的行駛表現,但需要體量龐大的人工標注的數據。
本文同樣針對智能駕駛提出了一個端到端的控制方法,不同的是,采取深度強化學習算法,避免了大量的人工標注數據的工作。除此之外,鑒于強化學習算法在訓練的過程中會采取大量的隨機動作來探索環境,從而導致小車時常處于比較危險的狀態[2]。因此,本文在深度強化學習算法的基礎上添加了一個干預智能體危險動作的監督器,從而減少強化學習危險的試錯行為,同時提升訓練效率。
基本的強化學習過程如圖1所示,不同于監督學習,它通過試錯的機制,使智能體與外界環境進行交互獲得獎勵來指導每一步行為動作,從而最大化累積獎勵[3]。

圖1 強化學習過程示意圖
根據優化的目標分類,強化學習可以分為基于值函數的優化算法和基于策略的優化算法[4]。基于值函數的算法以最大化狀態值函數或動作值函數為優化目標,最終找到最優策略;基于策略搜索的強化學習算法直接將策略參數化,并對策略函數求導,利用梯度法最大化累積回報[5]。基于值函數的強化學習難以處理輸出為連續值的問題,而優點是能找到全局最優;基于策略搜索的強化學習盡管可以解決連續動作輸出問題,但容易陷入局部最優[6]。
1.1.1馬爾可夫決策過程概述
馬爾可夫性是指在知道過去和現在一切狀態的條件下,對將來的狀況僅僅決定于當前的狀態。若存在一個狀態序列,該序列中的每個狀態都滿足了馬爾可夫性質,則該狀態序列被稱為馬爾可夫過程[7]。綜上所述,馬爾科夫決策過程(markov decision process,MDP)便可以用元組(S,A,P,R,γ)來描述,其中:S代表有限狀態序列集;A代表有限動作序列集;P為狀態轉移概率;R為獎勵函數;γ為折扣系數。
在與環境交互的過程中,智能體從時刻t開始到未來執行的所有動作之后,能獲得的累積獎勵Gt為:

(1)
1.1.2基于值函數的優化算法
值函數分為狀態值函數vπ(s)和動作值函數
Qπ(s),在遵循策略π,狀態值函數的定義為:
vπ(s)=Επ[Gt|St=s]
(2)
動作值函數的定義為:
Qπ(s,a)=Επ[Gt|St=s,At=a]
(3)
根據狀態的馬爾可夫性,最優狀態值函數和最優動作值函數分別為:
(4)
(5)
在已知最優狀態值函數或者最優動作值函數之后,可以通過最大化最優狀態值函數或最優動作值函數獲得最優策略。
1.1.3基于策略的優化算法
基于策略的優化算法廣泛應用于連續空間的強化學習問題中。其主要思想是將策略π參數化,計算出關于動作的策略梯度,然后沿著梯度的方向,反復以小幅度調整動作,經過多次訓練,最終得到最優策略[8]。
策略分為隨機性策略和確定性策略。隨機性策略是指:在狀態s下,動作a是一個概率分布函數。因此,即使是在相同的狀態下,也可能會有不同的動作;而確定性策略則是每個狀態只對應唯一的動作[9]。
同樣地,策略梯度也分為隨機性策略梯度和確定性策略梯度。Sutton等[10]推導出了隨機性策略梯度的公式:
▽θL(πθ)=Εs~ρπ,a~πθ[▽θlogπθ(a|s)Qπ(s,a)]
(6)
而后,Silver等[11]提出并證明了確定性策略梯度的公式:
▽θL(μθ)=Εs~ρμ[▽θμθ(s)▽aQμ(s,a)|a=μθ(s)]
(7)
此后,確定性策略梯度方法得以流行。
1.1.4深度確定性策略梯度算法
深度確定性策略梯度算法(deep deterministic policy gradient,DDPG)結合了強化學習中基于值函數和基于策略的求解方法,是深度Q網絡(deep Q network,DQN)的延伸[12],其包含了actor網絡和critic網絡,兩者都是深度神經網絡,actor網絡的作用是生成動作,將狀態s映射為動作a[13];critic網絡的作用是評價動作的好壞,其輸入有狀態s和動作a,輸出的是動作值函數Q,其功能類似于DQN網絡[14]。與DQN一樣,DDPG同樣采用了經驗回放打破樣本之間的相關性,也復制了一個目標網絡作為原網絡的逼近對象[15],其算法偽代碼如下:
Algorithm DDPG
1 初始化actor網絡參數θμ和critic網絡θQ;
2 初始化目標網絡θμ′、θQ′;
3 初始化經驗回放池R,初始化狀態s0;
4 For episode=1,…,Mdo:
5 Fort=0,…,T:
6 Fort=0,…,Tdo:
(1) 選擇動作at,執行動作at,獲取rt、at+1;
(2) 將經驗〈st,at,rt,st+1〉存到經驗池R;
(3) 從R中采樣大小為N的經驗數據transition:〈st,at,rt,st+1〉;
(4) 根據transition計算TD target:
yi=ri+γQ′(si+1,μ′(si+1|θμ′)|θQ′)
(6) 計算策略梯度:
▽θμμ(s|θμ)|s=si)
(7) 更新actor網絡;
(8) 更新目標網絡;
7 End for
8 End for
本文以Carla模擬器作為實驗的仿真環境,并通過DDPG算法對虛擬無人車的控制策略展開了研究,不同于傳統感知-決策-控制的方案,本文提供了一種端到端的無人車控制方法[16]。
2.1.1仿真環境介紹
Carla是一款城市環境的無人駕駛仿真器,由Intel Labs、Toyota Research Institute和UBA Computer Vision Center聯合開發,支持無人駕駛系統的開發、訓練和驗證[17]。
Carla添加了各種天氣特征到仿真環境中,并且考慮了真實的光照情況,最大限度還原真實駕駛過程。另外,開發者還能夠按照自己的實際需要靈活選擇地圖、汽車、行人、交通標志等。除此之外,Carla還提供了許多常見的傳感器,如廣角攝像機、激光雷達、GPS等,且開放了Python接口供開發者完成各項配置。
Carla系統為評價算法提供了一個標準的評估框架,便于開發者對各種算法進行統一評測。評估標準(driving benchmark)包括算法(Agent)和實驗包(experiment suite)組成。該算法由研究者自我封裝,然后在實驗包的環境上進行測試實驗,測試過程中可以根據需要記錄待評估選項的分數(recording)以及進行性能計算(metrics)。
性能計算包括任務完成的分數、任務平均完成度以及違反駕駛行為的分數。成功完成任務的分數根據指定了任務回合的數量計算;任務平均完成度根據每一個回合已經行駛的距離計算;違規駕駛考慮了偏離道路(offroad)、偏離車道(otherlane)、碰撞(collision)等情況。
2.1.2研究方案設計
本文通過DDPG算法在Carla仿真器中完成虛擬無人車自動駕駛的車道保持決策控制任務,車道保持是指虛擬無人車沿著一條車道駕駛,在交叉路口時,隨機選擇行駛方向。該任務的要求是:保證無人車在本車道內行駛,并最低限度地發生違規駕駛。仿真訓練的地圖Town01如圖2。

圖2 Carla環境Town01地圖
訓練過程中,每一個新回合,小車都被放置在Town01中的一個隨機的開始位置,其他車輛和行人也位于新的隨機位置。環境中的車輛數目為20,行人數量為40,天氣為晴朗(weather TD=1)。
DDPG算法中一共包含4個神經網絡,與DQN一樣,分為在線網絡和目標網絡,且2種網絡結構一致;同時,DDPG采用的是actor-critic架構,因此,在線網絡包含actor在線網絡和critic在線網絡,目標網絡同樣如此。其中,actor在線網絡和critic在線網絡模型如圖3、4所示。

圖3 actor在線網絡示意圖

圖4 critic在線網絡示意圖
Actor在線網絡的輸入狀態包含圖像信息和測量信息,圖像信息來自無人車正前方的廣角攝像機,測量信息包括轉向值steer∈[-1,1]、加速值/制動值throttle/brake∈[-1,1]、當前車速、偏離車道線值otherlane∈[0,1]、偏離道路值offroad∈[0,1];輸出為二維動作控制向量[action_0, action_1],action∈[-1,1],其中,action_0時,表示轉向;action_1>0時,表示油門;action_1<0時,表示剎車。
Critic在線網絡除了輸入狀態外,還包含由actor網絡輸出的動作;輸出為該狀態下采取某一動作的Q值,即動作值函數。
由于強化學習通過試錯機制探索環境,因此,智能體在前期的訓練中,時常會在已經偏離車道線或道路的情況下,依然采取與上一時刻相同的轉向值,這樣的無效訓練使智能體在訓練前期花更多時間去探索。為了提高智能體前期的訓練效率,盡可能減少強化學習的試錯成本,在原DDPG算法的基礎上,對其進行改進,其中,仿真環境、網絡結構與原DDPG算法保持一致,如圖5所示。

圖5 監督式DDPG示意圖
智能體的actor網絡輸出控制動作,監督器會根據前一時刻的狀態來判斷是否對智能體輸出的動作進行強制干預,其具體規則為:
1) 若上一時刻狀態測量信息中的偏離車道線值或偏離道路值大于0,則轉向值將變為:
action_0′=action_0-0.5×prev_action[′steer′]
(8)
其中,pre_action[′steer′]為上一時刻的轉向值。
2) 若上一時刻狀態測量信息中的速度小于0,則加速值和制動值分別為:
throttle′=throttle+0.5
(9)
brake′=0
(10)
2.2.1超參數設置
實驗中的超參數設置如表1所示。

表1 超參數設置
MAX_EPISODES為訓練的總回合數;MAX_STEPS_EPISODE 為一回合訓練的最大步數;WARMUP_STEPS為熱身的步數,即在這之前為數據收集階段,熱身步數之后開始訓練網絡的參數;GAMMA為計算累積回報值時的折扣系數;TAU為target 網絡更新時的參數;BUFFER_SIZE為回放經驗池的尺寸大小;OU_THETA、OU_MU、OU_SIGMA為OU噪聲的參數;MINI_BATCH_SIZE為批訓練的數據量;EVAL_PERIODS為算法評估的頻率,即每隔100個回合評估一次算法;EVAL_EPISODES為評估持續的時間,即每次評估持續10個回合。EXPLORATION_EPISODES為探索階段,即在這之前會在actor網絡輸出的動作上加入OU噪聲,以增加動作輸出的多樣性。
2.2.2圖像預處理
圖像來自于安裝在車輛正前方的廣角攝像機,本文選擇的圖像類型是Carla中的Scene Final圖像。本小節首先將圖像剪裁為800×280,去掉了圖像中的無關要素,然后進行像素重采樣,重采樣后的大小為88×200。
2.2.3獎勵函數的設計
在強化學習中,獎勵函數的作用不言而喻,不僅影響著算法的收斂速度,也是該算法能否成功的關鍵一環。獎勵函數引導著智能體做出正確的決定,直接決定了智能體能否學習到正確策略。自動駕駛中的獎勵函數應該根據各種駕駛狀況的優劣來定義獎勵函數,從而使智能體能更快更好地學習到好的駕駛策略。針對本次駕駛任務,本文獎勵函數設置如下:
1) 碰撞項Rc。包括碰撞車、行人、建筑物等其他物體,都會給予一個大的負向獎勵:
Rc=-100Ct
(11)
式中:Ct=0代表沒有碰撞情況發生,Ct=1代表有碰撞情況發生。
2) 車速項Rv。該項因素是為了獎勵能在限制速度以內向前行駛,同時對負向速度和超速的行為給予一個負向獎勵:

(12)
式中:Vt代表無人車的當前速度;此實驗中設置了一個限速的變量Vlimit,當無人車的行駛速度小于當前道路的限速時,會得到一個正向的獎勵值,該獎勵值與當前的速度一致;當然,若該速度值為負時,則獎勵值相應也會變成負向的獎勵值;當無人車的行駛速度大于當前道路的限制速度時,則會給予一個負向值的獎勵,該值等于行駛速度與限速之差。
3) 偏離當前道路項Rs。該項因素是為了對超出道路這一狀況給予負向的獎勵值,同時,對于完全行駛出道路之外的情況,會強制終止這一回合的訓練:

(13)
式中:St代表無人車偏離道路的量,St∈[0,1],當該值小于1時,會給予一個負向的獎勵,該獎勵值與偏移的量成正比;當該值等于1時,即無人車已經完全開出道路以外,會給予一個大的負向獎勵,并且強制結束這一回合的訓練。
4) 偏離車道線Ro。該項因素是考慮到無人車行駛過程中偏離車道線的情況:
Ro=-5Ot
(14)
式中:Ot代表無人車偏離車道線的量,Ot∈[0,1],其獎勵值與偏移車道線的量成正比。
5) 當前時刻與上一時刻行駛距離差項Rd。該項因素是為了防止無人車停滯不前,鼓勵小車向前行駛:
Rd=-5dt
(15)
式中:dt=1代表距離當前時刻與上一時刻之間行駛的距離差小于0.1 m,dt=0代表距離差大于 0.1 m。
6) 轉向項Rsteer。此向獎勵函數則是出于舒適性的考量:
Rsteer=-10abs(steer)2
(16)
式中:steer代表無人車的轉向值,steer∈[-1,1],由于大的轉向值會造成較低的舒適性,因此該項獎勵值為一個負向獎勵,其值與轉向值的平方成正比。
綜上所述,實驗中的獎勵函數一共包含6項,具體為:
R=Rc+Rt+Rs+Ro+Rd+Rsteer
(17)
2.2.4回合終止的條件設置
回合終止的條件設置主要考慮2種情況:① 發生了實際行車中難以承受的錯誤和完成了指定任務。如無人車撞上了建筑物而停滯不前,使得智能體一直存儲一些無用的狀態轉移(transition)數據,且難以探索新的環境,導致后續的訓練難以進行。② 達到了訓練的回合數也會停止訓練。具體終止條件設置如下:
1) 車輛發生碰撞情況。
2) 整個車處于非行駛區域(道路以外)。
3) 當reward_time≥100。每一次新的回合會初始化reward_time=0,當前進速度小于0時,會增加值為5的reward_time,當上一時間步與當前時間步距離之差小于0.1 m時,會增加值為1的reward_time。當該值大于等于100時,會終止該回合的訓練,這樣的設置是為了防止小車長時間無明顯的位移變化。
4) 達到一回合訓練的最大步數MAX_STEPS_EPISODE=5 000。
DDPG智能體以及監督式DDPG智能體在地圖Town01中分別訓練了70 000個回合,其實驗條件與實驗設置均保持一致,最終訓練結果如圖6、7所示。

圖6 平均獎勵變化曲線
圖6中的2條曲線分別表示2種算法每一回合平均回報的變化。從圖中可以看出,在訓練的初始階段,監督式DDPG算法的平均回報明顯高于原始DDPG算法,而隨著訓練次數的增加,兩者逐漸靠近,最后均收斂于同一平均值。圖7的2條曲線為2種算法每一回合的累積回報的變化,其中,監督式DDPG算法在30 000回合以前,累積回報值均在0以下,表明這時的獎勵值以負向獎勵居多, 而原DDPG算法的負向獎勵持續到了 38 000回合。在訓練初期,小車還處于環境摸索中,時常發生碰撞、越線、原地不動等情況,這些不好的狀態都會使小車得到比較大的負向獎勵。不過,一旦小車開始得到正向獎勵,其訓練效果便會發生質的提升。

圖7 累積獎勵變化曲線
根據訓練得到的網絡模型,分別在地圖Town01和地圖Town02中制定了不同駕駛任務的測試實驗來對該模型進行測評,如圖8所示。

圖8 任務位置點示意圖
測試場景包含地圖Town01和地圖Town02,從地圖上的A點行駛到B點,駕駛任務的變量有天氣和環境中的汽車和行人數量。2個地圖測試路線均包含了2個直角拐彎。由于第1個地圖也是訓練場景,因此,測試實驗中的行駛路線比第2個地圖的行駛路線更為苛刻一些,根據圖8(a)所示,除了兩者都包含的2個直角拐彎之外,中間還包括了3個岔路口。考慮到未在Town02中進行訓練,因此,其行駛路線只有2個直角拐彎。
在地圖Town01中,天氣為晴朗(weather ID=1)和雨后(weather ID=3),DDPG和監督式 DDPG的測試結果如表2、3所示。

表2 DDPG Town01測試結果

表3 監督式 DDPG Town01測試結果
根據表2、3,監督式 DDPG與DDPG在地圖Town01中的總體表現相差不大,均能在靜態的環境中出色地完成駕駛任務。即使天氣有所改變,駕駛效果也沒有明顯變化;然而,當環境中出現行人和車輛這樣的動態因素時,兩者的表現均有明顯下降,尤其在增加車輛行人且改變天氣之后,2種算法的駕駛表現均出現了顯著下滑,可以看出,相比于天氣,智能體對環境中的動態因素變化更敏感。
而在地圖Town02中,天氣為晴朗(weather ID=1)和雨后(weather ID=3),DDPG和監督式 DDPG的測試結果如表4、5所示。

表4 DDPG Town02測試結果

表5 監督式DDPG Town02測試結果
根據表4、5所示,同樣地,監督式 DDPG和DDPG算法在Town02中總體表現無明顯優劣。不過,在面對新的環境時,2種算法的智能體均未能得到適應,在新環境中幾乎無法正常駕駛,駕駛違規頻頻發生,危險的碰撞行為也層出不窮。其原因可歸結為神經網絡表征能力不夠,算法泛化能力不足,導致無法有效地遷移到陌生的駕駛環境中。
采用深度強化學習算法,以端到端的方式實現了對虛擬無人車的控制。訓練結果表明,原始DDPG算法以及監督式DDPG算法最終均能達到一致的效果,能夠有效避開障礙,在沒有違規駕駛的條件下保持在車道內行駛。并且監督式DDPG算法能有效提升前期訓練效果,降低初期試錯風險,能更早地收斂。測評結果表明,環境中動態因素對無人車駕駛效果的影響遠遠大于天氣因素。其次,當將該模型遷移到新的環境中進行駕駛仿真時,小車幾乎不能正常行駛,因此,模型的遷移能力不足。
本文改進的基于監督式的DDPG算法只提供了粗略的動作矯正,意在改善提升其前期的訓練效率,而并非最終的效果。
由于強化學習是通過不斷試錯尋找最優解,所以在游戲等虛擬場景中能大放異彩,然而,在實際環境中,讓車采取隨機策略、通過試錯得到正確的控制策略顯然不可能。因此,智能駕駛中使用強化學習技術一般情況下會事先在仿真環境下進行模擬訓練。本文完成了在仿真環境下的自動駕駛實驗, 而通過加入監督器干預智能體的危險動作這一方法,可為端到端的智能駕駛控制提供一些參考價值,以及對強化學習從虛擬到現實提供一定的借鑒意義。
同時,本文的研究還存在一些不足之處:首先,小車感知力不足,模糊了障礙物和陰影的區別,會出現將陰影錯當成障礙物規避的現象;其次,控制效果比較生硬,導致舒適性一般。最后,模型遷移到新環境中時難以正常行駛。因此,進一步提高小車的感知能力與舒適性,以及提高算法的泛化能力將是以后的研究方向。