王丙琛,司懷偉,譚國(guó)真
(大連理工大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,遼寧 大連 116000)
近年來(lái),隨著人工智能和無(wú)人駕駛技術(shù)的快速發(fā)展,無(wú)人駕駛車輛已經(jīng)向?qū)嵱没~進(jìn),在未來(lái)將對(duì)提高道路安全、促進(jìn)交通管理和改善城市環(huán)保等產(chǎn)生顛覆性影響,成為汽車交通領(lǐng)域的一項(xiàng)革命[1]。據(jù)統(tǒng)計(jì),大約有90%的交通事故是由于駕駛員的失誤造成的,主要包括注意力不集中,判斷失誤和情境意識(shí)不足等因素[2]。但是,機(jī)器并不會(huì)出現(xiàn)勞累和注意力不集中等現(xiàn)象。因此,無(wú)人駕駛車的出現(xiàn),將有可能極大程度上降低這部分交通事故的概率[3]。Google、特斯拉、百度、NVIDIA等著名公司在無(wú)人駕駛上均投入了大量的人力和物力,并且已經(jīng)有部分車輛在道路上進(jìn)行了實(shí)測(cè)[4]。美國(guó)電氣和電子工程師協(xié)會(huì)(IEEE)預(yù)測(cè),至2040年自動(dòng)駕駛車所占比例將達(dá)到75%[5]。無(wú)人駕駛的決策和控制模塊是決定無(wú)人駕駛車安全性、穩(wěn)定性的關(guān)鍵技術(shù)[6]。然而,就當(dāng)前的情況而言,開發(fā)出能夠完全自主應(yīng)對(duì)各種復(fù)雜多變的路況及充滿不確定性的交通場(chǎng)景下的無(wú)人駕駛車仍然是一項(xiàng)巨大的挑戰(zhàn)。
目前,有基于深度學(xué)習(xí)和基于強(qiáng)化學(xué)習(xí)的自動(dòng)駕駛技術(shù)?;谏疃葘W(xué)習(xí)的方法利用人工記錄人類駕駛員的行為訓(xùn)練深度網(wǎng)絡(luò),利用訓(xùn)練好的深度網(wǎng)絡(luò)作為“司機(jī)”完成自動(dòng)駕駛。這種方法需要大量的人工標(biāo)注信息,這是不現(xiàn)實(shí)的。而基于強(qiáng)化學(xué)習(xí)的自動(dòng)駕駛算法則具有自己探索環(huán)境做出正確決策的能力,這符合人們對(duì)于自動(dòng)駕駛汽車的期望。強(qiáng)化學(xué)習(xí),其最通用的模型構(gòu)造方法是構(gòu)造一個(gè)列表存儲(chǔ)所有的狀態(tài)-動(dòng)作對(duì)的評(píng)價(jià)值。但是,這種方法對(duì)于自動(dòng)駕駛這種狀態(tài)-動(dòng)作空間較大的情況不能奏效。因此基于強(qiáng)化學(xué)習(xí)的自動(dòng)駕駛算法一直未出現(xiàn)較大規(guī)模的應(yīng)用。
Hinton等[7]在2006年提出的深度置信網(wǎng)絡(luò)(deep belief networks)開創(chuàng)了深度學(xué)習(xí)的一個(gè)新紀(jì)元。2013年,Krizhevsky等[8]在大規(guī)模視覺識(shí)別挑戰(zhàn)賽(imagenet large scale visual recognition competition)使用卷積神經(jīng)網(wǎng)絡(luò)取得突出成績(jī)之后,深度學(xué)習(xí)開始在計(jì)算機(jī)視覺等許多領(lǐng)域得到廣泛應(yīng)用。2016年,Bojarski等[9]提出使用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行自動(dòng)駕駛系統(tǒng)研究的方案。普林斯頓大學(xué)于2016年提出了改進(jìn)的基于深度學(xué)習(xí)的自動(dòng)駕駛系統(tǒng)方案[10]。隨著深度學(xué)習(xí)在各大領(lǐng)域的廣泛應(yīng)用,研究人員開始嘗試將深度學(xué)習(xí)和強(qiáng)化學(xué)習(xí)進(jìn)行結(jié)合形成了較為成熟的深度強(qiáng)化學(xué)習(xí)框架。其中最具代表性的就是Mnih等[11]提出的DQN(deep q-network)算法。由于DQN這種方法針對(duì)的是離散動(dòng)作空間,所以這種方法并不適用于自動(dòng)駕駛控制系統(tǒng)的開發(fā)。2016年,Google DeepMind又基于演員-評(píng)論家模型[12],將DQN算法改進(jìn)為深度確定性策略梯度(deep deterministic policy gradient,DDPG)算法[13],實(shí)現(xiàn)了對(duì)于連續(xù)動(dòng)作空間的控制。這種演員-評(píng)論家模型,分別使用一個(gè)價(jià)值網(wǎng)絡(luò)對(duì)當(dāng)前狀況進(jìn)行評(píng)估,一個(gè)策略網(wǎng)絡(luò)做出下一步?jīng)Q策,兩者的結(jié)合實(shí)現(xiàn)了更加符合人類決策過(guò)程的智能控制模型。
筆者根據(jù)上述研究提出一種結(jié)合了深度學(xué)習(xí)和強(qiáng)化學(xué)習(xí)的自動(dòng)駕駛策略學(xué)習(xí)算法:采用基于DDPG的強(qiáng)化學(xué)習(xí)算法進(jìn)行模型的在線訓(xùn)練,使用真實(shí)的人類駕駛數(shù)據(jù)對(duì)actor網(wǎng)絡(luò)進(jìn)行預(yù)訓(xùn)練,同時(shí)為了增強(qiáng)模型的泛化能力,在actor網(wǎng)絡(luò)中加入LSTM預(yù)測(cè)機(jī)制。最后,筆者對(duì)原始DDPG算法和新的算法的實(shí)驗(yàn)效果進(jìn)行了比較。
強(qiáng)化學(xué)習(xí)思想來(lái)源于生物學(xué)中的動(dòng)物行為訓(xùn)練,馴獸員通過(guò)獎(jiǎng)勵(lì)與懲罰的方式讓動(dòng)物學(xué)會(huì)一種行為和狀態(tài)之間的某種聯(lián)系規(guī)則[14]。強(qiáng)化學(xué)習(xí)框架如圖1所示。智能體agent從環(huán)境感知初始狀態(tài)st,采取動(dòng)作at,此agent會(huì)得到來(lái)自環(huán)境的獎(jiǎng)勵(lì)rt,如此產(chǎn)生一系列的“狀態(tài)-動(dòng)作-獎(jiǎng)勵(lì)”,直到結(jié)束狀態(tài)為止。agent的目的就是通過(guò)不斷地探索環(huán)境得到反饋來(lái)最大化獎(jiǎng)勵(lì)值總和。下面將對(duì)一些比較成熟的強(qiáng)化學(xué)習(xí)算法進(jìn)行介紹。
圖1 強(qiáng)化學(xué)習(xí)框架Figure 1 Reinforcement learning framework
DQN算法于2013年由Mnih等[11]提出,并于2015年進(jìn)行了改進(jìn)。DQN算法是傳統(tǒng)強(qiáng)化學(xué)習(xí)的一個(gè)延伸,它將智能體agent和環(huán)境的交互與馬爾可夫決策過(guò)程(MDP)形式化。馬爾可夫決策過(guò)程就是智能體在初始狀態(tài)s0下,從動(dòng)作空間A中挑選一個(gè)動(dòng)作a0執(zhí)行,執(zhí)行后,智能體按照一定概率轉(zhuǎn)移到下一個(gè)狀態(tài)s1,然后再執(zhí)行下一個(gè)動(dòng)作,重復(fù)上述過(guò)程。尤其是在步驟t時(shí),agent通過(guò)執(zhí)行動(dòng)作at,從狀態(tài)st轉(zhuǎn)移到新的狀態(tài)st+1,并且會(huì)得到環(huán)境反饋的獎(jiǎng)勵(lì)值rt。在DQN之前,強(qiáng)化學(xué)習(xí)中的一個(gè)重要分支為Q學(xué)習(xí)算法。Q學(xué)習(xí)通過(guò)構(gòu)造一個(gè)表來(lái)存儲(chǔ)狀態(tài)-動(dòng)作對(duì)。Q學(xué)習(xí)的目的是根據(jù)Bellman方程將Q值函數(shù)最大化,其形式為:
(1)
式中:γ是折扣因子。在DQN之前,當(dāng)采用非線性結(jié)構(gòu)(例如神經(jīng)網(wǎng)絡(luò))來(lái)逼近Q學(xué)習(xí)的值函數(shù)時(shí),不能保證探索的收斂性。DQN引入了經(jīng)驗(yàn)回放和目標(biāo)網(wǎng)絡(luò)來(lái)解決這個(gè)問題[11]。首先,狀態(tài)-動(dòng)作對(duì)轉(zhuǎn)移序列{st,at,rt,st+1}保存在經(jīng)驗(yàn)緩沖區(qū)中,然后訓(xùn)練一個(gè)深度神經(jīng)網(wǎng)絡(luò),采用從經(jīng)驗(yàn)緩沖區(qū)中隨機(jī)抽取的轉(zhuǎn)移序列來(lái)逼近Q函數(shù),這種技術(shù)在很大程度上打破了連續(xù)轉(zhuǎn)移的相關(guān)性,使得學(xué)習(xí)過(guò)程更加穩(wěn)定。Q網(wǎng)絡(luò)更新時(shí),Q值的目標(biāo)為:
(2)
(3)
DQN算法只考慮離散動(dòng)作域,這種方法對(duì)于自動(dòng)駕駛這種連續(xù)動(dòng)作空間來(lái)說(shuō)將不再適用。下面將介紹一種適用于連續(xù)動(dòng)作空間的算法。
DDPG算法基于確定性策略梯度DPG算法[15],同時(shí)采用了演員-評(píng)論家模型[12],而且保留了DQN的經(jīng)驗(yàn)回放和目標(biāo)網(wǎng)絡(luò)技術(shù)[11]。
actor-critic算法[12]將策略梯度算法和值函數(shù)結(jié)合在一起。策略函數(shù)稱為actor。值函數(shù)稱為critic?;旧?,演員actor會(huì)做出一個(gè)動(dòng)作,評(píng)論家critic會(huì)評(píng)價(jià)這個(gè)動(dòng)作。然后根據(jù)這些評(píng)價(jià),演員將調(diào)整自己的動(dòng)作,為了下次做得更好。
DDPG算法分別參數(shù)化評(píng)論家函數(shù)Q(s,a)和演員函數(shù)μ(s|θμ)。評(píng)論家函數(shù)的定義類似于Q-learning中的值函數(shù),并通過(guò)最小化來(lái)更新。如公式(4)和(5)所示:
(4)
Q(st,at|θQ)。
(5)
演員函數(shù)將當(dāng)前狀態(tài)映射到當(dāng)前最佳動(dòng)作,并通過(guò)以下方式更新,如式(6)所示:
(6)
(7)
(8)
基于深度學(xué)習(xí)的自動(dòng)駕駛方法需要大量人工標(biāo)注的數(shù)據(jù),模型泛化能力不足。而基于強(qiáng)化學(xué)習(xí)的算法初始階段學(xué)習(xí)速度緩慢,學(xué)習(xí)效率低。除此之外,希望智能體能夠在駕駛過(guò)程中從專業(yè)司機(jī)的演示中學(xué)習(xí)一些駕駛風(fēng)格,但是強(qiáng)化學(xué)習(xí)算法只能根據(jù)給定的獎(jiǎng)勵(lì)函數(shù)來(lái)進(jìn)行優(yōu)化,這很難描述專業(yè)司機(jī)的偏好,很難學(xué)習(xí)到類似人類的駕駛技巧?;谝陨洗嬖诘膯栴},筆者在DDPG算法的基礎(chǔ)上,提出融合了專家經(jīng)驗(yàn)的DDPGwE(determi-nistic policy gradient with expert)算法。DDPGwE增加了采用由專業(yè)司機(jī)駕駛數(shù)據(jù)組成的專家經(jīng)驗(yàn)對(duì)演員網(wǎng)絡(luò)進(jìn)行預(yù)訓(xùn)練的模塊。同時(shí),為了讓智能體學(xué)習(xí)到類似人類在駕駛環(huán)境中對(duì)未來(lái)狀況預(yù)判的能力,筆者在演員網(wǎng)絡(luò)中加入LSTM預(yù)測(cè)模塊,用來(lái)增強(qiáng)智能體在駕駛環(huán)境中對(duì)未來(lái)狀況的預(yù)判能力,以便更好地做出決策,避免一些危險(xiǎn)狀況的發(fā)生。
DDPGwE算法的整體框架如圖2所示。本文方法仍然采用原始DDPG算法的整體框架。但是,在原始網(wǎng)絡(luò)中進(jìn)行改進(jìn)。本方法加入了采用基于專業(yè)司機(jī)的駕駛經(jīng)驗(yàn)數(shù)據(jù)組成Expert模塊來(lái)對(duì)演員網(wǎng)絡(luò)進(jìn)行預(yù)訓(xùn)練。因?yàn)槿祟愒趯W(xué)習(xí)新知識(shí)的過(guò)程中,在初始階段會(huì)有“老師”進(jìn)行指導(dǎo)和傳授經(jīng)驗(yàn),在后面的學(xué)習(xí)過(guò)程當(dāng)中自己將會(huì)不斷地探索,這一過(guò)程正是強(qiáng)化學(xué)習(xí)的過(guò)程。所以,在強(qiáng)化學(xué)習(xí)階段之前使用專業(yè)司機(jī)經(jīng)驗(yàn)對(duì)網(wǎng)絡(luò)進(jìn)行預(yù)訓(xùn)練,這一過(guò)程更加接近人類的學(xué)習(xí)過(guò)程。同時(shí)專家經(jīng)驗(yàn)參與到強(qiáng)化學(xué)習(xí)過(guò)程當(dāng)中,使用一個(gè)策略在演員和專家之間選擇最佳動(dòng)作。同時(shí)為了讓智能體更好地做出決策,該算法在演員網(wǎng)絡(luò)中加入LSTM預(yù)測(cè)模塊,讓智能體學(xué)習(xí)對(duì)未來(lái)狀況進(jìn)行預(yù)判。因?yàn)檫@也符合人類的駕駛習(xí)慣,有了對(duì)未來(lái)狀況的預(yù)判,將很大程度地提高駕駛安全性。
圖2 DDPGwE框架Figure 2 DDPGwE framework
長(zhǎng)短期記憶網(wǎng)絡(luò)(long short term memory network,LSTM)算法[16]是一種改進(jìn)的循環(huán)神經(jīng)網(wǎng)絡(luò)算法,它使用一種被稱為L(zhǎng)STM的記憶單元來(lái)判別哪些信息應(yīng)該被保留,控制信息從前一時(shí)刻到下一時(shí)刻進(jìn)行傳輸,是目前應(yīng)用最為廣泛的具有記憶功能的網(wǎng)絡(luò),其數(shù)學(xué)模型如式(9)~(13)所示:
it=tanh(Wxixt+Whiht-1+Wcict-1+bi);
(9)
ft=tanh(Wxfxt+Whfht-1+Wcfct-1+bf);
(10)
ct=ftct-1+ittanh(Wxcxt+Whcht-1+bc);
(11)
ot=tanh(Wxoxt+Whoht-1+Wcoct+bo);
(12)
ht=ottanh(ct),
(13)
式中:W是LSTM 細(xì)胞單元的參數(shù)矩陣;b是LSTM細(xì)胞單元的偏置;tanh是激活函數(shù),可以增強(qiáng)神經(jīng)網(wǎng)絡(luò)的非線性。
根據(jù)深度學(xué)習(xí)當(dāng)中的預(yù)訓(xùn)練思想,對(duì)演員網(wǎng)絡(luò)進(jìn)行改進(jìn),如圖3所示。通過(guò)人工采集的專業(yè)司機(jī)的駕駛數(shù)據(jù)組成的專家經(jīng)驗(yàn)來(lái)對(duì)演員網(wǎng)絡(luò)進(jìn)行預(yù)訓(xùn)練,訓(xùn)練過(guò)程將狀態(tài)-動(dòng)作對(duì)作為神經(jīng)網(wǎng)絡(luò)的輸入。同時(shí)專家經(jīng)驗(yàn)也參與到動(dòng)作的決策過(guò)程中,該方法確保了專家經(jīng)驗(yàn)在初始階段參與度高,而在接下來(lái)的強(qiáng)化學(xué)習(xí)階段的參與度較低。最后,演員網(wǎng)絡(luò)將掌握專家的駕駛經(jīng)驗(yàn),并且學(xué)習(xí)到專家經(jīng)驗(yàn)之外的動(dòng)作。同時(shí)為了讓智能體學(xué)習(xí)類似人類真實(shí)駕駛行為中對(duì)未來(lái)狀況預(yù)判的能力,在演員網(wǎng)絡(luò)中加入LSTM預(yù)測(cè)模塊,從而加強(qiáng)模型對(duì)未來(lái)狀況的預(yù)判能力,從而更好地做出決策,避免危險(xiǎn)狀況的發(fā)生,使得算法具有更好的泛化能力和預(yù)測(cè)能力。
圖3 加入預(yù)訓(xùn)練的actor網(wǎng)絡(luò)Figure 3 Adding pre-trained actor network
DDPGwE算法的參數(shù)更新過(guò)程和DDPG算法的過(guò)程相似。使用狀態(tài)-動(dòng)作對(duì)作為專家經(jīng)驗(yàn)對(duì)初始演員網(wǎng)絡(luò)進(jìn)行預(yù)訓(xùn)練。在強(qiáng)化學(xué)習(xí)階段,在同樣的輸入狀態(tài)下,希望演員網(wǎng)絡(luò)生成的動(dòng)作跟專家經(jīng)驗(yàn)相似。同時(shí),也希望agent所產(chǎn)生的這一動(dòng)作在與環(huán)境交互的過(guò)程當(dāng)中能夠得到更高的獎(jiǎng)勵(lì)值。算法流程如下。
1:隨機(jī)初始化原始演員網(wǎng)絡(luò)θμ、原始評(píng)論家網(wǎng)絡(luò)θQ。
2:隨機(jī)初始化目標(biāo)演員網(wǎng)絡(luò)θμ′、目標(biāo)評(píng)論家網(wǎng)絡(luò)θQ′。
3:初始化經(jīng)驗(yàn)回放池D。
4:首先采用專業(yè)司機(jī)數(shù)據(jù)預(yù)訓(xùn)練原始演員網(wǎng)絡(luò)并保存權(quán)重。
5:forepisode=1,Mdo
6:加載預(yù)訓(xùn)練權(quán)重。
7:獲得初始狀態(tài)s1。
8:forstep=1,Tdo
9: 利用策略在專家經(jīng)驗(yàn)和演員網(wǎng)絡(luò)產(chǎn)生的動(dòng)作中選擇一個(gè)執(zhí)行動(dòng)作。
10: 將執(zhí)行完動(dòng)作之后得到的序列數(shù)據(jù)(st,at,rt,st+1)存儲(chǔ)到D中。
11: 利用固定的比例從D中采樣一批訓(xùn)練數(shù)據(jù)。
12: 利用式(4)和式(5)更新評(píng)論家網(wǎng)絡(luò)。
13: 利用式(6)更新演員網(wǎng)絡(luò)。
14: 利用式(7)和式(8)更新目標(biāo)網(wǎng)絡(luò)。
15: end for
16: end for
Torcs是一款開放式的、跨平臺(tái)的賽車模擬器[17]。它通過(guò)模擬真實(shí)車輛的發(fā)動(dòng)機(jī)、離合器、變速箱等車輛物理模型來(lái)實(shí)現(xiàn)車輛與環(huán)境的交互,其高度的模塊化和可移植性使其成為人工智能研究領(lǐng)域眾多研究工作者的理想選擇。本文方法也是采用了基于Torcs平臺(tái)的仿真環(huán)境來(lái)驗(yàn)證算法的可行性。Torcs有多個(gè)可用的地圖,筆者采用如圖4所示的地圖進(jìn)行算法的測(cè)試。
圖4 模擬賽道Figure 4 Simulated racetrack
采用一個(gè)包含29個(gè)傳感器值的向量(速度、角度、測(cè)距儀等)作為狀態(tài)輸入,3個(gè)連續(xù)值(轉(zhuǎn)向、加速和制動(dòng))作為動(dòng)作輸出。對(duì)于轉(zhuǎn)向,范圍為[-1,1],其中-1表示最大右轉(zhuǎn),1代表最大左轉(zhuǎn)。對(duì)于加速度,它在[0,1],其中0表示加速度為0,1表示加速度最大。對(duì)于制動(dòng),在[0,1],其中0表示無(wú)制動(dòng),1表示全制動(dòng)。
在本文中,采用一種相對(duì)簡(jiǎn)單的方式來(lái)定義獎(jiǎng)勵(lì)函數(shù),如式(14)所示:
R=vxcosθ-vxsinθ-vx|trackPos|。
(14)
為了防止agent經(jīng)常偏離軌道中心,也將trackPos作為獎(jiǎng)勵(lì)函數(shù)計(jì)算的一部分,trackPos表示車輛中心線與軌道邊緣的距離。希望最大化agent縱向速度vxcosθ,最小化agent橫向速度vxsinθ。
筆者分別記錄了兩種方法在訓(xùn)練過(guò)程中所獲得的平均獎(jiǎng)勵(lì)值的統(tǒng)計(jì)分布。如圖5所示,圖5中黑色虛線是原始DDPG算法在訓(xùn)練過(guò)程中所得到的獎(jiǎng)勵(lì)值的分布,黑色實(shí)線是改進(jìn)的DDPGwE算法在訓(xùn)練過(guò)程中的平均獎(jiǎng)勵(lì)值的分布。從圖中可以看出,隨著訓(xùn)練的不斷進(jìn)行,智能體所得到的獎(jiǎng)勵(lì)值在不斷地增加,說(shuō)明了智能體很好地學(xué)習(xí)了駕駛技能。
圖5 平均獎(jiǎng)勵(lì)值Figure 5 Average reward
表1記錄了原始DDPG算法和改進(jìn)的算法的訓(xùn)練過(guò)程所消耗的時(shí)間和碰撞次數(shù),以及達(dá)到收斂的迭代次數(shù)。根據(jù)仿真時(shí)間記錄并且結(jié)合圖5,原始DDPG算法需要240 min的學(xué)習(xí)才能在Torcs中完整跑完一圈。而本文的算法僅用30 min即可在Torcs中完整跑完一圈。在相同的迭代次數(shù)下,原始DDPG算法的學(xué)習(xí)過(guò)程不穩(wěn)定,而且學(xué)習(xí)速度較慢,并且收斂到相對(duì)穩(wěn)定的值所需要的時(shí)間較長(zhǎng)。而改進(jìn)過(guò)的算法則表現(xiàn)較好,根據(jù)圖5和表1可以看出,DDPGwE算法的學(xué)習(xí)速度較快,可以很快地收斂到一個(gè)較穩(wěn)定的獎(jiǎng)勵(lì)值。并且,學(xué)習(xí)的過(guò)程非常穩(wěn)定,所需要的時(shí)間也大大縮短。
表1 訓(xùn)練信息Table 1 Training information
提出了一個(gè)基于深度強(qiáng)化學(xué)習(xí)的自動(dòng)駕駛策略學(xué)習(xí)算法(DDPGwE)?;贒DPG算法,首先使用專業(yè)司機(jī)駕駛數(shù)據(jù)對(duì)網(wǎng)絡(luò)進(jìn)行預(yù)訓(xùn)練,同時(shí)在強(qiáng)化學(xué)習(xí)過(guò)程中,專業(yè)司機(jī)經(jīng)驗(yàn)也將參與到?jīng)Q策過(guò)程中。并且在actor網(wǎng)絡(luò)中加入了LSTM模塊來(lái)增強(qiáng)網(wǎng)絡(luò)的穩(wěn)定性和泛化能力。實(shí)驗(yàn)結(jié)果顯示,筆者所提出的算法與原始DDPG算法相比,能夠加快智能體的學(xué)習(xí)速度,并且能夠快速地收斂到一個(gè)穩(wěn)定的獎(jiǎng)勵(lì)值。同時(shí),算法的泛化能力也得到了提高,具有很好的實(shí)際應(yīng)用價(jià)值。