韓 旭 孫文本 周智楠 苑海靜
(天津航海儀器研究所 天津 300131)
艦船綜合導(dǎo)航系統(tǒng)一般配置衛(wèi)星導(dǎo)航設(shè)備(以下簡稱“衛(wèi)導(dǎo)”)、慣性導(dǎo)航設(shè)備(以下簡稱“慣導(dǎo)”)、天文導(dǎo)航設(shè)備(以下簡稱“天導(dǎo)”)等位置信息傳感器,并對傳感器輸出信息進(jìn)行融合處理,從而提供實(shí)時統(tǒng)一的位置信息。
在某些特殊場景下,艦船航行對位置信息精度要求較高,例如狹水道航行。而位置信息傳感器提供的位置信息精度會受到其工作特性或工作環(huán)境的影響,如:衛(wèi)導(dǎo)易受信號遮蔽、多徑效應(yīng)、信號失鎖和電子欺騙等因素影響,天導(dǎo)精度受天氣條件限制,慣導(dǎo)系統(tǒng)存在誤差漂移[1]。這些原因都會從不同程度上影響綜合導(dǎo)航系統(tǒng)融合位置信息的精度與穩(wěn)定性。
本文在利用傳統(tǒng)導(dǎo)航傳感器量測信息的基礎(chǔ)上,結(jié)合船舶操控與推進(jìn)系統(tǒng)信息,氣象水文信息,基于長短期記憶(Long Short Term Memory,LSTM)神經(jīng)網(wǎng)絡(luò)構(gòu)建艦船航行位置預(yù)測模型,實(shí)現(xiàn)艦船未來時刻航行位置的精確預(yù)測,解決因信號遮蔽、多徑效應(yīng)等原因引起的高精度定位不穩(wěn)定或異常,導(dǎo)致綜合導(dǎo)航系統(tǒng)融合位置信息精度下降的問題,為艦船在狹水道等特殊水域的安全航行提供輔助與支持。
LSTM神經(jīng)網(wǎng)絡(luò)是循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)的一種。RNN 是包含循環(huán)的神經(jīng)網(wǎng)絡(luò),能夠處理連續(xù)的序列數(shù)據(jù),允許信息的持久化。LSTM單元結(jié)構(gòu)主要由遺忘門、輸入門、輸出門和細(xì)胞狀態(tài)構(gòu)成,如圖1所示[2~4],通過引入細(xì)胞狀態(tài)和門機(jī)制,有效克服了RNN 在訓(xùn)練過程中常見的梯度消失問題。

圖1 LSTM神經(jīng)網(wǎng)絡(luò)重復(fù)模塊結(jié)構(gòu)圖
其中遺忘門決定從細(xì)胞狀態(tài)中丟棄哪些信息。該門會讀取當(dāng)前時刻輸入與上一時刻輸出,并為細(xì)胞狀態(tài)的每一個元素輸出一個0~1 之間的數(shù)值,0 表示完全遺忘,1 表示完全保留,其計(jì)算方式為
輸入門決定哪些信息被存放在細(xì)胞狀態(tài)中。這里包含兩部分,sigmoid 層決定更新哪些元素,tanh層創(chuàng)建一個新的候選元素向量,其計(jì)算方式為
細(xì)胞狀態(tài)更新:
輸出門決定輸出哪些值,輸出將會結(jié)合輸入和細(xì)胞狀態(tài)信息,其計(jì)算方式為
由于船舶航行數(shù)據(jù)具有時序特征,所以本文選取LSTM神經(jīng)網(wǎng)絡(luò)做為艦位預(yù)測模型的隱層結(jié)構(gòu),同時為了在保證模型復(fù)雜度的前提下提高模型的泛化能力與魯棒性,將模型隱層數(shù)設(shè)置為兩層。基于LSTM神經(jīng)網(wǎng)絡(luò)的艦船航行位置預(yù)測模型結(jié)構(gòu)如圖2所示。

圖2 基于LSTM神經(jīng)網(wǎng)絡(luò)的艦船航行位置預(yù)測模型
模型輸入為艦船導(dǎo)航信息、操控與推進(jìn)信息、氣象水文信息;輸出為目標(biāo)時刻位置坐標(biāo),即預(yù)測結(jié)果。模型輸入、輸出數(shù)據(jù)類型與維度如下所示:
xi=[經(jīng)度,緯度,左軸系轉(zhuǎn)速,右軸系轉(zhuǎn)速,左舵角,右舵角,左螺旋槳螺距,右螺旋槳螺距,對水速度,航跡速,東向速度,北向速度,垂向速度,航跡向,水深,流速,流向,平均真風(fēng)速,平均真風(fēng)向,平均相對風(fēng)向,平均相對風(fēng)速]
yi=[目標(biāo)時刻經(jīng)度,目標(biāo)時刻緯度]
3.2.1 Mini-batch隨機(jī)梯度下降
本文選擇mini-batch 隨機(jī)梯度下降法對網(wǎng)絡(luò)參數(shù)進(jìn)行更新。在計(jì)算損失函數(shù)的時候,計(jì)算一個batch 的損失,即每次更新模型時,采用一部分?jǐn)?shù)據(jù)進(jìn)行計(jì)算。這種方法能夠在保持模型收斂穩(wěn)定性的前提下,加快模型收斂速度[5]。
損失函數(shù)是衡量模型預(yù)測期望結(jié)果表現(xiàn)的指標(biāo)。本文設(shè)計(jì)的艦位預(yù)測模型屬于回歸模型的范疇,所以選擇最常用的回歸損失函數(shù)均方誤差(MSE)做為損失函數(shù):

3.2.2 Adam優(yōu)化算法
本文選擇Adam 作為模型訓(xùn)練的優(yōu)化器。Adam 與經(jīng)典的隨機(jī)梯度下降法不同,隨機(jī)梯度下降保持一個單一的學(xué)習(xí)速率,用于所有的權(quán)重更新;而Adam 算法每一個網(wǎng)絡(luò)參數(shù)都保持一個學(xué)習(xí)速率,并且隨著學(xué)習(xí)的開展而單獨(dú)地進(jìn)行調(diào)整。該方法從梯度的第一次和第二次矩的預(yù)算來計(jì)算不同參數(shù)的自適應(yīng)學(xué)習(xí)速率[6~8]。
3.2.3 學(xué)習(xí)率衰減
本文采用學(xué)習(xí)率衰減方法來調(diào)整學(xué)習(xí)率,使模型在訓(xùn)練初期以較大學(xué)習(xí)率進(jìn)行參數(shù)更新,提高優(yōu)化效率,隨著迭代次數(shù)的增加,模型在訓(xùn)練末期以較小學(xué)習(xí)率進(jìn)行參數(shù)更新,提高模型收斂穩(wěn)定性[9~10]。學(xué)習(xí)率衰減方式如下:
式中l(wèi)r0為初始學(xué)習(xí)率,r 為衰減率,n 為迭代次數(shù),lr 為衰減后學(xué)習(xí)率。本文試驗(yàn)中初始學(xué)習(xí)率設(shè)置為0.001,衰減率設(shè)置為0.001。
3.2.4 交叉驗(yàn)證
為了在模型訓(xùn)練過程中考察模型的擬合效果與預(yù)測性能,我們需要在訓(xùn)練集中抽取一部分作為驗(yàn)證集。本文我們采用一種常用的K 折交叉驗(yàn)證的方法,K 折交叉驗(yàn)證的原理為將訓(xùn)練集按照樣本數(shù)量平均分成K 組(本文中選取K=5),訓(xùn)練過程中不重復(fù)地先后抽取其中一組作為驗(yàn)證集,用以計(jì)算損失函數(shù)評價模型訓(xùn)練程度,其余K-1組作為訓(xùn)練集用以訓(xùn)練模型。將K 次的損失取平均得到最終的損失[11~13]。
本文選用均方根誤差(RMSE),平均絕對誤差(MAE)作為艦位預(yù)測模型性能評價指標(biāo)。
試驗(yàn)硬件環(huán)境為一臺裝配GPU 圖形處理器(RTX3090*4)的圖形工作站(Lenovo P60);軟件環(huán)境為PyCharm;試驗(yàn)編程語言與機(jī)器學(xué)習(xí)框架為Python(V3.8.5)+tensorflow(V2.6.0)。
試驗(yàn)數(shù)據(jù)采集自某船航行試驗(yàn),采集頻率為1Hz,樣本數(shù)量共計(jì)36000 個。按4:1 的比例將數(shù)據(jù)集劃分為訓(xùn)練集和測試集。此外,按照交叉驗(yàn)證規(guī)則,設(shè)置驗(yàn)證集比例為20%。模型中,LSTM層門結(jié)構(gòu)的神經(jīng)元節(jié)點(diǎn)數(shù)取128。
4.2.1 數(shù)據(jù)預(yù)處理
在輸入數(shù)據(jù)中,不同變量具有不同的單位、刻度及量程,這會給損失函數(shù)的計(jì)算及模型優(yōu)化造成一定的困難。機(jī)器學(xué)習(xí)領(lǐng)域常采用數(shù)據(jù)標(biāo)準(zhǔn)化的方法來避免這一問題,在本文中我們選取“歸一化”方法,通過數(shù)據(jù)的最大值和最小值將數(shù)據(jù)標(biāo)準(zhǔn)化映射在[-1,1] 區(qū)間內(nèi)。
4.2.2 輸入步長(step)參數(shù)調(diào)優(yōu)
試驗(yàn)中首先對輸入步長(step)參數(shù)進(jìn)行調(diào)優(yōu),分別取step 為5,10,15,20,25 進(jìn)行試驗(yàn),迭代次數(shù)(epochs)初步設(shè)定為15000,batch 容量(batch_size)初步設(shè)定為32。試驗(yàn)結(jié)果如圖3所示,當(dāng)step取10時,模型性能較好,step 繼續(xù)增大模型性能無明顯提高,為了在保證模型性能的同時,降低模型復(fù)雜度、節(jié)約計(jì)算資源,取step=10為最優(yōu)參數(shù)。

圖3 輸入步長(step)參數(shù)調(diào)優(yōu)結(jié)果
4.2.3 迭代次數(shù)(epochs)參數(shù)調(diào)優(yōu)
在確定了step 最優(yōu)參數(shù)后,試驗(yàn)對epochs 參數(shù)進(jìn)行了調(diào)優(yōu),分別取epochs 為5000,10000,15000,20000,25000 進(jìn)行試驗(yàn),batch_size 初步設(shè)定為32。試驗(yàn)結(jié)果如圖4所示,當(dāng)epochs取20000時,模型性能較好,epochs 繼續(xù)增大模型性能無明顯提高,為了在保證模型性能的同時,節(jié)約計(jì)算資源、減少訓(xùn)練耗時,取epochs=20000為最優(yōu)參數(shù)。

圖4 迭代次數(shù)(epochs)參數(shù)調(diào)優(yōu)結(jié)果
4.2.4 Batch容量(batch_size)參數(shù)調(diào)優(yōu)
在確定了step 及epochs 最優(yōu)參數(shù)后,試驗(yàn)對batch_size 參數(shù)進(jìn)行了調(diào)優(yōu),分別取batch_size 為32,64,128,256,512 進(jìn)行試驗(yàn),試驗(yàn)結(jié)果如圖5所示。當(dāng)batch_size 為32 時,模型性能最佳,故取batch_size=32為最優(yōu)參數(shù)。

圖5 Batch容量(batch_size)參數(shù)調(diào)優(yōu)結(jié)果
試驗(yàn)中分別構(gòu)建未來1s,2s,3s,5s,10s 艦位預(yù)測模型,并根據(jù)調(diào)參結(jié)果對模型進(jìn)行訓(xùn)練與優(yōu)化。優(yōu)化完成后將測試集樣本分別輸入各模型,并對預(yù)測結(jié)果進(jìn)行統(tǒng)計(jì)與評估,試驗(yàn)結(jié)果如下。

表1 艦位預(yù)測模型試驗(yàn)結(jié)果評估
從試驗(yàn)結(jié)果可以看出,本文提出的艦位預(yù)測模型可以根據(jù)船舶航行歷史數(shù)據(jù)對未來時刻的艦船航行位置做出準(zhǔn)確預(yù)測,預(yù)測結(jié)果均方根誤差、平均絕對誤差<3m,最大誤差(95%置信度)<5m。
本文提出了一種基于LSTM神經(jīng)網(wǎng)絡(luò)的艦船航行位置預(yù)測模型,實(shí)現(xiàn)了依據(jù)船舶導(dǎo)航系統(tǒng)、操控與推進(jìn)系統(tǒng)及氣象水文系統(tǒng)歷史數(shù)據(jù)對船舶未來時刻航行位置的預(yù)測。試驗(yàn)結(jié)果表明,本文提出的艦位預(yù)測模型對船舶未來時刻航行位置的預(yù)測具有較高的準(zhǔn)確性與穩(wěn)定性,能夠?qū)Υ霸讵M水道航行等特殊場景下的安全航行提供輔助與支持。