王獻鋒,丁軍,朱義海
(1.西京學院理學院,西安 710123;2.Tableau Software,Seattle,WA 98103,USA)
棉花是我國的1種重要經(jīng)濟作物,也是1種很容易受到多種病蟲害侵染的作物。據(jù)農(nóng)業(yè)部門統(tǒng)計,棉花病蟲害約有40余種,其中發(fā)生頻繁、危害較大的“三蟲”(棉鈴蟲、棉蚜蟲、紅蜘蛛)和“兩病”(黃萎病、枯萎?。┦敲尢锏闹饕∠x害,對棉花生產(chǎn)影響范圍大、持續(xù)影響時間長,而且造成的損失較大[1-2]。研究表明,棉花病蟲害發(fā)生需要一定的環(huán)境條件,而且具有一定規(guī)律,主要與溫度、濕度、降雨、風、光照和CO2等氣候氣象因素有關(guān)[3-4]。農(nóng)作物病蟲害預(yù)測是1個應(yīng)用性很強的研究方向[5-6]。趙冰梅等[7]預(yù)測了新疆兵團2017年棉花主要病蟲害發(fā)生趨勢,提出了相應(yīng)的防治對策和綜合防治措施,為做好棉花病蟲害防治工作提供參考。劉俊稚[8]研究了幾種典型植物對大氣CO2濃度升高的生理和病理響應(yīng),指出了CO2濃度升高不但影響植物的生長發(fā)育,而且改變植物體內(nèi)的化學成分的組成與含量,從而直接和間接地影響到作物病蟲害發(fā)生。張建華等[9]提出了1種在自然環(huán)境條件下基于粗糙集和反向傳播神經(jīng)網(wǎng)絡(luò) (Back propagation neural network,BPNN)的棉花病害識別方法。該方法利用粗糙集減少特征維數(shù),使BPNN的訓練時間縮短到原來的1/4。隨著計算機、遙感、互聯(lián)網(wǎng)、物聯(lián)網(wǎng)等技術(shù)的不斷發(fā)展,為棉花病蟲害準確預(yù)測和科學防治提供了可能[10]。特別的,物聯(lián)網(wǎng)能夠為棉花病蟲害管理提供數(shù)據(jù)快速獲取、實時傳輸、統(tǒng)一存儲、空間分析到服務(wù)發(fā)布整個流程的有效解決方案。趙慶展等[11]設(shè)計了1套基于移動地理信息系統(tǒng)(Geographic information system,GIS)的棉田病蟲害信息采集系統(tǒng)。該系統(tǒng)為棉花病害的防治提供了有效的技術(shù)支持。陳光絨等[12]提出了1種基于物聯(lián)網(wǎng)技術(shù)的農(nóng)作物病蟲害自動測報系統(tǒng)。王翔宇等[13]研究了農(nóng)業(yè)主要病害檢測與預(yù)警技術(shù)。王獻鋒等[14]將作物的病害葉片圖像和病害的環(huán)境信息相結(jié)合,提出了1種基于葉片圖像和環(huán)境信息的黃瓜病害識別方法。許金霞[15]利用智能移動終端實現(xiàn)了棉田蟲害空間及屬性信息的快速獲取,通過搭建統(tǒng)一的信息服務(wù)平臺,能夠為農(nóng)戶和基層農(nóng)技人員及時提供蟲害的相關(guān)預(yù)警防治信息。
盡管現(xiàn)有的很多作物預(yù)測方法、技術(shù)和系統(tǒng)取得了較高的預(yù)測正確率,但由于農(nóng)作物病蟲害發(fā)生和發(fā)展涉及的因素很多,而且各因素之間存在著復雜的相互作用和相互影響[16-18],使得傳統(tǒng)的病蟲害預(yù)測模型的表達能力和泛化能力有限,預(yù)測正確率不高,很多現(xiàn)有的預(yù)測模型還不能滿足實際病蟲害預(yù)測系統(tǒng)的要求。
深度學習是近年來人工智能和模式識別領(lǐng)域的1種新穎的、非常有效的機器學習方法,并在作物病蟲害預(yù)測中取得了成功應(yīng)用[19]。深度信念網(wǎng)絡(luò)(Deep belief network,DBN)是 1 種經(jīng)典的雙向深度網(wǎng)絡(luò)方法,具有較強的數(shù)據(jù)分類和預(yù)測能力。張善文等[20]引入冬棗病蟲害的先驗信息,提出了1種基于環(huán)境信息和改進DBN的冬棗病蟲害預(yù)測模型,取得了較高的預(yù)測正確率。該研究可為作物病蟲害預(yù)測提供技術(shù)參考。王秀美等[21]將深度信念網(wǎng)絡(luò)用于小麥蚜蟲的短期預(yù)測,并對小麥蚜蟲發(fā)生量以及發(fā)生程度進行預(yù)測。結(jié)果表明,與淺層學習模型相比,深度信念網(wǎng)絡(luò)的預(yù)測誤差較小、推廣能力強,可以為小麥蚜蟲的防治提供及時有效的指導。因此,本文利用棉花生長的環(huán)境信息,提出1種基于DBN的棉花病蟲害預(yù)測模型。
以上研究表明,氣溫、濕度、降水、光照等氣候氣象變化直接影響到棉花病蟲害的發(fā)生種類、發(fā)生期及發(fā)生量。利用農(nóng)業(yè)物聯(lián)網(wǎng)的多種傳感器,采集與棉花的“三蟲”(棉鈴蟲、棉蚜蟲、紅蜘蛛)及“兩病”(黃萎病、枯萎?。┌l(fā)生和發(fā)展對應(yīng)時段的12種環(huán)境信息:發(fā)病季節(jié)、土壤溫度和濕度、土壤鹽分、土壤是否連種、空氣溫度和濕度、光照強度、降水量、降水日數(shù)、CO2濃度和農(nóng)藥使用量[22-24]。根據(jù)歷史數(shù)據(jù)、按照月份,將棉花的不同病蟲害的發(fā)生期劃分為5個等級:0.9、0.7、0.5、0.3和0.1;將光照強度由強到弱設(shè)置為4個等級[25]:0.7、0.5、0.3 和 0.1;將農(nóng)藥用量由多到無分別設(shè)置為4個等級:0.7、0.4、0.2和0;按照土壤沒有連種、連種1次、連種2次以上,將土壤是否連種信息分別設(shè)置為3個等級:0、0.2和0.4。從早上8點到下午5點間隔1 h采集溫度、濕度和光照時間,然后計算日平均溫度、日平均相對濕度和日平均光照時間。本文根據(jù)所采集的實際棉花病蟲害發(fā)生數(shù)據(jù),制定棉花的“三蟲”和“兩病”的發(fā)生程度等級劃分方案[2,24-25]。
單幅病害葉片的病害等級劃分標準為:0級:無病害;1級:斑點占葉面10%以下;2級:斑點占葉面10%~20%;3級:斑點占葉面20%~30%;4級:斑點占葉面30%以上。則棉花病害的病情等級表示為[26-27]:
蟲害等級劃分依據(jù)百株棉花上的蟲量[15,27]:0級,無蟲害;1級,百株數(shù)量在10頭以下;2級,百株蟲量在10~20頭;3級,百株蟲量在20~30頭;4級,百株蟲量在30頭以上。
由于所采集到的環(huán)境信息數(shù)據(jù)的量綱不同,所以在利用這些數(shù)據(jù)之前需要進行歸一化處理。具體的歸一化算法如下,其他因素對應(yīng)的信息值由式(2)歸一化:
式中,aj,bj(j=1,2,……,n)分別為第j個環(huán)境信息數(shù)據(jù)歸一化前后的值分別為n個數(shù)的最大值和最小值。
利用上述環(huán)境信息處理方法,將每天采集的各個環(huán)境信息進行日平均,再進行歸一化,最后組成1個12維的向量,作為當天的環(huán)境信息向量樣本,應(yīng)該得到5×151×10=7 550個向量。但由于采集的部分環(huán)境信息數(shù)據(jù)缺失或不合理,所以我們只選擇了4 500個環(huán)境信息向量進行下面的病蟲害預(yù)測試驗。
深度信念網(wǎng)絡(luò)(DBN)由若干個受限玻爾茲曼機(Restricted Boltzmann machine,RBM)網(wǎng)絡(luò)和最高層為1個有監(jiān)督學習的反向傳播(Back-propagation,BP)網(wǎng)絡(luò)堆疊組成[20-21]。 每個RBM網(wǎng)絡(luò)由可視層(即輸入數(shù)據(jù)VI?RD)和隱層(即 1個二值隨機隱變量構(gòu)成,可視層與隱層層內(nèi)各節(jié)點之間無連接、取值相互獨立。設(shè)所有的隱層和可見層神經(jīng)元均為二值分布, 神經(jīng)元數(shù)分別為m和n, 則RBM的2層的能量函數(shù)為:
由E(v,h;θ)可以得到在狀態(tài)(v,h)的聯(lián)合概率分布為:
由式(4)可得到可見層和隱層的輸出概率P(v|h)和P(h|v),即聯(lián)合概率分布P(v,h|θ)的 2個邊際分布:
由于RBM的可見層節(jié)點與隱層節(jié)點的激活狀態(tài)之間相互獨立,則第j個隱層節(jié)點和第i個可見節(jié)點的輸出概率模型分別為:
式中,f(x)=1/(1+exp(-x))為 sigmoid 函數(shù)。
利用馬爾科夫鏈蒙特卡洛方法使RBM的可視層和隱含層互為條件,不斷地更新參數(shù)狀態(tài),當最終可視層和隱含層共同趨于平穩(wěn)狀態(tài)時,聯(lián)合概率分布P(v,h|θ)達到最大,然后求得P(v,h|θ)與初始狀態(tài)的聯(lián)合概率分布的斜率P(v,h|θ)/θ,使用下式(7)更新權(quán)值:
式中,t為迭代次數(shù),η為學習速度,默認取為迭代次數(shù)的倒數(shù)。
采用無監(jiān)督預(yù)訓練和有監(jiān)督微調(diào)訓練DBN[21],將期望輸出和實際輸出之間的誤差進行反向傳播,利用梯度下降法調(diào)整整個網(wǎng)絡(luò)的參數(shù),尋找網(wǎng)絡(luò)的最優(yōu)參數(shù)。
學習速率η直接影響DBN的訓練效果。若η過大,可能導致重構(gòu)誤差大,權(quán)重變化異常;而若η過小,則收斂速度較慢,訓練時間過長。為了解決這一問題,采用動態(tài)學習率和對比分散準則(Contrastive divergence,CD)自適應(yīng)地為各個參數(shù)分配不同學習率,加快RBM的訓練過程。其公式如下:
式中,g(i)是第i次更新所得到偏導數(shù)。
由式(8)得知,式中的分母會隨著迭代次數(shù)的增加而累加g(i),所以學習速率不再恒定。對于所有的參數(shù)來說,學習速率都是越來越小,而且偏導越小,則學習速率減小越慢,即學習率較大。
利用馬爾科夫鏈的方法求得的聯(lián)合概率分布不容易保證收斂性,可以采用CD準則提高計算速度和保證計算精度:
式中,P0為RBM在t=0時(即初始狀態(tài))的聯(lián)合概率分布,Pn為經(jīng)過n步馬爾科夫鏈后網(wǎng)絡(luò)的聯(lián)合概率分布,P∞為馬氏鏈末端的分布,KL(P|P′)為P和P′之間的差異性。
由式 (9) 可知,CDn是衡量Pn介于P0與P∞之間的位置。在運算中,不斷地將Pn賦值給P0,更新P0和Pn。
為了減小預(yù)測模型的訓練和運行時間,本文采用DBN的基本結(jié)構(gòu)為1個輸入層、3個隱含層和1個BP網(wǎng)絡(luò)輸出層。利用改進的DBN進行棉花病蟲害預(yù)測,其主要流程如圖1[20]所示。
主要過程描述如下:
(1)數(shù)據(jù)采集和預(yù)處理。采集與棉花病蟲害發(fā)生相關(guān)的環(huán)境信息,包括氣候、氣象信息、土壤信息等12種組成原始數(shù)據(jù)集,結(jié)合病蟲害歷史數(shù)據(jù),對每類數(shù)據(jù)進行量化、歸一化預(yù)處理,然后組成維數(shù)為12的信息向量,作為模型的輸入樣本集,再將所有樣本劃分為訓練樣本集和測試樣本集,作為可視層數(shù)據(jù)輸入到最低層RBM。
圖1 基于DBN的預(yù)測模型Fig.1 Prediction model based on DBN
(2)構(gòu)造基于改進DBN的棉花病蟲害預(yù)測模型。采用試驗方法對DBN的結(jié)構(gòu)進行優(yōu)化設(shè)置,包括RBM的層數(shù)、輸入層結(jié)點數(shù)、隱含層結(jié)點數(shù)、學習率等。
(3)訓練階段包括預(yù)訓練和微調(diào)。利用訓練樣本訓練改進DBN預(yù)測模型。在預(yù)訓練階段,第1層RBM網(wǎng)絡(luò)的輸入為原始數(shù)據(jù),它由可見層v0和隱藏層h0組成。第1層RBM網(wǎng)絡(luò)完成v0和h0之間的權(quán)值w0的學習后,進入第2層RBM網(wǎng)絡(luò)的訓練,此時h0=v1。依此類推,h1=v2…,hn-1=vn,得到各個 RBM 之間的權(quán)值wi(i=1,2,…,n),即DBN各隱藏層之間的參數(shù)。計算實際輸出和目標輸出的誤差,使用與模型權(quán)重相關(guān)的函數(shù)表示這個誤差,再利用共軛梯度算法調(diào)整權(quán)重矩陣,最后得到誤差函數(shù)達到最小的網(wǎng)絡(luò)權(quán)重矩陣;在測試階段,DBN中的BP網(wǎng)絡(luò)接收最后1個RBM網(wǎng)絡(luò)的輸出,再利用Dropout方法有監(jiān)督地自上而下對整個DBN進行微調(diào)。BP網(wǎng)絡(luò)以最后的RBM網(wǎng)絡(luò)的輸出作為輸入,有監(jiān)督地訓練DBN的權(quán)值參數(shù)。
(4)測試階段。將測試樣本輸入到訓練好的預(yù)測模型中,計算棉花病蟲害的預(yù)測結(jié)果。病蟲害預(yù)測模型的輸出層中的節(jié)點數(shù)為5,表示病害發(fā)生程度分為5個級別。其中,病蟲害發(fā)生等級的預(yù)測期望輸出模式分別為 (1 0 0 0 0)代表0級,(0 1 0 0 0)代表 1 級,(0 0 1 0 0)代表 2 級,(0 0 0 1 0)代表3級,(0 0 0 0 1)代表4級。模型訓練后的輸出結(jié)果為5個節(jié)點輸出的最大值對應(yīng)的病蟲害等級[24]。
(5)預(yù)測結(jié)果分析。對于相同的訓練數(shù)據(jù)和測試數(shù)據(jù),利用經(jīng)典的神經(jīng)網(wǎng)絡(luò)預(yù)測方法進行預(yù)測,將預(yù)測結(jié)果與基于DBN的預(yù)測模型的預(yù)測結(jié)果進行對比。
2.1.1試驗平臺。采用的硬件環(huán)境為內(nèi)存32 G,CPU Intel(R)Core(TM)i7-4790 8*3.60 GHz,GPU GeForce GTX Titan X,訓練速度是單核Intel 3.47 GHz的15倍以上,深度學習架構(gòu)為Tensorflow,編程語言為python。
2.1.2模型訓練。利用無標簽4 000個環(huán)境信息向量樣本數(shù)據(jù)集預(yù)訓練預(yù)測模型,再利用1 000個帶標簽環(huán)境信息向量樣本有監(jiān)督地微調(diào)預(yù)測模型參數(shù),待分類器通過學習具有分類能力后再利用新輸入的棉花環(huán)境信息數(shù)據(jù),尋找預(yù)測率最高時對應(yīng)的輸入層結(jié)點數(shù)和隱含層結(jié)點數(shù),預(yù)測病蟲害發(fā)生和發(fā)展的等級。由于DBN對相關(guān)的初始參數(shù)十分敏感,為了獲得高效的預(yù)測正確率,首先需要確定3個參數(shù):DBN的層數(shù)、每一隱層的節(jié)點個數(shù)和訓練DBN模型需要迭代的次數(shù)。為此,通過大量試驗對比獲得最優(yōu)的3個參數(shù)值來設(shè)置整個模型。模型評價指標選擇為均方誤差,當誤差值較大時說明模型的預(yù)測精度較低;反之則說明模型預(yù)測精度較高。在確定模型的網(wǎng)絡(luò)結(jié)構(gòu)后,先用訓練樣本集進行訓練,得到模型各神經(jīng)元間的權(quán)值與偏置,利用訓練好的模型對測試樣本集的輸入變量進行預(yù)測,判斷模型的預(yù)測值與真實值之間的誤差。當輸出訓練樣本集的預(yù)測誤差達到最小時的模型作為最終輸出模型[21-24,30]。在本試驗中,輸入神經(jīng)元數(shù)為12,輸出神經(jīng)元數(shù)為4。為了簡化模型,訓練的DBN模型每層都采用相同的節(jié)點數(shù)。訓練各個RBM時學習率為1,分組訓練大小設(shè)置為32,反向傳播微調(diào)時學習率為1,動量為0.5。根據(jù)DBM規(guī)模設(shè)置迭代次數(shù)t,一般取100~2 000。經(jīng)過多次試驗得出識別率較好的DBN網(wǎng)絡(luò)隱含層從100開始、步長為50進行增加,微調(diào)循環(huán)次數(shù)為50,dropout概率設(shè)置為0.2。在此基礎(chǔ)上進一步確定各層神經(jīng)元數(shù),經(jīng)過反復試驗確定,每個隱層神經(jīng)元數(shù)為350時,獲得的高層特征效果最佳。最終確定的模型結(jié)構(gòu)為1個輸入層、3個隱含層和1個BP網(wǎng)絡(luò)輸出層。
2.1.3預(yù)測試驗過程。采用10-折交叉驗證法對4 500個環(huán)境信息向量重新進行試驗,即將4 500個樣本數(shù)據(jù)集分成10份,每份450個,輪流將其中1份作為測試數(shù)據(jù)測試模型,然后將剩余的1份作為測試數(shù)據(jù)輸入到訓練好的模型進行試驗,得到10個測試結(jié)果,將其平均值作為1次試驗結(jié)果。試驗中,各節(jié)點輸出值大于0.90,則判定為該類,預(yù)測結(jié)果表示為正確識別樣本數(shù)占450個樣本的百分比。重復進行10-折交叉驗證試驗50次,計算5種算法的50次試驗對不同類病蟲害的平均預(yù)測正確率以及各個算法的總體平均預(yù)測正確率。
基于DBN的棉花病蟲害預(yù)測模型對“三蟲、兩病”的總體平均預(yù)測結(jié)果見表1。作為比較,表1還列出了基于馬爾科夫轉(zhuǎn)移矩陣(Markov transfer matrix,MTM)[22]、BPNN[23]、RBF 網(wǎng)絡(luò)(RBF network,RBFN)[28]和 Apriori算法 (Apriori)[29]的棉花“三蟲、兩病”的預(yù)測結(jié)果。
從表1可以看出,基于改進DBN的棉花病蟲害預(yù)測模型的預(yù)測正確率遠高于其他4種預(yù)測方法,其原因是本文提出的基于DBN的預(yù)測方法能夠充分利用12種環(huán)境信息,從復雜的環(huán)境信息中深度挖掘病蟲害預(yù)測特征,提取影響棉花病蟲害發(fā)生和發(fā)展的主要因素,從而得到較好的預(yù)測結(jié)果。盡管DBN的訓練時間很長,但是當模型訓練好后識別時間比較短。試驗結(jié)果表明,基于DBN的預(yù)測方法在利用環(huán)境信息預(yù)測農(nóng)作物病害中具有良好的特征學習性能,能夠滿足應(yīng)用的要求?;贏priori算法的棉花病蟲害的預(yù)測結(jié)果優(yōu)于MTM、BPNN和RBFN,其原因是,利用Apriori算法能夠挖掘氣候因素與棉花病蟲害的發(fā)生和發(fā)展之間的關(guān)系。由表1的試驗結(jié)果表明,氣溫、濕度、降水、光照等氣候和氣象因子變化直接影響到棉花病蟲害的發(fā)生種類、發(fā)生期及發(fā)生程度,是預(yù)測病蟲害的依據(jù)。
表1 基于5種預(yù)測模型的棉花病蟲害的預(yù)測正確率及平均訓練和識別時間Table 1 Forecasting accuracy of cotton diseases and pests by five forecasting models
利用農(nóng)作物生長的環(huán)境信息預(yù)測病蟲害發(fā)生和危害等級是當前計算機科學和模式識別等領(lǐng)域研究的熱點問題。面對海量、復雜、多變的環(huán)境信息,傳統(tǒng)的淺層學習算法難以從高維數(shù)據(jù)中學習到環(huán)境信息與病蟲害發(fā)生之間的本質(zhì)聯(lián)系,所以得到的預(yù)測正確率不高。本文利用相對濕度、平均氣溫、降水量和日照時數(shù)等12種環(huán)境信息,建立基于DBN的棉花病蟲害預(yù)測方法。在棉花的“三蟲、兩病”數(shù)據(jù)集上進行了試驗驗證,并與其他4種預(yù)測方法進行了比較,結(jié)果證明了本文提出的預(yù)測方法的有效性。
該模型主要特點:(1)整合海量、多源的環(huán)境信息數(shù)據(jù),能夠準確預(yù)測棉花病蟲害,在一定程度上克服了現(xiàn)有預(yù)測方法的缺陷。(2)該模型能夠深度挖掘與病蟲害發(fā)生相關(guān)的環(huán)境信息之間內(nèi)在的聯(lián)系,能夠準確預(yù)測作物病蟲害發(fā)生。(3)該模型采用動態(tài)學習率法則和對比分散準則進行網(wǎng)絡(luò)自訓練,提高了訓練速度。
該方法為棉花病蟲害預(yù)測提供了1種新思路,但其預(yù)測性能的穩(wěn)定性和準確性還需進一步驗證和改進。關(guān)于DBN的隱含層數(shù)、隱含層節(jié)點數(shù)等的設(shè)置幾乎沒有理論依據(jù),一般依靠經(jīng)驗和試驗結(jié)果進行設(shè)置,花費的時間比較長。下一步研究重點為尋找DBN的參數(shù)設(shè)置的思路和依據(jù),以提高預(yù)測方法的性能。