周 瑞,魏正英,張育斌,張 千
(西安交通大學(xué)機械制造系統(tǒng)工程國家重點實驗室,西安 710049)
番茄目標(biāo)產(chǎn)量的確定是番茄種植播前決策環(huán)節(jié)的重要部分,是決策番茄種植過程中總施肥量與灌水量的關(guān)鍵參數(shù)之一。合理的番茄目標(biāo)產(chǎn)量確定是實現(xiàn)番茄作物精準培育管理的前提和基礎(chǔ),有助于實現(xiàn)農(nóng)業(yè)生產(chǎn)過程中經(jīng)濟、社會、生態(tài)效益的協(xié)調(diào)統(tǒng)一。目前,已有一些研究提出了目標(biāo)產(chǎn)量預(yù)測的方法,這些方法大致分為兩種:①基于作物生產(chǎn)潛力經(jīng)驗公式[1]的預(yù)測方法,依據(jù)作物生長環(huán)境與土壤肥力,結(jié)合栽培管理水平作為人為調(diào)控因子進行番茄目標(biāo)產(chǎn)量預(yù)測。②基于機器學(xué)習(xí)與統(tǒng)計方法的預(yù)測方法,依據(jù)相同培育條件下積累的歷史作物產(chǎn)量數(shù)據(jù),應(yīng)用統(tǒng)計理論和機器學(xué)習(xí)算法建立番茄目標(biāo)產(chǎn)量的預(yù)測模型對番茄目標(biāo)產(chǎn)量進行評估計算?;诮?jīng)驗公式的方法需要測量的參數(shù)多,準確的作物產(chǎn)量估計需要高精度的測量裝備,而多數(shù)農(nóng)戶不具備測量條件,因此結(jié)合相同培育環(huán)境下的歷史產(chǎn)量數(shù)據(jù),基于機器學(xué)習(xí)與統(tǒng)計方法的作物產(chǎn)量預(yù)測可以輔助農(nóng)戶進行目標(biāo)產(chǎn)量制定。
番茄產(chǎn)量年度數(shù)據(jù)是時間序列數(shù)據(jù),現(xiàn)有針對時間序列數(shù)據(jù)的預(yù)測算法有多種模型,例如自回歸移動平均、支持向量回歸、人工神經(jīng)網(wǎng)絡(luò)、小波神經(jīng)網(wǎng)絡(luò)等。隨著深度學(xué)習(xí)算法研究的不斷深入,深度學(xué)習(xí)模型能夠適用于時間序列數(shù)據(jù)的預(yù)測問題,深度學(xué)習(xí)算法通過對輸入的數(shù)據(jù)信息逐步分層抽象并提取特征,提取出包含在數(shù)據(jù)序列中的隱含關(guān)系。遞歸神經(jīng)網(wǎng)絡(luò)將時間的序列概念引入到神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)構(gòu)建中去,使遞歸神經(jīng)網(wǎng)絡(luò)在時間序列數(shù)據(jù)分析中性能表現(xiàn)更好。長短期記憶單元是遞歸神經(jīng)網(wǎng)絡(luò)的一種變體,彌補了RNN可能出現(xiàn)的梯度消失和梯度爆炸、長期數(shù)據(jù)記憶能力有限等問題,能夠有效地進行處理長時間的序列信息。LSTM模型在不同領(lǐng)域的時間序列數(shù)據(jù)研究中已取得了不少成果的應(yīng)用案例,包括股票價格預(yù)測[2]、語音識別[3]、機器翻譯,圖像文字識別、交通流速預(yù)測[4],農(nóng)業(yè)領(lǐng)域的降雨量預(yù)測[5]等。
本文針對歷年番茄產(chǎn)量時間序列數(shù)據(jù),提出了一種基于LSTM遞歸神經(jīng)網(wǎng)絡(luò)的目標(biāo)產(chǎn)量預(yù)測方法,對LSTM遞歸神經(jīng)網(wǎng)絡(luò)模型進行訓(xùn)練與模擬計算,用交叉驗證的方法對模型在測試集上預(yù)測的均方根誤差進行評價,并將模型的預(yù)測效果與自回歸移動平均方法、小波神經(jīng)網(wǎng)絡(luò)方法、支持向量回歸方法進行了對比。實驗結(jié)果顯示基于LSTM遞歸神經(jīng)網(wǎng)絡(luò)的預(yù)測模型在番茄目標(biāo)產(chǎn)量預(yù)測上具有更好的預(yù)測性能。
人工神經(jīng)網(wǎng)絡(luò)通過構(gòu)建類似人體神經(jīng)元的連接方式來進行信號處理,得到數(shù)據(jù)信號預(yù)測模型,可以用于處理數(shù)據(jù)非線性預(yù)測等問題。在數(shù)據(jù)分析領(lǐng)域,主要采用前饋神經(jīng)網(wǎng)絡(luò)來提取靜態(tài)數(shù)據(jù)之間的隱含關(guān)系[6]。
前饋神經(jīng)網(wǎng)絡(luò)是一種具有前向結(jié)構(gòu)的人工神經(jīng)網(wǎng)絡(luò),一般是多層結(jié)構(gòu),包括輸入層、隱含層和輸出層,通常有多個隱含層。每一層神經(jīng)元的輸入是上一層神經(jīng)元的輸出并且通過全連接將其輸出傳遞給下一層,且整個結(jié)構(gòu)中沒有反饋。每一個神經(jīng)元可以是多輸入的,但是只有一個輸出。多層前饋神經(jīng)網(wǎng)絡(luò)是感知器的推廣,只要有包含足夠多的神經(jīng)元的隱含層,前饋神經(jīng)網(wǎng)絡(luò)就可以擬合為任意復(fù)雜連續(xù)函數(shù)(圖1)。
圖1 前饋神經(jīng)網(wǎng)絡(luò)
Lin表示輸入層,x=(x1,x2,x3)T是多層感知器輸入;Lhidden表示隱含層,包含4個神經(jīng)元(h=(h1,h2,h3,h4)T);Lout是輸出層,輸出維度數(shù)為3(y=(y1,y2,y3)T)。數(shù)據(jù)從輸入層到輸出層傳遞的這個過程稱為前向傳播,可以用公式表示:
h=f(W1Tx+b1)
(1)
y=f(W2Th+b2)
(2)
其中W1∈R3×4表示輸入層單元與隱含層單元之間傳遞的權(quán)重矩陣,b1∈R4×1為隱含層的偏置;W2∈R4×3表示隱含層單元和輸出層單元傳遞的連接權(quán)重,b2∈R3×1為輸出層的偏置。對于激活函數(shù)f,通常采用雙曲正切函數(shù)、logistic函數(shù)或sigmoid函數(shù),來獲得逼近非線性函數(shù)的能力。對于多層前饋神經(jīng)網(wǎng)絡(luò)的訓(xùn)練,采用誤差反向傳播算法(BP),因此也常將多層前饋神經(jīng)網(wǎng)絡(luò)直接稱為BP網(wǎng)絡(luò)。
雖然多層前饋神經(jīng)網(wǎng)絡(luò)能夠一定程度上解決非線性問題,但其網(wǎng)絡(luò)當(dāng)前時刻的狀態(tài)與上一時刻的輸入無關(guān),因此無法處理具有時間序列特征的數(shù)據(jù)。為了解決輸入之間前后關(guān)聯(lián)的問題,這就需要使多層前饋神經(jīng)網(wǎng)絡(luò)不僅接收當(dāng)前的輸入,也要接收上一時刻的輸出,由此產(chǎn)生了遞歸神經(jīng)網(wǎng)絡(luò)。
為了克服前饋神經(jīng)網(wǎng)絡(luò)無法處理時間序列數(shù)據(jù)問題,遞歸神經(jīng)網(wǎng)絡(luò)將隱含層之間結(jié)點互相連接,使得隱含層的輸入不僅僅是當(dāng)前時刻輸入層的輸出還包括了上一時刻隱含層的輸出。通過這種方式,遞歸神經(jīng)網(wǎng)絡(luò)可以將當(dāng)前時刻以前的信息記憶在網(wǎng)絡(luò)之中。如圖2所示,遞歸神經(jīng)網(wǎng)絡(luò)與前饋神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)大致相同,不同之處在于隱含層之間的連接關(guān)系,即增加了隱含層間的權(quán)重Wh。
圖2 遞歸神經(jīng)網(wǎng)絡(luò)
若Lhidden隱含層包含m個神經(jīng)元,則Wh為m×m維的權(quán)重矩陣。遞歸神經(jīng)網(wǎng)絡(luò)的傳播過程可以用公式表示:
ht=f(W1Txt+WhTht-1+b1)
(3)
yt=f(W2Tht+b2)
(4)
式中:W1表示輸入層與隱含層連接權(quán)重;W2表示隱含層與輸出層連接權(quán)重;b1、b2分別表示隱含層和輸出層的偏置;xt表示t時刻的輸入;ht表示隱含層輸出;yt表示t時刻的輸出;ht-1表示第t-1時刻隱含層的輸出。激活函數(shù)f一般是雙曲正切函數(shù)或者Relu函數(shù)。
此外,遞歸神經(jīng)網(wǎng)絡(luò)還可以轉(zhuǎn)化成相對應(yīng)的多層前饋神經(jīng)網(wǎng)絡(luò),從而可以使用BPTT算法進行訓(xùn)練,展開過程如圖3所示。
圖3 遞歸神經(jīng)網(wǎng)絡(luò)展開
若訓(xùn)練樣本中包含T個時刻的數(shù)據(jù),則遞歸神經(jīng)網(wǎng)絡(luò)將展開成一個隱含層數(shù)量為T個的前饋神經(jīng)網(wǎng)絡(luò)。理論上來說,遞歸神經(jīng)網(wǎng)絡(luò)可以處理任意長度的序列數(shù)據(jù),但是當(dāng)處理無限長的序列數(shù)據(jù)時,展開的多層前饋神經(jīng)網(wǎng)絡(luò)也是無線層的。因此在實際應(yīng)用中,通常只假設(shè)當(dāng)前狀態(tài)只與之前有限個狀態(tài)相關(guān),以降低復(fù)雜度。與傳統(tǒng)的前饋神經(jīng)網(wǎng)絡(luò)不同,展開的遞歸神經(jīng)網(wǎng)絡(luò)有如下特點:
每個隱含層的輸入都由當(dāng)前時刻輸入和上一時刻隱含層輸出兩部分組成。而傳統(tǒng)前饋神經(jīng)網(wǎng)絡(luò)的輸入只能是上一層(隱含層或輸入層)的輸出。
如圖3所示,展開的遞歸神經(jīng)網(wǎng)絡(luò)相同位置的參數(shù)是共享的,而傳統(tǒng)前饋神經(jīng)網(wǎng)絡(luò)則是非共享的,這也大大地降低了網(wǎng)絡(luò)所要學(xué)習(xí)的參數(shù)。
對于遞歸神經(jīng)網(wǎng)絡(luò),每一個時刻都會給出一個輸出,但是并不是必要的,只有t時刻的輸出才是模型的預(yù)測結(jié)果,其余的輸出結(jié)果都保存在了隱含層中。
盡管遞歸神經(jīng)網(wǎng)絡(luò)能夠有效地處理非線性時間序列,但是仍然存在以下兩個問題:①由于梯度消失和梯度爆炸的問題,RNN不能處理延遲過長的時間序列;②訓(xùn)練RNN模型需要預(yù)先確定延遲窗口長度,然而實際應(yīng)用中很難自動地獲取這一參數(shù)的最優(yōu)值。由此,LSTM模型應(yīng)運而生[7-9]。LSTM模型是將隱藏層的RNN細胞替換為LSTM細胞,使其具有長期記憶功能。經(jīng)過不斷地演化,目前應(yīng)用最為廣泛的LSTM模型細胞結(jié)構(gòu)如圖4所示。
圖4 LSTM細胞結(jié)構(gòu)
LSTM模型訓(xùn)練過程采用的是與經(jīng)典的反向傳播算法原理類似的BPTT算法,大致可以分為4個步驟:①按照前向計算方法計算LSTM細胞的輸出值;②反向計算每個LSTM細胞的誤差項,包括按時間和網(wǎng)絡(luò)層級兩個反向傳播方向;③根據(jù)相應(yīng)的誤差項,計算每個權(quán)重的梯度;④應(yīng)用基于梯度的優(yōu)化算法更新權(quán)重。
基于梯度的優(yōu)化算法種類眾多,比如隨機梯度下降(SGD),AdaGrad,RMSProp等算法。本文選用的是適應(yīng)性動量估計算法(Adam)。Adam算法是一種有效的基于梯度的隨機優(yōu)化方法,該算法融合了AdaGrad和RMSProp算法的優(yōu)勢,能夠?qū)Σ煌瑓?shù)計算適應(yīng)性學(xué)習(xí)率并且占用較少的存儲資源。相比于其他的隨機優(yōu)化方法,Adam方法在實際應(yīng)用中的整體表現(xiàn)更優(yōu)。
番茄產(chǎn)量數(shù)據(jù)來自新疆番茄種植基地,數(shù)據(jù)集包含1996-2015年間年番茄每公頃平均產(chǎn)量數(shù)據(jù)。
在得到觀測序列后對番茄產(chǎn)量時間序列數(shù)據(jù)做預(yù)處理,以得到適應(yīng)構(gòu)建LSTM模型的數(shù)據(jù)形式。首先需要對數(shù)據(jù)集進行平穩(wěn)性檢查,時間序列的平穩(wěn)性反映了時間序列的統(tǒng)計性與時間的相關(guān)性,平穩(wěn)時間序列其統(tǒng)計規(guī)律不隨時間推移而變化,因此可以通過平穩(wěn)的時間序列信息對將來時間進行預(yù)測。時間序列平穩(wěn)性的檢驗方法有時序圖法和自相關(guān)函數(shù)法,其中時序圖法由于其直觀性廣泛運用于平穩(wěn)性判別過程,平穩(wěn)時間序列在變化曲線上呈現(xiàn)隨時間在其均值附近波動的特征,而非平穩(wěn)序列則出現(xiàn)不同時間段具有不同的統(tǒng)計特征(如均值持續(xù)上升或均值持續(xù)下降)。對番茄平均產(chǎn)量作時序圖,橫軸為年份,縱軸為番茄平均產(chǎn)量(kg/hm2),由圖可知,番茄平均產(chǎn)量數(shù)據(jù)時序圖雖有波動但整體雖時間持續(xù)上升的非平穩(wěn)時間序列。需要首先進行數(shù)據(jù)平穩(wěn)化處理。
圖5 番茄平均產(chǎn)量時序圖
通常使用差分法將時間序列數(shù)據(jù)轉(zhuǎn)換為平穩(wěn)序列,經(jīng)過n次差分后得到序列若為平穩(wěn)序列,則這個序列成為n階差分平穩(wěn)序列。差分運算是一種對數(shù)據(jù)蘊含信息進行抽象提取的過程,差分階數(shù)越多越能提取到非平穩(wěn)序列中的確定性信息,但是隨著階數(shù)增大原始數(shù)據(jù)的信息損失也更多。所以要選擇適當(dāng)?shù)牟罘蛛A數(shù)對時間序列數(shù)據(jù)進行分析。對番茄平均產(chǎn)量原始數(shù)據(jù)進行差分運算,得到一二階差分圖,如圖6、圖7所示,由圖6、圖7可知一階差分序列已達到平穩(wěn)。
圖6 番茄平均產(chǎn)量一階差分圖
圖7 番茄平均產(chǎn)量二階差分圖
考慮到時間序列數(shù)據(jù)集特征與LSTM神經(jīng)網(wǎng)絡(luò)訓(xùn)練輸入輸出要求,本文構(gòu)建LSTM番茄目標(biāo)產(chǎn)量預(yù)測模型的整體結(jié)構(gòu)如圖8所示,原始產(chǎn)量時序數(shù)據(jù)經(jīng)過平穩(wěn)性檢驗與差分、監(jiān)督學(xué)習(xí)格式轉(zhuǎn)化、標(biāo)準化后轉(zhuǎn)化為適于LSTM網(wǎng)絡(luò)訓(xùn)練的數(shù)據(jù)集,將數(shù)據(jù)集按照7∶3的比例分為訓(xùn)練集和測試集;將訓(xùn)練集數(shù)據(jù)輸入LSTM神經(jīng)網(wǎng)絡(luò)計算損失函數(shù),通過Adam優(yōu)化方法依據(jù)最小均方根誤差原則求解,得到訓(xùn)練后的模型;輸入測試數(shù)據(jù)集到LSTM網(wǎng)絡(luò)得到預(yù)測結(jié)果。初步依據(jù)經(jīng)驗確定模型參數(shù)步數(shù)設(shè)為1,隱藏層單元數(shù)1 500,神經(jīng)元個數(shù)4[10-12]。
圖8 模型構(gòu)建流程圖
本文通過計算耗時和模型誤差來評價模型效果。計算耗時通過統(tǒng)計模型訓(xùn)練過程消耗時長得到;模型誤差通過訓(xùn)練集與測試集預(yù)測結(jié)果的均方根誤差(RMSE)來定量的評價,公式如下:
式中:pt是預(yù)測值;yt是實測值;RMSE值越小,模型對番茄目標(biāo)產(chǎn)量的預(yù)測效果越好。但需保證RMSE值需小于持續(xù)性模型預(yù)測得到的基準值[13,14]。
持續(xù)性模型預(yù)測用于對線性增長趨勢的時間序列做出基準預(yù)測,在持續(xù)性模型中,將t-1時刻的觀測值數(shù)據(jù)作為下一時刻t的觀測值,持續(xù)性模型的預(yù)測結(jié)果是數(shù)據(jù)集的性能基線,可以作為評判LSTM模型效果的評價指標(biāo)[15]。將數(shù)據(jù)集分為訓(xùn)練集和測試集,以1996-2008年數(shù)據(jù)作為訓(xùn)練集,2009-2015年數(shù)據(jù)作為測試集,構(gòu)建持續(xù)性預(yù)測模型。預(yù)測結(jié)果如圖9所示,計算得到番茄產(chǎn)量持續(xù)性模型預(yù)測結(jié)果的均方根誤差為50.848。
圖9 持續(xù)性模型預(yù)測
應(yīng)用本文提出的模型構(gòu)建流程對番茄平均產(chǎn)量時序數(shù)據(jù)進行處理,經(jīng)過平穩(wěn)性檢驗與差分處理、轉(zhuǎn)化為監(jiān)督學(xué)習(xí)形式、標(biāo)準化后,對數(shù)據(jù)集分割為訓(xùn)練集和測試集,應(yīng)用訓(xùn)練集數(shù)據(jù)建立LSTM遞歸神經(jīng)網(wǎng)絡(luò)模型。初步依據(jù)經(jīng)驗確定模型參數(shù)步數(shù)設(shè)為1,隱藏層單元數(shù)1 500,神經(jīng)元個數(shù)4。通過計算得到LSTM番茄產(chǎn)量模型的均方根誤差小于基準均方根誤差,因此模型預(yù)測效果可靠(圖10)。
圖10 LSTM神經(jīng)網(wǎng)絡(luò)預(yù)測結(jié)果
由于遞歸神經(jīng)網(wǎng)絡(luò)訓(xùn)練初始條件為隨機生成,為驗證LSTM遞歸神經(jīng)網(wǎng)絡(luò)模型預(yù)測效果的穩(wěn)定性,對相同參數(shù)條件下的模型進行重復(fù)實驗,得到模型多次實驗均方根誤差分布情況(圖11)。
圖11 模型均方根誤差分布
統(tǒng)計50次重復(fù)實驗結(jié)果得到模型均方根誤差的平均值為5.2,標(biāo)準差為8.2,最小值和最大值分別為4.05和6.74,由箱型圖可知誤差大部分儲與4.5到5.6之間,驗證了模型預(yù)測效果的穩(wěn)定性。
為進一步驗證LSTM模型的應(yīng)用效果,引入3種不同時間序列模型ARIMA、小波神經(jīng)網(wǎng)絡(luò)、支持向量回歸模型與LSTM模型預(yù)測效果進行對比,結(jié)果表1所示:
表1 模型預(yù)測效果對比
從表1中可以看出,LSTM模型擬合測試集上均方根誤差為5.453;而ARIMA模型測試集上均方根誤差7.956;WNN模型測試集上均方根誤差23.232;SVR模型測試集上均方根誤差15.53。LSTM模型在測試集上的均方根誤差均優(yōu)于ARIMA、WNN、SVR模型,但訓(xùn)練過程計算消耗時長LSTM模型5.4秒高于其他模型。
建立了基于LSTM遞歸神經(jīng)網(wǎng)絡(luò)的番茄目標(biāo)產(chǎn)量預(yù)測方法,應(yīng)用1996-2015年為期20年的歷史數(shù)據(jù)對LSTM模型進行訓(xùn)練和預(yù)測,結(jié)果表明,LSTM遞歸神經(jīng)網(wǎng)絡(luò)模型能夠較好的預(yù)測番茄目標(biāo)產(chǎn)量的變化趨勢。并與ARIMA、WNN、SVR等算法的預(yù)測效果進行對比。實驗結(jié)果表明:
(1)在1996-2015年番茄年平均產(chǎn)量數(shù)據(jù)集上訓(xùn)練并建立了LSTM遞歸神經(jīng)網(wǎng)絡(luò)番茄目標(biāo)產(chǎn)量預(yù)測模型,驗證了LSTM遞歸神經(jīng)網(wǎng)絡(luò)在番茄目標(biāo)產(chǎn)量預(yù)測問題上具有較好的擬合效果,模型的訓(xùn)練集和測試集均方根誤差均較小,說明對未來幾年的番茄產(chǎn)量預(yù)測能夠反應(yīng)番茄產(chǎn)量的變化規(guī)律,可以用來指導(dǎo)番茄目標(biāo)產(chǎn)量的確定。
(2)對LSTM遞歸神經(jīng)網(wǎng)絡(luò)的穩(wěn)定性進行了驗證,相同參數(shù)下重復(fù)進行訓(xùn)練10次,得到每次模型在測試集上的均方根誤差值。其中均方根誤差平均數(shù)為5.45,標(biāo)準差為0.55,最小均方根誤差4.70,最大均方根誤差5.71,均方根誤差的中位數(shù)為5.318。多次實驗下均方根誤差標(biāo)準差小,說明LSTM遞歸神經(jīng)網(wǎng)絡(luò)模型穩(wěn)定性較好,多次重復(fù)實驗情況下能取得較為穩(wěn)定的擬合效果,對番茄產(chǎn)量的預(yù)測結(jié)果可信度較高。
(3)LSTM遞歸神經(jīng)網(wǎng)絡(luò)模型在時間序列預(yù)測問題上較ARIMA、WNN、SVR有更好的精度,但由于LSTM遞歸神經(jīng)網(wǎng)絡(luò)具有更復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu),求解過程相對其他模型更加復(fù)雜,耗時更長,不適合應(yīng)用于需要實時預(yù)測的問題,番茄目標(biāo)產(chǎn)量的確定屬于番茄種植的播前決策環(huán)節(jié),對于實時性要求不高,LSTM遞歸神經(jīng)網(wǎng)絡(luò)構(gòu)建的番茄目標(biāo)產(chǎn)量預(yù)測模型適用。