王建輝,冉金鑫,沈瑩瑩,韓振中,崔遠來,羅玉峰
(1.武漢大學水資源與水電工程科學國家重點實驗室,武漢430072;2.中國灌溉排水發(fā)展中心,北京100054)
農(nóng)業(yè)水資源管理是區(qū)域水資源優(yōu)化配置的重要環(huán)節(jié),而合理配置農(nóng)業(yè)水資源的前提是需要對農(nóng)業(yè)灌溉用水量進行精確預(yù)測[1]。從機理層面看,農(nóng)業(yè)灌溉用水量受區(qū)域降水量、蒸散量、灌溉面積、灌溉水利用系數(shù)等因素的影響,從宏觀層面看,農(nóng)業(yè)灌水量與區(qū)域水資源可利用數(shù)量、灌溉工程建設(shè)水平、農(nóng)業(yè)結(jié)構(gòu)調(diào)整和灌溉管理水平等諸多因素也存在著密不可分的聯(lián)系[2]。因此農(nóng)業(yè)灌水量的變化趨勢既存在著可預(yù)見的規(guī)律性,又存在著一定的不確定性。要實現(xiàn)對其精確地預(yù)測,需要一種既能從機理層面解釋,又能在高維非線性關(guān)系中找尋最優(yōu)解的方法。人工神經(jīng)網(wǎng)絡(luò)模型便是一個比較合適的方法。
近些年國內(nèi)外學者對神經(jīng)網(wǎng)絡(luò)應(yīng)用于灌溉用水量預(yù)測做了許多探索性研究。徐建新[3]等提出BP 神經(jīng)網(wǎng)絡(luò)灌區(qū)灌水量預(yù)測模型,考慮了灌溉面積、年降雨量以及糧食產(chǎn)量對灌溉用水量的影響;方旭[4]等利用BP 神經(jīng)網(wǎng)絡(luò)模型,對遼寧錦州市為實例進行了灌水量預(yù)測,結(jié)果滿足規(guī)范要求;張藝聰[5]利用BP神經(jīng)網(wǎng)絡(luò)模型鄭州市農(nóng)業(yè)灌溉用水量進行預(yù)測,預(yù)測精度較好。但這類方法采用傳統(tǒng)神經(jīng)網(wǎng)絡(luò)模型算法,存在參數(shù)的初始值得不到優(yōu)化、收斂速度慢等問題。遲道才[6]等在人工神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)上引入灰色預(yù)測方法,二者結(jié)合成并聯(lián)型灰色神經(jīng)網(wǎng)絡(luò)預(yù)測方法。儲誠山[7]等、嚴旭[8]等相繼提出了基于遺傳算法的BP 神經(jīng)網(wǎng)絡(luò)用水量預(yù)測模型,有效地提高了BP 神經(jīng)網(wǎng)絡(luò)的預(yù)測精度。Zhang[9]等通過非線性協(xié)整理論與小波神經(jīng)網(wǎng)絡(luò)相結(jié)合的方法,建立了灌溉水量小波非線性協(xié)整預(yù)測模型。但這類研究仍存在許多不足:并聯(lián)型灰色神經(jīng)網(wǎng)絡(luò)和小波非線性協(xié)整預(yù)測模型只在中長期灌水預(yù)測中表現(xiàn)較好,在短期灌水預(yù)測中誤差較大;單一遺傳算法不能解決學習率固定導(dǎo)致的收斂速度緩慢問題。本文從原理角度分析了傳統(tǒng)BP 神經(jīng)網(wǎng)絡(luò)在訓(xùn)練過程中存在的弊端,引入了GA 和Adam 兩種優(yōu)化算法,以黃河流域隴中片灌溉分區(qū)內(nèi)7 個典型灌區(qū)的實測灌水數(shù)據(jù)為例,對GA-Adam-BP神經(jīng)網(wǎng)絡(luò)的性能進行了分析。
BP 神經(jīng)網(wǎng)絡(luò)是一種按誤差逆?zhèn)鞑ニ惴ㄓ?xùn)練的多層前饋網(wǎng)絡(luò)。模型運行過程包括正向傳播和誤差反向傳播兩部分。以3層BP 神經(jīng)網(wǎng)絡(luò)為例,如圖1所示。首先,樣本數(shù)據(jù)通過加權(quán)計算后,經(jīng)過輸入層、隱藏層以及輸出層,然后通過激活函數(shù),計算出網(wǎng)絡(luò)輸出值;最后將輸出值從輸出層到輸入層反向遍歷所有層,確定輸出層與樣本輸出期望值之間的損失函數(shù)。當網(wǎng)絡(luò)誤差達到一定精度要求時,網(wǎng)絡(luò)便訓(xùn)練成功[10]。
圖1 3層BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.1 3-layer BP neural network structure diagram
在誤差反向傳播的過程中,梯度下降法(GD)是最原始的調(diào)整損失函數(shù)參數(shù)的方法。GD 法的原理是:當誤差沒有達到預(yù)設(shè)精度,將損失函數(shù)分別對權(quán)重w和閾值b進行求導(dǎo),求得損失函數(shù)對應(yīng)不同參數(shù)下的梯度dw和db,然后沿著負梯度方向進行迭代,就可以收斂到損失函數(shù)最小值[11]。迭代公式為:
式中:wt、bt是調(diào)整后的權(quán)值和閾值,wt-1、bt-1是待訓(xùn)練的權(quán)值和閾值,α是學習率,dw、db是梯度。
傳統(tǒng)GD法存在著以下兩個問題:
(1)參數(shù)的初始值選擇問題。初始權(quán)值w和閾值b一般是模型設(shè)計者給出的參數(shù),初始值選擇不同,獲得的最小值也有可能不同。因此GD 法求得的結(jié)果從理論上看只是局部最小值,除非損失函數(shù)是凸函數(shù)。因此傳統(tǒng)GD 法存在著局部最優(yōu)解而非全局最優(yōu)解的風險,需要多次用不同初始值運行算法,選擇損失函數(shù)最小化的初值。
(2)學習步長的選擇問題。學習率α指定了反向傳播過程中梯度下降的步長,在GD 法中,學習率α從始至終是固定不變的,學習率太小會導(dǎo)致收斂速度過慢,而學習率太大會阻礙收斂,同時還會導(dǎo)致?lián)p失函數(shù)在極小值周圍波動甚至背離。因此選擇合適的學習率變得尤為重要。
遺傳算法(GA)是一種并行隨機搜索最優(yōu)化方法。其基本要素包括:染色體編碼、適應(yīng)度函數(shù)、遺傳操作和運行參數(shù)[12]。在本文中使用的編碼方法為實數(shù)編碼,每個個體均為一個實數(shù)串,由輸入層與隱含層連接權(quán)值、隱含層閾值、隱含層與輸出層連接權(quán)值以及輸出層閾值共4 部分組成。由于個體包含了神經(jīng)網(wǎng)絡(luò)全部權(quán)值和閾值,因此在網(wǎng)絡(luò)結(jié)構(gòu)已知的情況下,就可以構(gòu)成一個確定的神經(jīng)網(wǎng)絡(luò)。適應(yīng)度函數(shù)F為預(yù)測輸出和期望輸出之間的誤差絕對值和,函數(shù)表達式為:
式中:k為系數(shù);Ti為期望輸出值;為預(yù)測輸出值。
然后通過GA 法中選擇、交叉和變異操作找到最小適應(yīng)度值對應(yīng)個體,從全局得到最優(yōu)個體對網(wǎng)絡(luò)初始權(quán)值w和閾值b的賦值。因此引入GA 法可以實現(xiàn)對初始權(quán)值和閾值的預(yù)篩選,同時還可解決傳統(tǒng)GD 法存在著局部最優(yōu)解而非全局最優(yōu)解的缺點。
Adam 算法來源于適應(yīng)性矩估計(Adaptive Moment Estimation),是一種使用動量和自適應(yīng)學習率來加快收斂速度的優(yōu)化算法[13]。引入動量因子是為了抑制GD 法在收斂過程中的震蕩作用。與GD 法相比,Adam 算法不直接使用梯度,而是用各個時刻梯度的指數(shù)移動平均值來代替GD 法中的梯度,也即是梯度的一階矩估計,其表達式為:
式中:mt-1、mt分別為迭代前、迭代后的一階矩估計;β1為指數(shù)加權(quán)平均參數(shù);dk代表權(quán)值w或閾值b的梯度。
自適應(yīng)學習率算法實質(zhì)上是采用了梯度的二階矩估計[14]。二階矩估計表達式為:
式中:vt-1、vt分別為迭代前、迭代后的二階矩估計;β2為指數(shù)加權(quán)平均參數(shù);dk2代表權(quán)值w或閾值b的梯度平方。
將上述一階動量mt、二階動量vt結(jié)合在一起,對權(quán)值和閾值進行更新,表達式如下:
式中:wt、bt為調(diào)整后的權(quán)值和閾值;wt-1、bt-1為待訓(xùn)練的權(quán)值和閾值;α為學習率;δ為常數(shù)。
由式(6)和(7)可看出,Adam 算法利用一階矩估計mt代替GD 法的梯度,從而控制權(quán)值或閾值的調(diào)整方向;利用二階矩估計vt調(diào)整學習率的大小,讓學習速率自適應(yīng)于梯度變化,從而解決GD法難以選擇學習率和影響模型收斂的問題。
本文將GA 算法和Adam 算法同時應(yīng)用到BP 神經(jīng)網(wǎng)絡(luò)的農(nóng)業(yè)灌水量預(yù)測模型中,算法流程圖如圖2所示。
圖2 GA-Adam-BP神經(jīng)網(wǎng)絡(luò)流程圖Fig.2 GA-Adam-BP neural network flow chart
樣本數(shù)據(jù)為黃河流域隴中片灌溉分區(qū)內(nèi)典型灌區(qū)的氣象資料和作物實測灌水資料。典型灌區(qū)包括:興電灌區(qū)、賈崖張井五家溝灌區(qū)、發(fā)源灌區(qū)、菜子口灌區(qū)、灃泰渠灌區(qū)、永固渠灌區(qū)、馬寨南井灌區(qū)等7個灌區(qū)。樣本數(shù)據(jù)主要包括:
(1)氣象資料。氣象資料包括典型灌區(qū)對應(yīng)7 個氣象站點的2015年1月1日-2018年12月31日的逐日氣象數(shù)據(jù),數(shù)據(jù)來源于中國氣象數(shù)據(jù)網(wǎng)(http://data.cma.cn/)。
(2)實測灌水資料。7 個典型灌區(qū)的玉米實測灌水資料(2015-2018年)。利用氣象資料整理月降雨量,月ET0等因素作為模型輸入層,從水量平衡機理層面解釋農(nóng)業(yè)灌水量的變化趨勢;同時加入時間序列因子,增強模型的短期預(yù)測能力。以7個典型灌區(qū)2015-2017年的數(shù)據(jù)作為模型的訓(xùn)練集,2018年的數(shù)據(jù)作為測試集。表1 為興電灌區(qū)的訓(xùn)練集與測試集數(shù)據(jù)示例。由于灌區(qū)實測灌水數(shù)據(jù)不全,有些年份和月份的實測灌水量是空值,將空值日期剔除后,共計64 組訓(xùn)練數(shù)據(jù),14 組測試數(shù)據(jù)。
表1 興電灌區(qū)訓(xùn)練集與測試集數(shù)據(jù)Tab.1 Xingdian Irrigation Area training samples and test samples
(1)BP神經(jīng)網(wǎng)絡(luò)參數(shù)設(shè)置。以樣點數(shù)據(jù)中月ET0、月降雨以及月份序列作為模型的輸入層,輸入節(jié)點為3。月灌溉定額作為模型的輸出層,輸出節(jié)點為1。從理論來看,當BP 網(wǎng)絡(luò)結(jié)構(gòu)為3 層時,可以無限趨近于任何有理函數(shù)??紤]本模型輸入層節(jié)點數(shù)并不多,設(shè)置過多隱含層數(shù)容易導(dǎo)致過擬合現(xiàn)象。因此,將隱含層數(shù)設(shè)為1,隱含層節(jié)點數(shù)設(shè)為12。初始權(quán)重w和閾值b均設(shè)為0.5,訓(xùn)練結(jié)束次數(shù)設(shè)為5 000。
(2)GA 和Adam 算法參數(shù)設(shè)置。GA 法參數(shù)設(shè)置:種群規(guī)模為10,進化次數(shù)為50 次,交叉概率為0.4,變異概率為0.2。Adam 算法參數(shù)設(shè)置為:初始學習率α設(shè)為0.001,一階矩、二階矩估計的指數(shù)加權(quán)平均參數(shù)β1和β2分別設(shè)為0.9 和0.999,δ取值為10×10-8。
本文分別使用GD算法、GA算法、Adam算法以及GA-Adam算法對BP 神經(jīng)網(wǎng)絡(luò)進行訓(xùn)練,共建立4 種農(nóng)業(yè)灌水量預(yù)測模型,模型參數(shù)設(shè)置保持一致,以此檢驗GA-Adam 優(yōu)化算法性能的好壞。
圖3 為4 種算法在實際訓(xùn)練過程損失函數(shù)變化圖。對比4種模型誤差收斂速度,其中GA 法無法在指定訓(xùn)練次數(shù)達到預(yù)設(shè)精度,在訓(xùn)練次數(shù)達到5 000次仍未達到預(yù)設(shè)精度。由圖3可看出,訓(xùn)練次數(shù)達到1 400 次左右時,GD 法的損失函數(shù)基本收斂在0.022 5附近,這說明傳統(tǒng)BP神經(jīng)網(wǎng)絡(luò)模型學習能力不夠,未能捕捉到樣本數(shù)據(jù)集的特征信息;GA 法可以改進傳統(tǒng)梯度下降法收斂速度慢的缺點,在訓(xùn)練次數(shù)達到1 084 次時,損失函數(shù)值降為0.001,達到預(yù)設(shè)訓(xùn)練精度;Adam 法能夠快速收斂,在訓(xùn)練93 次時達到預(yù)設(shè)精度。GA-Adam 法所需訓(xùn)練次數(shù)最少,在訓(xùn)練67次時達到預(yù)設(shè)精度。
圖3 不同算法的損失函數(shù)變化圖Fig.3 Variation diagram of loss function of different algorithms
圖4 是4 種算法的訓(xùn)練時長對比圖。GD 法在訓(xùn)練過程中速度基本保持恒定,這可能是因為GD 法保持恒定學習率進行訓(xùn)練導(dǎo)致的結(jié)果。GD 法在預(yù)設(shè)5 000 次訓(xùn)練次數(shù)的限制下,用時3.926 s,而其損失函數(shù)在第1400 次訓(xùn)練次數(shù)時基本達到收斂,此時訓(xùn)練時長為1.113 s,同比其他算法依舊用時最多;GA法在訓(xùn)練末期速度加快,總訓(xùn)練時長達到0.966 s;Adam 法和GA-Adam 法在10 次訓(xùn)練次數(shù)以內(nèi),訓(xùn)練速度均較為緩慢,隨后逐漸加快,在訓(xùn)練末期速度減慢??傆?xùn)練時長達到0.528 s 和0.403 s。
圖4 不同算法的訓(xùn)練時長對比圖Fig.4 Comparison of training duration of different algorithms
因此,結(jié)合訓(xùn)練精度和時長來看,GA-Adam法最為高效,僅在訓(xùn)練次數(shù)為67 次,訓(xùn)練時長為0.403 s 時就達到模型預(yù)設(shè)精度。
圖5 為4 種算法模型預(yù)測值與期望值的對比圖。從圖5 中可看出,GD 法和GA 法的預(yù)測值曲線變化趨勢與實測值的變化趨勢大致一致,除了個別與測試樣本數(shù)據(jù)相差較大,例如GD 法與測試樣本序列第3、6、9、11 的誤差較大,GA 法與測試樣本序列2、4、7、9 的誤差較大??傮w來看GD 法和GA 法的預(yù)測值與實測值之間的擬合情況一般。GD 法預(yù)測效果更差,GA 法相對較好。Adam 法和GA-Adam 法的預(yù)測值擬合效果較好,預(yù)測值曲線均大致分布在實測值附近,該兩種方法較GD 和GA 法來看明顯更優(yōu)。
圖5 不同算法模型預(yù)測值與實測值的對比圖Fig.5 Comparison between predicted and measured values of different algorithm models
為了定性分析二者的優(yōu)劣性,進行4 種算法預(yù)測值與實測值的回歸分析。圖6為預(yù)測值與實測值的回歸分析圖。采用均方根誤差RMSE)、平均絕對誤差MAE和決定系數(shù)R2等統(tǒng)計指標對預(yù)測值進行精度評價。均方根誤差RMSE、平均絕對誤差MAE越小,決定系數(shù)越接近1,預(yù)測值和實際值越接近,預(yù)測效果越好。表2 為4 種算法模型預(yù)測誤差表。由表1 和圖6 可看出,隨著算法的改進,4種算法的均方根誤差和平均絕對誤差逐漸減小,預(yù)測誤差從大到小的算法依次是GD 法、GA 法、Adam法、GA-Adam 法,GA-Adam 法的RMSE和MAE分別為54.73 和47.76。從決定系數(shù)R2來看,從大到小順序為GA-Adam 法、Adam法、GA法、GD法,其中GA-Adam 法的R2為0.81,最接近于1。綜上所述,不論從模型訓(xùn)練速度還是從預(yù)測結(jié)果精度來看,均是GA-Adam法為最佳優(yōu)化算法。
表2 不同算法模型預(yù)測誤差表Tab.2 Prediction error table of different algorithm models
圖6 不同算法模型預(yù)測值與實測值的對比圖Fig.6 Comparison between predicted and measured values of different algorithm models
GA-Adam算法在訓(xùn)練過程中表現(xiàn)出極高的精度,同時收斂速度最快,僅在訓(xùn)練次數(shù)為67 次,訓(xùn)練時長為0.403 s 時便達到預(yù)設(shè)精度;在模型測試誤差分析中,GA-Adam 模型預(yù)測值與期望值的RMSE和MAE分別為54.73和47.76,決定系數(shù)R2為0.81,同樣是GA-Adam 算法預(yù)測精度最好。綜上所述,本文基于GA-Adam 優(yōu)化算法的BP 神經(jīng)網(wǎng)絡(luò)農(nóng)業(yè)灌水量預(yù)測模型,在農(nóng)業(yè)灌水量預(yù)測方面有較高的可靠性和較好的應(yīng)用性。□