劉 鑫,桑學(xué)鋒,常家軒,鄭 陽
(1.華北水利水電大學(xué)水利學(xué)院,河南 鄭州 450046;2.中國水利水電科學(xué)研究院水資源管理研究室,北京 100038)
水文預(yù)測在水庫蓄水、城市供水調(diào)度策略及灌溉等工作中具有非凡的意義,是水利機(jī)構(gòu)或其工作人員進(jìn)行決策時的關(guān)鍵參考,因此能夠精準(zhǔn)預(yù)測顯得十分重要。為了提高水文預(yù)測的精度和可靠性,很多學(xué)者從不同角度通過學(xué)科交叉,提出了很多先進(jìn)的方法,如灰色[1-2]、人工神經(jīng)網(wǎng)絡(luò)[3]、回歸[4-5]、時間序列[6-7]、深度學(xué)習(xí)[8-9]等模型。通過數(shù)據(jù)驅(qū)動的方式可以不受物理環(huán)境的影響,建立數(shù)據(jù)間潛在的特征關(guān)系;通過自學(xué)習(xí)自調(diào)參實(shí)現(xiàn)對過去規(guī)律延伸同時,還能通過模型自組織自適應(yīng)特性,在預(yù)測時進(jìn)行修正,從而使模型能夠較好地預(yù)測未來。
但是在長期預(yù)測中,時間序列存在較大波動,加上噪聲的影響,使得一些數(shù)據(jù)驅(qū)動模型在長期預(yù)測中的性能惡化,預(yù)測結(jié)果的誤差較大;甚至有概率出現(xiàn)預(yù)測值全部在中位數(shù)附近波動,從而無法為決策者提供有價值的信息。通過大量研究及實(shí)驗(yàn)發(fā)現(xiàn),模型在長期預(yù)測中泛化能力變差有以下3個重要因素:一,模型的初始化結(jié)果對模型整個訓(xùn)練過程及模型泛化能力的影響較大,可以說一個好的初始化可以大大減少模型的調(diào)參時間,甚至不需要很多先進(jìn)算法的支撐就可以較好擬合。因此,有學(xué)者致力于模型的初始化過程,使用啟發(fā)式算法進(jìn)行預(yù)調(diào)參,優(yōu)化初始化過程。但在模型訓(xùn)練過程中,尋優(yōu)方向具有較大隨機(jī)性從而并不能解決根本問題。二,模型在尋優(yōu)的過程中,往往很難獲得全局最優(yōu)解,多數(shù)情況下輸出的結(jié)果都是局部最優(yōu)。通過增加神經(jīng)元及隱藏層數(shù)量,或者以梯度、動量、多種激活函數(shù)等方法期望幫助模型跳出局部最優(yōu)解,但是這樣會大大增加模型的訓(xùn)練時間,同時也會使模型出現(xiàn)過擬合現(xiàn)象[10-11],仍然會導(dǎo)致模型泛化能力變差。因此,有學(xué)者嘗試從不同角度融合多種方法,希望可以獲得全局最優(yōu)解的同時又能解決過擬合現(xiàn)象,遺憾的是結(jié)果并不理想。三,在長期預(yù)測時模型很容易受到噪聲的干擾,使得輸出的序列出現(xiàn)明顯波動且波峰與波谷都被明顯的拉長,雖然無限增加訓(xùn)練次數(shù)可以改善上述現(xiàn)象,但是也會導(dǎo)致嚴(yán)重的過擬合現(xiàn)象,使得模型測試時性能惡化。
綜上,本研究提出基于自發(fā)式遺傳算法(spontaneous genetic algorithm,SGA)+離散小波變換(discrete wavelet transform,DWT)的雙向長短時記憶(bidirectional long short term memory,BiLSTM)滾動(rolling)預(yù)測模型(SDBiLSTMR)解決上述問題。通過GA[12-13]進(jìn)行預(yù)調(diào)參同時設(shè)置監(jiān)視器實(shí)現(xiàn)SGA,利用DWT[14]過濾噪聲。同時,為了防止模型的訓(xùn)練時間大幅度增加,本研究將數(shù)據(jù)從內(nèi)存調(diào)入顯存,將模型訓(xùn)練時的核心從中央處理單元(central processing unit,CPU)遷移到圖形處理單元(graphics processing unit,GPU)進(jìn)行數(shù)據(jù)的并行計(jì)算,獲得優(yōu)化模型的同時減少建模時間。
長短時記憶(long short term memory,LSTM)模型(見圖1及式(1)~式(6))具有一定的記憶能力,隱藏層除了輸出計(jì)算結(jié)果外,還額外輸出一個記憶,該記憶通過一個衰減因子不斷地遺忘較遠(yuǎn)的記憶,更依賴于過去最近的記憶。即
圖1 LSTM結(jié)構(gòu)
ft-1=σ(Wfxx(t)+Wfhh(t-1)+If)
(1)
it=σ(Wixx(t)+Wihh(t-1)+Ii)
(2)
mt=φ(Wmxx(t)+Wmhh(t-1)+Ig)
(3)
ot=σ(Woxx(t)+Wohh(t-1)+Io)
(4)
st=st-1ft-1+itMt,ht=φ(st)ot
(5)
φ(x)=(1-e-2x)/(1+e-2x),σ(x)=1/(1+e-2x)
(6)
式中,W和I分別為權(quán)重矩陣和截距矩陣;ft-1為衰減因子;it為輸入單元;mt為記憶單元;ot為輸出單元;st為輸出的記憶狀態(tài);ht為隱藏層輸出。
BiLSTM結(jié)構(gòu)見圖2。由圖2可以看出,BiLSTM融合了前向LSTM與反向LSTM,最終的輸出也是由2個方向的輸出拼接而成的。這使得模型的自學(xué)習(xí)能力得到增強(qiáng),但是模型需要調(diào)節(jié)的參數(shù)增加了一倍,輸出的維度也增加了一倍;所以,最后輸出需要進(jìn)行整流將維度還原。建模流程見圖3。
圖2 BiLSTM結(jié)構(gòu)
圖3 建模流程
遺傳算法(GA)不需要確定的規(guī)則,通過選擇、交叉、變異來產(chǎn)生比當(dāng)前更好的下一代種群,讓適應(yīng)能力更強(qiáng)的個體保留下來從而完成進(jìn)化,自動指導(dǎo)優(yōu)化,自適應(yīng)地完成對復(fù)雜空間的啟發(fā)式搜索,找到全局最優(yōu)解的概率較大。本研究除了使用GA進(jìn)行預(yù)調(diào)參外還設(shè)置監(jiān)視器,當(dāng)模型連續(xù)兩次的訓(xùn)練誤差小于一定閾值時再次啟動遺傳算法實(shí)現(xiàn)SGA,進(jìn)行啟發(fā)式搜索尋找全局最優(yōu)解。
自適應(yīng)矩估計(jì)(adaptive moment estimation,AME)是一種自適應(yīng)優(yōu)化算法,能夠隨著訓(xùn)練迭代地更新,公式如下
fmt=m1×fmt-1+(1-m1)×gt
(7)
gt=ΔJ(Wt)
(8)
(9)
(10)
(11)
(12)
式中,fm、sm分別為一階矩估計(jì)和二階矩估計(jì);m為動量的大?。籫為梯度;fv、sv分別為對一階及二階矩估計(jì)的校正;P為模型的參數(shù);η為學(xué)習(xí)率;ε取10-8;t為迭代次數(shù)。
最小二乘(least square,LS)[15]是數(shù)據(jù)驅(qū)動模型最常用且效果較好的求解方法,本文不再贅述。其公式為
(13)
式中,Y為實(shí)測值矩陣;E為估計(jì)值矩陣。本研究數(shù)據(jù)載體全部為矩陣,這樣迭代一次等于逐元素計(jì)算迭代n次。
噪聲對模型的構(gòu)建存在較大的影響,而小波分析是過濾噪聲的有效手段。小波分析分為連續(xù)小波變換(continuous wavelet transform,CWT)和離散小波變換(DWT)。對于逐日數(shù)據(jù)而言,嚴(yán)格意義上是離散數(shù)據(jù),雖然可以對數(shù)據(jù)進(jìn)行插值連續(xù)化,但隨著時間尺度的減小意味著無窮次的計(jì)算,因此本研究采用DWT。
時間序列一般存在低頻分量與高頻分量,根據(jù)以往大量實(shí)驗(yàn)發(fā)現(xiàn),噪聲多數(shù)是高頻分量,實(shí)測數(shù)據(jù)多數(shù)為低頻分量,而DB小波具有較好的正交性,對序列分解、修正、重構(gòu)后,對高頻分量的過濾效果較好。
目前,數(shù)據(jù)驅(qū)動模型中往往是單步預(yù)測,這種預(yù)測方式在短期預(yù)測中普遍適用,但是在長期預(yù)測中存在一定的缺陷。因?yàn)闀r間序列模型對較久遠(yuǎn)的數(shù)據(jù)會進(jìn)行衰減,因此,模型更傾向于將最近的規(guī)律進(jìn)行延伸。而一次延長較長的序列,離訓(xùn)練集越遠(yuǎn)的數(shù)據(jù)無法有效延伸。
本研究將預(yù)測滾動進(jìn)行以解決上述問題。讓模型每次只預(yù)測一個子序列,然后將該子序列融入訓(xùn)練集使模型再進(jìn)行學(xué)習(xí),然后再預(yù)測一個子序列,如此滾動預(yù)測直到預(yù)測完畢。
本研究從不同角度選擇了4個評價標(biāo)準(zhǔn)以綜合評價模型的性能,他們分別是均方誤差(mean squared error,MSE)、納什系數(shù)(Nash-Sutcliffe efficiency coefficient,NSE)、平均相對誤差(mean relative error,MRE)、Pearson相關(guān)系數(shù)(r),公式如下。
MSE=∑(yi-pi)2/n,i=1, 2, …,n
(14)
(15)
(16)
(17)
本研究利用深圳2015年1月~2019年12月共1 826 d的無空缺逐日供水?dāng)?shù)據(jù)按8∶2劃分訓(xùn)練集與測試集,并與使用SGA+DWT優(yōu)化的LSTM(SDLSTM)及BiLSTM(SDBiLSTM)的預(yù)測結(jié)果進(jìn)行對比;同時,按7∶3劃分訓(xùn)練集與測試集進(jìn)行交叉驗(yàn)證。本研究數(shù)據(jù)來源于深圳市水務(wù)集團(tuán)。訓(xùn)練集結(jié)果見表1。由表1可知,訓(xùn)練完畢后3個模型在訓(xùn)練集上都較好擬合。
表1 訓(xùn)練集結(jié)果
8∶2劃分訓(xùn)練集與測試集的預(yù)測結(jié)果和7∶3劃分訓(xùn)練集與測試集的預(yù)測結(jié)果分別見表2、3。
由表2可知,3個模型的MSE、NSE、MRE及r從最優(yōu)到最差排序都是:SDBiLSTMR、SDBiLSTM、SDLSTM,其中SDBiLSTMR的泛化能力最強(qiáng)。SDBiLSTMR的MSE最小NSE最大說明模型的誤差最小擬合度最高,MRE最小說明模型的穩(wěn)定性最好,系數(shù)r最大說明預(yù)測值與實(shí)測值的相關(guān)性最強(qiáng)。SDBiLSTM比SDLSTM的MSE減小了83.91%,NSE提高了39.06%,MRE減小了96%,r提高了11.76%,SDBiLSTM的4個指標(biāo)都比SDLSTM的更優(yōu),可知雙向網(wǎng)絡(luò)的性能要更優(yōu);SDBiLSTMR比SDBiLSTM的MSE減小了13.04%,NSE提高了3.37%,MRE減小了25%,r提高了1.05%,SDBiLSTMR的4個指標(biāo)都優(yōu)于SDBiLSTM,說明滾動預(yù)測效果比單步預(yù)測精度更高。
表2 8∶2預(yù)測結(jié)果對比
由表3可以看出,交叉驗(yàn)證集上,模型性能排序從最優(yōu)到最差依然是:SDBiLSTMR、SDBiLSTM、SDLSTM。SDLSTM在延長預(yù)測長度后,性能出現(xiàn)惡化,MSE增加了30.77%,NSE降低了43.75%,MRE增加了10%,r降低了11.76%,模型的誤差、擬合度、穩(wěn)定性及相關(guān)性都變差了。而從雙向網(wǎng)絡(luò)的4個指標(biāo)可以看出,模型仍然表現(xiàn)出了較好的性能,說明雙向網(wǎng)絡(luò)在延長預(yù)測長度后依舊可以有效進(jìn)行預(yù)測。其中仍然是SDBiLSTMR的泛化能力最強(qiáng)。與SDBiLSTM相比,SDBiLSTMR模型的MSE減小了16%,NSE提高了4.76%,MRE減小了25%,r提高了2.15%,在交叉驗(yàn)證中滾動預(yù)測仍然比單步預(yù)測的效果更好。
表3 7∶3預(yù)測結(jié)果對比
2種劃分方式的擬合結(jié)果及誤差條見圖4。由圖4a、4b可以看出,模型的誤差主要體現(xiàn)到后半段,前半段3個模型的表現(xiàn)都較好。但當(dāng)預(yù)測長度增加到一定程度時,SDLSTM模型的曲線明顯偏離實(shí)測值,誤差及擬合程度都較差;而SDBiLSTM與SDBiLSTMR曲線與實(shí)測值偏離較小,模型依舊保持較好的性能。由此也可以證明,BiLSTM的泛化能力強(qiáng)于LSTM。其中,SDBiLSTM雖然誤差也較小,但是后半段的曲線縱向延伸度不夠;而SDBiLSTMR模型在后半段曲線縱向延伸度較好,與實(shí)測值的擬合度最佳,模型最接近無偏估計(jì)。為了更加直觀地看出誤差,圖4c、4d展示了測試集后150個數(shù)據(jù)的誤差條。由圖4c、4d可以看出,在2個測試集上SDLSTM預(yù)測曲線差別很大且誤差條很長,代表模型的誤差非常大;2個雙向網(wǎng)絡(luò)的預(yù)測曲線變化很小且誤差條較短,說明模型的誤差較小,其中SDBiLSTMR的誤差最小。
圖4 擬合結(jié)果及誤差條
MSE只是模型預(yù)測值與估計(jì)值的最終對比,只能說明最終結(jié)果的好壞,而不能體現(xiàn)模型是否足夠可靠。因此,本研究進(jìn)一步使用式(18)計(jì)算每個預(yù)測數(shù)據(jù)的相對誤差(RE),通過全部預(yù)測數(shù)據(jù)的RE來驗(yàn)證模型的可靠性。即
RE=|(yi-pi)/yi|
(18)
RE箱圖見圖5。由圖5可以直觀地看出,2個測試集箱圖的規(guī)律是一致的,RE的上限從大到小排序都是SDLSTM、SDBiLSTM、SDBiLSTMR,RE密度從低到高都是SDLSTM、SDBiLSTM、SDBiLSTMR。8∶2的測試集上,SDBiLSTMR模型箱圖的上下限分別是4.71%與1.46%,上下限的距離最短,中位數(shù)和平均值最小,分別是2.9%與3.47%;7∶3的測試集上,SDBiLSTMR模型箱圖的上下限分別是5.03%與1.2%,上下限的距離最短,中位數(shù)和平均值最小,分別是2.64%與3.45%,由箱圖可知,SDBiLSTMR模型最可靠。
圖5 RE箱圖
當(dāng)模型比較復(fù)雜參數(shù)較多時,使用矩陣作為數(shù)據(jù)的載體不僅可以減少迭代次數(shù),還能在GPU上并行計(jì)算,較大程度減少建模時間(見表4)。本研究使用第八代intel酷睿i7處理器和GeForce 930MX實(shí)現(xiàn)CPU和GPU上的5 000次訓(xùn)練,本研究將SDBiLSTMR分3步預(yù)測,因此訓(xùn)練次數(shù)為15 000次。
表4 建模時間 s
由表4可以看出,3個模型建模時間較短,且在GPU上的訓(xùn)練時間明顯少于CPU上的訓(xùn)練時間。SDLSTM、SDBiLSTM及SDBiLSTMR模型在GPU上的訓(xùn)練時間比CPU減少了21.96%、26.74%、27.5%。對于SDBiLSTM而言,網(wǎng)絡(luò)的參數(shù)是SDLSTM的2倍,但是模型在GPU上的訓(xùn)練時間只增加了64 s,而在CPU上訓(xùn)練卻增加了104 s。對于SDBiLSTMR而言,相當(dāng)于構(gòu)建了3次SDBiLSTM,在GPU上訓(xùn)練時間只增加了193 s,而在CPU上增加了270 s,由此充分證明了以矩陣作為數(shù)據(jù)載體的迭代效率非常高,此外網(wǎng)絡(luò)越復(fù)雜參數(shù)越多,訓(xùn)練次數(shù)越多,GPU越能表現(xiàn)出強(qiáng)大的性能。
通過實(shí)驗(yàn)發(fā)現(xiàn),遺傳算法雖然可以自發(fā)啟動幫助模型跳出局部最優(yōu)解,但是算法有一定的局限性,即存在誤差下限,本研究提取種群大小為50迭代200次的結(jié)果(見圖6)。
圖6 種群分布及誤差變化
由圖6的種群分布可以直觀地看出,遺傳算法初期展示了很強(qiáng)大的性能,第20代時種群大多數(shù)個體都分布在誤差0.01~0.02的位置,但是當(dāng)?shù)?0代的時候誤差的減小速度趨近于0,當(dāng)?shù)?00代時,誤差停留在0.005不能再減小。通過連續(xù)啟動遺傳算法,結(jié)合模型自身的優(yōu)化器+激活函數(shù)才可以使模型在訓(xùn)練集的誤差繼續(xù)減小。這是因?yàn)榉N群的進(jìn)化過程存在一些缺陷(見圖7)。
圖7 種群進(jìn)化過程
遺傳算法通過選擇、交叉、變異來產(chǎn)生更優(yōu)的新一代種群。但從圖7可以看出,種群在進(jìn)化時經(jīng)常會變差或者連續(xù)較多代沒有產(chǎn)生更優(yōu)化的后代,直到達(dá)到一定的迭代次數(shù)后才產(chǎn)生更優(yōu)化的后代。主要原因是隨機(jī)地迭代搜索對全局尋優(yōu)的影響較大。算法初期設(shè)置較大的交叉變異概率可以加速全局尋優(yōu),后期減小概率能得到適應(yīng)度值高的個體。因此,很多學(xué)者會設(shè)置自適應(yīng)交叉變異概率,即設(shè)置一個衰減因子,算法剛開始時設(shè)置一個較大的概率值,隨著迭代的進(jìn)行不斷對概率值進(jìn)行衰減。但是這種方法的穩(wěn)定性較差,因?yàn)榉N群中的個體在進(jìn)化的同時,會產(chǎn)生較差的一代(退化現(xiàn)象),而退化的個體使得衰減的交叉變異概率無法保證算法的收斂,從而使得計(jì)算結(jié)果非常不穩(wěn)定。綜上,未來的研究方向應(yīng)該是著重解決種群個體的退化現(xiàn)象。
在制訂城市未來的供需水調(diào)度計(jì)劃時,需要掌握盡可能準(zhǔn)確的需水量才能合理地分配有限的水資源;因此,能夠準(zhǔn)確地進(jìn)行長期預(yù)測,可為供需水計(jì)劃的制訂提供強(qiáng)有力的支撐。LSTM模型在預(yù)測達(dá)到一定長度時的誤差明顯增大,通過融合先進(jìn)方法依然不能很有效地解決這個問題,主要原因是模型的學(xué)習(xí)能力不夠。本研究提出了基于SGA+DWT的BiLSTM滾動預(yù)測模型SDBiLSTMR,將LSTM由單向變?yōu)殡p向,實(shí)現(xiàn)遺傳算法的自發(fā)式調(diào)用;同時,將DWT引入過濾噪聲,并采用滾動預(yù)測的方式,有效降低了長期預(yù)測的誤差,提高了納什系數(shù),并得出以下結(jié)論:
(1)BiLSTM的學(xué)習(xí)能力比LSTM的學(xué)習(xí)能力更強(qiáng)。
(2)建模中,以矩陣作為數(shù)據(jù)載體可以更加高效地完成迭代。
(3)當(dāng)模型越復(fù)雜參數(shù)越多、訓(xùn)練次數(shù)越多時,GPU展現(xiàn)出強(qiáng)大的并行計(jì)算能力,比CPU的建模時間有較大提升。
(4)SDBiLSTMR模型MSE最小,NSE最大,RE箱圖上限較小、密度集中,預(yù)測曲線變化較小、誤差線較短,比單步預(yù)測的精度更高,泛化能力更強(qiáng),最接近無偏估計(jì)。
(5)遺傳算法的個體在進(jìn)化的同時,也可能存在退化。這將導(dǎo)致算法不穩(wěn)定且有概率出現(xiàn)不收斂的現(xiàn)象,因此解決種群中的退化現(xiàn)象是后續(xù)研究的重點(diǎn)。