李 永,成夢雅
(北京工業(yè)大學 信息學部,北京 100124)
互聯(lián)網(wǎng)時代的飛速發(fā)展,海洋中的船舶越來越多,但是在某些港口或者海域,部分航道面臨著堵塞困難。船舶在海上航行,精準的定位不僅決定了船舶航行的工作效率,還關乎船舶行駛的安全。為了解決此問題,對船舶航跡進行預測是十分必要的。航跡預測,簡單來說,就是推算將來時刻的船舶所在的位置。船舶行駛的距離與所花費的實際時間在船舶速度一定的情況下是成正比的,因此位置預測可分為長距離預測與短距離預測,或者稱為長時預測與短時預測[1]。船舶在遠洋時,它需要很長的時間才能達到目的地并保持穩(wěn)定的運動,所以比較適合于長時預測。短時船舶預測更容易達到實際應用所需的精度,因為預測時間短,并且可以始終根據(jù)目標位置報文和雷達監(jiān)視數(shù)據(jù)校正預測結果[2]。
航跡預測是人們給出的一種預測概念,用于判斷未來的交通流量。軌跡預測可根據(jù)基本功能分為時間預測和位置預測。時間預測顧名思義就是在能確保船舶穩(wěn)定運動并且知道軌跡點的情況下,可以根據(jù)行駛時間長度預測出到達的位置數(shù)據(jù)。該算法的基本原理可以利用動能定理解決,例如飛機、火車和輪船的預計到達時間等。位置預測是指經(jīng)過一定距離或一定時間后,求出抵達點的位置數(shù)據(jù)。不需要通過實物參與就能通過純理論推算達到預測的目的,因此實驗成本大大節(jié)約了。
同時預測還是一種防范行為,當預測結果不在意料中時,放棄該結果,防止預測結果的發(fā)生。例如車輛擁堵的預測等[3]。但是在預測的過程中也會出現(xiàn)許多問題,船舶數(shù)據(jù)量越來越大,對數(shù)據(jù)管理和應用提出了新的挑戰(zhàn)[4-6]。同時具有時空性的數(shù)據(jù),為了實現(xiàn)更為準確的分析在數(shù)據(jù)查詢和正確處理方面增加了難度。數(shù)據(jù)的稀疏性,航跡數(shù)據(jù)具有一定的規(guī)模,數(shù)據(jù)的稀疏性仍不可避免,一些船舶在其他海域的數(shù)據(jù)較少,在某個海域比較多,對于船舶軌跡來說,如果采樣率較低,相距較遠的兩個軌跡點也會增加軌跡數(shù)據(jù)的不確定性[7]。船舶的航行勢必會受風向、氣流、海浪等外界不可控因素的影響。除了船舶本身,外力在船舶的作用力的大小以及怎么作用,第三方很難知曉[8]??傊?,航跡預測是難點也是熱點。
根據(jù)對船舶領域當前軌跡的預測,文獻[9]使用卡爾曼濾波算法,通過最小二乘方法估計自動檢測網(wǎng)絡系統(tǒng)的觀測數(shù)據(jù)。獲得船舶的平滑運動路徑。文獻[10]將改進的卡爾曼濾波算法應用于船舶的運動軌跡中。2015年,徐婷婷等人提出了一個基于三層BP神經(jīng)網(wǎng)絡的航跡預測模型,實現(xiàn)了船舶航跡預測[11]。除了BP神經(jīng)網(wǎng)絡和卡爾曼濾波之類的算法外,還有使用機器學習的軌跡預測方法,例如聚類方法、函數(shù)回歸方法和徑向基的神經(jīng)網(wǎng)絡等[12-14]。研究者高陽在其碩士論文中給出利用聚類的方法做飛機的航跡預測[15]。
文獻[16]運用支持向量機模型對橋區(qū)河流失控的船的航跡展開預測。通過建立運動目標的數(shù)學模型[17],考慮運動目標的方向和速度,然后調(diào)整運動目標的運動方程來實現(xiàn)對船舶位置的預測。文獻[18]針對歷史軌跡數(shù)量有限時導致傳統(tǒng)軌跡預測方法精度較低的問題,提出了一種改進的貝葉斯推理(MBI)方法。MBI為了獲得更準確的馬爾可夫模型結合對歷史軌跡進行分解而構造了一個馬爾可夫模型來量化相鄰位置。然后提出了TPMO軌跡算法。由于該算法的訓練過程為了對軌跡進行聚類,不僅需要使用熱點區(qū)域挖掘算法,而且需要建立具有連續(xù)軌跡時間的貝葉斯網(wǎng)絡,這是非常消耗時間成本的[19]。
近些年來,在很多領域深度學習被廣泛應用,神經(jīng)網(wǎng)絡的特征是使用一組已知的訓練樣本集來構建從輸入到輸出的映射。它主要是根據(jù)時間序列數(shù)據(jù)將歷史行駛軌跡坐標數(shù)據(jù)進行轉(zhuǎn)換,映射出歷史軌跡點與預測軌跡點之間的關系,然后通過神經(jīng)網(wǎng)絡學習船舶運動規(guī)律。
深度學習中的BP神經(jīng)網(wǎng)絡也被稱為誤差逆向傳播算法,是至今神經(jīng)網(wǎng)絡學習算法中較為成功的。它幾乎可以逼近任意非線性模型[11-12]。但是BP神經(jīng)網(wǎng)絡的問題就是信息內(nèi)容傳遞是單向的即從輸入到輸出這個方向。這樣的網(wǎng)絡模型具有便于訓練和簡單的優(yōu)點,但是它的缺點是不能考慮時間前后的輸入或輸出對結果造成的影響。所以考慮到BP神經(jīng)網(wǎng)絡不能記憶的問題,于是科學家提出了循環(huán)神經(jīng)網(wǎng)絡,此時的輸入和上一時刻的輸出信息都要考慮作為輸入,從而形成一個環(huán)路神經(jīng)網(wǎng)絡。循環(huán)神經(jīng)網(wǎng)絡對于傳統(tǒng)的神經(jīng)網(wǎng)絡來說,它們的每一個隱藏層的神經(jīng)元中不但包括上一個時刻殘留的信息,同時也包括當前的輸入信息的內(nèi)容,對于時間序列數(shù)據(jù)的預測具備較大的優(yōu)勢,然而循環(huán)神經(jīng)網(wǎng)絡對間隔太遠的歷史信息很不容易記憶,一般在訓練過程中超過幾步就有可能產(chǎn)生梯度消失的現(xiàn)象。
為解決此問題,LSTM被提出,它的記憶方式很特殊,不會只是將以前梯度較大的記憶抹除,因而解決了梯度消失的問題。LSTM的隱藏層除記憶單元也多了三個控制門:輸入門、遺忘門、輸出門。分別完成對時間序列數(shù)據(jù)的載入、讀取以及重置操作。遺忘門負責從細胞單元狀態(tài)中忘記信息,這可以優(yōu)化長短期神經(jīng)網(wǎng)絡的性能。輸入門負責添加信息到單元狀態(tài),它可以控制重要而不冗余的輸入信息。負責單元狀態(tài)的輸出則由輸出門控制。通過這些“門”的結構,LSTM可以解決長期記憶的問題,有效地增加記憶的長度,并適合于處理長序列問題[20-21]。文中研究將船舶特有的軌跡特征與時間序列相結合,使用基于深度學習的LSTM模型,觀察LSTM模型學習時間序列數(shù)據(jù)帶來的隱含船舶運動規(guī)律。
隨著深度學習的發(fā)展,循環(huán)神經(jīng)網(wǎng)絡在處理時間序列問題方面已顯示出良好的性能。而軌跡是具有時空信息的序列,并且可以通過使用循環(huán)神經(jīng)網(wǎng)絡學習軌跡的特性來預測下一軌跡位置。長短期記憶(long short term memory,LSTM)是一種經(jīng)過改進的循環(huán)神經(jīng)網(wǎng)絡,它解決了由于神經(jīng)網(wǎng)絡層數(shù)增加而導致的梯度消失或爆炸的問題。
詳細說明如下。
文中使用LSTM模型作為主體,通過學習輸入軌跡訓練的特征與下一個位置的關系,從而預測將來可能到達的位置。LSTM模型具有獨特的記憶模塊,該模塊的作用是減緩信息丟失速度,比較適合深度神經(jīng)網(wǎng)絡計算。LSTM是一種適合時間序列數(shù)據(jù)的循環(huán)神經(jīng)網(wǎng)絡,它的下一個時間周期的輸入是上一個時間周期的輸出,LSTM單元除了包括輸入門和輸出門還有遺忘門、輸入節(jié)點等。根據(jù)時間展開的循環(huán)神經(jīng)網(wǎng)絡模型如圖1所示。LSTM的神經(jīng)網(wǎng)絡結構如圖2所示。
圖1 LSTM網(wǎng)絡縮略圖
圖2 LSTM神經(jīng)網(wǎng)絡結構
本模型中記憶模塊的工作原理大致如下:
圖2中,在RNN中隨時間傳遞的只有單元狀態(tài)C,LSTM有狀態(tài)鏈h(隱藏層狀態(tài))和C(單元狀態(tài))是隨時間傳遞的,ht-1是傳入到當前時刻的上一時刻隱藏層的值,xt是當前時刻的輸入值,ct-1是上一時刻LSTM記憶單元的狀態(tài)值,ct是當前時刻的LSTM記憶單元的狀態(tài)值。ht-1和xt在經(jīng)過遺忘門時,通過計算得出需要丟棄的信息。由計算得到輸出到單元狀態(tài)的值在0和1之間。0表示全部忘記,1表示全部保留。見公式(1):
ft=σ(wf·[ht-1,xt]+bf)
(1)
其中,ft是遺忘門的輸出,遺忘門里的權重矩陣和偏置向量分別是wf和bf,激活函數(shù)Sigmoid是一種將變量映射到[0,1]之間的S型生長的函數(shù),由σ表示。具體公式為:
(2)
更新到單元的新信息中,先是經(jīng)過有Sigmoid函數(shù)的輸入門計算出需要更新的信息(見公式(3)),再由tanh層創(chuàng)建一個新的值kt加入到單元狀態(tài)中(見公式(4)):
it=σ(wi·[ht-1,xt]+bi)
(3)
kt=tanh(wk·[ht-1,xt]+bk)
(4)
公式(3)中,it是輸入門的輸出,wi是輸入門的權重矩陣,bi是偏置,[ht-1,xt]表示將兩個向量拼成一個向量。式(3)和式(4)得出的結果相乘再與上一時刻單元狀態(tài)值經(jīng)遺忘門得出的結果累加得到了當前時刻單元狀態(tài)值,如下:
ct=ft*ct-1+it*kt
(5)
當前時刻的單元狀態(tài)ct由公式(5)表示,它是由兩個乘積累加產(chǎn)生的,包括遺忘門層的輸出按照位乘以上一時刻的單元狀態(tài)和輸入門輸出按位乘以輸入的單元狀態(tài)。單元狀態(tài)決定最終輸出結果。由Sigmoid對輸出結果進行分類選擇需要輸出的數(shù)據(jù),再用tanh函數(shù)處理單元狀態(tài),得到經(jīng)隱藏層傳遞給下一時刻的狀態(tài)值ht,ht經(jīng)過Sigmoid處理后可得到當前時刻預輸出值y,見式(6)~式(8),最終的輸出是由輸出門和細胞狀態(tài)共同決定的。
ot=σ(wo·[ht-1,xt]+bo)
(6)
ht=ot*tanh(ct)
(7)
y=σ(wtht)
(8)
如今,各種海上交通管理系統(tǒng)獲取的船舶導航數(shù)據(jù)的重要來源是AIS數(shù)據(jù),其中包括如MMSI(maritime mobile service identity)、經(jīng)度、緯度、速度和航向等基本信息。為了深入探索船舶的歷史航跡數(shù)據(jù),建立實時軌跡預測模型,船舶位置最相關的航行信息也要充分使用,將船舶的經(jīng)度、緯度、航速和航向作為輸入,具體模型的結構如圖3所示。
圖3 航跡預測模型結構示意圖
船舶軌跡預測實質(zhì)上是運用LSTM循環(huán)神經(jīng)網(wǎng)絡的回歸問題將船舶的歷史軌跡特征以及當前的軌跡特征作為模型輸入,將未來某個時間的船舶軌跡特征數(shù)據(jù)作為輸出,然后與實際值進行比較,以建立船舶歷史軌跡與船舶未來軌跡特征數(shù)據(jù)之間的映射關系。進行船舶未來航向特性的計算和預測。對于一艘船舶來說,其在t時刻的軌跡特征Y(t)表示為:
Y(t)={lat,lon,v,c}
(9)
其中,lat,lon,v,c分別為船舶在t時刻的4項特性:緯度、經(jīng)度、速度、航向。
為了建立船舶軌跡的預測模型,將連續(xù)n個時刻的船舶航行軌跡特征數(shù)據(jù)Y(t-n+1),…,Y(t-1)和Y(t)作為模型的輸入,將t+1時刻的航行軌跡數(shù)據(jù)Y(t+1)作為輸出,其中n對應著輸入層的step大小。那么,船舶航跡預測模型的表達式為:
Y(t+1)=f({Y(t-n+1),…,Y(t-1),Y(t)})
(10)
深度學習訓練目的就是找到神經(jīng)網(wǎng)絡的最小損失函數(shù)點,往往引入優(yōu)化算法幫助更新與計算影響模型訓練和模型輸出的網(wǎng)絡參數(shù),逼近或達到最優(yōu)值,尋找最小損失函數(shù)點,提高模型精確度。文中采用了Adam算法優(yōu)化了LSTM網(wǎng)絡,Adam既可以對學習率進行自適應調(diào)節(jié),又可以利用歷史動量加快收斂速度。Adam算法在計算時,需要的內(nèi)存更少,收斂速度快。Adam方法的更新規(guī)則[22]如下:
Et(g)=βtEt-1(g)+(1-β1)g(ωt)
(11)
Et(g2)=β2Et-1(g2)+(1-β2)g(ωt)⊙g(ωt)
(12)
(13)
更新后的權值:
ωt+1=ωt+△ωt=
(14)
其中,β1,β2是[0,1]之間的可變參數(shù),梯度向量g的一階矩為Et(g),二階矩為Et(g2)。
本次仿真實驗使用的是公開AIS數(shù)據(jù)下載,The Marinecadastre website(https://marinecadastre.gov/ais/)。該數(shù)據(jù)集包含了從2009年到2019年10年時間里的歷史軌跡信息。這些數(shù)據(jù)含有軌跡量大,時間跨度大,適合作為文中軌跡預測的數(shù)據(jù)集。每條軌跡由一系列軌跡點組成,每個軌跡點數(shù)據(jù)包含經(jīng)度(LON)、緯度(LAT)、時間(BaseDateTime)、SOG對地航速(speed over ground)、COG對地航向(course over ground)、Heading航艏向等信息,同時將船舶的海上移動業(yè)務識別碼(maritime mobile service identity,MMSI)也放入船舶基本數(shù)據(jù)中,作為唯一標識,去區(qū)分不同船舶的航行行為。軌跡部分數(shù)據(jù)示例如表1所示。
表1 數(shù)據(jù)集基本信息
在實驗中將數(shù)據(jù)集劃分為訓練集、測試集和驗證集,所占比重分別為80%、10%、10%。其中,驗證集主要是用來調(diào)整超參數(shù),在測試集上對模型進行均方誤差的檢驗。
首先創(chuàng)建模型,通過擬合訓練集去找模型的初始參數(shù)值。之后再利用驗證集對模型的超參數(shù)進行調(diào)整,查看模型的性能。再通過測試集數(shù)據(jù)評估最終模型的泛化能力。將最后的預測結果記錄下來。由LSTM該模型的訓練效果(參見圖4)顯示,隨著訓練次數(shù)的增加,誤差曲線逐漸趨于穩(wěn)定,訓練效果較好。
圖4 航跡預測模型訓練驗證誤差圖
在此次實驗中,均方誤差MSE作為評估船舶軌跡預測模型的方法。均方誤差是用來衡量預測結果的誤差情況,MSE的數(shù)學表達如式(15)所示,該值越小則表示模型的性能越好。
(15)
為了驗證模型的有效性,分析LSTM方法和BP神經(jīng)網(wǎng)絡的預測效果。網(wǎng)絡輸入同樣使用經(jīng)度、緯度、船舶速度和船舶方向,輸出使用經(jīng)緯度,圖5為LSTM和BP神經(jīng)網(wǎng)絡預測的均方誤差。
圖5 在相同數(shù)據(jù)集下不同模型的結果對比(MSE)
從圖5可以看出LSTM預測模型有著更高的預測精度,原因是LSTM具有較好的預測能力,并且能推斷航跡變化趨勢,它擁有較強的記憶能力來記憶歷史時刻航跡位置。長短期記憶神經(jīng)網(wǎng)絡對于存在依賴關系的歷史信息采用一個特定的記憶細胞存儲信息。LSTM通過引入輸入門,輸出門和遺忘門,使得長期依賴性的時間序列數(shù)據(jù)的學習和分析能力顯著提高。適合處理長序列問題。
為了驗證模型預測值與真實值之間的誤差,在模型訓練、預測過程中輸入相應的參數(shù),發(fā)現(xiàn)不同的參數(shù)對模型的訓練和預測結果產(chǎn)生了不同的影響。文中通過仿真實驗對模型的性能進行了評估,利用測試集數(shù)據(jù)進行驗證,來檢驗所選模型的最終的預測能力。圖6、圖7為LSTM模型的預測結果,從圖中可以看到,預測的緯度和經(jīng)度非常接近緯度和經(jīng)度的實際變化。這非常接近預期結果。這也表明基于長短期記憶神經(jīng)網(wǎng)絡的船舶預測模型達到了實驗目的。為了更直觀地看到預測值和真實值的差別,在地圖上進行可視化展示,如圖8所示。由圖可以看出,預測值與真實值相對吻合,具有一定的研究意義。
圖6 緯度預測結果
圖7 經(jīng)度預測結果
圖8 預測值與真實值可視化展示
文中提出了基于神經(jīng)網(wǎng)絡的船舶航跡預測方法,充分探索船舶時間序列數(shù)據(jù)背后的運動規(guī)律,進而實現(xiàn)航跡預測。結合AIS信息和LSTM模型對船舶航跡進行了預測。通過訓練好的LSTM模型對預測目標海域中的船舶進行實驗。通過比較和分析預測值與實際數(shù)據(jù)之間的偏差,發(fā)現(xiàn)隨時間的變化,LSTM可以有效地學習和識別船舶軌跡的特征值,例如經(jīng)度、緯度、速度和航行方向,然后準確地預測船舶未來時刻的位置。文中基于預測船舶軌跡的目標,作為初步探索,仍然存在許多不足之處,例如,在理想的仿真環(huán)境中的大多數(shù)算法的噪聲是人為確定并保持不變的,而系統(tǒng)狀態(tài)下的噪聲是不確定和未知的,不管是適用性方面還是在通用性方面都不是很強。在今后的工作中將考慮船舶在航行時,受到風、流、浪等外界環(huán)境的影響,以及船舶航行時遇到障礙物等等,進而對預測準確性進行提升。