徐瑞龍 祁云嵩 石 琳
(江蘇科技大學(xué)計(jì)算機(jī)學(xué)院 江蘇 鎮(zhèn)江 212003)
海洋不僅是國(guó)際貿(mào)易和大宗貨物運(yùn)輸?shù)闹饕ǖ溃彩俏磥?lái)維護(hù)國(guó)家權(quán)益和安全的主要領(lǐng)域,海洋已經(jīng)成為人類(lèi)生存的第二大空間。有效地對(duì)船舶航跡及時(shí)預(yù)測(cè)、跟蹤是解決海上交通的核心問(wèn)題,所以對(duì)其深入研究非常有必要,而且目前對(duì)航跡狀態(tài)估計(jì)預(yù)測(cè)的研究已經(jīng)有很多。姜佰辰等[1]提出了一種基于多項(xiàng)式Kalman濾波的船舶軌跡預(yù)測(cè)算法,補(bǔ)償航跡定位數(shù)據(jù)信息缺失、更新較慢等問(wèn)題,并基于經(jīng)緯度信息預(yù)測(cè)船舶運(yùn)動(dòng)軌跡。文獻(xiàn)[2]利用以時(shí)間序列為基礎(chǔ)的軌跡數(shù)據(jù),預(yù)測(cè)船舶航行軌跡的線性運(yùn)動(dòng),在丟失部分航跡數(shù)據(jù)的情況下仍可以取得良好的預(yù)測(cè)效果。但是實(shí)際情況下,船舶航跡一般都是動(dòng)態(tài)變化、非線性的,很難滿(mǎn)足線性需求。文獻(xiàn)[3-4]分別是通過(guò)支持向量機(jī)的方法和利用灰色模型結(jié)合馬爾可夫鏈對(duì)航行軌跡數(shù)據(jù)進(jìn)行時(shí)間序列上的預(yù)測(cè),然而二者都需要預(yù)先通過(guò)專(zhuān)家知識(shí)構(gòu)建運(yùn)動(dòng)學(xué)方程,面對(duì)復(fù)雜的實(shí)際航跡相對(duì)難以實(shí)現(xiàn)。喬少杰等[5]利用系統(tǒng)狀態(tài)空間模型、觀測(cè)模型,以最小均方誤差為準(zhǔn)則結(jié)合Kalman濾波,針對(duì)移動(dòng)對(duì)象的行為,利用前一時(shí)刻的估計(jì)值和當(dāng)前時(shí)刻的觀測(cè)值更新對(duì)狀態(tài)變量的估計(jì),預(yù)測(cè)出下一時(shí)刻軌跡位置。文獻(xiàn)[6]提出了一種處理函數(shù)型數(shù)據(jù)的現(xiàn)代統(tǒng)計(jì)方法,即高斯過(guò)程回歸。該方法在充分利用所給數(shù)據(jù)的前提下進(jìn)一步總結(jié)數(shù)據(jù)本身的時(shí)間、周期和增減趨勢(shì),以此建立模型預(yù)測(cè)船舶軌跡。文獻(xiàn)[7]提出了基于高斯混合模型的軌跡預(yù)測(cè)方法,針對(duì)復(fù)雜的運(yùn)動(dòng)模式利用高斯混合模型建模,并通過(guò)模型計(jì)算不同運(yùn)動(dòng)模式的概率分布,將軌跡數(shù)據(jù)劃分為不同分量,實(shí)現(xiàn)準(zhǔn)確和高效的位置預(yù)測(cè)。文獻(xiàn)[8]利用AIS數(shù)據(jù)的航行軌跡特征,提出了循環(huán)神經(jīng)網(wǎng)絡(luò)——長(zhǎng)短期記憶模型(Recurrent Neural Networks-Long Short Term Memory,RNN-LSTM),通過(guò)訓(xùn)練模型,預(yù)測(cè)未來(lái)船舶航行軌跡。
綜上所述,海域環(huán)境極其復(fù)雜,干擾的隨機(jī)性、多樣性導(dǎo)致船舶運(yùn)動(dòng)狀態(tài)往往頻繁變化,狀態(tài)信息無(wú)規(guī)律可尋,難以準(zhǔn)確提取特征數(shù)據(jù)變化趨勢(shì)。另外,部分算法無(wú)法滿(mǎn)足時(shí)間序列要求、實(shí)時(shí)性要求,而且實(shí)時(shí)準(zhǔn)確地建立航跡數(shù)學(xué)模型極其困難,難以用簡(jiǎn)單的模型進(jìn)行推算。本文提出基于Transformer深度學(xué)習(xí)模型結(jié)合Kalman濾波器的方法進(jìn)行航跡預(yù)測(cè)。該方法充分發(fā)揮Transformer模型突出的特征提取能力和高效的并行運(yùn)算效率[9-10],將船舶歷史航跡特征數(shù)據(jù)作為模型輸入進(jìn)行訓(xùn)練預(yù)測(cè),同時(shí)利用Kalman濾波器對(duì)預(yù)測(cè)值進(jìn)行實(shí)時(shí)調(diào)整,實(shí)現(xiàn)最優(yōu)估計(jì)值。
傳統(tǒng)深度學(xué)習(xí)算法如RNN、LSTM,它們都是順序計(jì)算,即相關(guān)算法只能從左向右依次計(jì)算或者從右向左依次計(jì)算,這樣會(huì)導(dǎo)致兩個(gè)問(wèn)題:①t時(shí)刻的計(jì)算依賴(lài)于前一時(shí)刻的值,限制了模型并行能力[11];② 計(jì)算過(guò)程的信息丟失問(wèn)題,雖然LSTM算法一定程度上緩沖了這個(gè)情況,但對(duì)于超長(zhǎng)期的依賴(lài),LSTM還是會(huì)存在問(wèn)題[12]。Transformer模型擺脫了傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)[13],整個(gè)網(wǎng)絡(luò)架構(gòu)是由注意力機(jī)制組成,完全利用自注意力機(jī)制(self-Attention)和前饋神經(jīng)網(wǎng)絡(luò)(Feedforward Neural Network,FNN)對(duì)樣本進(jìn)行“自我學(xué)習(xí)”和“自我調(diào)整”,省去利用先驗(yàn)知識(shí)處理的步驟,而且其并行能力突出,高于傳統(tǒng)的RNN算法,對(duì)于航跡預(yù)測(cè)問(wèn)題有一個(gè)很好的解決效果。但是Transformer的靜態(tài)預(yù)測(cè)可能無(wú)法兼顧航跡當(dāng)前值的變化,為降低其對(duì)預(yù)測(cè)結(jié)果的影響,利用Kalman增益,使用當(dāng)前值對(duì)預(yù)測(cè)值進(jìn)行實(shí)時(shí)動(dòng)態(tài)修正,實(shí)現(xiàn)進(jìn)一步提高預(yù)測(cè)精度。
Transformer模型注意力機(jī)制的思想核心是計(jì)算輸入向量列表中每個(gè)樣本與該向量中所有樣本的關(guān)聯(lián)情況,并利用這種相互關(guān)系在一定程度上體現(xiàn)不同樣本的重要程度,通過(guò)這種關(guān)聯(lián)程度調(diào)整每個(gè)樣本的權(quán)重,從而獲得一個(gè)更加全局的表達(dá),不僅考慮到樣本自身,同時(shí)還將其與其他樣本的關(guān)系融入在內(nèi)。Transformer模型本質(zhì)是一個(gè)編解碼器的結(jié)構(gòu),解碼器的輸入為編碼器的輸出。編碼器由N個(gè)編碼層組成,并且每層是完全相同的,同樣對(duì)應(yīng)的解碼器也是由N個(gè)相同的解碼層構(gòu)成。圖1給出了單個(gè)編碼器和自注意力機(jī)制的結(jié)構(gòu)。
圖1 編碼器和自注意力機(jī)制
假設(shè)輸入集為X={x1,x2,…,xt,xt+1,…},其中t為時(shí)間序列{t|t=1,2,…,T},編碼器將輸入集作為一個(gè)向量列表輸入,經(jīng)過(guò)存在依賴(lài)關(guān)系的各自路徑進(jìn)入注意力層,同時(shí)通過(guò)將向量中每個(gè)樣本點(diǎn)積訓(xùn)練過(guò)程中創(chuàng)建的3個(gè)訓(xùn)練矩陣(WQ,WK,WV),為每個(gè)樣本生成三個(gè)詮釋向量,即查詢(xún)向量(Q)、鍵向量(K)、值向量(V)。注意力機(jī)制實(shí)現(xiàn)具體步驟如下。
步驟1獲取三個(gè)詮釋向量,計(jì)算式分別表示為:
(1)
步驟2為每個(gè)樣本打分,計(jì)算式表示為:
(2)
viuj=cos(vi,uj)‖vi‖2‖uj‖2
(3)
式中:v、u分別為Q、K的投影。
步驟3優(yōu)化訓(xùn)練梯度,計(jì)算式表示為:
(4)
式中:D(K)表示K向量的維度;dk為梯度因子,其值由經(jīng)驗(yàn)所得并非唯一值。
步驟4利用Softmax函數(shù)進(jìn)行標(biāo)準(zhǔn)化,并將標(biāo)準(zhǔn)化后的值與向量V進(jìn)行點(diǎn)積運(yùn)算,保證在保持對(duì)當(dāng)前樣本關(guān)注度不變的情況下,降低對(duì)不重要樣本的關(guān)注度[14],獲取自注意力機(jī)制輸出,計(jì)算式表示為:
Attention(Q,K,V)=Softmax(Opt)·V
(5)
步驟5通過(guò)殘差連接進(jìn)行歸一化處理,得出注意力層的輸出,并作為前饋神經(jīng)網(wǎng)絡(luò)的輸入。層歸一化在穩(wěn)定循環(huán)網(wǎng)絡(luò)中的隱藏狀態(tài)動(dòng)態(tài)方面非常有效,可以大量減少訓(xùn)練時(shí)間而且每個(gè)樣本對(duì)應(yīng)的前饋神經(jīng)網(wǎng)絡(luò)是完全一樣的,在此層可以用并行化提高效率,使得Transformer模型效率高于傳統(tǒng)深度學(xué)習(xí)模型。
Kalman濾波是一種線性最優(yōu)濾波算法,適合于線性高斯系統(tǒng),其不要求保存過(guò)去的量測(cè)數(shù)據(jù),根據(jù)當(dāng)前數(shù)據(jù)和前一時(shí)刻數(shù)據(jù)的估值,根據(jù)系統(tǒng)狀態(tài)方程,使用Kalman增益進(jìn)行修正,預(yù)測(cè)出新的狀態(tài)估計(jì)值[15-16]。假設(shè)船舶航行軌跡在t時(shí)刻的狀態(tài)為:
X(t)=[x,y,v,α]
(6)
式中:x、y分別表示由經(jīng)緯度轉(zhuǎn)換后的直角坐標(biāo)系坐標(biāo)值;v表示航速;α表示當(dāng)前時(shí)刻對(duì)地航向。
模型狀態(tài)方程與量測(cè)方程分別為:
X(k+1)=FX(k)+Bμ(k+1)+ω(k+1)
(7)
Z(k+1)=HX(k+1)+V(k+1)
(8)
式中:X(k+1)表示航跡在k+1時(shí)刻的狀態(tài)向量;Z(k+1)表示在k+1時(shí)刻的量測(cè)向量;F為狀態(tài)轉(zhuǎn)移矩陣;B為過(guò)程噪聲或控制矩陣;H為量測(cè)矩陣或量測(cè)值系數(shù)矩陣;μ(k+1)為k+1時(shí)刻對(duì)系統(tǒng)的控制量,若當(dāng)前狀態(tài)沒(méi)有,可以為0;ω(k+1)和V(k+1)分別為過(guò)程噪聲和量測(cè)噪聲,且都為相互獨(dú)立、均值為0的高斯白噪聲。
Kalman濾波器修正步驟如下:
(9)
(10)
(11)
(12)
(13)
(14)
式中:m代表MMSI,為方便計(jì)算,將經(jīng)緯度轉(zhuǎn)換為直角坐標(biāo)系值,即x、y;則x、y、v、α、dt分別代表t時(shí)刻m號(hào)船舶的坐標(biāo)、航速、航向、時(shí)間間隔。
圖2 具體模型結(jié)構(gòu)
步驟1位置編碼,采用偶數(shù)位置進(jìn)行正弦編碼,奇數(shù)位置進(jìn)行余弦編碼;通過(guò)位置編碼解釋樣本中元素序列的順序問(wèn)題[17-18],計(jì)算式如下:
(15)
(16)
式中:pos表示樣本中元素位置;i表示樣本中元素的維度;dmodel表示位置向量的維度,與整個(gè)模型的隱藏狀態(tài)維度值相同。
步驟2應(yīng)用Attention機(jī)制,計(jì)算輸入向量列表的詮釋向量Q、K相似度,并利用激活函數(shù)Softmax進(jìn)行歸一化,最后利用V進(jìn)行加權(quán)求和,從而實(shí)現(xiàn)對(duì)各個(gè)樣本合理的關(guān)注度,然后經(jīng)過(guò)線性變換和Softmax層輸出預(yù)測(cè)結(jié)果,如式(1)-式(5)所示。但是Attention機(jī)制無(wú)法避免數(shù)據(jù)本身存在的問(wèn)題,航跡的歷史數(shù)據(jù)中也會(huì)存在一些偏離航道的軌跡數(shù)據(jù),這會(huì)對(duì)模型預(yù)測(cè)造成一定的誤差,故提出將數(shù)據(jù)中未偏離航道點(diǎn)跡數(shù)和總點(diǎn)跡數(shù)的占比,點(diǎn)積模型輸出,再進(jìn)行歸一化,加權(quán)求和以降低預(yù)測(cè)的偏差,計(jì)算式表示如下:
(17)
(18)
式中:nleg表示樣本向量中未偏離航道的航跡點(diǎn)數(shù);Ntr表示樣本向量的總航跡點(diǎn)數(shù);f(Q,K)表示Q、K的相似度。
步驟3多頭注意力機(jī)制,利用h個(gè)不同的線性變換對(duì)Q、K、V進(jìn)行投影,將不同的注意力機(jī)制結(jié)果拼接起來(lái),獲取多頭注意力機(jī)制的輸出,計(jì)算式表示如下:
(19)
MulHead=Concat(head1,head2,…,headh)Wo
(20)
式中:Concat表示將多個(gè)Attention結(jié)果進(jìn)行拼接。
步驟4前饋神經(jīng)網(wǎng)絡(luò)層計(jì)算,經(jīng)過(guò)多頭注意力機(jī)制、歸一化處理后的樣本會(huì)進(jìn)入一個(gè)全連接的前饋神經(jīng)網(wǎng)絡(luò),輸出表示為:
FFN(Z)=max(0,ZW1+b1)W2+b2
(21)
式中:b表示偏置。
步驟5子層輸出,每個(gè)編碼器由兩個(gè)子層(sub)組成:多頭自注意力和前饋神經(jīng)網(wǎng)絡(luò)。每?jī)蓚€(gè)子層中都會(huì)使用一個(gè)殘差連接進(jìn)行歸一化操作[19-20]。每個(gè)子層的輸出可以用式(22)表示:
sOut=LN(x+sOut(x))
(22)
(23)
B(k+1)=Z(k+1)-Z(k+1,k)
(24)
(25)
圖3 自調(diào)整Kalman濾波器
根據(jù)上述描述步驟,結(jié)合Transformer模型和Kalman濾波器的航跡預(yù)測(cè)過(guò)程,算法描述如下:
算法1基于Transformer模型和Kalman濾波預(yù)測(cè)算法
輸出:預(yù)測(cè)航跡均方誤差MSE。
1.X′=Dev_Norm(Xtrain);
2.X*=NData_to_supervised(X′);
5. fori=1 tot
6.p_t=TF_Predic(TF);
7.pVal=Kalman(p_t);
8.err[i]=getError(m,pVal);
9.init_Kalman(pVal,err[i]);
10. end
算法1中:NData_to_supervised為構(gòu)建監(jiān)督學(xué)習(xí)數(shù)據(jù)集函數(shù);Dev_Norm為離差歸一化函數(shù);TF_Predic為加入未偏離航跡權(quán)重的Tranformer模型;變量err為航跡點(diǎn)誤差值;變量p_t為T(mén)ransformer模型預(yù)測(cè)值;pVal為最終預(yù)測(cè)值。
本文采用寧波市水域內(nèi)3 000組船舶AIS信息數(shù)據(jù)作為實(shí)驗(yàn)數(shù)據(jù),并抽取其中200組作為測(cè)試數(shù)據(jù),驗(yàn)證基于Transformer模型和Kalman濾波器的航跡預(yù)測(cè)模型(下文簡(jiǎn)稱(chēng)為T(mén)K模型)的有效性。實(shí)驗(yàn)使用Python 3.5版本,基于TensorFlow 1.12實(shí)現(xiàn)本文算法。
Transformer模型參數(shù)設(shè)置:編解碼為8層;隱藏層神經(jīng)元數(shù)量hidden_size為512;batch_size為500;dk為64;dmodel為512;dropout為0.1。
Kalman模型參數(shù)設(shè)置:R=[20,0;0,20];Q=[20,0,0,0;0,20,0,0;0,0,20,0;0,0,0,20]。
實(shí)驗(yàn)的硬件條件:CPU為Intel(R) Core(TM) i7-8550U,主頻為4.0 GHz,內(nèi)存為8 GB。
算法實(shí)驗(yàn)以寧波市MMSI號(hào)為412999999的漁船為例,對(duì)其坐標(biāo)位置進(jìn)行預(yù)測(cè),通過(guò)對(duì)比量測(cè)和預(yù)測(cè)的航跡圖,可以更直觀看出預(yù)測(cè)效果,如圖4所示。圖4(a)展示了量測(cè)航跡與預(yù)測(cè)航跡整體情況,可以明顯地看出二者航跡線幾乎重疊。圖4(b)為此航跡預(yù)測(cè)部分細(xì)節(jié)圖,圖中的量測(cè)與預(yù)測(cè)的坐標(biāo)位置點(diǎn)誤差偏移很小,證明了算法預(yù)測(cè)精度較高。
圖4 航跡圖
實(shí)驗(yàn)采用均方誤差(Mean Squared Error,MSE)和平均絕對(duì)誤差(Mean Absolute Deviation,MAD)比較LSTM模型和TK模型的預(yù)測(cè)精度。
均方誤差反映預(yù)測(cè)精度情況,計(jì)算式表示為:
(26)
平均絕對(duì)誤差反映預(yù)測(cè)值誤差實(shí)際情況,計(jì)算式表示為:
(27)
式中:n為樣本數(shù)量;m為量測(cè)值;p為預(yù)測(cè)值。
LSTM模型和TK模型的MSE和MAD預(yù)測(cè)誤差統(tǒng)計(jì)情況,如表1所示。對(duì)比兩種評(píng)估指標(biāo)情況,雖然二者的誤差處于同一量級(jí),但TK模型的誤差相對(duì)較小,預(yù)測(cè)精度更高一些,從而也能看出Transformer模型的特征提取能力和Kalman濾波的修正能力得到很好的表現(xiàn)。
表1 LSTM模型和TK模型的均方誤差和平均絕對(duì)誤差
為了更好地比較模型預(yù)測(cè)精度,運(yùn)用定量分析法測(cè)試各算法的預(yù)測(cè)誤差、預(yù)測(cè)準(zhǔn)確率。利用訓(xùn)練好的模型,針對(duì)樣本單一特征數(shù)據(jù)(如橫坐標(biāo)位置x),對(duì)LSTM模型、Kalman模型、多項(xiàng)式Kalman濾波模型、Transformer模型和TK模型預(yù)測(cè)情況進(jìn)行比較,結(jié)果如圖5、圖6所示。
圖5 均方誤差對(duì)比
圖6 準(zhǔn)確率對(duì)比
圖5連續(xù)遞歸測(cè)試8幀(8個(gè)時(shí)刻),觀察其均方誤差變化趨勢(shì)。從曲線趨勢(shì)同樣可以看出TK模型的均方誤差小于其他幾個(gè)模型,而且隨著時(shí)序的積累TK模型誤差曲線趨于平穩(wěn),另外四個(gè)模型的曲線趨勢(shì)陡峭,表明TK模型的均方誤差更加穩(wěn)定。圖6分別對(duì)不同數(shù)量的航跡進(jìn)行訓(xùn)練預(yù)測(cè)比較各模型的準(zhǔn)確率,TK模型準(zhǔn)確率在92%左右浮動(dòng),明顯高于其他幾個(gè)模型。
利用預(yù)測(cè)效率比較LSTM模型和TK模型二者訓(xùn)練模型、預(yù)測(cè)目標(biāo)的時(shí)間性能,如圖7所示。LSTM模型無(wú)論是訓(xùn)練模型還是在線預(yù)測(cè),其運(yùn)行時(shí)間相對(duì)于TK模型的時(shí)間占比大概在3~5倍之間。對(duì)于相同長(zhǎng)度的樣本,LSTM模型因?yàn)樾蛄幸蕾?lài),并行運(yùn)算時(shí)無(wú)法消除樣本長(zhǎng)度,而Transformer模型卻利用自注意力機(jī)制和前饋神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),很好實(shí)現(xiàn)并行計(jì)算能力。
預(yù)測(cè)效率定義為:
(28)
式中:tTK、tLSTM分別表示TK模型和LSTM模型的運(yùn)行時(shí)間。
圖7 運(yùn)行時(shí)間
本文提出基于Transformer模型和Kalman濾波器的航跡預(yù)測(cè)方法。采取自注意力機(jī)制和前饋神經(jīng)網(wǎng)絡(luò)框架結(jié)構(gòu)的Transformer模型,拋棄了傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)思想,利用自注意力機(jī)制提取航跡數(shù)據(jù)特征,學(xué)習(xí)航跡規(guī)律,解決了長(zhǎng)期依賴(lài)問(wèn)題;同時(shí)利用Kalman濾波器結(jié)合量測(cè)數(shù)據(jù)對(duì)預(yù)測(cè)值進(jìn)行實(shí)時(shí)修正,從而獲取最佳估計(jì)值。實(shí)驗(yàn)比較了LSTM模型、TK模型和Kalman模型的誤差、準(zhǔn)確率、時(shí)間性能。結(jié)果表明,基于Transformer模型和Kalman濾波器對(duì)航跡預(yù)測(cè)的算法具有良好的并行特性,并且特征提取能力相對(duì)LSTM模型也有較高的提升,使得預(yù)測(cè)的準(zhǔn)確性、實(shí)時(shí)性都有良好的表現(xiàn)。