宗宸生,鄭煥霞,王林山
1(中國海洋大學 數(shù)學科學學院,青島 266100)
2(山東省聊城市東昌府區(qū)鄭家中學,聊城 252053)
由于農(nóng)業(yè)是國民經(jīng)濟的基礎,而糧食是基礎的基礎.糧食不僅是人民群眾最基本的生活資料,也是關系到國家安全的重要戰(zhàn)略物資,我國是人口眾多的大國,解決好吃飯問題始終是治國理政的頭等大事[1].因此分析預測我國糧食生產(chǎn)過程的變化規(guī)律及其發(fā)展趨勢,為實施糧食生產(chǎn)過程的預測和決策、保證國家糧食安全提供理論依據(jù),具有重要的現(xiàn)實意義.
目前有多種糧食產(chǎn)量的預測方法[2–5],例如姚作芳等建立的馬爾可夫方法修正的灰色糧食預測模型,這種方法簡便易行,需要數(shù)據(jù)少,可以用于預測糧食產(chǎn)量的變化趨勢.然而,還需要進一步提高預測精度.另外,還有基于線性方法的多元線性回歸、時間序列分析等糧食預測模型.由于,糧食產(chǎn)量與其多種影響因素之間存在著復雜的非線性依賴關系,具有不確定性和突變性,往往線性模型難以適用較長時期預測且預測精度不高.而人工神經(jīng)網(wǎng)絡模型具有非線性映射能力,以及較強的魯棒性和容錯性[6],因此已被廣泛的應用于糧食產(chǎn)量預測問題[7–9].例如吳炎將時間序列分析法和BP神經(jīng)網(wǎng)絡相結(jié)合,建立了江蘇省糧食產(chǎn)量預測模型.這種方法較好的解決了神經(jīng)網(wǎng)絡收斂慢,但是仍需要改進易于陷入局部極小值的問題.另一方面,由于該方法只是利用糧食產(chǎn)量的數(shù)據(jù)建立模型,沒有考慮影響糧食產(chǎn)量的其他因素,因而預測精度有待于進一步提高.且當前的研究大多沒有基于糧食產(chǎn)量預測問題為小樣本問題這一事實來改進預測模型.BP神經(jīng)網(wǎng)絡由于基于梯度的算法,存在如低的收斂速度且易陷入局部極小點,網(wǎng)絡訓練時對初始連接權(quán)值和閾值很敏感等缺陷.針對BP神經(jīng)網(wǎng)絡的不足,本文擬采用收斂速度快,具有好的魯棒性及非常好的全局搜索能力的粒子群算法與BP神經(jīng)網(wǎng)絡相結(jié)合,并針對小樣本問題對粒子群算法進行改進.最終以影響糧食產(chǎn)量的多種因素作為網(wǎng)絡輸入和糧食產(chǎn)量作為網(wǎng)絡輸出,建立了改進粒子群算法(IPSO)與BP神經(jīng)網(wǎng)絡相結(jié)合的多因素糧食產(chǎn)量預測模型——IPSO-BP模型.并與BP網(wǎng)絡模型和PSO-BP網(wǎng)絡模型進行對比.結(jié)果表明,IPSOBP模型具有較高精度和算法穩(wěn)定性,能夠為糧食生產(chǎn)過程的預測和決策提供合理的理論依據(jù).
本文根據(jù)1978~2015年《中國統(tǒng)計年鑒》,選取有效灌溉面積X1(千公頃)、化肥施用量X2(萬噸)、農(nóng)村用電量X3(億千瓦小時)、農(nóng)業(yè)機械總動力X4(萬千瓦)、農(nóng)林牧漁業(yè)勞動力X5(萬人)、糧食作物播種面積X6(千公頃)和受災面積X7(千公頃)作為影響糧食產(chǎn)量的指標[10–12](數(shù)據(jù)見附錄 1),作為網(wǎng)絡輸入,以糧食產(chǎn)量Y(萬噸)作為網(wǎng)絡輸出,構(gòu)建IPSO-BP神經(jīng)網(wǎng)絡糧食預測模型.
IPSO-BP神經(jīng)網(wǎng)絡預測模型的特點:用IPSO算法優(yōu)化BP神經(jīng)網(wǎng)絡的初始連接權(quán)值和閾值,IPSO算法結(jié)束時能夠?qū)さ饺肿顑?yōu)附近的點;在此基礎上,利用局部尋優(yōu)能力較強的BP算法,從該點出發(fā)進行局部搜索,進而達到網(wǎng)絡的訓練目標,其結(jié)合了兩種算法的優(yōu)勢,從而改進了傳統(tǒng)BP神經(jīng)網(wǎng)絡的不足.
粒子群算法 (Particle Swarm Optimization)——PSO算法是一種群智能優(yōu)化算法,由于其概念簡明、收斂較快、實現(xiàn)方便,被廣泛用于調(diào)度優(yōu)化、數(shù)據(jù)挖掘、神經(jīng)網(wǎng)絡訓練、農(nóng)業(yè)工程等方面[13].
設D維歐氏空間中,由N個粒子組成群落,粒子對應位置為xi=(xi1,xi2,···,xiD)T,i=1,2,···,N,即問題的可能解.粒子速度為vi=(vi1,vi2,···,viD)T,由其決定粒子的行進方向與距離,另外速度的每個分量受到最大速度vm的 限制,當vij>vm時 ,令vij=vm(1≤i≤N,1≤j≤D).同 樣xij受xm的限制,當xij>xm時,令xij=xm(1≤i≤N,1≤j≤D).根據(jù)目標函數(shù)可以計算粒子在不同位置的適應度.粒子按下列迭代方法來更新速度和位移:

其中pi=(pi1,pi2,···,piD)T為第i個粒子的個體極值點,表示第i個粒子在迭代過程中得到其最優(yōu)適應度時所在的位置.pg=(pg1,pg2,···,pgD)T為全局極值點,表示全體粒子在迭代過程中所得最優(yōu)適應度時所在的位置.w為慣性權(quán)重系數(shù),較大的權(quán)重有利于提高算法的全局搜索能力,而較小的權(quán)重會增強算法的局部搜索能力,c1和c2為學習因子,c1表示每個粒子受自身個體極值的影響,使粒子有了足夠強的全局搜索能力,避免局部極小,c2表示粒子受當前全局極值的影響,體現(xiàn)粒子間的信息共享.w、c1和c2共同決定了粒子的空間搜索能力.r1和r2是介于(0,1)之間的隨機數(shù).
然而利用PSO算法優(yōu)化BP神經(jīng)網(wǎng)絡初始權(quán)重時,也易于陷入局部最優(yōu)解,往往得不到所需要的初始權(quán)重,因此在處理BP神經(jīng)網(wǎng)絡小樣本訓練問題時可能出現(xiàn)不盡人意的結(jié)果.
為進一步降低PSO算法陷入局部極值的可能性,針對不同問題有多種改進粒子群算法——IPSO算法[14–17].其中黃璇提出了一種適用于小樣本訓練問題的改進方法,本文借鑒該方法修正了PSO算法中的相關參數(shù),改進了IPSO-BP神經(jīng)網(wǎng)絡模型[14]:

對公式(1)中參數(shù)的修正方法如下:
w,k和M分別表示慣性權(quán)重系數(shù)、當前迭代次數(shù)和最終迭代次數(shù),w0和w1為w的初始值和終止值,且w0>w1.c1表示控制粒子趨于局部極值的學習因子,其初始值為c10,終止值為c11;c2表示控制粒子趨于全局極值的學習因子,其初始值為c20,終止值為c21.w依賴于余弦函數(shù)變化的策略在于:w在迭代次數(shù)k由0到M的過程中由w0遞減到w1,即迭代初期注重全局搜索,迭代后期加強了局部搜索,減小了過早落入局部尋優(yōu)的可能,且w依賴于余弦函數(shù)變化時,迭代的前期和后期w的下降速度慢,使得迭代初期能快速全局尋優(yōu)且持續(xù)較長時間,進一步減小了過早地陷入局部尋優(yōu)的可能,在迭代后期可以較為平緩地進行精細搜索.對c1、c2的改進策略在于:c1隨著迭代次數(shù)k以線性方式遞減,c2則以線性方式遞增.由此c10大于c11,c20小于c21.并且c10大于c20,c11小于c21,即迭代初期側(cè)重于自身認知,末期側(cè)重于全局認知,從而保證粒子對自身認知能力和全局認知能力的合理動態(tài)控制.
IPSO-BP算法流程如下:
① IPSO算法所需參數(shù)和神經(jīng)網(wǎng)絡結(jié)構(gòu)的確定
IPSO算法所需參數(shù)包括種群規(guī)模N,粒子維度D,最終迭代次數(shù)M,慣性權(quán)重系數(shù)w的初始值和終止值w0、w1,學習因子的初始值c10、c20和最終值c11、c21,最大速度vm;BP神經(jīng)網(wǎng)絡采用三層網(wǎng)絡結(jié)構(gòu),每個粒子需包含全部的權(quán)值和閾值,即輸入層與隱層、隱層與輸出層的連接權(quán)重以及輸出層和隱層的閾值.因此,粒子的維度D應為:

式中,Din、Dh、Dout分別為輸入層、隱層和輸出層的節(jié)點數(shù).
對于糧食產(chǎn)量預測問題,7個影響因素對應輸入層7個節(jié)點,網(wǎng)絡輸出為糧食產(chǎn)量,因此輸出層節(jié)點數(shù)為1,隱層有1 5個節(jié)點.如圖1所示.

圖1 神經(jīng)網(wǎng)絡結(jié)構(gòu)示意圖
維度D=136包含120個權(quán)值和16個閾值.對每一個粒子其位置xi=(xi1,xi2,···xiD)T的第1個到105個分量、第106個到120個分量分別對應一個15×7、1×15的隱層的權(quán)重矩陣和輸出層的權(quán)重矩陣,第121個到135個分量、第136個分量分別對應隱層節(jié)點和輸出層節(jié)點的閾值向量.
② 適應度函數(shù)的確定
初始化BP神經(jīng)網(wǎng)絡,并將神經(jīng)網(wǎng)絡的實際輸出和理想輸出的均方差作為適應度函數(shù):
其中X為網(wǎng)絡的輸入,即影響糧食產(chǎn)量的七個指標,采用38組數(shù)據(jù)訓練和測試網(wǎng)絡,yi、y′i分別為網(wǎng)絡訓練的糧食輸出值和實際糧食產(chǎn)量.
③ 迭代更新

在IPSO優(yōu)化階段,在利用式(1)迭代時,利用式(4)計算每個粒子的適應度值F(X,xi),若F(X,xi)<F(pi),則pi=xi,若F(X,xi)<F(pg),則令pg=xi,若上面兩等式同時成立,則pg=pi=xi;然后根據(jù)公式(2)更新粒子的慣性權(quán)值系數(shù)w和學習因子c1、c2,再利用式(1)對位置xi和速度vi進行更新,同時需保證xij∈[-xm,xm],且vij∈[-vm,vm].更新后,重新計算每個粒子的適應度F(X,xi),并根據(jù)F(X,xi)更新pi和pg的取值.重復迭代操作,直至滿足k=M,從而獲得最優(yōu)解.
此時的全局極值點pg即為最優(yōu)解,由此作為BP神經(jīng)網(wǎng)絡的權(quán)重和閾值進行訓練糧食預測模型.
為了減小不同因子之間由于數(shù)據(jù)大小的差異和量綱的不同所引起的誤差,在學習之前采用MATLAB中自帶函數(shù)mapminmax對原始數(shù)據(jù)進行歸一化處理.
本實驗采用MATLAB R2014a神經(jīng)網(wǎng)絡工具箱進行測試實現(xiàn)[18],從樣本數(shù)據(jù)中隨機抽取30組作為訓練數(shù)據(jù),剩余 8 組 (mi=1,2,···,8)作為測試數(shù)據(jù).采用IPSO-BP神經(jīng)網(wǎng)絡模型的算法,經(jīng)測試,確定參數(shù)N=70,M=50,w0=1,w1=0.1,c10=2.5,c11=1.25,c20=0.5,c21=2.5.
IPSO-BP神經(jīng)網(wǎng)絡模型預測結(jié)果如表1和圖2所示.
由表1和圖2可見,基于IPSO-BP神經(jīng)網(wǎng)絡建立的預測模型對糧食產(chǎn)量的預測結(jié)果較為準確,說明這種粒子群算法的改進方法比較適合糧食產(chǎn)量預測問題.

表1 IPSO-BP 神經(jīng)網(wǎng)絡模型預測結(jié)果

圖2 IPSO-BP 神經(jīng)網(wǎng)絡預測結(jié)果
為了驗證IPSO-BP神經(jīng)網(wǎng)絡對糧食產(chǎn)量預測精度的提升效果,本文重新選取了30組數(shù)據(jù),分別建立了BP神經(jīng)網(wǎng)絡和PSO-BP神經(jīng)網(wǎng)絡來對糧食產(chǎn)量進行預測.IPSO-BP神經(jīng)網(wǎng)絡模型與BP神經(jīng)網(wǎng)絡模型及PSO-BP神經(jīng)網(wǎng)絡模型預測結(jié)果比較見圖3.

圖3 三種模型預測結(jié)果對比
此時BP神經(jīng)網(wǎng)絡、PSO-BP神經(jīng)網(wǎng)絡、IPSOBP神經(jīng)網(wǎng)絡的預測輸出相對誤差如表2所示.
由表2可見,BP神經(jīng)網(wǎng)絡預測相對誤差保持在0.0170 到 0.0800 之間,平均值為 0.0375,PSO-BP 神經(jīng)網(wǎng)絡預測相對誤差保持在0.0021到0.0800之間,平均值為0.0355,相比之下,IPSO-BP神經(jīng)網(wǎng)絡預測相對誤差保持在0.0041到0.0250之間,平均值為0.0170.

表2 三種模型預測結(jié)果的相對誤差
很明顯,IPSO-BP神經(jīng)網(wǎng)絡預測結(jié)果的精度和穩(wěn)定性大幅提高,預測結(jié)果的相對誤差基本可以保持在0.02左右,有時可達到0.005以下.
由于樣本數(shù)量少且樣本數(shù)據(jù)維度較大,易出現(xiàn)過擬合現(xiàn)象,使預測模型的泛化能力不強.考慮到樣本數(shù)量較少,因此可用留一法交叉驗證對三種模型進行評估.結(jié)果見圖4.

圖4 留一法交叉檢驗每次測試相對誤差
由上圖可知,在留一法交叉驗證中,IPSO-BP神經(jīng)網(wǎng)絡預測值的相對誤差在38次測試中保持在0.000 15—0.000 82之間;而PSO-BP神經(jīng)網(wǎng)絡的預測結(jié)果相對誤差大部分保持在較低水平,但存在數(shù)個較高的誤差;BP神經(jīng)網(wǎng)絡預測結(jié)果則誤差很大,且波動較大.
由以上結(jié)果可以得出,對于相同的樣本數(shù)據(jù),IPSO-BP神經(jīng)網(wǎng)絡比BP神經(jīng)網(wǎng)絡和PSO神經(jīng)網(wǎng)絡具有更高的預測精度,且經(jīng)過留一法交叉驗證可驗證,IPSO-BP神經(jīng)網(wǎng)絡的預測輸出不但比其他兩種方法精度高,而且算法具有較高穩(wěn)定性,說明IPSO-BP神經(jīng)網(wǎng)絡有很強的的泛化能力.
本文根據(jù)糧食產(chǎn)量預測問題的特點,用合適的方法改進粒子群算法,并綜合考慮糧食產(chǎn)量影響因素,構(gòu)造適合糧食產(chǎn)量預測的模型,提高了糧食產(chǎn)量的預測精度.同時本模型對糧食產(chǎn)量的長期變化趨勢預測能力偏弱,還需進行進一步研究.但總體來說本文提出的IPSO-BP神經(jīng)網(wǎng)絡模型可以較好的用于我國糧食產(chǎn)量預測問題,為制定糧食政策與實施糧食生產(chǎn)系統(tǒng)控制提供決策依據(jù)和理論支持.
附錄1

表1 糧食產(chǎn)量和各影響因素的部分數(shù)據(jù)