楊 帆 何正偉 何 帆
(西安交通大學(xué)計算機(jī)科學(xué)與技術(shù)學(xué)院1) 西安 710049) (武漢理工大學(xué)航運學(xué)院2) 武漢 430063)(內(nèi)河航運技術(shù)湖北省重點實驗室3) 武漢 430063) (國家水運安全工程技術(shù)研究中心4) 武漢 430063)
隨著水上交通的日漸繁榮,伴隨而來的一系列航道異常行為也逐漸增多,這些異常行為主要包括航道擁堵嚴(yán)重、船舶不遵守正常航線、船舶駛?cè)胛kU區(qū)域等.為了避免船舶事故的產(chǎn)生,保證水上交通安全、有序的進(jìn)行,對船舶異常行為的檢測至關(guān)重要.目前,有關(guān)船舶異常狀態(tài)檢測的研究主要有:甄榮[1]通過建立船舶軌跡相似度矩陣,運用K-means聚類算法對船舶航行行為模式進(jìn)行聚類學(xué)習(xí),得到監(jiān)控海域內(nèi)船舶典型航行行為模式,從而構(gòu)建基于貝葉斯分類器的船舶常規(guī)航行行為的分類和軌跡異常的航行行為識別模型;魏照坤等[2]分析通航水域船舶信息的分布情況,根據(jù)其概率分布采用樸素貝葉斯算法,從船舶航速、航向及距航道邊界距離三個方面,構(gòu)建船舶異常行為檢測模型;馬文耀等[3]提出了船舶異常行為的一致性檢測算法;在船舶軌跡點中引入能夠體現(xiàn)操縱模式的特征,以轉(zhuǎn)向行為與變速行為度量了操縱行為相似性,從而檢測船舶變速與轉(zhuǎn)向異常行為.邱洪生[4]提出了一種基于卡爾曼濾波的船舶航行軌跡異常行為預(yù)測算法,根據(jù)密度聚類得出的航跡圖譜,結(jié)合卡爾曼濾波算法對船舶航跡進(jìn)行預(yù)測,從而達(dá)到檢測船舶異常行為的目的.Castaldo等[5]提出了一種基于動態(tài)貝葉斯網(wǎng)絡(luò)的船舶異常行為識別方法,通過船舶的合成軌跡進(jìn)行訓(xùn)練,將該軌跡與存儲在網(wǎng)絡(luò)中的正常行為進(jìn)行比較,從而檢測出船舶的異常行為狀態(tài).
目前關(guān)于船舶異常行為的研究主要是對船舶軌跡進(jìn)行建模,采用貝葉斯分類對船舶異常行為進(jìn)行判別.隨著海上交通信息化的發(fā)展,船舶自動識別系統(tǒng)的應(yīng)用越來越廣泛,其中AIS數(shù)據(jù)具有數(shù)據(jù)量大、信息豐富、支持實時獲取的特點,記載了船舶航行的動態(tài)與靜態(tài)信息.因此,文中提出了一種基于AIS大數(shù)據(jù)挖掘的方法,通過對AIS數(shù)據(jù)時間序列進(jìn)行挖掘,采用長短期記憶神經(jīng)網(wǎng)絡(luò)對AIS數(shù)據(jù)進(jìn)行訓(xùn)練,最終獲取船舶的異常行為狀態(tài).
船舶異常行為與船舶運動密切相關(guān),如果船舶的運動指標(biāo)不處于正常范圍內(nèi),如發(fā)生航向偏離、航行速度過大或過小、不在規(guī)定的航行區(qū)域內(nèi)行駛等都可以稱為船舶異常行為.Martineau等[6]將船舶異常行主要分為位置異常和運動異常兩大類.其中位置異常情況主要有船舶航行偏離實際軌跡、船舶航行在非法區(qū)域等情況;運動異常主要有航行速度異常和航行軌跡異常兩類,針對船舶異常行為,Martineau和Roy將船舶異常行為進(jìn)行分類,圖1為船舶異常行為分類.通過對船舶異常行為進(jìn)行分類,得到16種船舶異常行為狀態(tài).通過對每一種船舶異常行為狀態(tài)劃分標(biāo)簽,船舶異常行為檢測就是基于已經(jīng)劃分標(biāo)簽的異常行為,對于大量航行數(shù)據(jù)進(jìn)行分類識別,從而對未標(biāo)注的船舶異常航行狀態(tài)進(jìn)行檢測.
通過船舶異常行為分類結(jié)果能夠看出,運動異常和位置異常的信息都可以在AIS數(shù)據(jù)中進(jìn)行體現(xiàn),因此,可以通過數(shù)據(jù)挖掘的方法進(jìn)行學(xué)習(xí),從而建立船舶異常行為檢測模型.目前,大規(guī)模AIS數(shù)據(jù)記錄了船舶在不同時刻的狀態(tài)信息,因此,可以借助歷史AIS數(shù)據(jù)對船舶異常行為構(gòu)建模型,之后再引入實時AIS數(shù)據(jù)進(jìn)行檢測.
AIS數(shù)據(jù)經(jīng)過基站發(fā)送,客戶端接受后,通過解析后的AIS數(shù)據(jù)中包含了船舶的靜態(tài)數(shù)據(jù)和動態(tài)數(shù)據(jù)兩部分.其中動態(tài)數(shù)據(jù)包括MMSI號、經(jīng)緯度、對地航速/航向、轉(zhuǎn)向率、船首向等發(fā)生變化的船舶信息;靜態(tài)數(shù)據(jù)包括船長、船寬、船舶最大吃水深度、船舶類型等船舶的固有信息.
AIS數(shù)據(jù)在傳輸過程中會存在很多異常數(shù)據(jù).AIS數(shù)據(jù)預(yù)處理過程就是要把AIS異常數(shù)據(jù)進(jìn)行清除,這些異常數(shù)據(jù)包括:緯度大于90°、經(jīng)度為負(fù)值、MMSI編號不是九位數(shù)等明顯的錯誤數(shù)據(jù),同時還包括了大量的AIS冗余數(shù)據(jù).如果不經(jīng)過預(yù)處理過程,包含大量錯誤數(shù)據(jù)和冗余數(shù)據(jù)的AIS數(shù)據(jù)會大大增加處理開銷,并且可能會造成處理結(jié)果的異常.可以通過小波分析的信號處理方法對水AIS數(shù)據(jù)的異常數(shù)據(jù)進(jìn)行分析和檢測.通過小波變換將AIS中的數(shù)據(jù)進(jìn)行多層分解,能夠?qū)Ω哳l和低頻部分進(jìn)行分別處理.在AIS數(shù)據(jù)中,由于信號傳輸過程受到干擾,或者信號中夾雜著噪聲等因素導(dǎo)致傳輸數(shù)據(jù)出現(xiàn)異常,這些異常數(shù)據(jù)一般存在于信號分解后的高頻部分.因此,異常檢測過程就是通過小波分析的方法,對高頻數(shù)據(jù)進(jìn)行處理,處理后的高頻數(shù)據(jù)和低頻數(shù)據(jù)進(jìn)行重構(gòu),最終判斷異常數(shù)據(jù)出現(xiàn)的位置以及異常數(shù)據(jù)的個數(shù),并且對異常數(shù)據(jù)根據(jù)不同情況采取數(shù)據(jù)清除或數(shù)據(jù)矯正,從而完成異常數(shù)據(jù)的檢測功能[7-8].
經(jīng)過AIS數(shù)據(jù)的獲取與預(yù)處理后,對AIS數(shù)據(jù)進(jìn)行劃分,將AIS數(shù)據(jù)分為訓(xùn)練數(shù)據(jù)集和測試訓(xùn)練集,之后經(jīng)過神經(jīng)網(wǎng)絡(luò)建立船舶異常行為模型后,針對異常行為檢測結(jié)果和實際結(jié)果計算模型誤差,完成對模型的評判.圖2為整體架構(gòu)圖.
圖2 模型架構(gòu)
通過對AIS歷史數(shù)據(jù)構(gòu)建船舶異常行為檢測模型后,對模型進(jìn)行準(zhǔn)確率和誤差的檢測接入實時AIS數(shù)據(jù)流,獲取船舶的實時異常行為檢測結(jié)果,從而實現(xiàn)船舶異常行為的實時監(jiān)管.
傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的主要結(jié)構(gòu)為輸入層、隱含層、輸出層三部分,其中,層與層之間通過全聯(lián)接的方式相連,然而,每層中的神經(jīng)元節(jié)點之間是沒有相連的.這種神經(jīng)網(wǎng)絡(luò)對于獨立的輸入信息能夠獲得理想的效果,但是很難解決有關(guān)時間序列輸入的問題,因此,循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)考慮了當(dāng)前時刻的輸出和上一時刻輸出之間的關(guān)系,更有利于時間序列問題的解決.每次的輸出計算會引入之前時刻的信息,并且隱藏層中的神經(jīng)元節(jié)點之間從無連接的狀態(tài)變?yōu)槿B接的狀態(tài),隱藏層的輸入包括了輸入層和上一時刻隱藏層的輸出兩部分.圖3為RNN神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)圖.其中,隱藏層之間采用全連接結(jié)構(gòu),從而引入了前后時間序列的相關(guān)性[9-10].
圖3 RNN神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
在RNN中,輸入序列為{x0,x1,x2,…,xt,xt+1,…},輸出序列為{y0,y1,y2,…,yt,yt+1,…},隱藏層序列為{h0,h1,h2,…,ht,ht+1,…},隱藏層單元為最主要的部分.隱藏層單元每個時刻的狀態(tài)ht和輸出序列yt為
ht=H(Whhht-1+Wxhxt+bh)
yt=O(Whyht+bo)
(1)
式中:Whh為隱藏層和隱藏層之間的權(quán)重函數(shù);Wxh輸入層層和隱藏層之間的權(quán)重函數(shù);Why輸出層層和隱藏層之間的權(quán)重函數(shù);bh為隱藏層偏置;bo為輸出層偏置;xt為特定時刻的輸入序列.
為了解決RNN神經(jīng)網(wǎng)絡(luò)中的長期依賴問題,使得RNN能夠?qū)﹂L時間的輸入有更好的記憶能力,長短期記憶網(wǎng)絡(luò)(long short-term memory,LSTM)開始廣泛應(yīng)用于長時間的輸入學(xué)習(xí)中[11].在LSTM神經(jīng)網(wǎng)絡(luò)中,增加了門來控制信息的丟棄或記憶,門結(jié)構(gòu)是由一個Sigmoid函數(shù)和一個點乘函數(shù)組成,Sigmoid函數(shù)為
(2)
在sigmoid函數(shù)中,輸出值始終處于[0,1].其中,0為丟棄信息,1為記憶信息.LSTM的門結(jié)構(gòu)包括輸入門、輸出門和遺忘門三種.圖4為LSTM網(wǎng)絡(luò)的門結(jié)構(gòu).圖4中,Cell用來表示每個時刻的狀態(tài),通過輸入門、輸出門、遺忘門的作用,狀態(tài)在不斷發(fā)生更新變化.
圖4 LSTM神經(jīng)網(wǎng)絡(luò)的門結(jié)構(gòu)
在遺忘門中,上一時刻狀態(tài)的遺忘程度函數(shù)ft為
ft=δ(Wf·[ht-1,xt]+bf)
(3)
由式(1)可知,ft的本質(zhì)是一個上一時刻輸出ht-1和當(dāng)前時刻輸入xt組成的Sigmoid函數(shù),輸出結(jié)果為[0,1]的取值,用來表示不同的遺忘程度狀態(tài).
在輸入門中,輸入門的輸出結(jié)果it為
it=δ(Wi·[ht-1,xt]+bi)
(4)
(5)
(6)
輸出門主要控制狀態(tài)的過濾程度,輸出結(jié)果也是一個在[0,1]內(nèi)的值,輸出門的結(jié)果Ot為
Ot=δ(Wo·[ht-1,xt]+bo)
ht=Ot·tanhCt
(7)
圖5為LSTM神經(jīng)網(wǎng)絡(luò)的內(nèi)部結(jié)構(gòu),LSTM內(nèi)部通過門結(jié)構(gòu)保證了信息的篩選和不同時刻狀態(tài)的更新.
圖5 LSTM神經(jīng)網(wǎng)絡(luò)內(nèi)部結(jié)構(gòu)
至此,通過輸入門控制信息的引入、輸出門控制狀態(tài)的過濾和遺忘門控制信息的遺忘程度,LSTM神經(jīng)網(wǎng)絡(luò)能夠提高對較長時間序列輸入的記憶能力,從而提升循環(huán)神經(jīng)網(wǎng)絡(luò)的性能.
船舶異常行為檢測模型以船舶AIS數(shù)據(jù)的時間序列作為輸入,經(jīng)過模型處理后,輸出當(dāng)前時刻的船舶異常狀態(tài)檢測結(jié)果.但是,由于LSTM神經(jīng)網(wǎng)絡(luò)的輸出結(jié)果仍然是一個與AIS時間序列相同長度的序列,為了正確輸出船舶異常行為狀態(tài),需要對LSTM神經(jīng)網(wǎng)絡(luò)模型進(jìn)行適當(dāng)變更,使船舶狀態(tài)信息能夠正確輸出.
文中的船舶異常行為檢測模型見圖6,采用雙向LSTM(Bi-LSTM)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)對AIS時間序列數(shù)據(jù)進(jìn)行處理,每一個LSTM代表網(wǎng)絡(luò)的一個隱藏層,由于隱藏層之間是全連接狀態(tài),隱藏層之間按照時間序列順序進(jìn)行逐次連接.上層的LSTM作為正向時間序列,下層的LSTM作為反向時間序列.
圖6 船舶異常行為檢測模型
(8)
式中:O為平均池化后的隱藏層輸出,通過對隱藏層的輸出進(jìn)行池化處理后,得到的輸出結(jié)構(gòu)不再包含時間信息,從而獲得船舶每個時刻的異常狀態(tài)結(jié)果.
經(jīng)過對正向和反向LSTM神經(jīng)網(wǎng)絡(luò)隱藏層的輸出進(jìn)行處理后,可以得到正向的輸出結(jié)果O和反向的輸出結(jié)果O′,將兩個輸出結(jié)果引入一個邏輯回歸單元,通過softmax函數(shù)進(jìn)行處理后,最終獲得一個船舶異常狀態(tài)的輸出結(jié)果.
借助TensorFlow實現(xiàn)船舶異常行為檢測模型的流程見圖7,經(jīng)過添加船舶異常狀態(tài)標(biāo)簽的AIS數(shù)據(jù)通過TensorFlow中的LSTM模塊進(jìn)行模型訓(xùn)練,訓(xùn)練后的模型經(jīng)過模型測試后,將AIS實時數(shù)據(jù)流引入,從而實現(xiàn)船舶異常狀態(tài)的實時檢測.
圖7 基于TensorFlow架構(gòu)的模型實現(xiàn)
通過TensorFlow架構(gòu)建立船舶異常狀態(tài)檢測模型主要經(jīng)過了網(wǎng)絡(luò)參數(shù)設(shè)置、數(shù)據(jù)劃分與預(yù)處理、定義LSTMS神經(jīng)網(wǎng)絡(luò)變量、定義訓(xùn)練模型和模型檢測五個部分[13-14].在TensorFlow架構(gòu)中訓(xùn)練AIS數(shù)據(jù)時,首先設(shè)置RNN網(wǎng)絡(luò)基本的參數(shù),包括隱藏層數(shù)量、輸入輸出層節(jié)點數(shù)、網(wǎng)絡(luò)學(xué)習(xí)率、隱藏層節(jié)點數(shù)等.之后確定AIS數(shù)據(jù)進(jìn)行訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集的劃分比例,并且對數(shù)據(jù)進(jìn)行簡單的預(yù)處理和標(biāo)準(zhǔn)化,確定訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)的訓(xùn)練長度.之后,需要對神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)進(jìn)行定義,主要包括輸入層權(quán)重w_in,輸出層權(quán)重w_out,輸入層偏置b_in,輸出層偏置b_out.在對LSTM神經(jīng)網(wǎng)絡(luò)進(jìn)行定義時,最為關(guān)鍵的是定義狀態(tài)參數(shù)cell用來表示每個時刻狀態(tài)的更新,此外,還需要定義時間步長(time_step)、批大小(batch_size),以及輸出變量predict.由于文中采用雙向LSTM神經(jīng)網(wǎng)絡(luò)對AIS數(shù)據(jù)進(jìn)行兩個時間方向的訓(xùn)練,因此,其中一個LSTM結(jié)構(gòu)按照正常時間序列輸入,另一個LSTM結(jié)構(gòu)不變,通過反向時間序列順序進(jìn)行輸入.
LSTM模型建立完成后,需要定義訓(xùn)練模型和測試模型部分的參數(shù),訓(xùn)練模型部分需要設(shè)置之前LSTM模塊定義的參數(shù)取值,并且定義輸入、輸出變量,并且通過reducemean對LSTM的輸出進(jìn)行合并計算,得到一個標(biāo)準(zhǔn)的輸出值.最后,定義TensorFlow的優(yōu)化函數(shù),設(shè)置訓(xùn)練的迭代次數(shù)和每次訓(xùn)練完成后的模型保存方法.
每次模型訓(xùn)練完成后,需要通過保存好的對參數(shù)進(jìn)行恢復(fù),計算輸出結(jié)果和實際結(jié)果的誤差,計算模型的準(zhǔn)確率等.至此,通過對TensorFlow架構(gòu)中的LSTM模型參數(shù)進(jìn)行不斷調(diào)試,合理設(shè)置LSTM中輸入門、輸出門和遺忘門的權(quán)重和偏置,最終得到船舶異常狀態(tài)檢測模型.
經(jīng)過上述研究論述后,實驗采用數(shù)據(jù)為江蘇省江陰航道的船舶AIS數(shù)據(jù),統(tǒng)計的數(shù)據(jù)為2016年9月—2017年2月的AIS數(shù)據(jù),通過對數(shù)據(jù)進(jìn)行標(biāo)簽劃分,經(jīng)過統(tǒng)計,篩選出具有異常行為的數(shù)據(jù)并劃定標(biāo)簽,表1為異常行為實驗數(shù)據(jù)片段,對數(shù)據(jù)中的航道船舶異常行為的部分統(tǒng)計,將未產(chǎn)生異常行為的船舶標(biāo)簽設(shè)置為1,產(chǎn)生追越行為船舶的標(biāo)簽設(shè)置為2,產(chǎn)生橫越行為船舶的標(biāo)簽設(shè)置為3,速度異常船舶的標(biāo)簽設(shè)置為4.
通過表1能夠獲得船舶追越行為的發(fā)生時間,發(fā)生地點的經(jīng)緯度以及相關(guān)船舶的編號(MMSI),將整個數(shù)據(jù)時間范圍內(nèi)船舶三種異常行為的數(shù)據(jù)標(biāo)簽進(jìn)行標(biāo)記,從而得到船舶異常行為的實驗數(shù)據(jù)集.
表1 江陰段異常行為數(shù)據(jù)片段
為了對船舶異常行為中的追越行為、橫越行為、速度異常行為進(jìn)行實驗檢測,輸入?yún)?shù)選取了與船舶三種異常行為有關(guān)的參數(shù),包括:船舶編號、異常產(chǎn)生時間、對地航速、對地航向、經(jīng)緯度、航向差值和航速差值.其中航向和航速差值通過相鄰時間序列的航向和航速相減計算獲取,用來表示船舶速度和角度的偏離值.表2為網(wǎng)絡(luò)中其他參數(shù)的選取.
表2 實驗參數(shù)選取
在實驗過程中,對整個航道范圍內(nèi)AIS數(shù)據(jù)進(jìn)行異常劃分后,把這些數(shù)據(jù)輸入到LSTM模型中,經(jīng)過學(xué)習(xí)和訓(xùn)練,得到的迭代次數(shù),損失值和迭代誤差、異常行為識別準(zhǔn)確率等結(jié)果,記錄結(jié)果見圖8.由圖8a)可知,隨著迭代次數(shù)的增加,模型的損失值逐漸減小,在圖8b)中,隨著迭代次數(shù)的增加,模型的識別準(zhǔn)確率逐漸提高,最終損失值和識別準(zhǔn)確率的變化逐漸趨于平穩(wěn),這一變化過程符合LSTM模型的預(yù)期訓(xùn)練效果,在對江陰航道AIS數(shù)據(jù)集進(jìn)行100次迭代的過程中,在測試數(shù)據(jù)集中,異常行為準(zhǔn)確率最高為89.82%,在訓(xùn)練數(shù)據(jù)集中,模型的準(zhǔn)確率最高為90.91%.
圖8 模型實驗結(jié)果曲線
將文中提出的雙向LSTM模型和BP神經(jīng)網(wǎng)絡(luò)、單向LSTM模型進(jìn)行比較,其中,三種模型的輸入節(jié)點均為7,輸出節(jié)點均為4,采用平均百分誤差(MAPE)對三種模型的誤差進(jìn)行計算,MAPE計算方法為
(9)
式中:y和y′分別為預(yù)測值和實際值,表1為三種模型的誤差分析結(jié)果.將數(shù)據(jù)集劃分為2016年9—10月、2016年10—11月、2017年1—2月AIS三個時間段,采用BP神經(jīng)網(wǎng)絡(luò)、單向LSTM、雙向LSTM分別對三部分?jǐn)?shù)據(jù)進(jìn)行訓(xùn)練,計算每種模型對應(yīng)的MAPE值,表3為三種模型的比較結(jié)果.
表3 模型比較結(jié)果
由表3可知,通過對數(shù)據(jù)集進(jìn)行劃分后,在三個時間段內(nèi)數(shù)據(jù)集的測試中,基于雙向LSTM神經(jīng)網(wǎng)絡(luò)的船舶異常行為識別的平均百分誤差要小于BP網(wǎng)絡(luò)和單向LSTM神經(jīng)網(wǎng)絡(luò),證明雙向LSTM識別方法在使用效果上優(yōu)于BP神經(jīng)網(wǎng)絡(luò)和單向LSTM神經(jīng)網(wǎng)絡(luò).
船舶異常行為檢測對于保障船舶安全航行、提高海事監(jiān)管能力具有重要意義.針對AIS數(shù)據(jù)量豐富,記錄了船舶的行為信息,文中提出了一種基于雙向LSTM神經(jīng)網(wǎng)絡(luò)的船舶異常行為識別方法,通過對AIS數(shù)據(jù)進(jìn)行劃分標(biāo)簽,將實驗數(shù)據(jù)依次輸入LSTM網(wǎng)絡(luò)的兩個方向中,最終通過對輸出結(jié)果進(jìn)行平均池化處理,得到船舶異常行為的識別結(jié)果.
通過將文中提出的雙向LSTM模型和傳統(tǒng)BP神經(jīng)網(wǎng)絡(luò)以及單向LSTM模型進(jìn)行對比后得出,雙向LSTM神經(jīng)網(wǎng)絡(luò)的異常行為識別準(zhǔn)確率更高,能夠有效對基于時間序列的AIS數(shù)據(jù)進(jìn)行異常行為識別.
由于文中的實驗數(shù)據(jù)集中船舶異常行為只包括了船舶追越行為、船舶橫越行為和速度異常行為,未來的研究中,將擴(kuò)大實驗數(shù)據(jù)的地理范圍,引入更多的船舶異常行為數(shù)據(jù),提高船舶異常行為識別模型的適用范圍.之后研究將引入實時AIS數(shù)據(jù)流,將船舶異常行為識別模型和電子海圖軟件進(jìn)行融合,豐富模型的可視化功能,從而進(jìn)一步提高船舶的安全航行監(jiān)管能力.