袁玉英 羅永剛 孫立云
(1.山東理工大學(xué)計算機科學(xué)與技術(shù)學(xué)院,山東 淄博 255000;2.山東理工大學(xué)電氣與電子工程學(xué)院,山東 淄博 255000)
隨著社會的發(fā)展,城市居民用水量在快速增加,水資源短缺問題日益嚴(yán)重。因此,對水資源利用進行合理規(guī)劃、對供水系統(tǒng)進行優(yōu)化調(diào)度十分必要,作為供水管理前提和基礎(chǔ)的用水量預(yù)測也變得越來越重要[1]。
水量預(yù)測工作是水資源管理中關(guān)乎未來發(fā)展趨勢的關(guān)鍵。通過建立用水量預(yù)測模型,對城鎮(zhèn)規(guī)劃期限內(nèi)的用水量進行合理預(yù)測,提前掌握城市用水量情況,做好水資源規(guī)劃,對城市的建設(shè)和發(fā)展具有極其重要的意義。通過預(yù)測未來某個時段的用水量,可以預(yù)見城市用水是否有缺口,并著手尋找解決方案,以減少經(jīng)濟損失,因此,根據(jù)城市居民用水量的歷史數(shù)據(jù)預(yù)測未來某個時段的用水量,在經(jīng)濟效益和宏觀調(diào)控方面都具有重要意義[2]。本文采用BP神經(jīng)網(wǎng)絡(luò)建立用水量預(yù)測模型,收集某個時期城市居民用水量的歷史數(shù)據(jù),利用改進的BP算法對城市居民未來3天的日用水量進行預(yù)測,并和實際城市居民日用水量數(shù)據(jù)進行對比分析,證明了該模型的有效性。該模型自適應(yīng)調(diào)整學(xué)習(xí)率,結(jié)合LM算法,引入動量因子,采用自主設(shè)計的訓(xùn)練函數(shù)對設(shè)計好的網(wǎng)絡(luò)進行訓(xùn)練,提高了用水量預(yù)測的準(zhǔn)確率,對本地城市居民用水量預(yù)測具有一定的參考價值。
BP算法是第一個適合多層網(wǎng)絡(luò)的學(xué)習(xí)算法,由P.Werbos于1974年提出,1986年美國加利福尼的PDP小組在神經(jīng)網(wǎng)絡(luò)的研究中應(yīng)用了該算法,使得該算法逐步被研究學(xué)者接納并重視,如果神經(jīng)網(wǎng)絡(luò)在訓(xùn)練樣本時采用的是BP算法,則稱該網(wǎng)絡(luò)為BP神經(jīng)網(wǎng)絡(luò)[3]。
BP神經(jīng)網(wǎng)絡(luò)由多層神經(jīng)元組成。圖1是由輸入層、隱層和輸出層組成的典型BP神經(jīng)網(wǎng)絡(luò)模型。網(wǎng)絡(luò)中數(shù)據(jù)傳輸?shù)牧飨驗檩斎雽拥诫[層再到輸出層,因此屬于前饋型網(wǎng)絡(luò)[4]。
圖1 典型BP神經(jīng)網(wǎng)絡(luò)模型
BP網(wǎng)絡(luò)有多種傳遞函數(shù),一般隱層神經(jīng)元采用非線性傳遞函數(shù),單極性S(Sigmoid)型函數(shù)和雙極性S型函數(shù)是最常用的非線性傳遞函數(shù);輸出層可以是非線性傳遞函數(shù),有時也可采用線性傳遞函數(shù),根據(jù)網(wǎng)絡(luò)輸出的取值范圍確定[5]。
確定BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)后,利用訓(xùn)練樣本訓(xùn)練網(wǎng)絡(luò),目的是通過學(xué)習(xí)實現(xiàn)網(wǎng)絡(luò)權(quán)值的修正,從而在輸入任意值時得到的輸出值最接近期望結(jié)果。
BP神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)過程分為兩個階段:第一個階段為信號前向計算,在此階段,輸入訓(xùn)練樣本,由輸入層到隱層再到輸出層得到各神經(jīng)元的輸出;第二階段為誤差反向傳播,在此階段,神經(jīng)元的期望輸出和實際輸出產(chǎn)生的誤差由后至前通過改變權(quán)值逐層修正,即誤差反傳過程[6]。
“信號前向計算”與“誤差反向傳播”過程反復(fù)交替,以實現(xiàn)網(wǎng)絡(luò)記憶訓(xùn)練,直到全局誤差趨于極小值,即達(dá)到收斂為止。BP算法也由此而來(誤差反向傳播,Back Propagation),該算法同樣可以在有多個中間層的網(wǎng)絡(luò)中應(yīng)用[7]。標(biāo)準(zhǔn)BP算法的學(xué)習(xí)規(guī)則為誤差梯度下降算法,即按誤差函數(shù)梯度下降的方向修正權(quán)值。
目前,BP神經(jīng)網(wǎng)絡(luò)的應(yīng)用越來越廣泛,但BP算法在應(yīng)用中也暴露出一定的缺陷,如訓(xùn)練次數(shù)多,學(xué)習(xí)效率低,收斂速度慢;易形成局部極小的情況;預(yù)測值與實際值誤差較大等。
針對上述缺陷,本文采用如下方法進行改進:
a.改進學(xué)習(xí)率參數(shù)的調(diào)整方法。當(dāng)網(wǎng)絡(luò)誤差E(k)逐漸減小時,尤其減小趨勢明顯時,則按增量因子kinc增大學(xué)習(xí)率,以使網(wǎng)絡(luò)更好地修正權(quán)值;當(dāng)E(k)增加并超過預(yù)定值時,按減量因子kdec減小學(xué)習(xí)率,并在E(k)增加的前一步修正放棄[8],學(xué)習(xí)率調(diào)整公式為
式中:a為學(xué)習(xí)率。
b.結(jié)合LM算法提高收斂速度,減小均方誤差,提高精度。LM算法提出的目的是在二階近似速率下進行修正但避免Hessian矩陣的計算。當(dāng)采用平方和誤差作為誤差性能函數(shù)時,Hessian矩陣的近似表示式為
計算梯度的表達(dá)式為
式中:J為雅克比矩陣,其計算比Hessian矩陣更簡單[9];e為網(wǎng)絡(luò)的誤差向量。
LM算法的修正采用上述近似Hessian矩陣,修正公式為
變量μ確定學(xué)習(xí)是根據(jù)牛頓法或梯度法來完成的。當(dāng)μ=0時,上式即為牛頓法;當(dāng)μ的值很大時,上式變?yōu)椴介L較小的梯度法。
c.引入動量因子η(0<η<1),在保證算法穩(wěn)定的同時,收斂速度更快,學(xué)習(xí)時間更短,滿足:
式中:k為迭代次數(shù);x(k)為第k次迭代各層之間的連接權(quán)向量或閾值向量;α為學(xué)習(xí)速率。
由式(5)可知,當(dāng)前一次修正超過預(yù)定值時,?E(k)/?x(k)的符號與?E(k-1)/?x(k-1)的符號相反,可減小本次修正量,以減小振蕩;反之,兩者符號相同,可增大本次修正量。因此,本次修正量的大小會受到前一次修正結(jié)果的影響。
在本設(shè)計中建立用水量預(yù)測模型時,采用三層BP神經(jīng)網(wǎng)絡(luò):第一層為輸入層,第二層為隱層,第三層為輸出層。本設(shè)計選用北方城市某小區(qū)2020年6月1—30日的用水量數(shù)據(jù)作為歷史數(shù)據(jù),訓(xùn)練樣本集的數(shù)據(jù)為6月1—20日的數(shù)據(jù)資料,測試樣本集的數(shù)據(jù)為6月21—27日的數(shù)據(jù)資料,將每天劃分為12個時段,每2h為一個時段,每個輸入分量對應(yīng)一個時段,因此輸入層需要12個神經(jīng)元。對于隱層,采用試湊法確定隱層節(jié)點數(shù),先設(shè)置較少的隱節(jié)點訓(xùn)練網(wǎng)絡(luò),然后逐漸增加隱節(jié)點數(shù),用同一樣本集進行訓(xùn)練,確定網(wǎng)絡(luò)誤差最小時對應(yīng)的隱節(jié)點數(shù)即為隱層節(jié)點數(shù)。在確定試湊法初始值時,采用m=log2n(式中:m為隱層節(jié)點數(shù);n為輸入層節(jié)點數(shù))經(jīng)驗公式設(shè)置初始值。表1為隱節(jié)點數(shù)目變化時平均百分比誤差變化的情況。實驗發(fā)現(xiàn),在隱節(jié)點數(shù)目較少時,網(wǎng)絡(luò)性能不穩(wěn)定,有時會出現(xiàn)平均百分比誤差較大的情況,同時平均百分比誤差總體偏大。綜合考慮網(wǎng)絡(luò)的誤差、訓(xùn)練時間、網(wǎng)絡(luò)穩(wěn)定性及結(jié)構(gòu)等因素后,最終確定隱層節(jié)點數(shù)為8。對于輸出層,根據(jù)過去一段時間的歷史數(shù)據(jù),確定為未來3天的用水量,因此,輸出層需要3個神經(jīng)元。
表1 隱節(jié)點數(shù)目變化時平均百分比誤差變化的情況
隱層神經(jīng)元的傳遞函數(shù)采用單極性S(Sigmoid)型函數(shù):
輸出層神經(jīng)元的傳遞函數(shù)采用pureline函數(shù)。
將北方城市某小區(qū)2020年6月1—20日共(20×12)個時段的用水量數(shù)據(jù)作為訓(xùn)練數(shù)據(jù),6月21—27日(7×12)個時段的用水量數(shù)據(jù)作為測試數(shù)據(jù)。該小區(qū)為大型綜合小區(qū),其用水特點和一般的純居住類小區(qū)不同。以上數(shù)據(jù)來源于該小區(qū)水表總表抄表數(shù)據(jù)。圖2為該小區(qū)2020年6月的分時段用水量曲線。
圖2 某小區(qū)2020年6月分時段用水量曲線
由于隱層選取的傳遞函數(shù)為S型函數(shù),其輸出范圍為(0,1.0),輸出值為0.5時,導(dǎo)數(shù)可達(dá)最大,且給定權(quán)值的變化與導(dǎo)數(shù)相關(guān),所以為避免隱層輸出集中在飽和區(qū)域從而使收斂減慢,將訓(xùn)練數(shù)據(jù)進行歸一化處理,歸一化公式為
式中:x為待訓(xùn)練的實際用水量數(shù)據(jù),m3;xmax、xmin分別為其最大值和最小值,m3;ymax、ymin分別為期望的最大值和最小值,m3。當(dāng)x取xmax或xmin時,上式中的ymax取值0.6,ymin取值0.4;對于其他輸入數(shù)據(jù),ymax取值1.0,ymin取值0。
圖3為預(yù)處理后的待訓(xùn)練用水量數(shù)據(jù)。從圖3中可以看出,預(yù)處理后的結(jié)果在0~1之間變化,但避免為0或1。在利用訓(xùn)練數(shù)據(jù)對神經(jīng)網(wǎng)絡(luò)進行訓(xùn)練時,設(shè)置相關(guān)訓(xùn)練參數(shù)如下:初始學(xué)習(xí)速率為0.01,學(xué)習(xí)率增量因子為0.70,學(xué)習(xí)率減量因子為1.05,動量因子參數(shù)為0.9,μ的初始值為0.001,μ的增量因子為10.0,μ的減量因子為0.1,μ的最大值為1010。對權(quán)值和閾值初始值賦隨機數(shù)。在設(shè)置好相關(guān)訓(xùn)練參數(shù)后,采用自主設(shè)計的訓(xùn)練函數(shù)trainlmgd對設(shè)計好的網(wǎng)絡(luò)進行訓(xùn)練。
圖3 預(yù)處理后的待訓(xùn)練用水量數(shù)據(jù)
利用6月21—27日(7×12)個時段的用水量數(shù)據(jù)作為測試數(shù)據(jù)。經(jīng)該網(wǎng)絡(luò)測試后反歸一化,與6月22—30日的實際日用水量總和進行對比,以平均百分比誤差MAPE作為模型評價指標(biāo)。平均百分比誤差計算公式為
表2為總平均百分比誤差為0.0657時,6月21—27日預(yù)測的未來3天的日用水量數(shù)據(jù)與真實數(shù)據(jù)的對比情況。
表2 未來3天日用水量預(yù)測值與實際值比較
從表2可以看出,除個別數(shù)據(jù)外,利用建立的用水量預(yù)測模型可以較好地預(yù)測未來3天的日用水量數(shù)據(jù),預(yù)測結(jié)果滿足精度要求,模型精度較高。
另外,通過實驗發(fā)現(xiàn),采用傳統(tǒng)的BP算法和學(xué)習(xí)率可變的動量BP算法建立的用水量預(yù)測模型在進行預(yù)測時,每次輪訓(xùn)都是在達(dá)到最大訓(xùn)練次數(shù)10000次時結(jié)束,很顯然達(dá)不到預(yù)測效果。而采用本設(shè)計中改進的BP算法與LM算法時,在訓(xùn)練次數(shù)為100次附近時,就可達(dá)到1×10-12的性能指標(biāo)。
圖4為采用本設(shè)計中改進的BP算法與LM算法建立用水量預(yù)測模型時所得結(jié)果的對比情況。
圖4 改進的BP算法與LM算法預(yù)測結(jié)果的對比情況
另外,輸入層神經(jīng)元數(shù)目對預(yù)測結(jié)果也有很大影響。如果輸入層神經(jīng)元取24個,即每1h為一個時段,這時隱層神經(jīng)元數(shù)再取8,將使預(yù)測平均百分比誤差較大,因此仍采用試湊法確定隱層神經(jīng)元數(shù)為14。圖5為輸入層神經(jīng)元數(shù)分別為24個和12個時的10次輪訓(xùn)所得平均百分比誤差。由圖5可知,前者誤差明顯小于后者,這說明對某一段時間內(nèi)的數(shù)據(jù)劃分越細(xì),預(yù)測結(jié)果越準(zhǔn)確。
圖5 輸入層神經(jīng)元數(shù)變化時預(yù)測誤差的比較
建立三層BP神經(jīng)網(wǎng)絡(luò),通過實驗對比,確定每層神經(jīng)元數(shù)分別為12、8、3,有效簡化了部分網(wǎng)絡(luò)結(jié)構(gòu)?;诟倪M的BP算法建立用水量預(yù)測模型,自適應(yīng)調(diào)整學(xué)習(xí)率,結(jié)合LM算法提高收斂速度,同時引入動量因子,自主設(shè)計訓(xùn)練函數(shù)對設(shè)計好的網(wǎng)絡(luò)進行訓(xùn)練。采用北方城市某小區(qū)的樣本數(shù)據(jù)進行訓(xùn)練,測試后預(yù)測精度達(dá)到要求。實驗表明,該用水量預(yù)測模型與采用標(biāo)準(zhǔn)BP算法的模型相比,訓(xùn)練次數(shù)少,訓(xùn)練誤差小,訓(xùn)練精度高,收斂速度快,網(wǎng)絡(luò)穩(wěn)定。鑒于樣本數(shù)量的限制,如果增大樣本數(shù)量,預(yù)測精度將會更高?!?/p>