(張明躍 周慧玲 錢榮榮 汪中明 劉尚峰
(北京郵電大學人工智能學院1,北京 100089)
(國家糧食和物資儲備局科學研究院2,北京 100037)
(安徽現代糧食物流中心庫3,舒城 231323)
糧食是我國重要的戰略儲備物資,糧食儲備是保障糧食安全的關鍵環節,在糧食儲藏過程中,害蟲及霉變的發生是造成糧食損失的主要誘因。在實際糧庫中,對糧堆溫度、濕度進行精準監控,是防止害蟲和霉菌發生,從而保障糧食數量和質量安全的關鍵因素。目前我國各級糧庫通過在糧倉內布置溫度傳感器陣列,實現對糧堆內溫度的實時監測,保管員通過糧情信息管理系統對糧溫信息進行分析,從而對糧堆是否出現安全異常點進行判斷。
我國早期的糧情監測系統僅限于對糧庫溫度的實時檢測,而糧溫信息是否正確,以及其變化趨勢是否超出安全范圍,一般只能憑借管理員的經驗進行判斷并做出相應控制決策,這樣會導致對安全隱患的遲判或漏判,因此對糧堆溫度進行短期的有效預測就顯得尤為重要。因此,研究人員逐漸展開對糧食儲藏溫度場預測的理論研究,以建立有效的糧堆溫度預測體系,提前發現溫度異常位置,及時采取防控措施,以達到減少糧食損失,保障糧食質量安全的目的。
此外,根據原國家糧食局頒發的糧情電子檢測分析控制系統技術規程要求[1],高大平方倉內溫度傳感器節點水平距離不能超過5 m,以吊頂糧倉為例,各層的溫度傳感器節點橫向距離為4.38 m,縱向距離為4.2 m。由于糧食是熱的不良導體,糧堆對熱的傳入、傳出都很緩慢,若局部節點間有因害蟲的快速生長或霉變情況發生而造成的溫度異常,等到鄰近的溫度傳感器節點監測出來時,可能為時已晚,因此要建立有效的糧堆溫度預測系統,對糧堆溫度場進行整體把控,對傳感器節點間溫度進行預測插值,以達到對糧庫溫度場的更精準監測。
糧堆導熱性、熱容量的規律和分布是對糧堆溫度場變化進行預測的理論基礎。雖然影響糧溫變化的因素十分復雜,但是糧倉溫度場分布及其變化規律是可以通過數學模型大致計算的,因此在實際糧倉中,通過對溫度場進行一定的簡化,可以在時間維度上可以將糧堆溫度預測看作一個非線性的時間序列問題并進行預測[2]。
傳統的糧溫預測模型主要分為三類:基于三傳理論的計算模型、有限元分析法和基于經驗函數建立溫度場的預測模型。基于三傳理論的計算模型是基于熱力學、傳熱學以及能量平衡理論,通過一定量的數學計算推算出糧堆溫度變化趨勢的理論模型[3];有限元方法是通過簡化糧倉存儲環境,利用有限元進行瞬態溫度模擬,建立溫度場,進而對糧堆溫度進行預測[4];基于經驗函數的預測模型是將節點的溫度變化趨勢預設為某種數學函數,如冪函數,指數函數或正弦函數,其中,指數函數和冪函數雖然可對糧堆溫度進行預測,但是預測精度不高且無法表征糧堆溫度變化規律;正弦函數是吳子丹[5]在分析歸納了我國大量糧倉糧情數據后提出的一種經驗模型,從實際應用情況來看,也較為符合糧堆溫度變化規律。
上述研究揭示了糧堆溫度場變化的一些規律并在糧堆溫度預測研究方面取得了一定的成效,但是由于糧溫時間序列的非線性特性、復雜性以及在糧庫中實際應用的落地性,用上述研究方法建立的數學模型存在一定的局限:基于三傳理論的預測模型相關的參數較多,每個監測點的溫度變化和其他監測點的溫度變化具有相關性,假如對每一個監測點都使用該模型計算,則計算量會很大,隨之計算時間也會很長,不能滿足實時性的要求,不便應用在實際糧庫內的溫度預測;有限元分析法是通過將復雜問題簡單化,進而對問題進行近似求解,預測精度存在偏差,只能在實驗室條件下進行[6];基于經驗函數的糧溫預測模型,是將糧堆溫度變化規律預設為固定的數學函數,再去對模型參數進行更新,這樣的預測精度不高。
機器學習和深度學習技術因其能有效處理復雜非線性問題和自動學習模型參數上的優勢,可以有效解決傳統溫度預測方法中模型復雜,計算量大,或預測精度不高的局限,從而提升整體預測效果,正被逐漸應用到糧堆溫度預測研究上。郭平飛等[7]通過人工神經網絡和粒子群算法優化過的神經網絡對糧食溫度進行了預測;同時也使用循環神經網絡及其變體對糧食溫度進行預測,并通過改進網絡結構和激活函數進一步提高預測效果。在2019年,趙巖等[8]通過長期短時記憶網絡算法(LSTM)對糧庫的溫度數據進行預測,與支持向量機(SVM)和整合移動平均自回歸模型(ARIMA)算法相比,預測效果提升了5%。段珊珊等[9]通過分析儲糧環境中氣象影響因素,通過支持向量機算法(SVM)基于多氣象因素對糧堆表層平均溫度進行預測。
這些基于機器學習的糧堆溫度預測算法雖然取得了不錯的預測效果,但是這些研究僅考慮了傳感器節點數據時間層面而忽略了空間層面即節點之間的相互影響,而對于糧堆這種可自激不穩定的復雜生態系統,割裂空間層面而單純考慮時間層面的方法,預測精度會存在局限性。因此本文提出基于長期短時記憶網絡(LSTM)的變體門限循環神經網絡(GRU)和反距離加權(IDW)的時空-溫度預測插值算法,在糧溫數據時間層面建模的基礎上增加了空間影響因素,即通過對節點歷史溫度數據分析的基礎上增加了相鄰節點的影響因素,以得到該節點的溫度變化規律,對未來時刻的溫度數據進行預測。并且,基于此預測模型能夠對未知節點溫度數據進行預測插值的特性,可以生成未來時刻的糧堆溫度場云圖,直觀反映出糧堆溫度場宏觀變化趨勢,為糧庫提前預知局部危險因素提供指導[10]。
本研究的糧堆溫度數據來源于安徽庫13號吊頂倉的溫度傳感器陳列,其布置方式是:溫度傳感器布置有4層,層間距離不大于2 m,每一層傳感器陣列由東向西分為10列,由南向北為7行,每一層溫度傳感器節點間橫向間距為4.38 m,縱向間距為4.2 m,一層共有70個傳感器節點。由于在有限時間內, 糧溫在時空上的變化是有限的 ,即在短時間內糧堆各個溫度傳感器節點溫度數據變化不大,因此本研究中的實際糧庫內的糧溫數據采樣頻率設置為每周1次,采樣時間為每周一上午8時,數據從2019年1月到2019年12月,長度為52周。糧堆各層的溫度傳感器節點分布如圖1所示,每層溫度傳感器數據為70個。

圖1 糧堆溫度傳感器節點分布圖
判斷節點的糧溫數據是否具有時間相關性,是進行糧溫預測的基礎。經過對不同地區不同糧倉糧溫信息分析研究,學者們發現糧堆內任何測溫點的糧溫變化都是一個與糧倉外界氣溫變化類似的隨時間變化的正弦曲線,但隨其在糧堆內位置的不同,或者說距糧倉外壁距離的不同,節點糧溫時滯逐漸加大,即糧溫曲線出現滯后效應[11]。由于糧堆靠近糧壁處和表層的溫度受糧倉外部氣溫影響較大,糧堆內部溫度變化較為平穩,且具有均勻化的特性,即在沒有外部干擾的情況下,內部節點溫差不大,便于通過預測模型挖掘溫度變化規律[12]。因此本研究僅針對糧堆內部溫度和表層第二層溫度數據進行預測和插值研究,而不考慮測溫矩陣外部和表層的糧堆溫度數據。
從糧堆第二層各個溫度傳感器采集的一年52周的糧溫數據中,選取其中4個不同的較為分散的內部節點溫度數據做分析,如圖1中所示,節點溫度變化曲線如圖2所示,可以看出某節點溫度時間序列呈明顯的季節性趨勢,基本呈現出正弦變動趨勢。

圖2 節點溫度時間序列圖
典型的時間序列數據都具有滯后效應,即前一時刻的值會對下一段時刻的值產生影響,這是進行時間序列分析建模的基本依據[13]。因此本研究首先通過時間自相關分析法對溫度傳感器節點的溫度時間序列數據進行了分析。時間自相關性是指同一時間序列在不同時刻取值的相關程度,假設有時間序列x,設在時刻i和滯后k階即i+k時刻之的時間相關性即為k階自相關,相關性系數公式為:
(1)
式中:E代表期望計算;k表示時間步長;σ表示標準差;Xi代表在i時刻的時間觀測值;Xi+k代表在i+k時刻的時間觀測值;μi和μi+k表示同一條時間序列中在i時刻和i+k時刻的期望值,相關性系數越接近于1,說明i時刻與i+k時刻時間相關性越強。通過上式可計算糧堆溫度時間序列滯后k階自相關系數的值,如表1所示。

表1 時間自相關系數表
從表中數據可知,糧堆溫度時間序列隨著滯后階數k的增加,糧溫時間序列的自相關系數從大逐漸減小。說明糧溫時間序列中某一時刻的值對下k個時刻的溫度值有一定的影響,并且這個影響隨著k的增大即滯后時間的增大,逐漸變小,糧溫預測模型正是通過分析挖掘這一特性來對未來時刻的數據進行預測的[14]。此外,對本文預測模型用于輸入的樣本數據進行構建時,需要通過滑動時間窗口法將一維糧溫時間序列劃分為若干個時間樣本數據,并且不同長度的窗口大小還會對預測效果產生不同的影響,較小的窗口尺寸不能保證模型提取到足夠的長的特征,而較大的窗口尺寸將增加無關的輸入和計算復雜性。因此,通過自相關分析可以確定合適的窗口尺寸范圍,以窗口長度是3為例,數據集劃分如圖3所示。

圖3 時間序列數據集樣本建立
本研究的糧溫預測模型是在對時間層面建模的基礎上考慮了空間影響因素,以提高預測精度,因此需要對溫度數據進行空間相關性分析,來驗證同一時刻相鄰節點的溫度數據是否存在空間相關性,以此作為糧溫預測模型增加空間影響因素合理性的理論基礎。
莫蘭指數是空間自相關系數的一種,其值分布在[-1,1],用于判別網格數據空間層面是否存在自相關性,其值大于0說明網格空間數據存在正相關性,越近于1說明正相關性越強;小于0說明網格空間數據存在負相關性,越接近于-1說明負相關性越強[15],計算公式為:
(2)
其中,S0計算公式為:
(3)


圖4 全局莫蘭指數折線圖
由結果可知,各周糧溫數據全局莫蘭指數均大于0,說明糧溫數據在空間層面上具有正相關性,即某個節點溫度與周圍節點溫度存在聯系,具有相近的變化趨勢。
通過時間自相關系數分析法和空間莫蘭指數分析法對糧溫時間序列數據進行分析后得出結論:短期內即滯后周數較小時,糧溫數據在時間維度上具有較強的相關性,某刻的溫度會對之后時刻的溫度產生影響,這是對糧溫進行短期預測的理論基礎;在空間維度上,糧溫數據具有正相關性,某節點的溫度會受到周圍節點溫度的影響,這為本文的時間空間相結合進行溫度預測提供了理論基礎。
為了減輕數據尺寸的影響并加快模型訓練的速度,將糧溫數據轉為以0.1攝氏度為單位的數據,然后對糧溫數據進行歸一化處理,公式為:
(4)
式中:x*表示歸一化后的標準數據;x表示原始糧溫數據;xmax表示節點糧溫數據最大值;xmin表示節點糧溫數據最小值。
本研究選取平均絕對值誤差MAE、均方誤差RMSE 以及R2三個指標對模型預測的可靠性和準確性進行度量。其中MAE和RMSE指標衡量預測值偏離真實值的誤差,其值越小代表預測效果越好,而R2衡量模型擬合數據的能力,該值越接近1,模型效果越好。其各自的計算公式為:
(5)
(6)
(7)
傳統的神經網絡模型,如深度神經網絡模型和卷積神經網絡模型等都無法應用在時間序列數據分析上面,而為了進行時間序列數據的分析處理,循環神經網絡模型(RNN)應運而生。RNN模型可以通過單元的隱藏層將信息傳遞給下一個單元,使得該隱藏層的輸出由當前時刻與上一時刻共同決定,從而可以將信息傳遞下去,因此RNN在處理時間序列數據時具有優勢。但是,RNN無法處理輸入時間序列數據中的長期依賴問題,即距當前時刻較長時間前的信息無法傳遞下來,并且還可能會導致梯度消失和梯度爆炸問題。為了解決這些問題,有學者提出了長短期記憶網絡(LSTM)。
LSTM添加了細胞狀態Ct,可以保留細胞單元之前的信息,從而使網絡具有長期記憶,細胞單元結構如圖5所示。

圖5 LSTM細胞單元結構圖
ht分別作為細胞單元當前時刻輸出和下一時刻的輸入,Ct是細胞狀態,用于保存單元狀態和之前的信息。ht-1和ct-1是前一個單元的輸出和細胞狀態,而xt是該時刻的輸入,整體公式為:
(ht,Ct)=Ht(xt,ht-1,Ct-1)
(8)
式中:Ht是細胞單元中的整體函數,它由三部分組成,分別是遺忘門,輸入門和輸出門:遺忘門用于確定上一個單元的信息在當前單元格中保留的程度,并向單元格狀態Ct輸出一個介于0和1之間的數字,以表示要保留哪些信息,公式為:
ft=σ(Wf·[xt,ht-1]+bf)
(9)
式中:ft是忘記門的輸出;W和b是網絡參數,σ是激活函數;下一部分是輸入門,它通過將單元狀態從Ct-1更新為Ct來確定應存儲哪些新信息,公式為:
Ct=ft?Ct-1+it?tanh(Wc·[xt,ht-1]+bc)
(10)
it=σ(Wi·[xt,ht-1]+bi)
(11)
最后,輸出門可以通過公式(11)計算單元的輸出ht,公式如下:
Ot=σ(Wo·[xt,ht-1]+b0
(12)
ht=Ot?tanh(Ct)
(13)
經過LSTM 的三個門函數以及整個單元輸出狀態的更新,確保輸入特征的關鍵信息得到保留和傳遞。
而GRU(門循環神經網絡)是在原始LSTM網絡基礎上,將LSTM的遺忘門和輸入門合成了一個更新門,并增加了重置門,去除掉了細胞狀態,使用隱藏狀態來進行信息的傳遞,是一種新變體,如圖6所示。

圖6 GRU結構圖
圖6中的rt和zt分別表示重置門和更新門的輸出。重置門用于控制前一細胞單元有多少信息得以保留。更新門用于控制前一細胞單元的狀態信息被帶入到當前狀態中的程度,更新門的值越大說明前一時刻的狀態信息帶入越多。與LSTM相比GRU只有兩個門,進一步簡化了模型,能加快模型收斂速度,尤其針對本研究中糧堆溫度數據數據量較少,用于輸入的節點數據過多的問題,GRU能減小參數數量,有效解決過擬合問題,因此本文采用GRU進行糧堆溫度時間層面的初步預測。
反距離權重插值(IDW)是空間插值算法的一種,旨在通過有限的節點信息計算出未知節點的信息。反距離權重插值的基本思想是:距離待插值點越遠的節點貢獻度越低,距離近的節點則貢獻度越高,并且貢獻度與距待插值點的距離成反比[16]。計算過程如下:
首先,需要計算所有離散節點與待插值節點的距離,在二維平面空間,離散點(xi,yi)到網格(A,B)的距離Di為:
(14)
然后,需要找出離待插值節點(A,B)最近的N個離散點并計算距離,則待插值節點(A,B)上的估算值Z為:
(15)
其中,Zi為離散點i上的實際值,Z(A,B)為待插值節點(A,B)上的估算值,Di為待插值點與第i個節點間的距離,P是距離的冪,一般取2。
相比于其他空間插值算法,反距離權重插值適用于表現出均勻分布而且足夠密集以反映局部差異的觀測點數據集的場景,尤其適用于場景呈現出局部變異性的情況。本研究中糧庫內傳感器節點分布均勻,布點密集,且因為發生害蟲或霉菌,易出現局部溫度突變的情況。另外,IDW通過權重系數可將距待測節點距離遠,影響不大的節點數據基本忽略,相當于進行了dropout,并且也便于將IDW的權重作為輸入特征連接到GRU網絡結構之后。因此本研究將IDW作為預測模型的空間建模部分,連接到GRU層后,通過反向傳播對整體模型進行參數的更新。
首先將糧堆傳感器各個節點數據通過滑動窗口法轉化為用于模型輸入的樣本數據,之后再分別通過GRU層和IDW層,最后得到待預測點下一時刻的預測值。以糧堆傳感器節點的某一層為例,如要預測某一節點A的溫度數據,首先將其他節點的歷史溫度數據分別輸入到GRU層中,初步獲得各節點的初步預測值Zi,i代表第i個節點,設IIDW=[i1,i2,…in]是IDW層的輸入向量,其中in為各節點的貢獻,計算公式如下:
(16)
式中:i代表第i節點;Zi代表GRU層的輸出;n為節點總數;wi為權重;計算公式為:
(17)
式中:d(x,xi)是點x與xi之間的距離;p用于調節靈敏度,保持權重增加或上升合適的速率,一般取2。通過IDW層可初步將貢獻度低即距離遠的糧堆節點數據忽略。因相同距離節點的貢獻度也不一定相同,因此最后將IIDW輸入全連接層,再進一步對特征進行篩選,得到最后的輸出:
OA=σ(WIDW·IIDW+bIDW)
(18)
OA即為未知節點A點的預測值。以此方法,可以預測出其他未知節點的溫度數據,并生成未來時刻的溫度云圖。
溫度數據采用1年的歷史數據,通過滑動窗口方法劃分溫度時間序列樣本數據,獲得特征和相應標簽,對模型進行訓練,滑動窗口大小通過時間自相關性分析后初步設置為4,可以將糧堆時間序列劃分為48個長度為4的一維樣本數據,可以理解為通過4周的數據預測下一周的溫度。同時將糧堆第二層的70個節點的糧溫數據輸入模型,數據維度是70×48×1×4,用70%的數據進行訓練,30%的數據進行測試,batchsize設為3,epoch設為200,優化算法使用adam,GRU單元維度為4,使用均方誤差(RMSE)作為損失函數,進行優化迭代,訓練時長為367 s。
為了進一步評估算法的性能,本研究將預測模型其與其他常用的時間序列分析算法進行了比較,包括傳統的經驗函數法,支持向量機(SVM),平移自回歸函數(ARIMA),和LSTM等算法,預測結果如下表2所示。

表2 實驗結果
其中 MAE、MSE指標衡量預測值偏離真實值的誤差,其值越小代表預測效果越好,而R2衡量模型擬合數據的能力,該值越接近1,說明模型效果越好。由表可知,LSTM算法優于SVM和ARIMA算法,表明GRU在處理溫度預測這種非線性的時間序列數據時,比傳統算法具有優勢;本研究的GRU+IDW算法效果優于LSTM算法,表明同時考慮時間和空間相關性比單純考慮時間相關性效果要好。
在進行未來溫度場云圖插值方面,實驗數據來源糧庫,東西向長度為39.42 m,南北向長度為25.2 m,因算法僅需要輸入已知傳感器歷史溫度數據和待預測節點的位置信息,因此通過對糧庫按0.1 m進行空間插值,以通過歷史數據分別插值預測2019年5月13日、2019年9月9日和2019年12月12日為例,插值云圖見圖7。

圖7 預測插值云圖
通過交叉驗證的方法,將糧堆內部10個較為分散的傳感器節點設為待預測節點,通過模型得到的預測值與真實值作比較,三個日期預測插值的RMSE分別為25.24,29.25,23.85,預測結果誤差不超過1°,因此預測插值出的云圖能較為準確的反映出實際糧倉的溫度場變化,可直觀分析出溫度過高的溫度節點,使倉庫保管員能對可能爆發蟲害的危險點進行監控,對糧庫進行微觀把控。
使用基于深度學習的方法,經檢驗在處理非線性的溫度時間序列方面效果優于傳統的預測算法。并且GRU+IDW模型是在時間層面預測的基礎上考慮了空間影響因素,與現在糧庫常用的基于經驗函數的溫度預測算法和只考慮時間層面的機器學習預測算法相比,預測模型得到的節點溫度預測均方誤差分別降低了23.81和6.82,預測精度得到提升。并且基于此預測模型還能夠對未知節點溫度數據進行預測插值,生成未來時刻的溫度場云圖,從實驗結果來看能夠較為準確地反映出實際糧堆溫度場變化趨勢,可為糧庫溫度監測提供指導。