朱 堅(jiān),宋曉茹,高 嵩,高澤鵬
(西安工業(yè)大學(xué) 電子信息工程學(xué)院,西安710021)
車(chē)輛的普及帶來(lái)了很多的交通安全問(wèn)題。根據(jù)國(guó)家統(tǒng)計(jì)局的統(tǒng)計(jì)數(shù)據(jù),平均每年發(fā)生交通事故近20000 起。隨著科技的發(fā)展,無(wú)人駕駛[1-3]作為汽車(chē)新的研究熱點(diǎn),新的智能算法[4]在無(wú)人的控制方面有了更加廣泛的應(yīng)用。
在無(wú)人駕駛汽車(chē)的各個(gè)部分中,行為決策是最關(guān)鍵的一部分。文獻(xiàn)[5-6]使用A* 算法實(shí)現(xiàn)機(jī)器人的控制,A*算法雖然從理論上來(lái)說(shuō),可以得到最優(yōu)時(shí)間路徑,但是如果是在情況比較復(fù)雜的情況下,計(jì)算量是非常龐大的,A*算法是無(wú)法處理的。文獻(xiàn)[7]采用Dijkstra 算法實(shí)現(xiàn)最短路徑的求解, 該算法簡(jiǎn)單明了,能夠得到最優(yōu)解,但是效率比較低,特別是在實(shí)際情況下,并不需要求得最優(yōu)的解,并且運(yùn)算占用空間大。文獻(xiàn)[8-9]使用的是粒子群算法,該算法雖然搜索速度快,但是對(duì)離散的問(wèn)題處理效果不佳。
上述文獻(xiàn)中基本使用建立柵格地圖的方式來(lái)進(jìn)行算法仿真,并不能看出算法在實(shí)際道路下的情況,因此本文使用TORCS[10]無(wú)人車(chē)模擬器實(shí)現(xiàn)對(duì)算法的仿真。TORCS 無(wú)人車(chē)仿真平臺(tái),內(nèi)部集成了各種各樣的精確的車(chē)輛動(dòng)力學(xué)模型和賽道,與建立柵格地圖的方法相比,一方面環(huán)境更加復(fù)雜,由二維平面變?yōu)槿S地圖, 并且算法處理的數(shù)據(jù)更加龐大,計(jì)算量也大大提高,所以使用TORCS 模擬器更能體現(xiàn)出算法在實(shí)際情況下的表現(xiàn),并且還不用考慮安全性問(wèn)題。
由于傳統(tǒng)的路徑規(guī)劃算法,如A* 算法,Dijkstra算法等,其決策方式是一個(gè)典型的有限狀態(tài)機(jī),只能采取保守的駕駛策略,需要人為設(shè)計(jì)精確的規(guī)則來(lái)應(yīng)對(duì)復(fù)雜多狀態(tài)的各種情況,如果其算法模型的參數(shù)設(shè)置精度不夠,那么在實(shí)際情況下將無(wú)法達(dá)到較好的效果,也就無(wú)法實(shí)驗(yàn)無(wú)人車(chē)的快速控制?;诖?。本文使用DDPG 算法實(shí)現(xiàn)無(wú)人車(chē)的控制,文獻(xiàn)[11]提出了一種新的多目標(biāo)車(chē)輛跟隨決策算法,解決了已有算法泛化性和舒適性差的問(wèn)題。文獻(xiàn)[12]將模仿學(xué)習(xí)(IL)和DDPG 相結(jié)合,加快了強(qiáng)化學(xué)習(xí)的訓(xùn)練過(guò)程。
仿真結(jié)果表明,改進(jìn)后的DDPG 算法,可以解決傳統(tǒng)算法解決不了的計(jì)算量大、占用運(yùn)算空間多、對(duì)離散問(wèn)題處理效果不佳等問(wèn)題,與未改進(jìn)前的算法相比,在無(wú)人車(chē)的自動(dòng)控制方面有更好的表現(xiàn)。
DDPG(Deep Deterministic Policy Gradient)算法,其算法原理在本質(zhì)上是Actor-Critic 算法和DQN(Deep Q-Learning Network)算法的結(jié)合體。
DDPG 算法一方面使用了和DQN 算法中相同的經(jīng)驗(yàn)池和雙網(wǎng)絡(luò)結(jié)構(gòu)來(lái)促進(jìn)神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí);而算法中的“Deterministic”表示Actor 網(wǎng)絡(luò)不再輸出兩個(gè)動(dòng)作的概率,而是一個(gè)具體的值。
如圖1 所示, 算法原理的另一部分和Actor-Critic 算法相同,DDPG 算法有一個(gè)Actor 網(wǎng)絡(luò)和Critic 網(wǎng)絡(luò),Actor 網(wǎng)絡(luò)和Critic 網(wǎng)絡(luò)都有目標(biāo)值網(wǎng)絡(luò)(Target-net)和估計(jì)值網(wǎng)絡(luò)(Eval-net)。只需要訓(xùn)練兩個(gè)Eval-net 的網(wǎng)絡(luò)參數(shù),而Target-net 網(wǎng)絡(luò)的參數(shù)是由前面兩個(gè)網(wǎng)絡(luò)每隔一定的時(shí)間復(fù)制過(guò)去得到。
圖1 DDPG 算法原理結(jié)構(gòu)Fig.1 DDPG algorithm principle structure
Critic 網(wǎng)絡(luò)的更新公式為
Actor 網(wǎng)絡(luò)的更新公式
Actor 網(wǎng)絡(luò)和Critic 的網(wǎng)絡(luò)參數(shù),是通過(guò)網(wǎng)絡(luò)的梯度進(jìn)行更新的。Actor 網(wǎng)絡(luò)的梯度用Grand(μ)表示,Critic 網(wǎng)絡(luò)的梯度由Grand(Q)表示。關(guān)于A(yíng)ctor網(wǎng)絡(luò)的更新, 其參數(shù)的更新一方面是從Critic 網(wǎng)絡(luò)得到的,通過(guò)Grand(Q)該梯度的正負(fù)和大小,得到Actor 網(wǎng)絡(luò)的更新方向;而Grand(μ)來(lái)自Actor 網(wǎng)絡(luò)本身,這兩個(gè)參數(shù)相結(jié)合,表示Actor 網(wǎng)絡(luò)要朝著獲得最大Q 值的方向來(lái)修正網(wǎng)絡(luò)的參數(shù)。
為了使模型可以快速學(xué)習(xí)和更新為網(wǎng)絡(luò)參數(shù),提高算法的探索能力,求取到最優(yōu)解,因此采用不斷衰減噪聲信號(hào)的方法來(lái)改進(jìn)OU 過(guò)程。
Ornstein-Uhlenbeck 過(guò)程 (也稱(chēng)為OU 過(guò)程)是一種序貫相關(guān)的過(guò)程, 在DDPG 中用于實(shí)現(xiàn)RL 的探索,OU 過(guò)程滿(mǎn)足如下的隨機(jī)微分方程:
式中:θ>0;μ,σ>0 為參數(shù);Wt為維納過(guò)程。
在代碼實(shí)現(xiàn)中:
式中:W 為滿(mǎn)足正態(tài)分布的一個(gè)隨機(jī)數(shù)。
改進(jìn)后的計(jì)算方法為在訓(xùn)練一開(kāi)始,給noise設(shè)定一個(gè)較大的值, 然后隨著訓(xùn)練步驟衰減noise,可以使得模型快速學(xué)習(xí)網(wǎng)絡(luò)的參數(shù),快速找到算法的最優(yōu)解。
TORCS 無(wú)人車(chē)仿真平臺(tái),內(nèi)部集成了各種各樣的精確的車(chē)輛動(dòng)力學(xué)模型和賽道,并且可以獲得仿真環(huán)境下所有車(chē)輛的真實(shí)數(shù)據(jù)。
Actor 網(wǎng)絡(luò)結(jié)構(gòu)如圖2 所示,Critic 網(wǎng)絡(luò)結(jié)構(gòu)如圖3 所示。
圖2 Actor 網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)Fig.2 Design of Actor network structure
圖3 Critic 網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)Fig.3 Design of Critic network structure
TORCS 模擬器中主要監(jiān)測(cè)無(wú)人車(chē)的三部分:方向,油門(mén),剎車(chē),在網(wǎng)絡(luò)結(jié)構(gòu)中將此三部分做為網(wǎng)絡(luò)結(jié)構(gòu)中平行的三個(gè)部分,然后將這三部分的輸出進(jìn)行連接,作為整個(gè)神經(jīng)網(wǎng)絡(luò)的輸出,從而形成Actor網(wǎng)絡(luò)的網(wǎng)絡(luò)結(jié)構(gòu)模型(Actor-model)。
而Critic 網(wǎng)絡(luò),將狀態(tài)值和動(dòng)作值分別輸入到網(wǎng)絡(luò)層中,將輸出連接后輸入另一個(gè)網(wǎng)絡(luò)層中,形成Critic 網(wǎng)絡(luò)的網(wǎng)絡(luò)結(jié)構(gòu)模型(Output_Critic-model)。
網(wǎng)絡(luò)的參數(shù)是通過(guò)梯度下降的方式進(jìn)行訓(xùn)練調(diào)整的。學(xué)習(xí)率的設(shè)置會(huì)大大影響網(wǎng)絡(luò)的學(xué)習(xí)速度。
梯度下降公式為
當(dāng)α 設(shè)置過(guò)大, 梯度可能會(huì)在最小值附近震蕩,甚至可能無(wú)法收斂;當(dāng)α 設(shè)置過(guò)小時(shí),收斂速度會(huì)非常緩慢。通過(guò)同時(shí)調(diào)整Actor 網(wǎng)絡(luò)和Critic 網(wǎng)絡(luò)的學(xué)習(xí)率,使的無(wú)人車(chē)能更快的自主學(xué)習(xí)調(diào)整網(wǎng)絡(luò)參數(shù)。
2.1.1 仿真平臺(tái)
TORCS 是一個(gè)開(kāi)源的賽車(chē)仿真模器,通過(guò)UDP協(xié)議進(jìn)行通信??蛻?hù)端(Client)可以向服務(wù)器(Server)發(fā)送數(shù)據(jù)請(qǐng)求,并根據(jù)得到的傳感數(shù)據(jù)進(jìn)行車(chē)輛的控制,控制效果由TORCS 進(jìn)行3D 可視化。這一框架可以靈活地控制 TORCS 平臺(tái)仿真的開(kāi)始和終止,并可方便地獲取車(chē)輛的狀態(tài)(圖像和其他傳感)信息,根據(jù)所獲信息實(shí)現(xiàn)車(chē)輛控制,基本滿(mǎn)足了深度強(qiáng)化學(xué)習(xí)策略訓(xùn)練需要的所有條件。TORCS 模擬器框架如圖4 所示,模擬器道路如圖5 所示。
圖4 TORCS 模擬器框架Fig.4 TORCS simulator framework
圖5 TORCS 模擬器道路Fig.5 TORCS simulator road
2.1.2 軟件版本
本文使用python 版本是3.5.2,tensorflow 版本是1.4.0,keras 版本是2.2.5,另外還有一些常見(jiàn)的python 包。
基于以上論述, 本文將首先調(diào)整網(wǎng)絡(luò)參數(shù),然后在網(wǎng)絡(luò)參數(shù)相同的情況下,對(duì)改進(jìn)前后的算法進(jìn)行仿真,觀(guān)察算法的收斂速度。
為了提高網(wǎng)絡(luò)的學(xué)習(xí)速度,本文中對(duì)主要的參數(shù)進(jìn)行測(cè)試,觀(guān)察參數(shù)的變化情況對(duì)實(shí)驗(yàn)結(jié)果的影響, 從而選擇最合適的參數(shù)進(jìn)行網(wǎng)絡(luò)的訓(xùn)練。表1中ALR(Actor network learning rate)表示Actor 網(wǎng)絡(luò)的學(xué)習(xí)率,CLR(Critic network learning rate)表示Critic 網(wǎng)絡(luò)的學(xué)習(xí)率,TAU(Target Network HyperParameters)表示目標(biāo)網(wǎng)絡(luò)的超參數(shù),GAMMA 為衰減因子。經(jīng)過(guò)測(cè)試,本文網(wǎng)絡(luò)主要參數(shù)設(shè)置如表1 所示。
表1 主要參數(shù)表Tab.1 List of main parameters
未改進(jìn)算法的誤差曲線(xiàn)如圖6 所示,獎(jiǎng)勵(lì)曲線(xiàn)如圖7 所示。由測(cè)試結(jié)果來(lái)看,未改進(jìn)的DDPG 算法在TORCS 模擬器上表現(xiàn)并沒(méi)有較好的表現(xiàn),而經(jīng)過(guò)改進(jìn)算法之后, 代價(jià)曲線(xiàn)可以實(shí)現(xiàn)快速的收斂,快速實(shí)現(xiàn)賽車(chē)的控制。
圖6 DDPG 誤差曲線(xiàn)圖Fig.6 DDPG error graph
圖7 DDPG 獎(jiǎng)勵(lì)曲線(xiàn)Fig.7 DDPG reward graph
由以上仿真結(jié)果看出,控制效果并不理想。圖8和圖9 為改進(jìn)后算法的仿真結(jié)果,改進(jìn)后的算法可以實(shí)現(xiàn)快速的收斂,達(dá)到較好的訓(xùn)練效果。算法與改進(jìn)前的情況相比,代價(jià)曲線(xiàn)在較短的時(shí)間內(nèi)快速收斂, 同時(shí)獎(jiǎng)勵(lì)函數(shù)曲線(xiàn)達(dá)到一個(gè)較為穩(wěn)定的值;而在改進(jìn)前, 在相同的參數(shù)設(shè)置和實(shí)驗(yàn)環(huán)境下,由仿真的代價(jià)曲線(xiàn)和獎(jiǎng)勵(lì)曲線(xiàn)來(lái)看,無(wú)法達(dá)到較為理想的實(shí)驗(yàn)效果。由仿真結(jié)果可以看出,改進(jìn)后的算法在無(wú)人車(chē)控制的快速性上有了顯著提高。
圖8 改進(jìn)后DDPG 代價(jià)曲線(xiàn)圖Fig.8 Improved DDPG cost curve
圖9 改進(jìn)DDPG 獎(jiǎng)勵(lì)曲線(xiàn)Fig.9 Improved DDPG reward curve
實(shí)驗(yàn)仿真的對(duì)比結(jié)果如表2 所示。
表2 改進(jìn)前后收斂步數(shù)的對(duì)比Tab.2 Comparison of the number of convergent steps before and after improvement
基于深度強(qiáng)化學(xué)習(xí)的無(wú)人車(chē)控制方法,避免了傳統(tǒng)無(wú)人車(chē)控制方法手動(dòng)調(diào)參, 耗時(shí)費(fèi)力的弊端。同時(shí)在OU 噪聲和網(wǎng)絡(luò)結(jié)構(gòu)兩個(gè)方面的調(diào)整, 并將其與該進(jìn)前的算法進(jìn)行比較,通過(guò)實(shí)驗(yàn)對(duì)算法模型進(jìn)行仿真。在TORCS 模擬器上實(shí)驗(yàn)結(jié)果表明,在實(shí)驗(yàn)環(huán)境、網(wǎng)絡(luò)參數(shù)、訓(xùn)練步驟完全相同的情況下,與未改進(jìn)的算法相比,改進(jìn)后的算法在控制的快速性上有了明顯的提高。