袁玉英 羅永剛 孫立云
(1.山東理工大學計算機科學與技術學院,山東 淄博 255000;2.山東理工大學電氣與電子工程學院,山東 淄博 255000)
隨著社會的發展,城市居民用水量在快速增加,水資源短缺問題日益嚴重。因此,對水資源利用進行合理規劃、對供水系統進行優化調度十分必要,作為供水管理前提和基礎的用水量預測也變得越來越重要[1]。
水量預測工作是水資源管理中關乎未來發展趨勢的關鍵。通過建立用水量預測模型,對城鎮規劃期限內的用水量進行合理預測,提前掌握城市用水量情況,做好水資源規劃,對城市的建設和發展具有極其重要的意義。通過預測未來某個時段的用水量,可以預見城市用水是否有缺口,并著手尋找解決方案,以減少經濟損失,因此,根據城市居民用水量的歷史數據預測未來某個時段的用水量,在經濟效益和宏觀調控方面都具有重要意義[2]。本文采用BP神經網絡建立用水量預測模型,收集某個時期城市居民用水量的歷史數據,利用改進的BP算法對城市居民未來3天的日用水量進行預測,并和實際城市居民日用水量數據進行對比分析,證明了該模型的有效性。該模型自適應調整學習率,結合LM算法,引入動量因子,采用自主設計的訓練函數對設計好的網絡進行訓練,提高了用水量預測的準確率,對本地城市居民用水量預測具有一定的參考價值。
BP算法是第一個適合多層網絡的學習算法,由P.Werbos于1974年提出,1986年美國加利福尼的PDP小組在神經網絡的研究中應用了該算法,使得該算法逐步被研究學者接納并重視,如果神經網絡在訓練樣本時采用的是BP算法,則稱該網絡為BP神經網絡[3]。
BP神經網絡由多層神經元組成。圖1是由輸入層、隱層和輸出層組成的典型BP神經網絡模型。網絡中數據傳輸的流向為輸入層到隱層再到輸出層,因此屬于前饋型網絡[4]。

圖1 典型BP神經網絡模型
BP網絡有多種傳遞函數,一般隱層神經元采用非線性傳遞函數,單極性S(Sigmoid)型函數和雙極性S型函數是最常用的非線性傳遞函數;輸出層可以是非線性傳遞函數,有時也可采用線性傳遞函數,根據網絡輸出的取值范圍確定[5]。
確定BP神經網絡結構后,利用訓練樣本訓練網絡,目的是通過學習實現網絡權值的修正,從而在輸入任意值時得到的輸出值最接近期望結果。
BP神經網絡的學習過程分為兩個階段:第一個階段為信號前向計算,在此階段,輸入訓練樣本,由輸入層到隱層再到輸出層得到各神經元的輸出;第二階段為誤差反向傳播,在此階段,神經元的期望輸出和實際輸出產生的誤差由后至前通過改變權值逐層修正,即誤差反傳過程[6]。
“信號前向計算”與“誤差反向傳播”過程反復交替,以實現網絡記憶訓練,直到全局誤差趨于極小值,即達到收斂為止。BP算法也由此而來(誤差反向傳播,Back Propagation),該算法同樣可以在有多個中間層的網絡中應用[7]。標準BP算法的學習規則為誤差梯度下降算法,即按誤差函數梯度下降的方向修正權值。
目前,BP神經網絡的應用越來越廣泛,但BP算法在應用中也暴露出一定的缺陷,如訓練次數多,學習效率低,收斂速度慢;易形成局部極小的情況;預測值與實際值誤差較大等。
針對上述缺陷,本文采用如下方法進行改進:
a.改進學習率參數的調整方法。當網絡誤差E(k)逐漸減小時,尤其減小趨勢明顯時,則按增量因子kinc增大學習率,以使網絡更好地修正權值;當E(k)增加并超過預定值時,按減量因子kdec減小學習率,并在E(k)增加的前一步修正放棄[8],學習率調整公式為

式中:a為學習率。
b.結合LM算法提高收斂速度,減小均方誤差,提高精度。LM算法提出的目的是在二階近似速率下進行修正但避免Hessian矩陣的計算。當采用平方和誤差作為誤差性能函數時,Hessian矩陣的近似表示式為

計算梯度的表達式為

式中:J為雅克比矩陣,其計算比Hessian矩陣更簡單[9];e為網絡的誤差向量。
LM算法的修正采用上述近似Hessian矩陣,修正公式為

變量μ確定學習是根據牛頓法或梯度法來完成的。當μ=0時,上式即為牛頓法;當μ的值很大時,上式變為步長較小的梯度法。
c.引入動量因子η(0<η<1),在保證算法穩定的同時,收斂速度更快,學習時間更短,滿足:

式中:k為迭代次數;x(k)為第k次迭代各層之間的連接權向量或閾值向量;α為學習速率。
由式(5)可知,當前一次修正超過預定值時,?E(k)/?x(k)的符號與?E(k-1)/?x(k-1)的符號相反,可減小本次修正量,以減小振蕩;反之,兩者符號相同,可增大本次修正量。因此,本次修正量的大小會受到前一次修正結果的影響。
在本設計中建立用水量預測模型時,采用三層BP神經網絡:第一層為輸入層,第二層為隱層,第三層為輸出層。本設計選用北方城市某小區2020年6月1—30日的用水量數據作為歷史數據,訓練樣本集的數據為6月1—20日的數據資料,測試樣本集的數據為6月21—27日的數據資料,將每天劃分為12個時段,每2h為一個時段,每個輸入分量對應一個時段,因此輸入層需要12個神經元。對于隱層,采用試湊法確定隱層節點數,先設置較少的隱節點訓練網絡,然后逐漸增加隱節點數,用同一樣本集進行訓練,確定網絡誤差最小時對應的隱節點數即為隱層節點數。在確定試湊法初始值時,采用m=log2n(式中:m為隱層節點數;n為輸入層節點數)經驗公式設置初始值。表1為隱節點數目變化時平均百分比誤差變化的情況。實驗發現,在隱節點數目較少時,網絡性能不穩定,有時會出現平均百分比誤差較大的情況,同時平均百分比誤差總體偏大。綜合考慮網絡的誤差、訓練時間、網絡穩定性及結構等因素后,最終確定隱層節點數為8。對于輸出層,根據過去一段時間的歷史數據,確定為未來3天的用水量,因此,輸出層需要3個神經元。

表1 隱節點數目變化時平均百分比誤差變化的情況
隱層神經元的傳遞函數采用單極性S(Sigmoid)型函數:

輸出層神經元的傳遞函數采用pureline函數。
將北方城市某小區2020年6月1—20日共(20×12)個時段的用水量數據作為訓練數據,6月21—27日(7×12)個時段的用水量數據作為測試數據。該小區為大型綜合小區,其用水特點和一般的純居住類小區不同。以上數據來源于該小區水表總表抄表數據。圖2為該小區2020年6月的分時段用水量曲線。

圖2 某小區2020年6月分時段用水量曲線
由于隱層選取的傳遞函數為S型函數,其輸出范圍為(0,1.0),輸出值為0.5時,導數可達最大,且給定權值的變化與導數相關,所以為避免隱層輸出集中在飽和區域從而使收斂減慢,將訓練數據進行歸一化處理,歸一化公式為

式中:x為待訓練的實際用水量數據,m3;xmax、xmin分別為其最大值和最小值,m3;ymax、ymin分別為期望的最大值和最小值,m3。當x取xmax或xmin時,上式中的ymax取值0.6,ymin取值0.4;對于其他輸入數據,ymax取值1.0,ymin取值0。
圖3為預處理后的待訓練用水量數據。從圖3中可以看出,預處理后的結果在0~1之間變化,但避免為0或1。在利用訓練數據對神經網絡進行訓練時,設置相關訓練參數如下:初始學習速率為0.01,學習率增量因子為0.70,學習率減量因子為1.05,動量因子參數為0.9,μ的初始值為0.001,μ的增量因子為10.0,μ的減量因子為0.1,μ的最大值為1010。對權值和閾值初始值賦隨機數。在設置好相關訓練參數后,采用自主設計的訓練函數trainlmgd對設計好的網絡進行訓練。

圖3 預處理后的待訓練用水量數據
利用6月21—27日(7×12)個時段的用水量數據作為測試數據。經該網絡測試后反歸一化,與6月22—30日的實際日用水量總和進行對比,以平均百分比誤差MAPE作為模型評價指標。平均百分比誤差計算公式為

表2為總平均百分比誤差為0.0657時,6月21—27日預測的未來3天的日用水量數據與真實數據的對比情況。

表2 未來3天日用水量預測值與實際值比較
從表2可以看出,除個別數據外,利用建立的用水量預測模型可以較好地預測未來3天的日用水量數據,預測結果滿足精度要求,模型精度較高。
另外,通過實驗發現,采用傳統的BP算法和學習率可變的動量BP算法建立的用水量預測模型在進行預測時,每次輪訓都是在達到最大訓練次數10000次時結束,很顯然達不到預測效果。而采用本設計中改進的BP算法與LM算法時,在訓練次數為100次附近時,就可達到1×10-12的性能指標。
圖4為采用本設計中改進的BP算法與LM算法建立用水量預測模型時所得結果的對比情況。

圖4 改進的BP算法與LM算法預測結果的對比情況
另外,輸入層神經元數目對預測結果也有很大影響。如果輸入層神經元取24個,即每1h為一個時段,這時隱層神經元數再取8,將使預測平均百分比誤差較大,因此仍采用試湊法確定隱層神經元數為14。圖5為輸入層神經元數分別為24個和12個時的10次輪訓所得平均百分比誤差。由圖5可知,前者誤差明顯小于后者,這說明對某一段時間內的數據劃分越細,預測結果越準確。

圖5 輸入層神經元數變化時預測誤差的比較
建立三層BP神經網絡,通過實驗對比,確定每層神經元數分別為12、8、3,有效簡化了部分網絡結構。基于改進的BP算法建立用水量預測模型,自適應調整學習率,結合LM算法提高收斂速度,同時引入動量因子,自主設計訓練函數對設計好的網絡進行訓練。采用北方城市某小區的樣本數據進行訓練,測試后預測精度達到要求。實驗表明,該用水量預測模型與采用標準BP算法的模型相比,訓練次數少,訓練誤差小,訓練精度高,收斂速度快,網絡穩定。鑒于樣本數量的限制,如果增大樣本數量,預測精度將會更高。■