宗宸生,鄭煥霞,王林山
1(中國海洋大學(xué) 數(shù)學(xué)科學(xué)學(xué)院,青島 266100)
2(山東省聊城市東昌府區(qū)鄭家中學(xué),聊城 252053)
由于農(nóng)業(yè)是國民經(jīng)濟(jì)的基礎(chǔ),而糧食是基礎(chǔ)的基礎(chǔ).糧食不僅是人民群眾最基本的生活資料,也是關(guān)系到國家安全的重要戰(zhàn)略物資,我國是人口眾多的大國,解決好吃飯問題始終是治國理政的頭等大事[1].因此分析預(yù)測我國糧食生產(chǎn)過程的變化規(guī)律及其發(fā)展趨勢,為實(shí)施糧食生產(chǎn)過程的預(yù)測和決策、保證國家糧食安全提供理論依據(jù),具有重要的現(xiàn)實(shí)意義.
目前有多種糧食產(chǎn)量的預(yù)測方法[2–5],例如姚作芳等建立的馬爾可夫方法修正的灰色糧食預(yù)測模型,這種方法簡便易行,需要數(shù)據(jù)少,可以用于預(yù)測糧食產(chǎn)量的變化趨勢.然而,還需要進(jìn)一步提高預(yù)測精度.另外,還有基于線性方法的多元線性回歸、時(shí)間序列分析等糧食預(yù)測模型.由于,糧食產(chǎn)量與其多種影響因素之間存在著復(fù)雜的非線性依賴關(guān)系,具有不確定性和突變性,往往線性模型難以適用較長時(shí)期預(yù)測且預(yù)測精度不高.而人工神經(jīng)網(wǎng)絡(luò)模型具有非線性映射能力,以及較強(qiáng)的魯棒性和容錯(cuò)性[6],因此已被廣泛的應(yīng)用于糧食產(chǎn)量預(yù)測問題[7–9].例如吳炎將時(shí)間序列分析法和BP神經(jīng)網(wǎng)絡(luò)相結(jié)合,建立了江蘇省糧食產(chǎn)量預(yù)測模型.這種方法較好的解決了神經(jīng)網(wǎng)絡(luò)收斂慢,但是仍需要改進(jìn)易于陷入局部極小值的問題.另一方面,由于該方法只是利用糧食產(chǎn)量的數(shù)據(jù)建立模型,沒有考慮影響糧食產(chǎn)量的其他因素,因而預(yù)測精度有待于進(jìn)一步提高.且當(dāng)前的研究大多沒有基于糧食產(chǎn)量預(yù)測問題為小樣本問題這一事實(shí)來改進(jìn)預(yù)測模型.BP神經(jīng)網(wǎng)絡(luò)由于基于梯度的算法,存在如低的收斂速度且易陷入局部極小點(diǎn),網(wǎng)絡(luò)訓(xùn)練時(shí)對(duì)初始連接權(quán)值和閾值很敏感等缺陷.針對(duì)BP神經(jīng)網(wǎng)絡(luò)的不足,本文擬采用收斂速度快,具有好的魯棒性及非常好的全局搜索能力的粒子群算法與BP神經(jīng)網(wǎng)絡(luò)相結(jié)合,并針對(duì)小樣本問題對(duì)粒子群算法進(jìn)行改進(jìn).最終以影響糧食產(chǎn)量的多種因素作為網(wǎng)絡(luò)輸入和糧食產(chǎn)量作為網(wǎng)絡(luò)輸出,建立了改進(jìn)粒子群算法(IPSO)與BP神經(jīng)網(wǎng)絡(luò)相結(jié)合的多因素糧食產(chǎn)量預(yù)測模型——IPSO-BP模型.并與BP網(wǎng)絡(luò)模型和PSO-BP網(wǎng)絡(luò)模型進(jìn)行對(duì)比.結(jié)果表明,IPSOBP模型具有較高精度和算法穩(wěn)定性,能夠?yàn)榧Z食生產(chǎn)過程的預(yù)測和決策提供合理的理論依據(jù).
本文根據(jù)1978~2015年《中國統(tǒng)計(jì)年鑒》,選取有效灌溉面積X1(千公頃)、化肥施用量X2(萬噸)、農(nóng)村用電量X3(億千瓦小時(shí))、農(nóng)業(yè)機(jī)械總動(dòng)力X4(萬千瓦)、農(nóng)林牧漁業(yè)勞動(dòng)力X5(萬人)、糧食作物播種面積X6(千公頃)和受災(zāi)面積X7(千公頃)作為影響糧食產(chǎn)量的指標(biāo)[10–12](數(shù)據(jù)見附錄 1),作為網(wǎng)絡(luò)輸入,以糧食產(chǎn)量Y(萬噸)作為網(wǎng)絡(luò)輸出,構(gòu)建IPSO-BP神經(jīng)網(wǎng)絡(luò)糧食預(yù)測模型.
IPSO-BP神經(jīng)網(wǎng)絡(luò)預(yù)測模型的特點(diǎn):用IPSO算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的初始連接權(quán)值和閾值,IPSO算法結(jié)束時(shí)能夠?qū)さ饺肿顑?yōu)附近的點(diǎn);在此基礎(chǔ)上,利用局部尋優(yōu)能力較強(qiáng)的BP算法,從該點(diǎn)出發(fā)進(jìn)行局部搜索,進(jìn)而達(dá)到網(wǎng)絡(luò)的訓(xùn)練目標(biāo),其結(jié)合了兩種算法的優(yōu)勢,從而改進(jìn)了傳統(tǒng)BP神經(jīng)網(wǎng)絡(luò)的不足.
粒子群算法 (Particle Swarm Optimization)——PSO算法是一種群智能優(yōu)化算法,由于其概念簡明、收斂較快、實(shí)現(xiàn)方便,被廣泛用于調(diào)度優(yōu)化、數(shù)據(jù)挖掘、神經(jīng)網(wǎng)絡(luò)訓(xùn)練、農(nóng)業(yè)工程等方面[13].
設(shè)D維歐氏空間中,由N個(gè)粒子組成群落,粒子對(duì)應(yīng)位置為xi=(xi1,xi2,···,xiD)T,i=1,2,···,N,即問題的可能解.粒子速度為vi=(vi1,vi2,···,viD)T,由其決定粒子的行進(jìn)方向與距離,另外速度的每個(gè)分量受到最大速度vm的 限制,當(dāng)vij>vm時(shí) ,令vij=vm(1≤i≤N,1≤j≤D).同 樣xij受xm的限制,當(dāng)xij>xm時(shí),令xij=xm(1≤i≤N,1≤j≤D).根據(jù)目標(biāo)函數(shù)可以計(jì)算粒子在不同位置的適應(yīng)度.粒子按下列迭代方法來更新速度和位移:
其中pi=(pi1,pi2,···,piD)T為第i個(gè)粒子的個(gè)體極值點(diǎn),表示第i個(gè)粒子在迭代過程中得到其最優(yōu)適應(yīng)度時(shí)所在的位置.pg=(pg1,pg2,···,pgD)T為全局極值點(diǎn),表示全體粒子在迭代過程中所得最優(yōu)適應(yīng)度時(shí)所在的位置.w為慣性權(quán)重系數(shù),較大的權(quán)重有利于提高算法的全局搜索能力,而較小的權(quán)重會(huì)增強(qiáng)算法的局部搜索能力,c1和c2為學(xué)習(xí)因子,c1表示每個(gè)粒子受自身個(gè)體極值的影響,使粒子有了足夠強(qiáng)的全局搜索能力,避免局部極小,c2表示粒子受當(dāng)前全局極值的影響,體現(xiàn)粒子間的信息共享.w、c1和c2共同決定了粒子的空間搜索能力.r1和r2是介于(0,1)之間的隨機(jī)數(shù).
然而利用PSO算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)初始權(quán)重時(shí),也易于陷入局部最優(yōu)解,往往得不到所需要的初始權(quán)重,因此在處理BP神經(jīng)網(wǎng)絡(luò)小樣本訓(xùn)練問題時(shí)可能出現(xiàn)不盡人意的結(jié)果.
為進(jìn)一步降低PSO算法陷入局部極值的可能性,針對(duì)不同問題有多種改進(jìn)粒子群算法——IPSO算法[14–17].其中黃璇提出了一種適用于小樣本訓(xùn)練問題的改進(jìn)方法,本文借鑒該方法修正了PSO算法中的相關(guān)參數(shù),改進(jìn)了IPSO-BP神經(jīng)網(wǎng)絡(luò)模型[14]:
對(duì)公式(1)中參數(shù)的修正方法如下:
w,k和M分別表示慣性權(quán)重系數(shù)、當(dāng)前迭代次數(shù)和最終迭代次數(shù),w0和w1為w的初始值和終止值,且w0>w1.c1表示控制粒子趨于局部極值的學(xué)習(xí)因子,其初始值為c10,終止值為c11;c2表示控制粒子趨于全局極值的學(xué)習(xí)因子,其初始值為c20,終止值為c21.w依賴于余弦函數(shù)變化的策略在于:w在迭代次數(shù)k由0到M的過程中由w0遞減到w1,即迭代初期注重全局搜索,迭代后期加強(qiáng)了局部搜索,減小了過早落入局部尋優(yōu)的可能,且w依賴于余弦函數(shù)變化時(shí),迭代的前期和后期w的下降速度慢,使得迭代初期能快速全局尋優(yōu)且持續(xù)較長時(shí)間,進(jìn)一步減小了過早地陷入局部尋優(yōu)的可能,在迭代后期可以較為平緩地進(jìn)行精細(xì)搜索.對(duì)c1、c2的改進(jìn)策略在于:c1隨著迭代次數(shù)k以線性方式遞減,c2則以線性方式遞增.由此c10大于c11,c20小于c21.并且c10大于c20,c11小于c21,即迭代初期側(cè)重于自身認(rèn)知,末期側(cè)重于全局認(rèn)知,從而保證粒子對(duì)自身認(rèn)知能力和全局認(rèn)知能力的合理動(dòng)態(tài)控制.
IPSO-BP算法流程如下:
① IPSO算法所需參數(shù)和神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的確定
IPSO算法所需參數(shù)包括種群規(guī)模N,粒子維度D,最終迭代次數(shù)M,慣性權(quán)重系數(shù)w的初始值和終止值w0、w1,學(xué)習(xí)因子的初始值c10、c20和最終值c11、c21,最大速度vm;BP神經(jīng)網(wǎng)絡(luò)采用三層網(wǎng)絡(luò)結(jié)構(gòu),每個(gè)粒子需包含全部的權(quán)值和閾值,即輸入層與隱層、隱層與輸出層的連接權(quán)重以及輸出層和隱層的閾值.因此,粒子的維度D應(yīng)為:
式中,Din、Dh、Dout分別為輸入層、隱層和輸出層的節(jié)點(diǎn)數(shù).
對(duì)于糧食產(chǎn)量預(yù)測問題,7個(gè)影響因素對(duì)應(yīng)輸入層7個(gè)節(jié)點(diǎn),網(wǎng)絡(luò)輸出為糧食產(chǎn)量,因此輸出層節(jié)點(diǎn)數(shù)為1,隱層有1 5個(gè)節(jié)點(diǎn).如圖1所示.
圖1 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)示意圖
維度D=136包含120個(gè)權(quán)值和16個(gè)閾值.對(duì)每一個(gè)粒子其位置xi=(xi1,xi2,···xiD)T的第1個(gè)到105個(gè)分量、第106個(gè)到120個(gè)分量分別對(duì)應(yīng)一個(gè)15×7、1×15的隱層的權(quán)重矩陣和輸出層的權(quán)重矩陣,第121個(gè)到135個(gè)分量、第136個(gè)分量分別對(duì)應(yīng)隱層節(jié)點(diǎn)和輸出層節(jié)點(diǎn)的閾值向量.
② 適應(yīng)度函數(shù)的確定
初始化BP神經(jīng)網(wǎng)絡(luò),并將神經(jīng)網(wǎng)絡(luò)的實(shí)際輸出和理想輸出的均方差作為適應(yīng)度函數(shù):
其中X為網(wǎng)絡(luò)的輸入,即影響糧食產(chǎn)量的七個(gè)指標(biāo),采用38組數(shù)據(jù)訓(xùn)練和測試網(wǎng)絡(luò),yi、y′i分別為網(wǎng)絡(luò)訓(xùn)練的糧食輸出值和實(shí)際糧食產(chǎn)量.
③ 迭代更新
在IPSO優(yōu)化階段,在利用式(1)迭代時(shí),利用式(4)計(jì)算每個(gè)粒子的適應(yīng)度值F(X,xi),若F(X,xi)<F(pi),則pi=xi,若F(X,xi)<F(pg),則令pg=xi,若上面兩等式同時(shí)成立,則pg=pi=xi;然后根據(jù)公式(2)更新粒子的慣性權(quán)值系數(shù)w和學(xué)習(xí)因子c1、c2,再利用式(1)對(duì)位置xi和速度vi進(jìn)行更新,同時(shí)需保證xij∈[-xm,xm],且vij∈[-vm,vm].更新后,重新計(jì)算每個(gè)粒子的適應(yīng)度F(X,xi),并根據(jù)F(X,xi)更新pi和pg的取值.重復(fù)迭代操作,直至滿足k=M,從而獲得最優(yōu)解.
此時(shí)的全局極值點(diǎn)pg即為最優(yōu)解,由此作為BP神經(jīng)網(wǎng)絡(luò)的權(quán)重和閾值進(jìn)行訓(xùn)練糧食預(yù)測模型.
為了減小不同因子之間由于數(shù)據(jù)大小的差異和量綱的不同所引起的誤差,在學(xué)習(xí)之前采用MATLAB中自帶函數(shù)mapminmax對(duì)原始數(shù)據(jù)進(jìn)行歸一化處理.
本實(shí)驗(yàn)采用MATLAB R2014a神經(jīng)網(wǎng)絡(luò)工具箱進(jìn)行測試實(shí)現(xiàn)[18],從樣本數(shù)據(jù)中隨機(jī)抽取30組作為訓(xùn)練數(shù)據(jù),剩余 8 組 (mi=1,2,···,8)作為測試數(shù)據(jù).采用IPSO-BP神經(jīng)網(wǎng)絡(luò)模型的算法,經(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)絡(luò)模型預(yù)測結(jié)果如表1和圖2所示.
由表1和圖2可見,基于IPSO-BP神經(jīng)網(wǎng)絡(luò)建立的預(yù)測模型對(duì)糧食產(chǎn)量的預(yù)測結(jié)果較為準(zhǔn)確,說明這種粒子群算法的改進(jìn)方法比較適合糧食產(chǎn)量預(yù)測問題.
表1 IPSO-BP 神經(jīng)網(wǎng)絡(luò)模型預(yù)測結(jié)果
圖2 IPSO-BP 神經(jīng)網(wǎng)絡(luò)預(yù)測結(jié)果
為了驗(yàn)證IPSO-BP神經(jīng)網(wǎng)絡(luò)對(duì)糧食產(chǎn)量預(yù)測精度的提升效果,本文重新選取了30組數(shù)據(jù),分別建立了BP神經(jīng)網(wǎng)絡(luò)和PSO-BP神經(jīng)網(wǎng)絡(luò)來對(duì)糧食產(chǎn)量進(jìn)行預(yù)測.IPSO-BP神經(jīng)網(wǎng)絡(luò)模型與BP神經(jīng)網(wǎng)絡(luò)模型及PSO-BP神經(jīng)網(wǎng)絡(luò)模型預(yù)測結(jié)果比較見圖3.
圖3 三種模型預(yù)測結(jié)果對(duì)比
此時(shí)BP神經(jīng)網(wǎng)絡(luò)、PSO-BP神經(jīng)網(wǎng)絡(luò)、IPSOBP神經(jīng)網(wǎng)絡(luò)的預(yù)測輸出相對(duì)誤差如表2所示.
由表2可見,BP神經(jīng)網(wǎng)絡(luò)預(yù)測相對(duì)誤差保持在0.0170 到 0.0800 之間,平均值為 0.0375,PSO-BP 神經(jīng)網(wǎng)絡(luò)預(yù)測相對(duì)誤差保持在0.0021到0.0800之間,平均值為0.0355,相比之下,IPSO-BP神經(jīng)網(wǎng)絡(luò)預(yù)測相對(duì)誤差保持在0.0041到0.0250之間,平均值為0.0170.
表2 三種模型預(yù)測結(jié)果的相對(duì)誤差
很明顯,IPSO-BP神經(jīng)網(wǎng)絡(luò)預(yù)測結(jié)果的精度和穩(wěn)定性大幅提高,預(yù)測結(jié)果的相對(duì)誤差基本可以保持在0.02左右,有時(shí)可達(dá)到0.005以下.
由于樣本數(shù)量少且樣本數(shù)據(jù)維度較大,易出現(xiàn)過擬合現(xiàn)象,使預(yù)測模型的泛化能力不強(qiáng).考慮到樣本數(shù)量較少,因此可用留一法交叉驗(yàn)證對(duì)三種模型進(jìn)行評(píng)估.結(jié)果見圖4.
圖4 留一法交叉檢驗(yàn)每次測試相對(duì)誤差
由上圖可知,在留一法交叉驗(yàn)證中,IPSO-BP神經(jīng)網(wǎng)絡(luò)預(yù)測值的相對(duì)誤差在38次測試中保持在0.000 15—0.000 82之間;而PSO-BP神經(jīng)網(wǎng)絡(luò)的預(yù)測結(jié)果相對(duì)誤差大部分保持在較低水平,但存在數(shù)個(gè)較高的誤差;BP神經(jīng)網(wǎng)絡(luò)預(yù)測結(jié)果則誤差很大,且波動(dòng)較大.
由以上結(jié)果可以得出,對(duì)于相同的樣本數(shù)據(jù),IPSO-BP神經(jīng)網(wǎng)絡(luò)比BP神經(jīng)網(wǎng)絡(luò)和PSO神經(jīng)網(wǎng)絡(luò)具有更高的預(yù)測精度,且經(jīng)過留一法交叉驗(yàn)證可驗(yàn)證,IPSO-BP神經(jīng)網(wǎng)絡(luò)的預(yù)測輸出不但比其他兩種方法精度高,而且算法具有較高穩(wěn)定性,說明IPSO-BP神經(jīng)網(wǎng)絡(luò)有很強(qiáng)的的泛化能力.
本文根據(jù)糧食產(chǎn)量預(yù)測問題的特點(diǎn),用合適的方法改進(jìn)粒子群算法,并綜合考慮糧食產(chǎn)量影響因素,構(gòu)造適合糧食產(chǎn)量預(yù)測的模型,提高了糧食產(chǎn)量的預(yù)測精度.同時(shí)本模型對(duì)糧食產(chǎn)量的長期變化趨勢預(yù)測能力偏弱,還需進(jìn)行進(jìn)一步研究.但總體來說本文提出的IPSO-BP神經(jīng)網(wǎng)絡(luò)模型可以較好的用于我國糧食產(chǎn)量預(yù)測問題,為制定糧食政策與實(shí)施糧食生產(chǎn)系統(tǒng)控制提供決策依據(jù)和理論支持.
附錄1
表1 糧食產(chǎn)量和各影響因素的部分?jǐn)?shù)據(jù)