吳春鵬,馮姣
(南京信息工程大學(xué) 電子與信息工程學(xué)院,南京 210044)
隨著船舶運輸行業(yè)的發(fā)展,船舶碰撞事件也急劇增加,如何通過技術(shù)手段提前預(yù)知船舶將行進位置,避開事故高發(fā)地或者隱藏障礙地,成為國內(nèi)外學(xué)者的研究熱點。
在船舶軌跡預(yù)測方面,有學(xué)者采用BP(back propagation)神經(jīng)網(wǎng)絡(luò)預(yù)測船舶航跡,得到的預(yù)測較為準(zhǔn)確[1-2],但BP網(wǎng)絡(luò)是將一個時間步內(nèi)所有數(shù)據(jù)一并輸入網(wǎng)絡(luò),缺乏對船舶軌跡時序性的體現(xiàn)。有學(xué)者運用循環(huán)神經(jīng)網(wǎng)絡(luò)(LSTM,GRU)對船舶軌跡進行預(yù)測,最終預(yù)測結(jié)果相對于BP網(wǎng)絡(luò)有明顯提升[3-6],但依然存在單一模型預(yù)測精度低的問題。有學(xué)者分別將LSTM或Bi-LSTM與注意力機制、CNN結(jié)合[7-8],增加網(wǎng)絡(luò)復(fù)雜度,從而提高預(yù)測精度。為進一步提升預(yù)測精度,提出將LSTM和BP結(jié)合的復(fù)合LSTM(Composite LSTM,C-LSTM)船舶軌跡預(yù)測模型,利用BP神經(jīng)網(wǎng)絡(luò)對LSTM網(wǎng)絡(luò)的輸出進行誤差修正,并針對經(jīng)緯度高精度的預(yù)測要求,提出運用最新的自適應(yīng)優(yōu)化算法AMS代替主流自適應(yīng)優(yōu)化算法ADAM來優(yōu)化整個系統(tǒng)模型。
在神經(jīng)網(wǎng)絡(luò)設(shè)置合適權(quán)值和合理結(jié)構(gòu)后,可以使用誤差梯度下降優(yōu)化算法來最小化輸出值和真實值之間誤差,以達到逼近各種非線性連續(xù)函數(shù)效果,具有一層隱藏層的BP神經(jīng)網(wǎng)絡(luò)見圖1。
圖1 BP神經(jīng)網(wǎng)絡(luò)
神經(jīng)網(wǎng)絡(luò)輸入與輸出之間關(guān)系為
(1)
式中:l為隱藏層節(jié)點數(shù);k為輸入層節(jié)點數(shù);σ為激活函數(shù),此處為sigmoid函數(shù)。
LSTM(long short-term memory)是一種時間循環(huán)神經(jīng)網(wǎng)絡(luò),是為解決一般RNN(循環(huán)神經(jīng)網(wǎng)絡(luò))存在的長期依賴問題而專門設(shè)計出來的。
LSTM單元結(jié)構(gòu)見圖2,LSTM核心是細胞狀態(tài)c,由穿過細胞的水平線來表示。細胞的狀態(tài)和傳送帶一樣,貫穿整個小區(qū)但只有幾個分支,可以保證信息不變地流經(jīng)單元。LSTM由3個門控制,分別叫做遺忘門、輸入門和輸出門。
圖2 LSTM單元結(jié)構(gòu)
LSTM遺忘門決定細胞狀態(tài)需要丟棄哪些信息,由一個叫做遺忘門的sigmoid單元處理,通過檢查ht-1和xt信息輸出一個介于0和1之間的向量。向量中的值0-1表示單元狀態(tài)ct-1中信息被保留或丟棄程度。0表示全部丟棄,1表示全部保留。公式如下。
ft=σ(Wf·[ht-1,xt]+bf)
(2)
下一步是向單元狀態(tài)添加新信息。首先,ht-1和xt用于通過輸入門的操作來決定新候選細胞信息更新程度,然后ht-1和xt通過tanh層用于獲得新候選細胞信息,其可以被更新為細胞信息。
it=σ(Wi·[ht-1,xt]+bi)
(3)
(4)
接下來,將過去細胞信息ct-1更新為新細胞信息ct。更新規(guī)則是通過遺忘門選擇來遺忘部分過去細胞信息,通過門選擇輸入部分候選細胞信息來獲取新細胞信息。公式如下:
(5)
在單元狀態(tài)更新后,需要ht-1和xt來確定輸出單元的哪個狀態(tài)特征,這里需要把輸入通過一個叫做輸出門的sigmoid層來得到判斷條件。然后,單元的狀態(tài)通過tanh層得到一個介于-1和1之間的向量,最終LSTM單元的輸出通過將該向量與輸出門的判斷條件相乘得到。
ot=σ(Wo·[ht-1,xt]+bo)
(6)
ht=ot·tanh(ct)
(7)
為縮減訓(xùn)練時間加快模型收斂速度,引入優(yōu)化算法?;陔S機梯度下降(SGD)優(yōu)化算法在科研和工程的很多領(lǐng)域里都是極其核心的。盡管傳統(tǒng)mini-batch SGD優(yōu)化算法在深度學(xué)習(xí)中表現(xiàn)優(yōu)良,但也存在一些缺點,比如選擇合適的學(xué)習(xí)率很困難。
表1 ADAM及AMS算法偽代碼
事實上,AIS數(shù)據(jù)質(zhì)量會受到較多因素影響,從而導(dǎo)致數(shù)據(jù)會出現(xiàn)缺失、錯誤以及時間間隔不同等現(xiàn)象。針對該問題,采用四分位間距(IQR)誤差檢測法對數(shù)據(jù)進行檢測,剔除異常數(shù)據(jù),空缺數(shù)據(jù)采用線性插值法來填補。同時,LSTM網(wǎng)絡(luò)對數(shù)據(jù)有時序性要求,故每組數(shù)據(jù)之間時間間隔要相等,過小間隔(秒級別)數(shù)據(jù)對于船舶的軌跡預(yù)測的研究意義較小,因此綜合已有數(shù)據(jù)質(zhì)量,將時間間隔定為1 min。
由于不同的特征向量可能在數(shù)量級上差別很大,可能導(dǎo)致絕對值小的數(shù)據(jù)被大數(shù)據(jù)“吃掉”的情況。因此,數(shù)據(jù)被歸一化以確保每個特征被神經(jīng)網(wǎng)絡(luò)同等對待,故將采用最小最大歸一化方法變換數(shù)據(jù),轉(zhuǎn)換如下。
(8)
式中:Xf為原始值,Xmin和Xmax分別為最小值和最大值,Xn為歸一化后的數(shù)據(jù)。處理后,原始數(shù)據(jù)值范圍轉(zhuǎn)換為[0,1]。
基于結(jié)合AMS的C-LSTM船舶軌跡預(yù)測流程見圖3,具體步驟如下。
圖3 結(jié)合AMS的C-LSTM船舶軌跡預(yù)測流程
步驟1。獲取原始AIS數(shù)據(jù)。
步驟2。對原始數(shù)據(jù)進行異常值剔除。
步驟3。制作訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集。
步驟4。進入LSTM網(wǎng)絡(luò)進行訓(xùn)練,利用AMS優(yōu)化算法對其進行優(yōu)化。
步驟5。將訓(xùn)練集輸入訓(xùn)練好的LSTM網(wǎng)絡(luò)得出預(yù)測值p,將之與真實值pr進行作差,計算出誤差m:
m=pr-p
步驟6。重建數(shù)據(jù)集,將訓(xùn)練集軌跡信息作為輸入,誤差m作為輸出。
步驟7。將新數(shù)據(jù)集送入BP網(wǎng)絡(luò)進行誤差訓(xùn)練,利用AMS優(yōu)化算法對其進行優(yōu)化。
步驟8。最終的預(yù)測值pf=p+mp,其中mp為BP對誤差的預(yù)測。
將一組t時刻的軌跡數(shù)據(jù)表示為
D(t)={lat,lon,sog,cog}
(9)
式中:lat、lon、sog、cog分別為緯度、經(jīng)度、航速、航向數(shù)據(jù)。
LSTM模型的輸入為前2個時刻數(shù)據(jù)D(t-2)、D(t-1)和當(dāng)前時刻數(shù)據(jù)D(t),輸出為當(dāng)前時刻的下一時刻的軌跡信息D(t+1)。BP誤差糾正模型的輸入為3個時刻的軌跡信息,輸出為下一時刻特征的誤差值mp。
實驗的硬件條件:CPU為銳龍r7處理器,內(nèi)存16GB。軟件條件:PyCharm 2020.3×64,編程語言為Python3.6,軟件采用Tensorflow2.0(無AMS優(yōu)化器,需據(jù)理論編寫)。
模型參數(shù):LSTM隱藏層數(shù)為3,節(jié)點數(shù)為110,學(xué)習(xí)率為0.000 3,激活函數(shù)為Relu函數(shù),數(shù)據(jù)整批進行訓(xùn)練;BP誤差糾正網(wǎng)絡(luò)隱藏層數(shù)為5,隱藏層節(jié)點數(shù)為100,學(xué)習(xí)率0.000 1。參數(shù)選取需與所選數(shù)據(jù)集相適應(yīng)。
實驗選取mmsi(maritime mobile service identify,水上移動通信業(yè)務(wù)標(biāo)識碼)為412 761 070,船名為“匯航9-HUIHANG”的船舶數(shù)據(jù),通過寶船網(wǎng)api,調(diào)取2020年1月8日的歷史軌跡數(shù)據(jù),部分實驗數(shù)據(jù)見表2。選出實驗數(shù)據(jù)共400組,分為直行和轉(zhuǎn)向兩組,每組將前177組作為訓(xùn)練集,后23組作為測試集,按照前述方法分別制作成訓(xùn)練集和測試集合,將訓(xùn)練集輸入網(wǎng)絡(luò)進行訓(xùn)練。
表2 部分船舶AIS數(shù)據(jù)
采用MSE(Mean Square Error)作為系統(tǒng)模型的評價函數(shù)。
(10)
3.4.1 loss圖對比
訓(xùn)練集和測試集在2種優(yōu)化算法下的loss見圖4、5??梢钥闯觯篈MS優(yōu)化算法的收斂速度相對于ADAM優(yōu)化算法收斂有明顯的提升,ADAM最終降到的最低loss值為1.68×10-6,AMS最終降到的最低loss值為1.62×10-6,這與AMS算法理論相吻合。綜上所述,該自適應(yīng)優(yōu)化算法能夠提升該船舶預(yù)測模型性能。
圖4 ADAM算法損失值
圖5 AMS算法損失值
3.4.2 直行航跡對比
直行軌跡測試集在傳統(tǒng)LSTM和C-LSTM上的誤差對比見表3,該表就傳統(tǒng)LSTM和C-LSTM2種模型在緯度、經(jīng)度、航速、航向的最大最小誤差以及評價函數(shù)值,對比上述各值,可見訓(xùn)練集在后者上表現(xiàn)比前者相對出色。
表3 直行測試集數(shù)據(jù)對比表
為驗證模型實際應(yīng)用能力,采用遞歸方式向后預(yù)測15個船舶位置,每個點之間時間間隔1 min,傳統(tǒng)LSTM和C-LSTM模型遞歸軌跡效果見圖6、7。
圖6 直行LSTM遞歸
圖7 直行經(jīng)度誤差
兩種模型在直行軌跡不同遞歸預(yù)測時長下的經(jīng)度、經(jīng)度、航速、航向與真實軌跡的誤差見圖8~11。
圖8 直行航速誤差
圖9 直行C-LSTM遞歸
圖10 直行緯度誤差
圖11 直行航向誤差
隨著預(yù)測時長增加,傳統(tǒng)LSTM模型的4種誤差均在遞增,C-LSTM的經(jīng)緯度誤差較為穩(wěn)定,體現(xiàn)出該模型具有一定穩(wěn)定性。且從圖8~11可見C-LSTM模型的誤差基本都在LSTM模型之下。LSTM和C-LSTM最大經(jīng)緯度誤差分別為1.70×10-3、9.79×10-5。綜上所述,所提模型在直行航跡表現(xiàn)較為良好,且優(yōu)于LSTM,可供參考。
3.4.2 轉(zhuǎn)向航跡對比
轉(zhuǎn)向軌跡測試集在傳統(tǒng)LSTM和C-LSTM上的誤差對比見表4,對比表4各項值,可見訓(xùn)練集在后者上表現(xiàn)相對前者依然出色。但兩種預(yù)測模型在轉(zhuǎn)向軌跡上的各項最大誤差上和評價函數(shù)值均表現(xiàn)遜色于直行軌跡。同樣采用遞歸的方式來驗證模型在轉(zhuǎn)向軌跡的表現(xiàn),預(yù)測15 min船舶軌跡位置見圖12、13。
表4 轉(zhuǎn)向測試集數(shù)據(jù)對比表
圖12 轉(zhuǎn)向LSTM遞歸軌跡
圖13 轉(zhuǎn)向C-LSTM遞歸軌跡
兩種模型在轉(zhuǎn)向航跡的表現(xiàn)均不如直行軌跡,在轉(zhuǎn)向部位開始出現(xiàn)較大偏差,其中LSTM模型偏差較大,但大致軌跡方向正確。而C-LSTM在轉(zhuǎn)向表現(xiàn)上優(yōu)于前者,還可以看出和真實軌跡較為吻合。
不同預(yù)測時長下轉(zhuǎn)向航跡遞歸誤差見圖14~17。
圖14 轉(zhuǎn)向經(jīng)度誤差
圖15 轉(zhuǎn)向緯度誤差
圖16 轉(zhuǎn)向航速對比
圖17 轉(zhuǎn)向航向?qū)Ρ?/p>
相對于直行軌跡,誤差相對擴大,且隨著時間增長,誤差越來越大,LSTM模型和C-LSTM最大經(jīng)緯度誤差分別達到4.39×10-3、6.10×10-4。綜上所述,C-LSTM模型在轉(zhuǎn)向航跡表現(xiàn)優(yōu)于傳統(tǒng)LSTM,所預(yù)測軌跡具有一定的參考價值。
依托AIS數(shù)據(jù),通過建立復(fù)合模型C-LSTM,并將最新優(yōu)化算法AMS應(yīng)用到該模型,能夠精準(zhǔn)預(yù)測出下一段時間內(nèi)的船舶軌跡,克服了單一性模型帶來的弊端,相較于傳統(tǒng)LSTM模型,精度存在明顯提升,有著較高的魯棒性、穩(wěn)定性,對避免船舶的碰撞擱淺事故的發(fā)生有著較高實際應(yīng)用價值。實驗所選取實驗軌跡數(shù)據(jù)較為穩(wěn)定,在實驗過程中發(fā)現(xiàn)軌跡的復(fù)雜度以及數(shù)據(jù)的預(yù)處理對模型的預(yù)測影響較大。下階段研究重點將放在對轉(zhuǎn)向軌跡預(yù)測性能上進行提升,考慮到轉(zhuǎn)向軌跡的多變性與不確定性,單依據(jù)特征航向和航速不足以準(zhǔn)確預(yù)測出航跡走向,因此模型需要得到充分學(xué)習(xí),故將會嘗試用大量高質(zhì)量的數(shù)據(jù)來支撐模型性能。