劉 鑫,韓宇平,劉中培,黃會平
(1.華北水利水電大學 水利學院,河南 鄭州450046;2.華北水利水電大學 測繪與地理信息學院,河南 鄭州450046)
地下水埋深的變化受降雨、蒸發及開采量等多種因素的影響。地下水過度開采時,會產生地下水漏斗和地面沉降;當補給量超過開采量時,地下水埋深會變淺。因此,預測地下水埋深的變化情況對區域水資源管理至關重要。而機理模型建模預測地下水埋深容易受到物理環境的影響,存在較多不確定因素,建模時間較長。使用深度學習模型可以不依賴任何物理過程和假設,且深度學習模型具有很強的自組織及自適應能力,對于非線性分布的樣本數據有很好的建模能力[1-2],被廣泛應用于供水量預測[3]、空間插值[4-5]、降水預報[6-7]、污染源識別[8-9]及水質預測[10-11]等多個領域。
對于地下水埋深的預測是經典的二分類問題,人工神經網絡(ANN)可以較好地解決此類問題[12-13],但是ANN學習能力及推廣能力有限,容易出現過擬合[14-15],導致泛化能力差,不能很好地描述復雜特征的分布情況,更重要的是ANN沒有記憶能力。而長短時記憶循環神經網絡(LSTM)[16]控制有記憶單元且不需要大量參數,使預測結果更依賴于過去最近的記憶。LSTM在時間序列問題上的性能優于ANN,但是LSTM在測試集的泛化能力不夠理想。LSTM和ANN不能很好地根據已知數據預測未知特征,原因是它們都是單向的(前向的)且都是全連接神經網絡(FC)。單向網絡只能學習到單側的信息,而有時時序問題的信息不只是單向有用,雙向的信息對預測結果也很關鍵。FC的神經元是全連接的,會減少網絡的隨機性。雙向長短時記憶循環神經網絡(BiLSTM)[17]不僅具有LSTM的功能,而且可以先前向學習,再后向學習,最后將網絡兩個方向的輸出結果合在一起形成網絡的最終輸出。
本研究以黃河下游人民勝利渠灌區地下水埋深預測為例,構建BiLSTM-NFC深度學習模型,將BiLSTM融合非全連接神經網絡(NFC),使得每一次訓練按一定的概率丟棄一些神經元,增加網絡的隨機性,最后與BiLSTM、LSTM-NFC及LSTM的預測結果進行對比分析,以期提高地下水埋深預測的精度。
人民勝利渠灌區是新中國成立后黃河下游興建的大型引黃灌區之一,位于河南省黃河北岸。灌區南起黃河,北至衛河,總面積1 486.84 km2。本研究利用1993—2018年新鄉氣象站的數據(降水、蒸發、平均氣溫、平均氣壓、相對濕度、平均風速和日照時數)、灌區地下水供應量和總開采量(渠灌量和井灌量)進行建模,預測灌區的平均地下水埋深。氣象數據來自國家氣象局,灌區數據來自人民勝利渠灌溉管理局。
為了消除量綱的影響,使得不同量綱的數據具有相同的尺度,本研究將數據進行標準化,在測試的時候再將數據進行還原。取消量綱及數值相差較大所引起的誤差,不僅可以縮短建模時間,還有助于提高模型精度。
LSTM每層輸出結果的同時會產生一個記憶輸出,因此該網絡具有一定的記憶性,同時加入了衰減因子讓記憶進行衰減,這樣LSTM能夠清楚地記得最近的數據而以一定程度遺忘掉很久以前的數據,LSTM的抽象結構如圖1所示(X1、X i、X j為不同時刻的輸入,Y1、Yi、Y j為不同時刻的輸出,NN為神經網絡模型)。

圖1 LSTM的抽象結構
LSTM的結構比較復雜,每一層網絡在輸出結果的同時會產生一個經過衰減的記憶,存儲之后再傳入下一層網絡,輸出計算的過程可用公式表達為

式中:f t、f t-1分別為t、t-1時刻的衰減因子;h t、h t-1分別為t、t-1時刻隱藏層的輸出;x t為t時刻隱藏層的輸入;Wf、Wc、Wo為權重(系數);bf、bc、bo為偏置項;Sigmoid為S激活函數;Tanh為雙曲正切激活函數;~C t為新學習的記憶;C t為衰減后的記憶;Ot為輸出端的系數;t為時刻。
f t是由t-1時刻隱藏層的輸出h t-1和輸入x t結合起來,然后作用在線性變換Wf[h t-1,x t]+bf上得到的,通過Sigmoid將結果映射到0~1之間。~C t是由h t-1和x t結合起來,作用在線性變換Wc[h t-1,x t]+bc上,再通過Tanh將輸出整流到-1~1之間。C t是由t-1時刻的f t-1乘以C t-1,加上t時刻的f t乘以~C t。O t決定最后輸出h t的多少。
BiLSTM是LSTM的雙向版本(見圖2),由前向LSTM和后向LSTM組合而成,能夠挖掘LSTM難以解析的規律,對于復雜的分類和回歸問題表現出非常好的性能,可以彌補單向LSTM的缺點。

圖2 BiLSTM的抽象結構
BiLSTM分為前向LSTMF和后向LSTMB。前向網絡依次輸入X1、X2、X i、X j和X n得到前向輸出HF1、HF2、HFi、HFj和HFn,后向網絡依次輸入X n、X j、X i、X2和X1得到后向輸出HB1、HB2、HBi、HBj和HBn,將兩個方向的輸出拼接得到[HF1,HBn]、[HF2,HBj]、[HFi,HBi]、[HFj,HB2]和[HFn,HB1]。以[HF1,HBn]為例,它是由X1在前向網絡的輸出HF1與X1在后向網絡的輸出HBn結合在一起形成的最終輸出。可以看出,輸入序列對于BiLSTM的兩個方向神經網絡是相反的,因此BiLSTM能夠更好地建立數據的關聯。
FC是對第n-1層和第n層而言的,n-1層的任意一個節點都和第n層所有節點有連接。增加訓練的次數,模型在訓練集的誤差雖然可以無限趨近于零,但是在測試集的性能往往較差,網絡層數越大、參數越多,在測試集上的性能越差。NFC是對FC的一種優化,其思想是隨機切斷某兩個神經元之間的連接,每層以一定概率P(本研究P取0.3)丟棄一些神經元,每次訓練有些神經元是沒有建立連接的。NFC示意見圖3。
由圖3可見,每次訓練的時候都有神經元不參與,這樣每一次訓練相當于生成了一個新的模型,訓練結束后被訓練的模型可以看成是這些新模型的集成,從而增強網絡的泛化能力。

圖3 NFC示意
BiLSTM-NFC、BiLSTM、LSTM-NFC和LSTM模型都使用Pytorch框架開發,Pytorch是Python中具有圖形處理單元(GPU)并行計算功能的深度學習框架。為了加快建模的速度,本研究使用深度學習的張量來存儲數據,一維的張量是向量,超過一維的張量是矩陣。在導入數據時采用批處理的形式,即將一次迭代的數據長度設置為訓練集的長度,這樣一輪訓練只需要進行一次迭代。在訓練模型時,將處理單元由中央處理單元(CPU)更改為GPU,將數據從內存調入顯存進行并行計算。計算時不再將全部元素按位置逐一迭代計算,而是使用同維度矩陣的運算法則來簡化計算過程。
自適應矩估計(Adam)[18]是一種自適應學習率的算法,結合了動量法(Momentum)[19]和均方根支柱(RMSProp)[20]算法的優點。Adam中動量直接并入梯度一階矩的估計,相比缺少修正因子導致二階矩估計可能在訓練初期具有很高偏置的RMSProp,Adam包括偏置校正,經過偏置校正后,每一次迭代學習率都有確定范圍,使得參數比較平穩。Adam能基于訓練數據迭代更新神經網絡權重,該優化函數適用于處理稀疏梯度及非平穩目標的優化。Adam的表達式為

式中:m、v分別為對梯度的一階矩估計和二階矩估計;β1、β2分別為m、v的校正因子;g為梯度;^m、^v分別為對m、v的校正;W t+1、W t為模型參數;η為學習率;∈為避免分母為0而取值很小的數,本研究∈取10-8。
每次迭代時,計算mt、v t的移動加權平均進行更新。β1、β2的取值范圍在0~1之間,本文分別取0.9和0.999。當迭代次數增加到較大值時βt1、βt2幾乎為0,即不會產生任何影響,最后使用修正過的^mt和^vt對學習率η進行動態約束。
激活函數的選擇對于模型的收斂起關鍵性作用。如果模型采用單一激活函數,則可能出現梯度消失或激活效果不好等情況,因此本研究耦合多種激活函數來解決上述問題。
Sigmoid激活函數(見式(2))的輸出不是以0為均值的,這將導致經過Sigmoid激活之后的輸出作為后面一層網絡輸入的時候是非0均值的。Tanh激活函數(見式(4))是Sigmoid激活函數的變形,它將輸入的數據映射到-1~1之間,輸出變成了0均值,這就可以解決Sigmoid激活函數存在的問題,但它仍存在梯度消失的情況。最大邏輯回歸(Softmax)激活函數(見式(14))將多個輸出值轉換成概率值,使每個值都符合概率的定義,范圍在0~1之間,且概率之和為1。Softmax對輸出值進行處理,它將原來較大的值放大得更大、原來較小的值壓縮得更小。Softmax激活函數表達式為

式中:y i為輸出矩陣的第i個元素;n為矩陣特定維度的數據個數。
線性整流單元(ReLU)激活函數(見式(15))將大于0的數據保留,將小于0的數據變成0,其計算方法簡單,只需要一個閾值過濾而不需要復雜的運算。因此,ReLU能夠極大地加速模型的收斂速度,它是線性的且參數更新過程中不存在梯度消失的問題。ReLU激活函數表達式為

靜態學習率不能很好地適應模型的訓練,尤其是模型收斂到一定程度時會出現頻繁且周期性的震蕩,使得模型不能很好地持續收斂。因此,本研究采用動態學習率,在訓練的過程中設定監測機制實時監測模型誤差,當模型誤差持續減小時不對學習率進行更新,當模型誤差出現反彈時,記錄之后連續20次訓練的誤差,如果模型在這期間震蕩就將學習率乘以0.9,而后等待10次訓練之后重新啟動監測機制,一直到連續兩次更新后的學習率差值小于10-8時不再更新學習率。
為了避免單一評價標準的局限性,采用均方誤差(MSE)、平均相對誤差(MRE)、Pearson相關系數(r)及相對誤差(RE)4個評價指標檢驗模型的性能:

將數據集按照7∶3的樣本數量比例進行訓練集和測試集劃分,即1993—2010年的數據作為訓練集,2011—2018年的數據作為測試集,BiLSTM-NFC、BiLSTM、LSTM-NFC和LSTM模型采用相同的訓練集和測試集。4個模型的訓練與測試結果見圖4。

圖4 模型的擬合結果
由圖4可知,4個模型的擬合效果在訓練階段都較好,但在測試階段存在較大差別。在測試集上,LSTM和LSTM-NFC模型的偏離程度較大,BiLSTMNFC與BiLSTM的擬合效果較好。BiLSTM曲線與觀測曲線前期的擬合效果較好,但后期走勢卻與觀測值有較大偏離。BiLSTM-NFC的預測值與觀測值最接近,擬合效果最好,模型最接近無偏估計。4個模型的預測值與觀測值對比及絕對誤差(AE)見表1。
由表1可以看出:BiLSTM-NFC模型的誤差最小,且誤差有正有負,擬合程度較高。BiLSTM模型的誤差雖然也有正有負,但是誤差值較大,誤差最大的是LSTM模型。4個模型誤差從小到大排序為BiLSTMNFC<BiLSTM<LSTM-NFC<LSTM。

表1 模型預測值與觀測值對比 m
4個模型的訓練結果見表2(訓練次數為1 000),訓練集的MSE越小,說明擬合效果越好,MSE為0表示過度擬合。

表2 模型的訓練結果
從表2可以看出,4個模型在訓練結束時,MSE都接近0.000甚至為0.000,符合模型訓練的一般規律,但是過度擬合可能導致模型的泛化能力變差。沒有融合NFC的2個模型MSE為0,出現過度擬合,因此準確率(Acc)高于融合NFC的2個模型。使用矩陣存儲數據再加上批處理,使得模型不需要進行大量訓練。訓練1 000次時MSE幾乎為0,學習率持續減小,但是參數已經停止更新。對4個模型進行測試,結果見表3。

表3 模型的測試結果
由表3可知,BiLSTM的4個評價指標都優于LSTM,BiLSTM-NFC的4個評價指標都優于LSTMNFC,可知雙向網絡的性能優于單向網絡。BiLSTMNFC比BiLSTM的MSE減小了70.48%,LSTM-NFC的MSE比LSTM的MSE減小了70.09%,可知NFC可使模型的MSE明顯減小。4個模型的MSE從小到大排序為BiLSTM-NFC<BiLSTM<LSTM-NFC<LSTM,BiLSTM-NFC的MSE最小,比LSTM的MSE減小了96.60%。MR E的排序為BiLSTM-NFC<BiLSTM<LSTM-NFC<LSTM,BiLSTM-NFC的MRE最小,說明BiLSTM-NFC模型的穩定性最強。BiLSTM-NFC的r最大,表明該模型預測值與觀測值具有最優的相關關系,r從大到小排序為BiLSTM-NFC>BiLSTM>LSTMNFC>LSTM。BiLSTM的Acc為85.71%,BiLSTM-NFC的Acc為100%,可見NFC可使模型具有更強的自適應能力。而LSTM融合NFC之后,Acc沒有增大,原因可能是LSTM的學習能力不足。
泛化能力是模型對未知數據的預測能力,是評價一個模型優劣的重要準則。將4個模型在訓練集和測試集上的MSE進行對比,結果見表4。

表4 模型訓練與測試的MSE對比
4個模型的泛化能力排序為BiLSTM-NFC>BiLSTM>LSTM-NFC>LSTM。在測試集上,LSTM的MSE是最差的,但是LSTM融合NFC之后,模型的MSE明顯減小,由2.879減小到0.861,融合NFC的BiLSTM的MSE從0.332減小到0.098,說明NFC能夠減小模型在測試集上的誤差,增強泛化能力。
由表3可知,BiLSTM-NFC的MRE最小只是訓練1 000次以后的結果,如果訓練過程中出現頻繁的震蕩現象,即使誤差非常小,也不能說明模型足夠穩定可靠。因此,本研究進一步采用式(19)計算每個數據的RE,來最終驗證模型的可靠性。4個模型RE的箱圖見圖5。
由圖5可知:在訓練集上,BiLSTM和LSTM都過度擬合,相對誤差的上限和下限重合,融合了NFC的2個模型沒有過度擬合,BiLSTM-NFC的上限小于LSTM-NFC的上限;在測試集上,與其他3個模型相比,BiLSTM-NFC的相對誤差較小,表明BiLSTM-NFC模型更加可靠。因此,BiLSTM-NFC模型比其他3個模型具有明顯優勢。

圖5 模型訓練集和測試集箱圖
Pytorch框架具有強大的GPU加速功能,數據可以在GPU上實現并行計算。4個模型分別通過第八代Intel酷睿處理器和GeForce 930MX,實現CPU和GPU上的1 000次訓練,訓練時間見表5。

表5 模型在CPU和GPU上訓練1 000次所用的時間 s
由表5可知,與CPU相比,BiLSTM-NFC和LSTM-NFC在GPU上的訓練時間分別縮短53.50%和48.62%,BiLSTM和LSTM在GPU上的訓練時間分別縮短19.13%和15.88%,體現出GPU強大的加速功能。在GPU上,融合了NFC之后,模型訓練時間幾乎不變;而在CPU上,模型融合NFC之后的訓練時間卻大幅增加。在GPU上,雙向網絡的訓練時間與單向網絡的訓練時間幾乎一樣,而在CPU上卻有明顯增加,可見GPU具有很強的并行計算能力。對于更高維度的矩陣,在GPU上的訓練時間可能更短。
激活函數的選擇對于模型的收斂十分關鍵。一般而言,ReLU激活函數的效果較好,但是僅使用ReLU一個激活函數,數據在層間傳遞時,激活函數的缺陷會被放大。本研究使用耦合激活函數(Tanh、Softmax及ReLU)來彌補單一激活函數的缺陷,ReLU激活函數與耦合激活函數的對比見表6,由表6可知,使用耦合激活函數的4項評價指標均優于僅使用ReLU激活函數的。

表6 ReLU激活函數與耦合激活函數的對比
深度學習模型具有非常強大的能力,能夠很好地描述區域地下水數據間復雜的數量與特征關系。本研究建立4個深度學習模型,對比了4個模型對黃河下游人民勝利渠灌區1993—2018年地下水埋深預測的精度,結果表明BiLSTM-NFC模型的性能最好,并得出以下結論。
(1)使用矩陣運算、批處理及動態學習率,模型可以快速收斂,不需要進行大量訓練。
(2)與BiLSTM、LSTM-NFC及LSTM模型相比,BiLSTM-NFC模型學習能力、穩定性、可靠性及泛化能力最強,測試集的MSE、MRE、r及Acc分別為0.098、0.024、0.941及100%,最接近無偏估計。
(3)雙向長短時記憶循環神經網絡(BiLSTM)的性能優于長短時記憶循環神經網絡(LSTM),NFC可以防止過擬合,還能使模型的MSE明顯減小。
(4)模型在GPU上的運行時間比在CPU上明顯縮短。
(5)合理設置多種激活函數可以解決單一激活函數的弊端。