高大為, 朱永生, 張金奮, 鄢博冉, 何延康, 閆 柯
(1.西安交通大學 現(xiàn)代設(shè)計與轉(zhuǎn)子軸承教育部重點實驗室, 陜西 西安 710049;2.武漢理工大學 智能交通系統(tǒng)研究中心, 湖北 武漢 430063)
船舶實時航行軌跡的預(yù)測精度不高是造成船舶碰撞、船-橋碰撞等典型水上交通事故的重要原因之一。[1]船舶的軌跡可描述船舶狀態(tài),也可用于船舶的導(dǎo)航、避碰和海事監(jiān)管,從而提升船舶航行安全性。隨著近年來數(shù)據(jù)挖掘(Data Mining, DM)技術(shù)的興起,越來越多的技術(shù)手段被用于船舶軌跡的挖掘與預(yù)測,試圖基于歷史船舶航跡數(shù)據(jù)來預(yù)測未來一段時間內(nèi)的船舶航跡,從而感知潛在的航行風險,以便及早采取有效措施避免船舶的碰撞問題。
1)在軌跡預(yù)測問題上,DM技術(shù)已在多個領(lǐng)域得到了應(yīng)用。ZHANG等[2]提出使用矩陣神經(jīng)網(wǎng)絡(luò)來預(yù)測氣旋軌跡,避免對數(shù)據(jù)矢量化所造成的空間信息關(guān)聯(lián)性的缺失,并通過試驗證明其相對于循環(huán)神經(jīng)網(wǎng)絡(luò)具有更強的優(yōu)勢;HAO等[3]提出一種基于長短時記憶網(wǎng)絡(luò)(Long Short-Term Memory,LSTM)的行人軌跡預(yù)測方法,不僅考慮社會鄰域的影響,還考慮了場景布局對預(yù)測結(jié)果的影響;LI等[4]基于測距傳感器和相機圖像中所學習到的三維姿態(tài)數(shù)據(jù),提出一種三自由度行人姿態(tài)軌跡預(yù)測方法;ALTCHé等[5]針對目前的先進駕駛輔助系統(tǒng)(Advanced Driving Assistance Systems, ADAS)無法進行中期預(yù)測的問題,提出一種預(yù)測未來公路上車輛橫向和縱向軌跡的方法,從而將車輛所能預(yù)測到的軌跡延長。
2)在船舶的軌跡跟蹤方面,相關(guān)技術(shù)也日漸成熟?;诖白詣幼R別系統(tǒng)(Automatic Identification System, AIS)進行船舶軌跡預(yù)測的研究也越來越多。然而,由于AIS系統(tǒng)自身的問題、不適當?shù)氖褂靡约靶盘杺鬏攩栴}等原因,數(shù)據(jù)在時間和空間兩個維度常存在較大的誤差。針對該問題,ZHAO等[6]對數(shù)據(jù)集進行物理完整性、空間邏輯完整性和時間準確度等多重完整性維度的系統(tǒng)性分析,提出一種提高數(shù)據(jù)質(zhì)量的算法;LIU等[7]使用張量分解工具提取了AIS數(shù)據(jù)中固有的運動模式,并基于鏈路預(yù)測技術(shù)來恢復(fù)全數(shù)據(jù)的張量,以解決船舶數(shù)據(jù)的缺失問題;徐鐵等[8]提出使用kalman濾波算法來解決由AIS數(shù)據(jù)不可靠而導(dǎo)致的船舶軌跡不準確或者誤差較大的問題;鄧胡濱等[9]使用kalman濾波器來消除接收信號強度指示(Received Signal Strength Indicator, RSSI) 技術(shù)中環(huán)境因素的干擾。然而,基于預(yù)測算法的AIS數(shù)據(jù)需要保證具有等時間間隔的位置信息,而這些方法可提高數(shù)據(jù)質(zhì)量,卻難以直接進行預(yù)測。
3)在船舶的航跡預(yù)測問題上, SIMSIR等[10]基于船舶交通管理系統(tǒng)(Vessel Traffic Services, VTS),使用船舶的位置和速度數(shù)據(jù)訓練人工神經(jīng)網(wǎng)絡(luò),依靠所預(yù)測的船舶航跡數(shù)據(jù)來解決狹窄水域的船舶預(yù)警問題;GAN等[11]基于大量的船舶軌跡數(shù)據(jù),利用模糊C均值(Fuzzy C-Means, FCM)聚類算法對船舶歷史軌跡進行聚類,建立船舶速度、載重、自重、最大功率、船長、船寬、船型和水位等已知因素的關(guān)系模型,解決了較長距離的船舶軌跡的預(yù)測問題,是一種典型的區(qū)域預(yù)測模型;權(quán)波等[12]提出使用基于LSTM模型對AIS數(shù)據(jù)進行建模和學習,實現(xiàn)船舶航行軌跡多維度特征表達,滿足對船舶軌跡預(yù)測的精確度和實時性的需求;徐婷婷等[13]提出基于BP神經(jīng)網(wǎng)絡(luò)的船舶航跡預(yù)測方法,將航向和航速作為輸入,經(jīng)度、緯度差作為輸出來建立航跡預(yù)測的模型實現(xiàn)實時的航跡預(yù)測。文獻[12]和文獻[13]屬于典型的當前航跡預(yù)測模型。然而,這些方法一方面需以信噪比較低的AIS數(shù)據(jù)進行預(yù)測,當噪聲較大時,難以實現(xiàn)理想的效果;另一方面,只使用當前航跡數(shù)據(jù)預(yù)測難以達到理想的預(yù)測精度。
針對以上問題,本文提出一種消噪和多維預(yù)測相結(jié)合的方法來預(yù)測船舶航跡。針對AIS數(shù)據(jù)中經(jīng)、緯度值波動性大,有局部增大或減小趨勢的特點,首先使用三次樣條插值、中值濾波方法對經(jīng)度、緯度差值進行消噪處理;然后對數(shù)據(jù)進行時間和空間兩個維度上的建模,利用LSTM進行訓練并綜合兩方面的信息,最后利用訓練后的模型預(yù)測船舶的航跡信息。
LSTM作為一種捕捉序列化數(shù)據(jù)中動態(tài)信息的神經(jīng)網(wǎng)絡(luò),通過記憶存儲單元實現(xiàn)對序列數(shù)據(jù)的準確預(yù)測,已在機器翻譯等領(lǐng)域有了較為成熟的應(yīng)用。[14-15]LSTM在數(shù)據(jù)預(yù)測方面有強大的功能,相比于許多預(yù)測方法可獲得更高的預(yù)測精度。其體系結(jié)構(gòu)的核心思想是能夠存儲時變狀態(tài)的存儲單元,其非線性門單元可控制信息的流入和流出。LSTM通過遺忘門、輸入門和輸出門等3種結(jié)構(gòu)實現(xiàn)信息保護和控制,其結(jié)構(gòu)圖見圖1。圖1中:將各個時刻的信息輸入到不同的循環(huán)單元中,循環(huán)單元間可傳遞和輸出信息,并由末尾的循環(huán)單元形成最后的輸出。
圖1 LSTM結(jié)構(gòu)圖
圖1中遺忘門、輸入門和輸出門分別為
Ct=σ(Wf×[ht-1,xt]+bf)×Ct-1
(1)
Ct=Ct+σ(Wi×[ht-1,xt]+bi)×
tanh(WC×[ht-1,xt]+bC)
(2)
ht=σ(Wo×[ht-1,xt]+bo)×tanh(Ct)
(3)
式(1)~式(3)中:Ct為當前時刻t的狀態(tài)胞體;ht為胞體的輸出;xt為當前胞體的輸入;Wf為各個門的權(quán)重;bf為所對應(yīng)的偏差;σ為sigmod激活函數(shù)。
多維預(yù)測方法包括AIS數(shù)據(jù)預(yù)處理、多維預(yù)測模型建立和預(yù)測。其中:AIS數(shù)據(jù)預(yù)處理是對數(shù)據(jù)進行消噪,使其更接近于真實值;多維預(yù)測模型則考慮了當前航跡數(shù)據(jù)和歷史航跡數(shù)據(jù),使預(yù)測結(jié)果更加準確。
由于AIS數(shù)據(jù)在時間和空間兩個維度存在較大的誤差,甚至有時存在較明顯的數(shù)據(jù)缺失問題,先對AIS數(shù)據(jù)進行預(yù)處理。受到AIS數(shù)據(jù)發(fā)送頻率不一致等因素的影響,接收到的數(shù)據(jù)的時間間隔在大多數(shù)情況下是不統(tǒng)一的。因此,采用三次樣條插值法來擬合數(shù)據(jù)。假設(shè)時間序列區(qū)間[a,b]可分成n個區(qū)間,即[(x0,x1),(x1,x2),…,(xn-1,xn)],共有n+1個數(shù)據(jù)點且對應(yīng)的函數(shù)值分別為y0,y1,…,yn。若插值函數(shù)S(x)滿足
S(xi)=yi(i=1,2,…,n)
(4)
式(4)在各個小區(qū)間上都是不高于三次的多項式,假設(shè)為
Si(x)=aix3+bix2+cix+di
(5)
式(5)中:ai、bi、ci和di為待定系數(shù)。若三次樣條方程滿足曲線光滑的條件,即S(x)、S′(x)和S″(x)連續(xù),則除了根據(jù)每個節(jié)點處的值建立方程組外,還可根據(jù)該連續(xù)條件建立方程組
S(xi-0)=S(xi+0)
(6)
S′(xi-0)=S′(xi+0)
(7)
S″(xi-0)=S″(xi+0)
(8)
在此基礎(chǔ)上,再加上邊界條件即可求得所有三次樣條方程的系數(shù),從而構(gòu)造出整個插值函數(shù)。當計算某個點的插值時,則可由其所處的區(qū)間代入方程求得。
由于船舶的速度和航向經(jīng)常發(fā)生變化,經(jīng)緯度值具有較大的波動性,使用原始的AIS數(shù)據(jù)進行建模預(yù)測容易造成較大的誤差。因此,在三次樣條插值之后,進一步使用中值濾波的方法,分析該時刻鄰域內(nèi)的多個數(shù)據(jù)來計算在該時刻的信息。
在對原始AIS數(shù)據(jù)進行插值處理后,接著使用中值濾波來對其進行去噪。設(shè)AIS數(shù)據(jù)的第i個點為x(i),由其周圍2N個數(shù)據(jù)點組成的數(shù)據(jù)集合為
[x(i-N),…,x(i),…,x(i+N)]
(9)
則進行中值濾波后該點的值為
x′(i)=Med[x(i-N),…,x(i),…,x(i+N)]
(10)
式(10)中:Med為該數(shù)據(jù)集合的中間值。
中值濾波的優(yōu)點在于對如AIS數(shù)據(jù)這種單位時間內(nèi)的位移波動較大的數(shù)據(jù),可起到較好的消噪效果。
本文將船舶利用當前運動航跡進行預(yù)測時的模型稱為“當前航跡模型(Current Trajectory Prediction Model, CTPM)”。CTPM已在多篇文獻有所介紹。[12]該模型由船舶當前航行的數(shù)據(jù)建模,可反映船舶的實時狀態(tài)信息、自然環(huán)境狀態(tài)信息等。然而,該模型未能考慮船舶的空間位置特點。而船舶的航行狀態(tài)與所在水域的空間位置具有較大的關(guān)聯(lián)性。例如:在較窄的水域內(nèi),船舶的航行速度會較慢;在較寬的水域內(nèi),船舶的航行速度則會較快;在船舶接近港口時,速度會較慢;在彎曲航道,船舶一般會采取轉(zhuǎn)向操作。因此,在CTPM的基礎(chǔ)上,建立“區(qū)域預(yù)測模型(Regional Prediction Model, RPM)”。
RPM是指船舶利用預(yù)測時刻所處區(qū)域的位置信息建立模型,通過該區(qū)域的歷史軌跡來分析所預(yù)測時刻的航行軌跡。RPM與CTPM是一種互補關(guān)系,通過將兩者結(jié)合來提高對船舶航跡的預(yù)測能力。CTPM提取當前船舶的航行狀態(tài)特征;RPM提取空間位置的水域特點對船舶航行狀態(tài)所影響的特征。
由于在短時間內(nèi),相鄰AIS數(shù)據(jù)間的經(jīng)緯度差值一般較小(10-5到10-4甚至更小的范圍內(nèi)),而該數(shù)值的量級會給模型的訓練帶來較多的困難。因此,選用經(jīng)緯度差值來作為預(yù)測模型在單個時刻的輸入和輸出,同時,將航速、航向信息作為模型的考慮因素,見圖2。圖2中:對于CTPM來說,使用相鄰數(shù)據(jù)點的差值作為輸入;而對于RPM而言,則將其中一個航跡設(shè)為參考數(shù)據(jù),利用與其差值作為輸入。
圖2 LSTM模型在t時刻的輸入與輸出
對RPM來說,設(shè){Xi,j|i∈m,j∈n} 為船舶的某區(qū)域歷史航跡,其共有m段航跡,n個位置。
Xi,j=[xi,j,yi,j,vi,j,dij]
(11)
式(11)中:xi,j、yi,j、vi,j和dij分別為船舶在某個位置的經(jīng)度、緯度、速度和航向。為避免網(wǎng)絡(luò)訓練中的數(shù)值問題,并使網(wǎng)絡(luò)快速收斂,先對各個航跡數(shù)據(jù)進行歸一化操作為
(12)
(13)
i∈{1,2,…,m})
(14)
同時,以當前航跡數(shù)據(jù)來訓練CTPM為
(15)
式(15)中:
(16)
再用全連接層將二者融合來進行訓練,最終的預(yù)測結(jié)果為
(17)
使用均方誤差(Mean Squared Error, MSE)作為損失函數(shù)訓練模型為
(18)
模型使用自適應(yīng)矩估計優(yōu)化器(Adam)對其進行優(yōu)化。Adam是一種對隨機目標函數(shù)執(zhí)行一階梯度優(yōu)化的算法。模型隱藏層中的單元數(shù)通過在{85, 170, 255, 340, 425} 中搜尋最優(yōu)的值來作為此處的參數(shù),用于記憶和存儲過去的狀態(tài)。最大訓練周期數(shù)的選取需要保證模型可以收斂,在此根據(jù)模型多次試驗結(jié)果選擇為1 500,循環(huán)層個數(shù)設(shè)置為3,預(yù)測步數(shù)設(shè)置為1。使用訓練好的模型預(yù)測數(shù)據(jù)后,再將數(shù)據(jù)還原成經(jīng)緯度值。船舶航跡預(yù)測模型見圖3。
圖3 船舶航跡預(yù)測模型
對于船舶的航跡預(yù)測來說,一方面,前一時刻的經(jīng)緯度差值位置信息決定著待預(yù)測時刻的經(jīng)緯度值位置信息;另一方面,船舶的航速、航向也對經(jīng)緯度差值存在著較大的影響。因此,以經(jīng)緯度差值、航速、航向等4個參數(shù)作為網(wǎng)絡(luò)的輸入,以經(jīng)、緯度差值作為輸出。方法流程見圖4。
圖4 所提出方法流程
1)對原始數(shù)據(jù)進行預(yù)處理,對其進行初步判定、插值處理等,從而獲得等時間間隔的經(jīng)緯度、航向和速度信息。
2)選取指定間隔的相鄰數(shù)據(jù)點的經(jīng)緯度差值。
3)通過中值濾波方法進行濾波。
4)基于船舶空間歷史數(shù)據(jù),構(gòu)造區(qū)域范圍內(nèi)的船舶軌跡預(yù)測模型RPM。
5)基于船舶的實時數(shù)據(jù),構(gòu)造船舶當前航跡預(yù)測模型CTPM。
6)聯(lián)合對以上模型進行訓練。
7)獲得實時預(yù)測的經(jīng)緯度差值。
8)將其還原成經(jīng)緯度值。
為測試提出的軌跡預(yù)測算法的性能,分別使用海上AIS數(shù)據(jù)和內(nèi)河AIS數(shù)據(jù)來訓練模型并預(yù)測。
海上AIS數(shù)據(jù)為大連、煙臺2個港口之間的數(shù)據(jù),該水域的經(jīng)緯度值見圖5。由圖5可知:在相同任務(wù)的航行中每艘船舶的航行軌跡在大體趨勢上存在較大的相關(guān)性,但在各個位置處仍然存在著一定的差別。本文選取其中一段數(shù)據(jù)來驗證所提出方法的效果。
圖5 某個范圍內(nèi)的船舶經(jīng)緯度值
首先對AIS數(shù)據(jù)進行預(yù)處理,根據(jù)初步判斷法則去除明顯的異常數(shù)據(jù)。然后使用三次樣條插值,使其在時間上等間隔。對預(yù)處理后的經(jīng)緯度數(shù)據(jù)進行差值處理,即獲得等間隔時間段內(nèi)船舶的航行里程信息,然后對經(jīng)緯度差值進行消噪處理,結(jié)果見圖6。由圖6可知:消噪前的經(jīng)緯度差值數(shù)據(jù)(圖6中灰色部分)存在以下特點:在經(jīng)緯度差值較為穩(wěn)定的階段,其以某個數(shù)據(jù)值為中心,存在“正弦式”波動的規(guī)律;在某些階段其經(jīng)緯度差會出現(xiàn)局部的增大或減小。對于前者,對該數(shù)據(jù)的消噪可使用均值濾波法,然而考慮到后者中出現(xiàn)的局部增大或減小,使用中值濾波可同時滿足以上兩方面消噪的需求。消噪后的數(shù)據(jù)如圖6中黑色曲線所示,經(jīng)中值濾波消噪后數(shù)據(jù)的波動性得到較好的解決,且能保留局部出現(xiàn)的增大或減小的趨勢。
a) 經(jīng)度差
選取經(jīng)緯度從(121.504 9°E, 37.771 0°N)到(121.585 3°E, 37.983 1°N)的一段數(shù)據(jù)進行分析,通過尋優(yōu)設(shè)置隱含層數(shù)為170,預(yù)測結(jié)果見圖7。
a) 整體預(yù)測結(jié)果
圖7中:實際值為實際的航行軌跡;訓練值為訓練網(wǎng)絡(luò)所使用的的經(jīng)緯度差值部分;測試值為進行預(yù)測的部分。由圖7可知:船舶的航行軌跡預(yù)測精度較高,與實際值的趨勢一致。圖7b結(jié)果為在圖7a的基礎(chǔ)上進行局部放大的某段訓練數(shù)據(jù),圖7c和圖7d為測試數(shù)據(jù)上船舶某兩段輕微轉(zhuǎn)彎時的軌跡,預(yù)測結(jié)果可看出,雖然測試值與實際值出現(xiàn)了一定的偏差,但是誤差較小,預(yù)測效果良好。
預(yù)測誤差可更為直觀的反映模型的性能,預(yù)測得到的經(jīng)緯度誤差見圖8。再結(jié)合該案例中的時刻差(6 s)可知:二者的均值分別為6.23×10-5°和8.89×10-5°。同時,本文將該方法與傳統(tǒng)的LSTM方法進行對比見表1。由表1可知:在經(jīng)度、緯度兩個方向上,所提出的方法均能獲得較小的誤差,證實所提出方法的有效性。
a) 經(jīng)度誤差
表1 兩種預(yù)測方法的平均誤差的對比
為進一步測試提出的軌跡預(yù)測算法的性能,使用某段內(nèi)河的AIS數(shù)據(jù)進行分析。所研究水域的經(jīng)緯度數(shù)據(jù)見圖9。由圖9可知:在相同任務(wù)的航行中各個船舶的航行軌跡在大體趨勢上存在較大的相關(guān)性,但在各個位置仍存在著一定的差別。本文選取船舶直線行駛、船舶轉(zhuǎn)彎、船舶加速和船舶減速時的AIS數(shù)據(jù)等4段典型數(shù)據(jù),來驗證所提出方法的效果。該4段數(shù)據(jù)以不同的標記展示在圖9中。
圖9 某個范圍內(nèi)的船舶經(jīng)緯度值
在進行模型預(yù)測之前,首先使用上述數(shù)據(jù)預(yù)處理方法對航跡數(shù)據(jù)進行三次樣條插值和中值濾波,隨后再進行航跡預(yù)測。通過尋優(yōu)設(shè)置隱含層數(shù)為170,預(yù)測結(jié)果見圖10~圖13。由圖10~圖13可知:該預(yù)測方法在船舶的各個階段都實現(xiàn)了較為準確的預(yù)測。
在直線行駛階段如圖12所示,船船航跡的預(yù)測誤差最小,其最大預(yù)測誤差低至7.0×10-7°。在圖13所示的轉(zhuǎn)彎階段,船舶的預(yù)測誤差相對較大些,這是由于訓練數(shù)據(jù)中沒有學習到船舶轉(zhuǎn)彎時的狀態(tài)信息。同時,在船舶加減速階段如圖10和圖11所示,其預(yù)測誤差相比直線階段也要略大一些。然而,相比于所預(yù)測時間內(nèi)的船舶位移,該誤差在可接受的范圍之內(nèi)。為驗證方法的有效性,同時,將該方法與傳統(tǒng)的LSTM方法進行對比,結(jié)果見表2。由表2可知:雖然直線階段二者差別不大,但是在其他的航行狀態(tài)下,所提出的方法的預(yù)測誤差明顯較小。通過以上分析,說明所提出的預(yù)測模型在內(nèi)河AIS數(shù)據(jù)中也可達到較好的效果。
a) 預(yù)測結(jié)果
a) 預(yù)測結(jié)果
a) 預(yù)測結(jié)果
a) 預(yù)測結(jié)果
表2 兩種預(yù)測方法的平均均方根誤差的對比
本文提出一種基于船舶AIS數(shù)據(jù)的航跡多維預(yù)測方法,首先通過3次樣條插值、中值濾波等技術(shù)對數(shù)據(jù)進行預(yù)處理,然后在此基礎(chǔ)上基于歷史軌跡數(shù)據(jù)和當前航跡數(shù)據(jù)構(gòu)建多維預(yù)測算法來提高預(yù)測的精度。在數(shù)據(jù)預(yù)處理環(huán)節(jié),通過多種方法保證數(shù)據(jù)的可靠性;在航跡多維預(yù)測環(huán)節(jié),分別建立區(qū)域預(yù)測模型和當前航跡預(yù)測模型,從時間和空間兩個維度同時對航跡進行預(yù)測并綜合其結(jié)果。通過海上AIS數(shù)據(jù)和內(nèi)河AIS數(shù)據(jù)的試驗驗證,結(jié)果表明所提出的方法可實現(xiàn)對船舶航跡較為準確的預(yù)測。