索永峰,陳文科,楊神化,陳立媛
(集美大學(xué)航海學(xué)院,福建 廈門 361021)
船舶自動識別系統(tǒng)(automatic identification system, AIS)顯著提升了海上交通調(diào)度及港口管理能力,同時所積累的船舶軌跡數(shù)據(jù)通過數(shù)據(jù)挖掘可以得到包括微觀的船舶行為模式和宏觀的交通流特征,從而為港口工作安排部署提供科學(xué)量化依據(jù)。目前,關(guān)于船舶交通流量預(yù)測的理論方法較多,大多采用淺層交通流預(yù)測模型[1],結(jié)構(gòu)簡單,誤差較大,存在一定的局限性。船舶交通流具有非線性和不確定性等特點[2-3],給海上交通領(lǐng)域內(nèi)的船舶流量預(yù)測帶來巨大挑戰(zhàn)。隨著人工智能及深度學(xué)習(xí)算法地不斷發(fā)展,預(yù)測方法已由傳統(tǒng)統(tǒng)計方法演變至數(shù)據(jù)驅(qū)動方法。在船舶交通流預(yù)測中,常用模型有兩種:非參數(shù)模型和參數(shù)模型[4]。李曉磊等[5]將ARIMA(autoregressive integrated moving average model)模型運用于海上交通領(lǐng)域,通過分析季節(jié)對交通流的影響分析,改進(jìn)ARIMA模型,完成船舶月交通流量預(yù)測,得到了良好的預(yù)測效果;LI等[6]運用結(jié)合模擬退火算法的SVM(support vector machines)模型預(yù)測船舶交通流量;ZHANG等[7]將遺傳算法和SVM相結(jié)合,設(shè)計了船舶流量預(yù)測模型;LV等[8]將SAES應(yīng)用于交通流預(yù)測,其預(yù)測結(jié)果比SVM、前饋反向傳播神經(jīng)網(wǎng)絡(luò)(back propagation,BP)更好;劉承勇等[9]結(jié)合灰色理論與馬爾可夫理論,運用于船舶交通流預(yù)測,將預(yù)測誤差控制在10%以內(nèi)。
本文根據(jù)港口條件及通航狀況,利用解碼和篩選后的AIS數(shù)據(jù),構(gòu)建以每4 h為間隔的船舶交通流量樣本庫,以此作為訓(xùn)練集,在預(yù)測模型中進(jìn)行實驗。經(jīng)多次實驗對比,得到模型最佳參數(shù)。
循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)是一類以序列數(shù)據(jù)為輸入,循環(huán)單元按鏈?zhǔn)竭B接的遞歸神經(jīng)網(wǎng)絡(luò)[10],能夠處理短期預(yù)測問題。但傳統(tǒng)的RNN訓(xùn)練網(wǎng)絡(luò)時,會出現(xiàn)梯度消失的現(xiàn)象,為此,引入RNN的改良網(wǎng)絡(luò)LSTM(long short term memory)網(wǎng)絡(luò)。LSTM結(jié)構(gòu)中包含原始RNN的隱含層狀態(tài),由于該網(wǎng)絡(luò)對短期的輸入信息較為敏感,因此增加一個狀態(tài)Ct,用于保持長期記憶[10],此狀態(tài)也稱之為長期狀態(tài),用于記錄隨時間傳遞的信息。LSTM結(jié)構(gòu)如圖1所示。
GRU模型[12]使用門控機(jī)制來保存盡可能多的長期信息,并且對各種任務(wù)同樣有效,能實現(xiàn)歷史時序信息的儲存,但是在計算方面GRU模型更簡化。GRU結(jié)構(gòu)如圖2所示。
將LSTM單元的ft和it合并為GRU單元的更新門zt,與重置門一起用于控制船舶交通流特征信息的流動[13]。重置門將新輸入的下一時刻交通流信息和之前的記憶進(jìn)行組合;更新門用于決定留下之前的部分記憶單元,使用隱藏狀態(tài)傳遞系列之間的信息。由于GRU模型具有相對簡單的結(jié)構(gòu),訓(xùn)練參數(shù)少,在訓(xùn)練過程中,其訓(xùn)練速度較快。訓(xùn)練過程如下:
rt=σ(Wr·[ht-1,xt]);
zt=σ(Wz·[ht-1,xt]);
第九代Intel Core i 7處理器CPU,6核12線程,主頻為2.6 GHz;實驗編程語言為Python3.7;實驗平臺為基于深度學(xué)習(xí)的Keras框架。
為確保數(shù)據(jù)間無量綱干擾,將原始時間序列經(jīng)式(1)離差標(biāo)準(zhǔn)化化后轉(zhuǎn)化為循環(huán)神經(jīng)網(wǎng)絡(luò)的輸入序列。
Xstd=(x-xmin)/(xmax-xmin)。
(1)
式中:Xstd為歸一化后數(shù)據(jù);xmin為樣本的最小值。
將經(jīng)神經(jīng)網(wǎng)絡(luò)處理后的數(shù)據(jù)映射在區(qū)間[0,1]的結(jié)果進(jìn)行反歸一化處理,映射到樣本原來的量綱級別:Xscaler=xstd(xmax-xmin)+xmin。式中:Xscaler為反歸一化后數(shù)據(jù)。
采用均方誤差(mean square error,MSE)、平均絕對百分比誤差(mean absolute percentage error,MAPE)以及相對誤差(relative error,RE)3種指標(biāo)來評估預(yù)測模型。即:
取福建漳州古雷港區(qū)2018—2019年AIS數(shù)據(jù)為實驗數(shù)據(jù)。主要包含兩類:船舶靜態(tài)數(shù)據(jù),如水上移動通信業(yè)務(wù)識別碼(maritime mobile service identity,MMSI)、船長、吃水、船舶類型等;船舶動態(tài)數(shù)據(jù),如經(jīng)度、緯度、航向、航速等[14]。
從AIS數(shù)據(jù)提取動態(tài)航行序列,作為篩選實驗數(shù)據(jù)的基礎(chǔ),該序列主要包括5個字段:MMSI、UTC(時間)、Longitude(經(jīng)度)和Latitude(緯度)、COG(航向)、SOG(航速)。由于經(jīng)緯度和速度等特征有異常值、空值和重復(fù)值出現(xiàn),將影響交通流數(shù)據(jù)的準(zhǔn)確性,故將篩選后的數(shù)據(jù)存入MySQL數(shù)據(jù)庫以作備用。
古雷作業(yè)區(qū)岸線條件優(yōu)越,掩護(hù)條件良好,是天然深水避風(fēng)港。古雷港主航道分布如圖3所示。由南往北依次布置油品化工碼頭區(qū)、通用碼頭南區(qū)等6個作業(yè)區(qū),航道通航標(biāo)準(zhǔn)自東山灣口外A點(現(xiàn)15萬噸級航道起點)至古雷作業(yè)區(qū)南2#泊位(A~B~C′~C1航段),滿足15萬噸級船舶單向乘潮通航的需求(同時可滿足10萬噸級船舶不乘潮雙向通航,以及15萬噸級油船和5萬噸級散貨船交匯通航),航道有效寬度400 m。取穿越最寬闊橫截面船舶的AIS數(shù)據(jù),進(jìn)行船舶流量分析。根據(jù)港口的功能屬性,取南門灣與古雷頭之間較寬闊水域為橫斷面,每隔4 h統(tǒng)計船舶交通流量。
采用4 h作為時間間隔,主要考慮以下原因:一是漁船多會根據(jù)潮汐時間選擇出海作業(yè);二是根據(jù)進(jìn)出古雷港船舶的航行規(guī)律。
通過對港口水域通航能力的評估調(diào)查,選定通航水域進(jìn)行區(qū)域劃定,在劃定的橫斷面海域,對連續(xù)一段時間內(nèi)進(jìn)港方向且經(jīng)過該橫斷面的船舶數(shù)據(jù)進(jìn)行歷史軌跡的計算分析,得到進(jìn)港船舶交通流數(shù)據(jù)集。具體步驟如下:借助python語言的地理科學(xué)計算庫,根據(jù)船舶識別號,將AIS船舶信息的離散軌跡點轉(zhuǎn)成連續(xù)的航跡線,利用交點算法依次判斷每條船舶軌跡是否與劃定的橫斷面相交,并計算穿越橫斷面的時刻,同時依據(jù)船舶航向判斷其進(jìn)出港屬性,將滿足以上條件的船舶數(shù)據(jù)存入數(shù)據(jù)庫中。具體船舶交通流數(shù)據(jù)提取流程如圖4所示。
表1 進(jìn)港方向穿越橫斷面船舶交通流量Tab.1 Trafficflowofshipspassingthroughthecrosssectioninthedirectionofportentry時間段Timeinterval船舶交通流量/艘Shiptraffic20180608T0000-20180608T04002520180608T0400-20180608T08004120180608T0800-20180608T12006220180608T1200-20180608T16005920180608T1600-20180608T20004420180608T2000-20180609T000041
將AIS數(shù)據(jù)從MySQL數(shù)據(jù)庫中提取出來,利用交通流提取算法,統(tǒng)計2018年6月至2018年12月穿越劃定橫斷面海域的船舶數(shù)(以4 h為間隔),以此作為數(shù)據(jù)集,部分?jǐn)?shù)據(jù)樣例如表1所示,得到1 080組樣本。將原始時間序列經(jīng)標(biāo)準(zhǔn)化后,轉(zhuǎn)化為循環(huán)神經(jīng)網(wǎng)絡(luò)的輸入序列。
GRU模型中,參數(shù)的選擇對循環(huán)神經(jīng)網(wǎng)絡(luò)至關(guān)重要。通常來說,GRU循環(huán)神經(jīng)網(wǎng)絡(luò)包含的隱含層數(shù)越多,模型的表現(xiàn)力和學(xué)習(xí)能力就越強(qiáng),同時會帶來容易過度擬合的問題。實驗中采用Adam優(yōu)化器,即隨機(jī)梯度下降[13],可以避免訓(xùn)練過程中出現(xiàn)陷入局部最優(yōu)的情況。對網(wǎng)絡(luò)中重要參數(shù):批次處理數(shù)量(batch_size)對比論證,得出最佳參數(shù)[14]。批次處理數(shù)量可選范圍為{8,16,24,32},對批處理數(shù)量的選擇如表2所示。隨著批次處理數(shù)量逐漸增大,計算耗時逐漸減少,當(dāng)批次處理數(shù)量過少或過多時,誤差也較大,批次數(shù)量分別為16和24時,計算耗時相近,且前者誤差更小,故選取批次處理數(shù)量為16時較好。
表2 不同批次處理數(shù)量的性能比較
選擇使用兩層GRU層和一層全連接層來構(gòu)建GRU循環(huán)神經(jīng)網(wǎng)絡(luò),GRU神經(jīng)網(wǎng)絡(luò)的可視化如圖5所示。第2層(gru_1)和第3層(gru_2)為GRU層,各包含64個隱含單元;第4層為Dropout層,是一種有效的正則化方法,目的是減少GRU循環(huán)神經(jīng)網(wǎng)絡(luò)在訓(xùn)練過程中的過擬合情況的發(fā)生;第5層為全連接層,包含1個神經(jīng)元。
為合理地評價GRU循環(huán)神經(jīng)網(wǎng)絡(luò)在船舶交通流量預(yù)測中的結(jié)果,將GRU模型與LSTM模型和SAES模型進(jìn)行比較,訓(xùn)練過程中選取MSE作為模型誤差分析指標(biāo)。
三種模型迭代收斂性如圖6所示。從圖6可知,三種模型迭代速度均較快,訓(xùn)練損失值能較快得到收斂,訓(xùn)練輪數(shù)在90輪左右時,GRU已達(dá)到極值,作為對照實驗的LSTM和SAES分別在140輪和150輪時達(dá)到極值。GRU模型比LSTM模型更快收斂到極值,主要得益于GRU門層結(jié)構(gòu)針對LSTM結(jié)構(gòu)的門層設(shè)計得到簡化[17]。
各模型對一天內(nèi)6個時段船舶交通流量的預(yù)測結(jié)果的驗證誤差如表3所示。
表3 不同模型的預(yù)測結(jié)果以及相對誤差
從表3可知,LSTM模型、GRU模型和SAES模型誤差平均值分別22.04%、19.56%和30.27%。SAES模型預(yù)測的誤差較大,GRU循環(huán)神經(jīng)網(wǎng)路模型預(yù)測的誤差控制在20%以內(nèi),較LSTM網(wǎng)絡(luò)模型和SAES模型有更高的準(zhǔn)確度,適用性更強(qiáng)。
本文利用AIS軌跡數(shù)據(jù)對港口繁忙水域的橫斷截面進(jìn)行船舶流量統(tǒng)計,建立訓(xùn)練數(shù)據(jù)集,在合理參數(shù)范圍內(nèi)對不同參數(shù)組合進(jìn)行實驗。選取GRU模型最佳結(jié)構(gòu)和參數(shù),對一天內(nèi)的船舶流量進(jìn)行預(yù)測,并選取LSTM循環(huán)神經(jīng)網(wǎng)絡(luò)模型和SAES棧式編碼器預(yù)測模型作為實驗對照組模型。實驗結(jié)果表明:GRU模型較LSTM模型與SAES模型,預(yù)測結(jié)果更接近實際船舶交通流量,相對誤差較小。后續(xù)進(jìn)一步的研究工作可采用強(qiáng)化學(xué)習(xí)(reinforcement learning, RL)的機(jī)器學(xué)習(xí)方法,利用不斷變化的非線性信息,研究如何隨時間變化修正現(xiàn)有的預(yù)測模型。