張聰, 許浩然, 詹煒, 黃嵐
(長江大學計算機科學學院, 荊州 434000)
隨著國家對外經濟的蓬勃發展,港口作為貿易的重要樞紐也在飛速建設與發展。港口吞吐量是衡量港口建設發展的重要指標,是指導港口作業部署的重要依據[1]。對港口吞吐量的準確預測有助于提前規劃港口作業設施的工作任務,減少貨物卸載與停留時間,提高港口使用效率,提升港口智能化程度。因此,如何精確預測港口吞吐量一直是學者們研究的熱點問題[2-6]。
港口貨物吞吐量變化具有一定的波動性和不規則性[7],易受政治、國際形勢、腹地經濟等外部客觀不確定性因素以及港口地理位置等主觀因素影響,導致算法預測港口吞吐量有一定挑戰性。依據灰色系統理論可以處理不確定性問題的特點,黃躍華等[8]引進正弦和的灰度模型識別港口吞吐量周期震蕩的特征,對上海港集裝箱吞吐量進行預測。杜柏松等[9]提出用馬爾科夫模型修正灰度模型計算結果的方法提升對時序特征的表示。王向前等[10]構建了多元自回歸積分滑動平均模型(autoregressive integrated moving average model,ARIMA)結合支持向量回歸(suport vector regression,SVR)的混合模型進行天津港的吞吐量預測。基于機器學習算法的港口吞吐量預測模型也從早期的支持向量機(support vector machines,SVM)[11-12]淺層模型逐漸發展為神經網絡深層模型。陳端海[13]利用遺傳算法優化BP(back propagation)模型參數提高了預測精度。李廣儒等[14]采用AdaBoost集成學習算法改進Elman神經網絡提升了寧波-舟山港吞吐量的預測精度。
長短時記憶神經網絡(long short term memory,LSTM)[15]是循環神經網絡(recurrent neural network,RNN)的典型代表,被廣泛用于各種序列預測問題[16-17]。目前的研究大多將單個港口作為建模和預測對象,而單港口的數據總量小,且波動性大,導致深層神經網絡模型如LSTM易出現過擬合,無法有效捕獲港口吞吐量的快速變化情況,降低模型預測準確率。
針對上述問題,提出在LSTM模型中融入預訓練技術,先用多港口的歷史吞吐量數據對LSTM開展預訓練,通過引入大量相關的、低成本的數據學習數據間的公共特征,以此為基礎初始化LSTM模型,從而提升模型的泛化性。在中國15個大型港口近21年單月吞吐量數據上的對比實驗結果顯示,融入預訓練能有效解決LSTM模型的過擬合問題,預測準確率明顯高于傳統的BP等4種基準時序預測模型。本文將預訓練引入時序預測任務中,有效提升提高了時序模型的泛化性和精確度,為小數據時序預測任務提供了新思路。
LSTM在傳統RNN基礎上隱含層改為了輸入門、遺忘門、輸出門等門結構,在序列傳遞過程中能有選擇性地遺忘和保存信息,緩解了RNN訓練過程中梯度消失的問題。
LSTM神經網絡由多個LSTM神經元串聯而成,單個神經元結構如圖1所示,每個LSTM神經元的輸入有:上一時間步LSTM單元傳遞來的上下文信息Ct-1、上一時間步輸出Ht-1和當前時間步的輸入Xt。輸入信息通過遺忘門、輸入門和輸出門后,計算得到遺忘權重ft、輸入權重it和輸出權重ot,計算公式分別為

圖1 LSTM吞吐量預測模型Fig.1 LSTM predict model for cargo throughput
ft=σ(Wf[Xt,Ht-1]+bi)
(1)
it=σ(Wi[Xt,Ht-1]+bi)
(2)
ot=σ(Wo[Xt,Ht-1]+bo)
(3)

(4)
式中:σ為sigmoid函數;Wf、Wi、Wo、Wc為不同門控機制的權重矩陣;bf、bi、bo、bc為不同門控機制的權重修正向量。
輸入門有選擇性地選擇當前時間步候選上下文信息向量和遺忘門遺忘上一時間步上下文信息向量,將兩者組合得到當前時間上下文信息向量Ct,再經tanh激活函數和輸出門后得到當前LSTM單元的輸出Ht,計算公式分別為
(5)
Ht=ottanh(Ct)
(6)
式(6)中:tanh為激活函數。
每個港口初始特征有:吞吐量、本月吞吐量增速和同比增速。本月吞吐量增速為本月增長量與上月吞吐量之比;同比增速為本月相較于去年同月的吞吐量增速。通過引入同比增速可以讓模型獲取吞吐量變化的周期信息。在數據輸入LSTM模型之前,先用多層感知機(multilayer perceptron, MLP)模型對輸入數據進行特征提取和轉換,MLP模型的輸出特征向量即為LSTM神經元的輸入,再由LSTM學習港口上的時序特征,最后再經過MLP最終輸出吞吐量預測值。
選取天津港、上海港、大連港、營口港等15個中大規模港口2001年1月—2021年12月每月的貨物吞吐量為實驗數據。所選港口的代表性強,時間跨度大,數據豐富,港口地理位置基本覆蓋了中國的主要沿海地區。
數據集共包含252條記錄,其中,18個月中部分港口的吞吐量數據存在缺失。在前人研究和前期實驗基礎上,采用式(7)填補缺失值,即以前兩月的吞吐量均值乘以前兩月吞吐量的增速,并考慮一定程度的衰減。
(7)
式(7)中:xt為港口當月吞吐量;xt-1、xt-2分別為前兩個月的吞吐量;γ為上月的增速權值,實驗中取值為0.85。
處理后各港口均有252條數據,取前204條記錄作為訓練集,后48條作為測試集。
LSTM預測模型的通用超參數及其取值如表1所示。在參數選擇上,首先測試了網絡結構大小對性能的影響,當3個隱藏層維度處于32~64時模型能取得最好性能,因此根據奧卡姆法則選擇較小的結構,即維度為32。此時,模型共有23 952個參數,單個港口數據上訓練單個周期平均用時0.09 s。學習率的初始值設置為0.01,并不斷線性衰減至0.001,這樣收斂速度快且所得到的損失值較低。在訓練過程中最優值一般出現在100個周期內,因此將最大迭代周期設置為100。輸入層和輸出層均為兩層MLP結構,激活函數為tanh函數,采用均方根差(root mean square error,RMSE)函數作為模型訓練的損失函數。

表1 LSTM模型超參數Table 1 Hyper-parameter for LSTM
(8)
訓練過程中損失函數取值變化如圖2所示,其中藍色實線與黃色虛線分別表示在訓練集和測試集上的損失值變化。從中可以看出對于煙臺港、青島港、日照港、福州港和廣州港[圖2(a)~圖2(e)]對應的5個港口,訓練集上的損失值在不斷下降,而測試集上的損失值卻沒有同步下降,說明LSTM模型在這些港口上出現了過擬合現象。

圖2 港口訓練損失值變化Fig.2 Changes in port training loss values
為探究基線LSTM模型在部分港口上出現過擬合現象的成因,圖3依據是否出現過擬合現象對港口進行分類,并將其吞吐量數據進行了可視化,豎直虛線表示訓練集與測試集的分隔線。圖3(a)中港口吞吐量數據一直呈增長趨勢,周期變化趨勢不明顯,圖3(b)中港口則呈現出比較明顯的周期性波動趨勢。LSTM對時序波動規律的擬合能力很強,當測試數據中出現與訓練數據差異較大的變化時,LSTM模型的預測性能降低,說明傳統LSTM模型的泛化能力還有待提升。

豎直虛線表示訓練集與測試集的分隔線
深度學習模型由于結構復雜,需要訓練的參數量龐大,導致其在規模較小的數據集上很容易出現過擬合現象,降低了模型的泛化能力。針對這一問題,提出在LSTM模型訓練過程中融入預訓練。預訓練通過在大規模數據集上提前訓練,從而更好地初始化模型參數,避免了過度擬合小數據集[18]。預訓練技術興起于自然語言處理,自然語言豐富的語義特征、廣闊的語義空間,使得單個模型很難從單個自然語言數據集中得到充分的訓練,因此,利用數據量龐大的通用語料庫預訓練語言模型,捕獲廣義數據集上的語義信息,已成為自然語言處理模型中不可缺少的一步和提升模型泛化性能的重要措施[19]。因此,提出將預訓練引入港口吞吐量預測的LSTM模型(記為LSTMpre),以解決在部分港口上的過擬合問題,提升LSTM模型的整體泛化能力。預訓練所使用的數據類型和結構與訓練集相同,因此融入預訓練的LSTMpre模型可以采用與基準LSTM模型(記為LSTMbase)同樣的模型結構。LSTMpre先用所有港口的歷史數據進行預訓練,再以預訓練所得模型作為單港口預測模型的初始值。
以BP、ARIMA、無預訓練的LSTM模型、GNN-LSTM4種常用時序預測模型為比較基準,采用3種評價指標:相對預測殘差分布、均方根誤差(root mean squared error,RMSE)和平均絕對誤差(mean absolute error,MAE)。相對殘差分布是模型預測殘差與真實值之比。RMSE常用于計算模型訓練過程中的損失值,計算公式見式(8),易受異常值影響。平均絕對誤差(mean absolute error,MAE)直觀評估預測結果與真實值之間的平均誤差,計算公式為
(9)
LSTMbase、LSTMpre和GNN-LSTM模型用PyTorch深度學習框架實現,BP、ARIMA模型采用MATLAB實現。LSTMpre模型的預訓練階段的學習率為0.001,批量大小為64,訓練周期300個。
BP模型是最經典的神經網絡模型,又稱為全連接網絡,通過前向、反向傳播來調整參數,從而擬合吞吐量變化曲線。選擇3層BP網絡模型,在模型維度上,隱藏層與LSTM一樣選擇32維。
ARIMA模型是一種基于數理統計的時序預測模型,有p、d、q參數,在每個港口上,先判斷港口吞吐量是否是平穩數據,若不是則對數據進行差分直至數據平穩,參數d為數據差分次數。再用自相關函數(autocorrelation function,ACF)和偏自相關函數(partical autocorrelation coefficient,PACF)來確定模型的p、q參數。
GNN-LSTM是結合圖神經網絡(graph nerual network, GNN)的LSTM模型,近年來廣泛應用于有空間位置信息的時序預測問題,參考文獻[20]中實現的GNN-LSTM模型來進行港口吞吐量的預測。
圖4對比了所有港口上的預測相對殘差分布。4個模型除LSTMbase外,預測相對殘差的中位數都在0附近,說明預測值比較貼近實際值。其中,LSTMpre模型的中位數最接近0,方差最小,表明其預測值的分布與真實值的分布最為貼近。ARIMA模型的分布最松散,說明模型魯棒性有待提升。對比預訓練后的LSTMpre和基礎模型LSTMbase模型,LSTMpre提升明顯,殘差的上下四分位數與中位數的絕對值差異在10%以內,相對殘差分布最緊湊,表示模型魯棒性較好、預測可信度較高。

圖4 各模型吞吐量相對殘差對比Fig.4 Comparison of throughput relative residual among different models
BP、ARIMA、GNN-LSTM、LSTMbase和LSTMpre5個模型在所有港口上的RMSE值分別為:3.801、4.522、2.816、3.735和2.235。在平均RMSE指標上,所提出的LSTMpre模型相較于其他4個模型分別取得了41.2%、45.2%、20.6%和40.2%的降低,說明LSTMpre模型的有效性。
為深入分析5個模型在不同港口上的表現,表2列出了每個模型在每個港口上的預測精度。可以看出,與BP、ARIMA、GNN-LSTM、LSTMbase、模型相比,平均MAE指標值分別降低了42.0%、51.3%、13.7%和45.2%。為分析預訓練的有效性,表2中最后一列給出了LSTMpre模型相較于LSTMbase的MAE值降低比率,加粗部分表示在該港口上LSTMpre預測結果要優于LSTMbase。可以看出,所提出的LSTMpre模型在絕大部分港口上的預測準確率更高,MAE損失最多降低80%,總體平均降低45.2%。

表2 各模型對不同港口吞吐量預測性能比較Table 2 Comparison of throughput prediction performance
在青島港、煙臺港、日照港、福州港、廣州港、營口港、連云港港和大連港8個港口上,特別是在青島港、煙臺港、日照港、福州港和廣州港5個出現過擬合港口上,GNN-LSTM模型的準確度要高于LSTMbase模型。這說明通過圖模型來表示臨近港口的吞吐量情況能從一定程度解決LSTMbase模型的過擬合問題。但在天津港、上海港、秦皇島港、泉州港、廈門港、深圳港和湛江港7個港口上,圖模型的有效性并不適用,GNN-LSTM模型的表現反而明顯差于LSTMbase模型,說明這些港口的吞吐量變化并不受臨近港口的影響。對比之下,所提出的LSTMpre模型在13個港口上均取得了顯著優于LSTMbase模型的準確性。
針對港口吞吐量預測任務,構建了LSTM模型,從實驗角度驗證了傳統LSTM模型在數據量小、周期變化不明顯數據上容易出現過擬合現象的問題。針對此類問題,借鑒自然語言處理領域發展,在LSTM模型中融入預訓練階段,先用多港口的信息預訓練捕獲全局信息,再用LSTM模型對單個港口精確建模。得出如下結論。
(1)基于預訓練的LSTMpre模型,能有效解決單港口上數據特征不足導致的模型過擬合、預測準確度低的問題,在明顯出現過擬合的青島港、煙臺港、日照港、福州港和廣州港5個港口上的預測準確率平均提升66.3%,在所有港口上RMSE、MAE平均降低了40.2%、45.2%。相較于傳統的BP、ARIMA模型以及目前流行的GNN-LSTM模型,所提出的模型在預測主要大型港口吞吐量任務上的平均RMSE值分別降低了41.2%、50.6%、20.6%;MAE分別降低42.0%、51.3%和13.7%。
(2)研究的主要不足之處在于:①由于小港口數據量較小,只選取中國主要中大型港口作為代表;②港口的規模受地域經濟、中外形勢影響較大,除港口吞吐量數據之外,融入港口所在城市GDP、人均收入、經濟指標等外源數據,應可進一步提升模型預測的準確率和魯棒性。
(3)本文提出的LSTMpre港口吞吐量預測模型仍存在兩個有待完善之處。首先,目前模型沒有直接表示和利用年度周期性變化信息,而港口吞吐量具有明顯的年度周期性特征。其次,融合圖結構的模型展示出了一定的有效性,地理信息對吞吐量預測的潛在作用仍有待挖掘,如何更有效地融入圖結構和圖神經網絡也是本文模型未來的主要改進方向。