(張明躍 周慧玲 錢榮榮 汪中明 劉尚峰
(北京郵電大學人工智能學院1,北京 100089)
(國家糧食和物資儲備局科學研究院2,北京 100037)
(安徽現(xiàn)代糧食物流中心庫3,舒城 231323)
糧食是我國重要的戰(zhàn)略儲備物資,糧食儲備是保障糧食安全的關鍵環(huán)節(jié),在糧食儲藏過程中,害蟲及霉變的發(fā)生是造成糧食損失的主要誘因。在實際糧庫中,對糧堆溫度、濕度進行精準監(jiān)控,是防止害蟲和霉菌發(fā)生,從而保障糧食數(shù)量和質量安全的關鍵因素。目前我國各級糧庫通過在糧倉內布置溫度傳感器陣列,實現(xiàn)對糧堆內溫度的實時監(jiān)測,保管員通過糧情信息管理系統(tǒng)對糧溫信息進行分析,從而對糧堆是否出現(xiàn)安全異常點進行判斷。
我國早期的糧情監(jiān)測系統(tǒng)僅限于對糧庫溫度的實時檢測,而糧溫信息是否正確,以及其變化趨勢是否超出安全范圍,一般只能憑借管理員的經驗進行判斷并做出相應控制決策,這樣會導致對安全隱患的遲判或漏判,因此對糧堆溫度進行短期的有效預測就顯得尤為重要。因此,研究人員逐漸展開對糧食儲藏溫度場預測的理論研究,以建立有效的糧堆溫度預測體系,提前發(fā)現(xiàn)溫度異常位置,及時采取防控措施,以達到減少糧食損失,保障糧食質量安全的目的。
此外,根據(jù)原國家糧食局頒發(fā)的糧情電子檢測分析控制系統(tǒng)技術規(guī)程要求[1],高大平方倉內溫度傳感器節(jié)點水平距離不能超過5 m,以吊頂糧倉為例,各層的溫度傳感器節(jié)點橫向距離為4.38 m,縱向距離為4.2 m。由于糧食是熱的不良導體,糧堆對熱的傳入、傳出都很緩慢,若局部節(jié)點間有因害蟲的快速生長或霉變情況發(fā)生而造成的溫度異常,等到鄰近的溫度傳感器節(jié)點監(jiān)測出來時,可能為時已晚,因此要建立有效的糧堆溫度預測系統(tǒng),對糧堆溫度場進行整體把控,對傳感器節(jié)點間溫度進行預測插值,以達到對糧庫溫度場的更精準監(jiān)測。
糧堆導熱性、熱容量的規(guī)律和分布是對糧堆溫度場變化進行預測的理論基礎。雖然影響糧溫變化的因素十分復雜,但是糧倉溫度場分布及其變化規(guī)律是可以通過數(shù)學模型大致計算的,因此在實際糧倉中,通過對溫度場進行一定的簡化,可以在時間維度上可以將糧堆溫度預測看作一個非線性的時間序列問題并進行預測[2]。
傳統(tǒng)的糧溫預測模型主要分為三類:基于三傳理論的計算模型、有限元分析法和基于經驗函數(shù)建立溫度場的預測模型?;谌齻骼碚摰挠嬎隳P褪腔跓崃W、傳熱學以及能量平衡理論,通過一定量的數(shù)學計算推算出糧堆溫度變化趨勢的理論模型[3];有限元方法是通過簡化糧倉存儲環(huán)境,利用有限元進行瞬態(tài)溫度模擬,建立溫度場,進而對糧堆溫度進行預測[4];基于經驗函數(shù)的預測模型是將節(jié)點的溫度變化趨勢預設為某種數(shù)學函數(shù),如冪函數(shù),指數(shù)函數(shù)或正弦函數(shù),其中,指數(shù)函數(shù)和冪函數(shù)雖然可對糧堆溫度進行預測,但是預測精度不高且無法表征糧堆溫度變化規(guī)律;正弦函數(shù)是吳子丹[5]在分析歸納了我國大量糧倉糧情數(shù)據(jù)后提出的一種經驗模型,從實際應用情況來看,也較為符合糧堆溫度變化規(guī)律。
上述研究揭示了糧堆溫度場變化的一些規(guī)律并在糧堆溫度預測研究方面取得了一定的成效,但是由于糧溫時間序列的非線性特性、復雜性以及在糧庫中實際應用的落地性,用上述研究方法建立的數(shù)學模型存在一定的局限:基于三傳理論的預測模型相關的參數(shù)較多,每個監(jiān)測點的溫度變化和其他監(jiān)測點的溫度變化具有相關性,假如對每一個監(jiān)測點都使用該模型計算,則計算量會很大,隨之計算時間也會很長,不能滿足實時性的要求,不便應用在實際糧庫內的溫度預測;有限元分析法是通過將復雜問題簡單化,進而對問題進行近似求解,預測精度存在偏差,只能在實驗室條件下進行[6];基于經驗函數(shù)的糧溫預測模型,是將糧堆溫度變化規(guī)律預設為固定的數(shù)學函數(shù),再去對模型參數(shù)進行更新,這樣的預測精度不高。
機器學習和深度學習技術因其能有效處理復雜非線性問題和自動學習模型參數(shù)上的優(yōu)勢,可以有效解決傳統(tǒng)溫度預測方法中模型復雜,計算量大,或預測精度不高的局限,從而提升整體預測效果,正被逐漸應用到糧堆溫度預測研究上。郭平飛等[7]通過人工神經網絡和粒子群算法優(yōu)化過的神經網絡對糧食溫度進行了預測;同時也使用循環(huán)神經網絡及其變體對糧食溫度進行預測,并通過改進網絡結構和激活函數(shù)進一步提高預測效果。在2019年,趙巖等[8]通過長期短時記憶網絡算法(LSTM)對糧庫的溫度數(shù)據(jù)進行預測,與支持向量機(SVM)和整合移動平均自回歸模型(ARIMA)算法相比,預測效果提升了5%。段珊珊等[9]通過分析儲糧環(huán)境中氣象影響因素,通過支持向量機算法(SVM)基于多氣象因素對糧堆表層平均溫度進行預測。
這些基于機器學習的糧堆溫度預測算法雖然取得了不錯的預測效果,但是這些研究僅考慮了傳感器節(jié)點數(shù)據(jù)時間層面而忽略了空間層面即節(jié)點之間的相互影響,而對于糧堆這種可自激不穩(wěn)定的復雜生態(tài)系統(tǒng),割裂空間層面而單純考慮時間層面的方法,預測精度會存在局限性。因此本文提出基于長期短時記憶網絡(LSTM)的變體門限循環(huán)神經網絡(GRU)和反距離加權(IDW)的時空-溫度預測插值算法,在糧溫數(shù)據(jù)時間層面建模的基礎上增加了空間影響因素,即通過對節(jié)點歷史溫度數(shù)據(jù)分析的基礎上增加了相鄰節(jié)點的影響因素,以得到該節(jié)點的溫度變化規(guī)律,對未來時刻的溫度數(shù)據(jù)進行預測。并且,基于此預測模型能夠對未知節(jié)點溫度數(shù)據(jù)進行預測插值的特性,可以生成未來時刻的糧堆溫度場云圖,直觀反映出糧堆溫度場宏觀變化趨勢,為糧庫提前預知局部危險因素提供指導[10]。
本研究的糧堆溫度數(shù)據(jù)來源于安徽庫13號吊頂倉的溫度傳感器陳列,其布置方式是:溫度傳感器布置有4層,層間距離不大于2 m,每一層傳感器陣列由東向西分為10列,由南向北為7行,每一層溫度傳感器節(jié)點間橫向間距為4.38 m,縱向間距為4.2 m,一層共有70個傳感器節(jié)點。由于在有限時間內, 糧溫在時空上的變化是有限的 ,即在短時間內糧堆各個溫度傳感器節(jié)點溫度數(shù)據(jù)變化不大,因此本研究中的實際糧庫內的糧溫數(shù)據(jù)采樣頻率設置為每周1次,采樣時間為每周一上午8時,數(shù)據(jù)從2019年1月到2019年12月,長度為52周。糧堆各層的溫度傳感器節(jié)點分布如圖1所示,每層溫度傳感器數(shù)據(jù)為70個。
圖1 糧堆溫度傳感器節(jié)點分布圖
判斷節(jié)點的糧溫數(shù)據(jù)是否具有時間相關性,是進行糧溫預測的基礎。經過對不同地區(qū)不同糧倉糧溫信息分析研究,學者們發(fā)現(xiàn)糧堆內任何測溫點的糧溫變化都是一個與糧倉外界氣溫變化類似的隨時間變化的正弦曲線,但隨其在糧堆內位置的不同,或者說距糧倉外壁距離的不同,節(jié)點糧溫時滯逐漸加大,即糧溫曲線出現(xiàn)滯后效應[11]。由于糧堆靠近糧壁處和表層的溫度受糧倉外部氣溫影響較大,糧堆內部溫度變化較為平穩(wěn),且具有均勻化的特性,即在沒有外部干擾的情況下,內部節(jié)點溫差不大,便于通過預測模型挖掘溫度變化規(guī)律[12]。因此本研究僅針對糧堆內部溫度和表層第二層溫度數(shù)據(jù)進行預測和插值研究,而不考慮測溫矩陣外部和表層的糧堆溫度數(shù)據(jù)。
從糧堆第二層各個溫度傳感器采集的一年52周的糧溫數(shù)據(jù)中,選取其中4個不同的較為分散的內部節(jié)點溫度數(shù)據(jù)做分析,如圖1中所示,節(jié)點溫度變化曲線如圖2所示,可以看出某節(jié)點溫度時間序列呈明顯的季節(jié)性趨勢,基本呈現(xiàn)出正弦變動趨勢。
圖2 節(jié)點溫度時間序列圖
典型的時間序列數(shù)據(jù)都具有滯后效應,即前一時刻的值會對下一段時刻的值產生影響,這是進行時間序列分析建模的基本依據(jù)[13]。因此本研究首先通過時間自相關分析法對溫度傳感器節(jié)點的溫度時間序列數(shù)據(jù)進行了分析。時間自相關性是指同一時間序列在不同時刻取值的相關程度,假設有時間序列x,設在時刻i和滯后k階即i+k時刻之的時間相關性即為k階自相關,相關性系數(shù)公式為:
(1)
式中:E代表期望計算;k表示時間步長;σ表示標準差;Xi代表在i時刻的時間觀測值;Xi+k代表在i+k時刻的時間觀測值;μi和μi+k表示同一條時間序列中在i時刻和i+k時刻的期望值,相關性系數(shù)越接近于1,說明i時刻與i+k時刻時間相關性越強。通過上式可計算糧堆溫度時間序列滯后k階自相關系數(shù)的值,如表1所示。
表1 時間自相關系數(shù)表
從表中數(shù)據(jù)可知,糧堆溫度時間序列隨著滯后階數(shù)k的增加,糧溫時間序列的自相關系數(shù)從大逐漸減小。說明糧溫時間序列中某一時刻的值對下k個時刻的溫度值有一定的影響,并且這個影響隨著k的增大即滯后時間的增大,逐漸變小,糧溫預測模型正是通過分析挖掘這一特性來對未來時刻的數(shù)據(jù)進行預測的[14]。此外,對本文預測模型用于輸入的樣本數(shù)據(jù)進行構建時,需要通過滑動時間窗口法將一維糧溫時間序列劃分為若干個時間樣本數(shù)據(jù),并且不同長度的窗口大小還會對預測效果產生不同的影響,較小的窗口尺寸不能保證模型提取到足夠的長的特征,而較大的窗口尺寸將增加無關的輸入和計算復雜性。因此,通過自相關分析可以確定合適的窗口尺寸范圍,以窗口長度是3為例,數(shù)據(jù)集劃分如圖3所示。
圖3 時間序列數(shù)據(jù)集樣本建立
本研究的糧溫預測模型是在對時間層面建模的基礎上考慮了空間影響因素,以提高預測精度,因此需要對溫度數(shù)據(jù)進行空間相關性分析,來驗證同一時刻相鄰節(jié)點的溫度數(shù)據(jù)是否存在空間相關性,以此作為糧溫預測模型增加空間影響因素合理性的理論基礎。
莫蘭指數(shù)是空間自相關系數(shù)的一種,其值分布在[-1,1],用于判別網格數(shù)據(jù)空間層面是否存在自相關性,其值大于0說明網格空間數(shù)據(jù)存在正相關性,越近于1說明正相關性越強;小于0說明網格空間數(shù)據(jù)存在負相關性,越接近于-1說明負相關性越強[15],計算公式為:
(2)
其中,S0計算公式為:
(3)
圖4 全局莫蘭指數(shù)折線圖
由結果可知,各周糧溫數(shù)據(jù)全局莫蘭指數(shù)均大于0,說明糧溫數(shù)據(jù)在空間層面上具有正相關性,即某個節(jié)點溫度與周圍節(jié)點溫度存在聯(lián)系,具有相近的變化趨勢。
通過時間自相關系數(shù)分析法和空間莫蘭指數(shù)分析法對糧溫時間序列數(shù)據(jù)進行分析后得出結論:短期內即滯后周數(shù)較小時,糧溫數(shù)據(jù)在時間維度上具有較強的相關性,某刻的溫度會對之后時刻的溫度產生影響,這是對糧溫進行短期預測的理論基礎;在空間維度上,糧溫數(shù)據(jù)具有正相關性,某節(jié)點的溫度會受到周圍節(jié)點溫度的影響,這為本文的時間空間相結合進行溫度預測提供了理論基礎。
為了減輕數(shù)據(jù)尺寸的影響并加快模型訓練的速度,將糧溫數(shù)據(jù)轉為以0.1攝氏度為單位的數(shù)據(jù),然后對糧溫數(shù)據(jù)進行歸一化處理,公式為:
(4)
式中:x*表示歸一化后的標準數(shù)據(jù);x表示原始糧溫數(shù)據(jù);xmax表示節(jié)點糧溫數(shù)據(jù)最大值;xmin表示節(jié)點糧溫數(shù)據(jù)最小值。
本研究選取平均絕對值誤差MAE、均方誤差RMSE 以及R2三個指標對模型預測的可靠性和準確性進行度量。其中MAE和RMSE指標衡量預測值偏離真實值的誤差,其值越小代表預測效果越好,而R2衡量模型擬合數(shù)據(jù)的能力,該值越接近1,模型效果越好。其各自的計算公式為:
(5)
(6)
(7)
傳統(tǒng)的神經網絡模型,如深度神經網絡模型和卷積神經網絡模型等都無法應用在時間序列數(shù)據(jù)分析上面,而為了進行時間序列數(shù)據(jù)的分析處理,循環(huán)神經網絡模型(RNN)應運而生。RNN模型可以通過單元的隱藏層將信息傳遞給下一個單元,使得該隱藏層的輸出由當前時刻與上一時刻共同決定,從而可以將信息傳遞下去,因此RNN在處理時間序列數(shù)據(jù)時具有優(yōu)勢。但是,RNN無法處理輸入時間序列數(shù)據(jù)中的長期依賴問題,即距當前時刻較長時間前的信息無法傳遞下來,并且還可能會導致梯度消失和梯度爆炸問題。為了解決這些問題,有學者提出了長短期記憶網絡(LSTM)。
LSTM添加了細胞狀態(tài)Ct,可以保留細胞單元之前的信息,從而使網絡具有長期記憶,細胞單元結構如圖5所示。
圖5 LSTM細胞單元結構圖
ht分別作為細胞單元當前時刻輸出和下一時刻的輸入,Ct是細胞狀態(tài),用于保存單元狀態(tài)和之前的信息。ht-1和ct-1是前一個單元的輸出和細胞狀態(tài),而xt是該時刻的輸入,整體公式為:
(ht,Ct)=Ht(xt,ht-1,Ct-1)
(8)
式中:Ht是細胞單元中的整體函數(shù),它由三部分組成,分別是遺忘門,輸入門和輸出門:遺忘門用于確定上一個單元的信息在當前單元格中保留的程度,并向單元格狀態(tài)Ct輸出一個介于0和1之間的數(shù)字,以表示要保留哪些信息,公式為:
ft=σ(Wf·[xt,ht-1]+bf)
(9)
式中:ft是忘記門的輸出;W和b是網絡參數(shù),σ是激活函數(shù);下一部分是輸入門,它通過將單元狀態(tài)從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 的三個門函數(shù)以及整個單元輸出狀態(tài)的更新,確保輸入特征的關鍵信息得到保留和傳遞。
而GRU(門循環(huán)神經網絡)是在原始LSTM網絡基礎上,將LSTM的遺忘門和輸入門合成了一個更新門,并增加了重置門,去除掉了細胞狀態(tài),使用隱藏狀態(tài)來進行信息的傳遞,是一種新變體,如圖6所示。
圖6 GRU結構圖
圖6中的rt和zt分別表示重置門和更新門的輸出。重置門用于控制前一細胞單元有多少信息得以保留。更新門用于控制前一細胞單元的狀態(tài)信息被帶入到當前狀態(tài)中的程度,更新門的值越大說明前一時刻的狀態(tài)信息帶入越多。與LSTM相比GRU只有兩個門,進一步簡化了模型,能加快模型收斂速度,尤其針對本研究中糧堆溫度數(shù)據(jù)數(shù)據(jù)量較少,用于輸入的節(jié)點數(shù)據(jù)過多的問題,GRU能減小參數(shù)數(shù)量,有效解決過擬合問題,因此本文采用GRU進行糧堆溫度時間層面的初步預測。
反距離權重插值(IDW)是空間插值算法的一種,旨在通過有限的節(jié)點信息計算出未知節(jié)點的信息。反距離權重插值的基本思想是:距離待插值點越遠的節(jié)點貢獻度越低,距離近的節(jié)點則貢獻度越高,并且貢獻度與距待插值點的距離成反比[16]。計算過程如下:
首先,需要計算所有離散節(jié)點與待插值節(jié)點的距離,在二維平面空間,離散點(xi,yi)到網格(A,B)的距離Di為:
(14)
然后,需要找出離待插值節(jié)點(A,B)最近的N個離散點并計算距離,則待插值節(jié)點(A,B)上的估算值Z為:
(15)
其中,Zi為離散點i上的實際值,Z(A,B)為待插值節(jié)點(A,B)上的估算值,Di為待插值點與第i個節(jié)點間的距離,P是距離的冪,一般取2。
相比于其他空間插值算法,反距離權重插值適用于表現(xiàn)出均勻分布而且足夠密集以反映局部差異的觀測點數(shù)據(jù)集的場景,尤其適用于場景呈現(xiàn)出局部變異性的情況。本研究中糧庫內傳感器節(jié)點分布均勻,布點密集,且因為發(fā)生害蟲或霉菌,易出現(xiàn)局部溫度突變的情況。另外,IDW通過權重系數(shù)可將距待測節(jié)點距離遠,影響不大的節(jié)點數(shù)據(jù)基本忽略,相當于進行了dropout,并且也便于將IDW的權重作為輸入特征連接到GRU網絡結構之后。因此本研究將IDW作為預測模型的空間建模部分,連接到GRU層后,通過反向傳播對整體模型進行參數(shù)的更新。
首先將糧堆傳感器各個節(jié)點數(shù)據(jù)通過滑動窗口法轉化為用于模型輸入的樣本數(shù)據(jù),之后再分別通過GRU層和IDW層,最后得到待預測點下一時刻的預測值。以糧堆傳感器節(jié)點的某一層為例,如要預測某一節(jié)點A的溫度數(shù)據(jù),首先將其他節(jié)點的歷史溫度數(shù)據(jù)分別輸入到GRU層中,初步獲得各節(jié)點的初步預測值Zi,i代表第i個節(jié)點,設IIDW=[i1,i2,…in]是IDW層的輸入向量,其中in為各節(jié)點的貢獻,計算公式如下:
(16)
式中:i代表第i節(jié)點;Zi代表GRU層的輸出;n為節(jié)點總數(shù);wi為權重;計算公式為:
(17)
式中:d(x,xi)是點x與xi之間的距離;p用于調節(jié)靈敏度,保持權重增加或上升合適的速率,一般取2。通過IDW層可初步將貢獻度低即距離遠的糧堆節(jié)點數(shù)據(jù)忽略。因相同距離節(jié)點的貢獻度也不一定相同,因此最后將IIDW輸入全連接層,再進一步對特征進行篩選,得到最后的輸出:
OA=σ(WIDW·IIDW+bIDW)
(18)
OA即為未知節(jié)點A點的預測值。以此方法,可以預測出其他未知節(jié)點的溫度數(shù)據(jù),并生成未來時刻的溫度云圖。
溫度數(shù)據(jù)采用1年的歷史數(shù)據(jù),通過滑動窗口方法劃分溫度時間序列樣本數(shù)據(jù),獲得特征和相應標簽,對模型進行訓練,滑動窗口大小通過時間自相關性分析后初步設置為4,可以將糧堆時間序列劃分為48個長度為4的一維樣本數(shù)據(jù),可以理解為通過4周的數(shù)據(jù)預測下一周的溫度。同時將糧堆第二層的70個節(jié)點的糧溫數(shù)據(jù)輸入模型,數(shù)據(jù)維度是70×48×1×4,用70%的數(shù)據(jù)進行訓練,30%的數(shù)據(jù)進行測試,batchsize設為3,epoch設為200,優(yōu)化算法使用adam,GRU單元維度為4,使用均方誤差(RMSE)作為損失函數(shù),進行優(yōu)化迭代,訓練時長為367 s。
為了進一步評估算法的性能,本研究將預測模型其與其他常用的時間序列分析算法進行了比較,包括傳統(tǒng)的經驗函數(shù)法,支持向量機(SVM),平移自回歸函數(shù)(ARIMA),和LSTM等算法,預測結果如下表2所示。
表2 實驗結果
其中 MAE、MSE指標衡量預測值偏離真實值的誤差,其值越小代表預測效果越好,而R2衡量模型擬合數(shù)據(jù)的能力,該值越接近1,說明模型效果越好。由表可知,LSTM算法優(yōu)于SVM和ARIMA算法,表明GRU在處理溫度預測這種非線性的時間序列數(shù)據(jù)時,比傳統(tǒng)算法具有優(yōu)勢;本研究的GRU+IDW算法效果優(yōu)于LSTM算法,表明同時考慮時間和空間相關性比單純考慮時間相關性效果要好。
在進行未來溫度場云圖插值方面,實驗數(shù)據(jù)來源糧庫,東西向長度為39.42 m,南北向長度為25.2 m,因算法僅需要輸入已知傳感器歷史溫度數(shù)據(jù)和待預測節(jié)點的位置信息,因此通過對糧庫按0.1 m進行空間插值,以通過歷史數(shù)據(jù)分別插值預測2019年5月13日、2019年9月9日和2019年12月12日為例,插值云圖見圖7。
圖7 預測插值云圖
通過交叉驗證的方法,將糧堆內部10個較為分散的傳感器節(jié)點設為待預測節(jié)點,通過模型得到的預測值與真實值作比較,三個日期預測插值的RMSE分別為25.24,29.25,23.85,預測結果誤差不超過1°,因此預測插值出的云圖能較為準確的反映出實際糧倉的溫度場變化,可直觀分析出溫度過高的溫度節(jié)點,使倉庫保管員能對可能爆發(fā)蟲害的危險點進行監(jiān)控,對糧庫進行微觀把控。
使用基于深度學習的方法,經檢驗在處理非線性的溫度時間序列方面效果優(yōu)于傳統(tǒng)的預測算法。并且GRU+IDW模型是在時間層面預測的基礎上考慮了空間影響因素,與現(xiàn)在糧庫常用的基于經驗函數(shù)的溫度預測算法和只考慮時間層面的機器學習預測算法相比,預測模型得到的節(jié)點溫度預測均方誤差分別降低了23.81和6.82,預測精度得到提升。并且基于此預測模型還能夠對未知節(jié)點溫度數(shù)據(jù)進行預測插值,生成未來時刻的溫度場云圖,從實驗結果來看能夠較為準確地反映出實際糧堆溫度場變化趨勢,可為糧庫溫度監(jiān)測提供指導。