徐瑞龍 祁云嵩 石 琳
(江蘇科技大學計算機學院 江蘇 鎮江 212003)
海洋不僅是國際貿易和大宗貨物運輸的主要通道,也是未來維護國家權益和安全的主要領域,海洋已經成為人類生存的第二大空間。有效地對船舶航跡及時預測、跟蹤是解決海上交通的核心問題,所以對其深入研究非常有必要,而且目前對航跡狀態估計預測的研究已經有很多。姜佰辰等[1]提出了一種基于多項式Kalman濾波的船舶軌跡預測算法,補償航跡定位數據信息缺失、更新較慢等問題,并基于經緯度信息預測船舶運動軌跡。文獻[2]利用以時間序列為基礎的軌跡數據,預測船舶航行軌跡的線性運動,在丟失部分航跡數據的情況下仍可以取得良好的預測效果。但是實際情況下,船舶航跡一般都是動態變化、非線性的,很難滿足線性需求。文獻[3-4]分別是通過支持向量機的方法和利用灰色模型結合馬爾可夫鏈對航行軌跡數據進行時間序列上的預測,然而二者都需要預先通過專家知識構建運動學方程,面對復雜的實際航跡相對難以實現。喬少杰等[5]利用系統狀態空間模型、觀測模型,以最小均方誤差為準則結合Kalman濾波,針對移動對象的行為,利用前一時刻的估計值和當前時刻的觀測值更新對狀態變量的估計,預測出下一時刻軌跡位置。文獻[6]提出了一種處理函數型數據的現代統計方法,即高斯過程回歸。該方法在充分利用所給數據的前提下進一步總結數據本身的時間、周期和增減趨勢,以此建立模型預測船舶軌跡。文獻[7]提出了基于高斯混合模型的軌跡預測方法,針對復雜的運動模式利用高斯混合模型建模,并通過模型計算不同運動模式的概率分布,將軌跡數據劃分為不同分量,實現準確和高效的位置預測。文獻[8]利用AIS數據的航行軌跡特征,提出了循環神經網絡——長短期記憶模型(Recurrent Neural Networks-Long Short Term Memory,RNN-LSTM),通過訓練模型,預測未來船舶航行軌跡。
綜上所述,海域環境極其復雜,干擾的隨機性、多樣性導致船舶運動狀態往往頻繁變化,狀態信息無規律可尋,難以準確提取特征數據變化趨勢。另外,部分算法無法滿足時間序列要求、實時性要求,而且實時準確地建立航跡數學模型極其困難,難以用簡單的模型進行推算。本文提出基于Transformer深度學習模型結合Kalman濾波器的方法進行航跡預測。該方法充分發揮Transformer模型突出的特征提取能力和高效的并行運算效率[9-10],將船舶歷史航跡特征數據作為模型輸入進行訓練預測,同時利用Kalman濾波器對預測值進行實時調整,實現最優估計值。
傳統深度學習算法如RNN、LSTM,它們都是順序計算,即相關算法只能從左向右依次計算或者從右向左依次計算,這樣會導致兩個問題:①t時刻的計算依賴于前一時刻的值,限制了模型并行能力[11];② 計算過程的信息丟失問題,雖然LSTM算法一定程度上緩沖了這個情況,但對于超長期的依賴,LSTM還是會存在問題[12]。Transformer模型擺脫了傳統的卷積神經網絡和循環神經網絡結構[13],整個網絡架構是由注意力機制組成,完全利用自注意力機制(self-Attention)和前饋神經網絡(Feedforward Neural Network,FNN)對樣本進行“自我學習”和“自我調整”,省去利用先驗知識處理的步驟,而且其并行能力突出,高于傳統的RNN算法,對于航跡預測問題有一個很好的解決效果。但是Transformer的靜態預測可能無法兼顧航跡當前值的變化,為降低其對預測結果的影響,利用Kalman增益,使用當前值對預測值進行實時動態修正,實現進一步提高預測精度。
Transformer模型注意力機制的思想核心是計算輸入向量列表中每個樣本與該向量中所有樣本的關聯情況,并利用這種相互關系在一定程度上體現不同樣本的重要程度,通過這種關聯程度調整每個樣本的權重,從而獲得一個更加全局的表達,不僅考慮到樣本自身,同時還將其與其他樣本的關系融入在內。Transformer模型本質是一個編解碼器的結構,解碼器的輸入為編碼器的輸出。編碼器由N個編碼層組成,并且每層是完全相同的,同樣對應的解碼器也是由N個相同的解碼層構成。圖1給出了單個編碼器和自注意力機制的結構。

圖1 編碼器和自注意力機制
假設輸入集為X={x1,x2,…,xt,xt+1,…},其中t為時間序列{t|t=1,2,…,T},編碼器將輸入集作為一個向量列表輸入,經過存在依賴關系的各自路徑進入注意力層,同時通過將向量中每個樣本點積訓練過程中創建的3個訓練矩陣(WQ,WK,WV),為每個樣本生成三個詮釋向量,即查詢向量(Q)、鍵向量(K)、值向量(V)。注意力機制實現具體步驟如下。
步驟1獲取三個詮釋向量,計算式分別表示為:
(1)
步驟2為每個樣本打分,計算式表示為:
(2)
viuj=cos(vi,uj)‖vi‖2‖uj‖2
(3)
式中:v、u分別為Q、K的投影。
步驟3優化訓練梯度,計算式表示為:
(4)
式中:D(K)表示K向量的維度;dk為梯度因子,其值由經驗所得并非唯一值。
步驟4利用Softmax函數進行標準化,并將標準化后的值與向量V進行點積運算,保證在保持對當前樣本關注度不變的情況下,降低對不重要樣本的關注度[14],獲取自注意力機制輸出,計算式表示為:
Attention(Q,K,V)=Softmax(Opt)·V
(5)
步驟5通過殘差連接進行歸一化處理,得出注意力層的輸出,并作為前饋神經網絡的輸入。層歸一化在穩定循環網絡中的隱藏狀態動態方面非常有效,可以大量減少訓練時間而且每個樣本對應的前饋神經網絡是完全一樣的,在此層可以用并行化提高效率,使得Transformer模型效率高于傳統深度學習模型。
Kalman濾波是一種線性最優濾波算法,適合于線性高斯系統,其不要求保存過去的量測數據,根據當前數據和前一時刻數據的估值,根據系統狀態方程,使用Kalman增益進行修正,預測出新的狀態估計值[15-16]。假設船舶航行軌跡在t時刻的狀態為:
X(t)=[x,y,v,α]
(6)
式中:x、y分別表示由經緯度轉換后的直角坐標系坐標值;v表示航速;α表示當前時刻對地航向。
模型狀態方程與量測方程分別為:
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時刻的狀態向量;Z(k+1)表示在k+1時刻的量測向量;F為狀態轉移矩陣;B為過程噪聲或控制矩陣;H為量測矩陣或量測值系數矩陣;μ(k+1)為k+1時刻對系統的控制量,若當前狀態沒有,可以為0;ω(k+1)和V(k+1)分別為過程噪聲和量測噪聲,且都為相互獨立、均值為0的高斯白噪聲。
Kalman濾波器修正步驟如下:
(9)
(10)
(11)
(12)
(13)


(14)
式中:m代表MMSI,為方便計算,將經緯度轉換為直角坐標系值,即x、y;則x、y、v、α、dt分別代表t時刻m號船舶的坐標、航速、航向、時間間隔。


圖2 具體模型結構
步驟1位置編碼,采用偶數位置進行正弦編碼,奇數位置進行余弦編碼;通過位置編碼解釋樣本中元素序列的順序問題[17-18],計算式如下:
(15)
(16)
式中:pos表示樣本中元素位置;i表示樣本中元素的維度;dmodel表示位置向量的維度,與整個模型的隱藏狀態維度值相同。
步驟2應用Attention機制,計算輸入向量列表的詮釋向量Q、K相似度,并利用激活函數Softmax進行歸一化,最后利用V進行加權求和,從而實現對各個樣本合理的關注度,然后經過線性變換和Softmax層輸出預測結果,如式(1)-式(5)所示。但是Attention機制無法避免數據本身存在的問題,航跡的歷史數據中也會存在一些偏離航道的軌跡數據,這會對模型預測造成一定的誤差,故提出將數據中未偏離航道點跡數和總點跡數的占比,點積模型輸出,再進行歸一化,加權求和以降低預測的偏差,計算式表示如下:
(17)
(18)
式中:nleg表示樣本向量中未偏離航道的航跡點數;Ntr表示樣本向量的總航跡點數;f(Q,K)表示Q、K的相似度。
步驟3多頭注意力機制,利用h個不同的線性變換對Q、K、V進行投影,將不同的注意力機制結果拼接起來,獲取多頭注意力機制的輸出,計算式表示如下:
(19)
MulHead=Concat(head1,head2,…,headh)Wo
(20)
式中:Concat表示將多個Attention結果進行拼接。
步驟4前饋神經網絡層計算,經過多頭注意力機制、歸一化處理后的樣本會進入一個全連接的前饋神經網絡,輸出表示為:
FFN(Z)=max(0,ZW1+b1)W2+b2
(21)
式中:b表示偏置。
步驟5子層輸出,每個編碼器由兩個子層(sub)組成:多頭自注意力和前饋神經網絡。每兩個子層中都會使用一個殘差連接進行歸一化操作[19-20]。每個子層的輸出可以用式(22)表示:
sOut=LN(x+sOut(x))
(22)
(23)


B(k+1)=Z(k+1)-Z(k+1,k)
(24)
(25)

圖3 自調整Kalman濾波器
根據上述描述步驟,結合Transformer模型和Kalman濾波器的航跡預測過程,算法描述如下:
算法1基于Transformer模型和Kalman濾波預測算法
輸出:預測航跡均方誤差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為構建監督學習數據集函數;Dev_Norm為離差歸一化函數;TF_Predic為加入未偏離航跡權重的Tranformer模型;變量err為航跡點誤差值;變量p_t為Transformer模型預測值;pVal為最終預測值。
本文采用寧波市水域內3 000組船舶AIS信息數據作為實驗數據,并抽取其中200組作為測試數據,驗證基于Transformer模型和Kalman濾波器的航跡預測模型(下文簡稱為TK模型)的有效性。實驗使用Python 3.5版本,基于TensorFlow 1.12實現本文算法。
Transformer模型參數設置:編解碼為8層;隱藏層神經元數量hidden_size為512;batch_size為500;dk為64;dmodel為512;dropout為0.1。
Kalman模型參數設置:R=[20,0;0,20];Q=[20,0,0,0;0,20,0,0;0,0,20,0;0,0,0,20]。
實驗的硬件條件:CPU為Intel(R) Core(TM) i7-8550U,主頻為4.0 GHz,內存為8 GB。
算法實驗以寧波市MMSI號為412999999的漁船為例,對其坐標位置進行預測,通過對比量測和預測的航跡圖,可以更直觀看出預測效果,如圖4所示。圖4(a)展示了量測航跡與預測航跡整體情況,可以明顯地看出二者航跡線幾乎重疊。圖4(b)為此航跡預測部分細節圖,圖中的量測與預測的坐標位置點誤差偏移很小,證明了算法預測精度較高。

圖4 航跡圖
實驗采用均方誤差(Mean Squared Error,MSE)和平均絕對誤差(Mean Absolute Deviation,MAD)比較LSTM模型和TK模型的預測精度。
均方誤差反映預測精度情況,計算式表示為:
(26)
平均絕對誤差反映預測值誤差實際情況,計算式表示為:
(27)
式中:n為樣本數量;m為量測值;p為預測值。
LSTM模型和TK模型的MSE和MAD預測誤差統計情況,如表1所示。對比兩種評估指標情況,雖然二者的誤差處于同一量級,但TK模型的誤差相對較小,預測精度更高一些,從而也能看出Transformer模型的特征提取能力和Kalman濾波的修正能力得到很好的表現。

表1 LSTM模型和TK模型的均方誤差和平均絕對誤差
為了更好地比較模型預測精度,運用定量分析法測試各算法的預測誤差、預測準確率。利用訓練好的模型,針對樣本單一特征數據(如橫坐標位置x),對LSTM模型、Kalman模型、多項式Kalman濾波模型、Transformer模型和TK模型預測情況進行比較,結果如圖5、圖6所示。

圖5 均方誤差對比

圖6 準確率對比
圖5連續遞歸測試8幀(8個時刻),觀察其均方誤差變化趨勢。從曲線趨勢同樣可以看出TK模型的均方誤差小于其他幾個模型,而且隨著時序的積累TK模型誤差曲線趨于平穩,另外四個模型的曲線趨勢陡峭,表明TK模型的均方誤差更加穩定。圖6分別對不同數量的航跡進行訓練預測比較各模型的準確率,TK模型準確率在92%左右浮動,明顯高于其他幾個模型。
利用預測效率比較LSTM模型和TK模型二者訓練模型、預測目標的時間性能,如圖7所示。LSTM模型無論是訓練模型還是在線預測,其運行時間相對于TK模型的時間占比大概在3~5倍之間。對于相同長度的樣本,LSTM模型因為序列依賴,并行運算時無法消除樣本長度,而Transformer模型卻利用自注意力機制和前饋神經網絡結構,很好實現并行計算能力。
預測效率定義為:
(28)
式中:tTK、tLSTM分別表示TK模型和LSTM模型的運行時間。

圖7 運行時間
本文提出基于Transformer模型和Kalman濾波器的航跡預測方法。采取自注意力機制和前饋神經網絡框架結構的Transformer模型,拋棄了傳統的神經網絡思想,利用自注意力機制提取航跡數據特征,學習航跡規律,解決了長期依賴問題;同時利用Kalman濾波器結合量測數據對預測值進行實時修正,從而獲取最佳估計值。實驗比較了LSTM模型、TK模型和Kalman模型的誤差、準確率、時間性能。結果表明,基于Transformer模型和Kalman濾波器對航跡預測的算法具有良好的并行特性,并且特征提取能力相對LSTM模型也有較高的提升,使得預測的準確性、實時性都有良好的表現。