韓 旭 孫文本 周智楠 苑海靜
(天津航海儀器研究所 天津 300131)
艦船綜合導航系統一般配置衛星導航設備(以下簡稱“衛導”)、慣性導航設備(以下簡稱“慣導”)、天文導航設備(以下簡稱“天導”)等位置信息傳感器,并對傳感器輸出信息進行融合處理,從而提供實時統一的位置信息。
在某些特殊場景下,艦船航行對位置信息精度要求較高,例如狹水道航行。而位置信息傳感器提供的位置信息精度會受到其工作特性或工作環境的影響,如:衛導易受信號遮蔽、多徑效應、信號失鎖和電子欺騙等因素影響,天導精度受天氣條件限制,慣導系統存在誤差漂移[1]。這些原因都會從不同程度上影響綜合導航系統融合位置信息的精度與穩定性。
本文在利用傳統導航傳感器量測信息的基礎上,結合船舶操控與推進系統信息,氣象水文信息,基于長短期記憶(Long Short Term Memory,LSTM)神經網絡構建艦船航行位置預測模型,實現艦船未來時刻航行位置的精確預測,解決因信號遮蔽、多徑效應等原因引起的高精度定位不穩定或異常,導致綜合導航系統融合位置信息精度下降的問題,為艦船在狹水道等特殊水域的安全航行提供輔助與支持。
LSTM神經網絡是循環神經網絡(Recurrent Neural Network,RNN)的一種。RNN 是包含循環的神經網絡,能夠處理連續的序列數據,允許信息的持久化。LSTM單元結構主要由遺忘門、輸入門、輸出門和細胞狀態構成,如圖1所示[2~4],通過引入細胞狀態和門機制,有效克服了RNN 在訓練過程中常見的梯度消失問題。
圖1 LSTM神經網絡重復模塊結構圖
其中遺忘門決定從細胞狀態中丟棄哪些信息。該門會讀取當前時刻輸入與上一時刻輸出,并為細胞狀態的每一個元素輸出一個0~1 之間的數值,0 表示完全遺忘,1 表示完全保留,其計算方式為
輸入門決定哪些信息被存放在細胞狀態中。這里包含兩部分,sigmoid 層決定更新哪些元素,tanh層創建一個新的候選元素向量,其計算方式為
細胞狀態更新:
輸出門決定輸出哪些值,輸出將會結合輸入和細胞狀態信息,其計算方式為
由于船舶航行數據具有時序特征,所以本文選取LSTM神經網絡做為艦位預測模型的隱層結構,同時為了在保證模型復雜度的前提下提高模型的泛化能力與魯棒性,將模型隱層數設置為兩層?;贚STM神經網絡的艦船航行位置預測模型結構如圖2所示。
圖2 基于LSTM神經網絡的艦船航行位置預測模型
模型輸入為艦船導航信息、操控與推進信息、氣象水文信息;輸出為目標時刻位置坐標,即預測結果。模型輸入、輸出數據類型與維度如下所示:
xi=[經度,緯度,左軸系轉速,右軸系轉速,左舵角,右舵角,左螺旋槳螺距,右螺旋槳螺距,對水速度,航跡速,東向速度,北向速度,垂向速度,航跡向,水深,流速,流向,平均真風速,平均真風向,平均相對風向,平均相對風速]
yi=[目標時刻經度,目標時刻緯度]
3.2.1 Mini-batch隨機梯度下降
本文選擇mini-batch 隨機梯度下降法對網絡參數進行更新。在計算損失函數的時候,計算一個batch 的損失,即每次更新模型時,采用一部分數據進行計算。這種方法能夠在保持模型收斂穩定性的前提下,加快模型收斂速度[5]。
損失函數是衡量模型預測期望結果表現的指標。本文設計的艦位預測模型屬于回歸模型的范疇,所以選擇最常用的回歸損失函數均方誤差(MSE)做為損失函數:
3.2.2 Adam優化算法
本文選擇Adam 作為模型訓練的優化器。Adam 與經典的隨機梯度下降法不同,隨機梯度下降保持一個單一的學習速率,用于所有的權重更新;而Adam 算法每一個網絡參數都保持一個學習速率,并且隨著學習的開展而單獨地進行調整。該方法從梯度的第一次和第二次矩的預算來計算不同參數的自適應學習速率[6~8]。
3.2.3 學習率衰減
本文采用學習率衰減方法來調整學習率,使模型在訓練初期以較大學習率進行參數更新,提高優化效率,隨著迭代次數的增加,模型在訓練末期以較小學習率進行參數更新,提高模型收斂穩定性[9~10]。學習率衰減方式如下:
式中lr0為初始學習率,r 為衰減率,n 為迭代次數,lr 為衰減后學習率。本文試驗中初始學習率設置為0.001,衰減率設置為0.001。
3.2.4 交叉驗證
為了在模型訓練過程中考察模型的擬合效果與預測性能,我們需要在訓練集中抽取一部分作為驗證集。本文我們采用一種常用的K 折交叉驗證的方法,K 折交叉驗證的原理為將訓練集按照樣本數量平均分成K 組(本文中選取K=5),訓練過程中不重復地先后抽取其中一組作為驗證集,用以計算損失函數評價模型訓練程度,其余K-1組作為訓練集用以訓練模型。將K 次的損失取平均得到最終的損失[11~13]。
本文選用均方根誤差(RMSE),平均絕對誤差(MAE)作為艦位預測模型性能評價指標。
試驗硬件環境為一臺裝配GPU 圖形處理器(RTX3090*4)的圖形工作站(Lenovo P60);軟件環境為PyCharm;試驗編程語言與機器學習框架為Python(V3.8.5)+tensorflow(V2.6.0)。
試驗數據采集自某船航行試驗,采集頻率為1Hz,樣本數量共計36000 個。按4:1 的比例將數據集劃分為訓練集和測試集。此外,按照交叉驗證規則,設置驗證集比例為20%。模型中,LSTM層門結構的神經元節點數取128。
4.2.1 數據預處理
在輸入數據中,不同變量具有不同的單位、刻度及量程,這會給損失函數的計算及模型優化造成一定的困難。機器學習領域常采用數據標準化的方法來避免這一問題,在本文中我們選取“歸一化”方法,通過數據的最大值和最小值將數據標準化映射在[-1,1] 區間內。
4.2.2 輸入步長(step)參數調優
試驗中首先對輸入步長(step)參數進行調優,分別取step 為5,10,15,20,25 進行試驗,迭代次數(epochs)初步設定為15000,batch 容量(batch_size)初步設定為32。試驗結果如圖3所示,當step取10時,模型性能較好,step 繼續增大模型性能無明顯提高,為了在保證模型性能的同時,降低模型復雜度、節約計算資源,取step=10為最優參數。
圖3 輸入步長(step)參數調優結果
4.2.3 迭代次數(epochs)參數調優
在確定了step 最優參數后,試驗對epochs 參數進行了調優,分別取epochs 為5000,10000,15000,20000,25000 進行試驗,batch_size 初步設定為32。試驗結果如圖4所示,當epochs取20000時,模型性能較好,epochs 繼續增大模型性能無明顯提高,為了在保證模型性能的同時,節約計算資源、減少訓練耗時,取epochs=20000為最優參數。
圖4 迭代次數(epochs)參數調優結果
4.2.4 Batch容量(batch_size)參數調優
在確定了step 及epochs 最優參數后,試驗對batch_size 參數進行了調優,分別取batch_size 為32,64,128,256,512 進行試驗,試驗結果如圖5所示。當batch_size 為32 時,模型性能最佳,故取batch_size=32為最優參數。
圖5 Batch容量(batch_size)參數調優結果
試驗中分別構建未來1s,2s,3s,5s,10s 艦位預測模型,并根據調參結果對模型進行訓練與優化。優化完成后將測試集樣本分別輸入各模型,并對預測結果進行統計與評估,試驗結果如下。
表1 艦位預測模型試驗結果評估
從試驗結果可以看出,本文提出的艦位預測模型可以根據船舶航行歷史數據對未來時刻的艦船航行位置做出準確預測,預測結果均方根誤差、平均絕對誤差<3m,最大誤差(95%置信度)<5m。
本文提出了一種基于LSTM神經網絡的艦船航行位置預測模型,實現了依據船舶導航系統、操控與推進系統及氣象水文系統歷史數據對船舶未來時刻航行位置的預測。試驗結果表明,本文提出的艦位預測模型對船舶未來時刻航行位置的預測具有較高的準確性與穩定性,能夠對船舶在狹水道航行等特殊場景下的安全航行提供輔助與支持。