蔣思瑋 孫 妍 陳 靜 袁 昕 宋雪樺
(江蘇大學(xué)計(jì)算機(jī)科學(xué)與通信工程學(xué)院 鎮(zhèn)江 212013)
中國(guó)作為糧食需求大國(guó),糧食問(wèn)題關(guān)乎國(guó)運(yùn)民生,科學(xué)儲(chǔ)糧是糧食產(chǎn)后的重要環(huán)節(jié)。目前,如何防治害蟲(chóng)、霉菌的污染是糧食存儲(chǔ)面臨的重大安全問(wèn)題。當(dāng)發(fā)生霉變、蟲(chóng)害時(shí),儲(chǔ)糧環(huán)境的多方面因素會(huì)受到影響,在這些因素中儲(chǔ)糧溫度是反映糧食安全存儲(chǔ)的重要指標(biāo)[1]。糧食自身的呼吸作用以及糧堆內(nèi)部發(fā)生蟲(chóng)害、霉變時(shí)產(chǎn)生的代謝都會(huì)影響儲(chǔ)糧溫度[2],預(yù)測(cè)儲(chǔ)糧溫度的變化是儲(chǔ)糧安全監(jiān)測(cè)和預(yù)警的有效手段。
隨著人工智能技術(shù)的發(fā)展,機(jī)器學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)在溫度預(yù)測(cè)中得到了廣泛的應(yīng)用。鄧玉睿[3]提出基于溫度、濕度、CO2 建立BP 神經(jīng)網(wǎng)絡(luò)構(gòu)建糧情監(jiān)控模型,對(duì)糧食霉變情況分類(lèi)預(yù)測(cè);郭利進(jìn)[4]采用基于SOM 聚類(lèi)算法和灰色關(guān)聯(lián)分析處理模型輸入向量,將灰色模型與改進(jìn)BP 神經(jīng)網(wǎng)絡(luò)相結(jié)合實(shí)現(xiàn)糧倉(cāng)溫度預(yù)測(cè),該方法相對(duì)于單一BP 網(wǎng)絡(luò)提高了溫度預(yù)測(cè)精度。BP 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)簡(jiǎn)單,每個(gè)隱含層之間的神經(jīng)元相互獨(dú)立,在面對(duì)具有時(shí)序性的數(shù)據(jù)時(shí),不能有效地提取數(shù)據(jù)的時(shí)序特征。糧食溫度預(yù)測(cè)需要對(duì)溫度這一時(shí)序數(shù)列的變化特征做出分析,針對(duì)這種時(shí)間依賴(lài)的特性,循環(huán)神經(jīng)網(wǎng)絡(luò)能很好地適應(yīng)這種情況[5]。林靖皓[6]等針對(duì)每年芒果產(chǎn)量的影響因素在時(shí)間上的關(guān)聯(lián)性,采用卷積神經(jīng)網(wǎng)絡(luò)和雙向門(mén)控單元建立芒果產(chǎn)量預(yù)測(cè)模型。JIA[7]等根據(jù)拉依達(dá)準(zhǔn)則(PauTa Criterion)和拉格朗日差值對(duì)礦井瓦斯?jié)舛缺O(jiān)測(cè)數(shù)據(jù)進(jìn)行預(yù)處理,為充分利用礦井瓦斯?jié)舛葦?shù)據(jù)的時(shí)間序列特征,提出了一種基于門(mén)控遞歸單元(Gated Recurrent Unit,GRU)的礦井瓦斯?jié)舛阮A(yù)測(cè)模型。徐一軒等[8]采集服務(wù)器溫度監(jiān)控?cái)?shù)據(jù)和運(yùn)行參數(shù),提出基于長(zhǎng)短記憶網(wǎng)絡(luò)的溫度預(yù)測(cè)模型,預(yù)測(cè)服務(wù)器入口溫度。馮鴻超[9]基于長(zhǎng)短期記憶網(wǎng)絡(luò)(Long Short-term Memory,LSTM)建立糧堆溫度預(yù)測(cè)模型,并使用Adam算法優(yōu)化網(wǎng)絡(luò)參數(shù),通過(guò)將預(yù)測(cè)值與閾值對(duì)比預(yù)測(cè)儲(chǔ)糧糧情。
根據(jù)儲(chǔ)糧溫度具有時(shí)序特性,本文提出一種基于門(mén)控循環(huán)單元的儲(chǔ)糧溫度預(yù)測(cè)方法。該方法利用GRU 網(wǎng)絡(luò)提取儲(chǔ)糧數(shù)據(jù)的時(shí)序特征,采用非線性慣性因子和自適應(yīng)學(xué)習(xí)因子的粒子群算法(Particle Swarm Optimization,PSO)優(yōu)化神經(jīng)網(wǎng)絡(luò)的初始權(quán)重,在模型中加入Dropout 算法和RMSProp 優(yōu)化器訓(xùn)練網(wǎng)絡(luò)參數(shù),該方法較傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)誤差更小,可以有效地?cái)M合儲(chǔ)糧溫度變化曲線。
預(yù)測(cè)模型為三層神經(jīng)網(wǎng)絡(luò),輸入層和隱藏層使用GRU 網(wǎng)絡(luò)學(xué)習(xí)時(shí)序數(shù)據(jù)特征,通過(guò)全連接層變換維度輸出預(yù)測(cè)結(jié)果。以時(shí)間窗滑動(dòng)的方式輸入時(shí)序數(shù)據(jù),預(yù)測(cè)模型框架如圖1所示。每個(gè)GRU單元獲取當(dāng)前時(shí)間步的輸入向量xt和上一時(shí)間步傳遞的隱藏層狀態(tài)?t。輸入向量進(jìn)入GRU 網(wǎng)絡(luò)后,沿兩個(gè)方向傳播,即沿網(wǎng)絡(luò)層前向和沿時(shí)間梯度傳播。
圖1 預(yù)測(cè)模型網(wǎng)絡(luò)框架
1)時(shí)序數(shù)據(jù)特征提取
循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)是時(shí)序數(shù)據(jù)、自然語(yǔ)言處理的常用模型,在訓(xùn)練過(guò)程中RNN 對(duì)短期記憶較為敏感,而對(duì)時(shí)序數(shù)據(jù)會(huì)有梯度消失和梯度爆炸的問(wèn)題[10]。GRU 單元是長(zhǎng)短期記憶網(wǎng)絡(luò)的變體,可避免在反向傳播時(shí)的梯度消失和梯度爆炸問(wèn)題,對(duì)于長(zhǎng)期依賴(lài)的時(shí)序數(shù)據(jù)有良好的學(xué)習(xí)能力。GRU 較LSTM 網(wǎng)絡(luò)參數(shù)少,收斂速度快。GRU 將LSTM 中的細(xì)胞狀態(tài)和隱藏狀態(tài)合并成隱藏層狀態(tài)?t,且僅包含重置門(mén)zt和更新門(mén)rt,其結(jié)構(gòu)如圖2所示。
圖2 GRU模型結(jié)構(gòu)圖
圖2中,?t為當(dāng)前時(shí)刻的隱藏狀態(tài);xt為當(dāng)前時(shí)刻的輸入向量;yt為當(dāng)前單元輸出向量;σ為sigmoid激活函數(shù)。
GRU單元計(jì)算方式如下步驟所示。
(1)確定t-1 時(shí)刻狀態(tài)信息的保留程度rt,rt越大表明保留的信息越多。
(2)確定t-1 時(shí)刻的狀態(tài)信息的遺忘程度zt,范圍在0~1之間。
(3)生成當(dāng)前隱藏狀態(tài)更新候選值。
(4)更新當(dāng)前隱藏狀態(tài),zt越接近1說(shuō)明t-1時(shí)刻的信息遺忘的越少,zt越接近0說(shuō)明遺忘的信息越多[11]。
(5)計(jì)算單元的輸出向量。
式中:wr、wz、w?、wy為權(quán)重。
2)過(guò)擬合優(yōu)化
神經(jīng)網(wǎng)絡(luò)在訓(xùn)練過(guò)程中可能出現(xiàn)過(guò)擬合現(xiàn)象。本文在GRU 層和全連接層之間加入Dropout正則化,隨機(jī)選擇一部分神經(jīng)元使其失活,其他神經(jīng)元保持不變,然后訓(xùn)練損失反向傳播,更新未失活的神經(jīng)元參數(shù),其他神經(jīng)元參數(shù)保持不變,這種方式能有效解決過(guò)擬合問(wèn)題。全連接層進(jìn)行維度變換輸出下一時(shí)刻的預(yù)測(cè)值,計(jì)算預(yù)測(cè)值與期望值之間的error,如式(6)所示,使用RMSProp 優(yōu)化器局調(diào)整網(wǎng)絡(luò)參數(shù)。
式中:m 為預(yù)測(cè)值的個(gè)數(shù);yt為第t時(shí)刻的期望值;yt為第t時(shí)刻的預(yù)測(cè)值。
神經(jīng)網(wǎng)絡(luò)在訓(xùn)練模型時(shí)可能會(huì)陷入局部最優(yōu)的問(wèn)題,在初始化網(wǎng)絡(luò)時(shí)使用粒子群算法對(duì)模型初始權(quán)值和閾值尋優(yōu),將網(wǎng)絡(luò)權(quán)值調(diào)整到全局最優(yōu)解附近區(qū)間避免模型陷入局部極值[12]。粒子群算法(Particle Swarm Optimization,PSO)是根據(jù)鳥(niǎo)類(lèi)覓食過(guò)程得到的群智能優(yōu)化算法,在搜尋最優(yōu)解時(shí)各個(gè)粒子相互協(xié)調(diào),不斷迭代實(shí)現(xiàn)全局尋優(yōu)[13]。粒子群算法的特點(diǎn)是參數(shù)簡(jiǎn)單,收斂速度快,在求解模型、優(yōu)化結(jié)構(gòu)等多領(lǐng)域得到廣泛的應(yīng)用。
在d維候選解空間中,分布有若干個(gè)優(yōu)化問(wèn)題的 候 選 解 向 量 集 合X=(x1,x2,x3…xi,i=1,2,3,…,m),候選解向量xi=(xi1,xi2,xi3…xid)為粒子群中的第i個(gè)粒子當(dāng)前位置。粒子的運(yùn)動(dòng)過(guò)程即在向量空間中搜尋最優(yōu)解的過(guò)程,粒子運(yùn)動(dòng)方式靠速度v和位置x決定[14]。每次粒子位置迭代更新如式(7)和(8)所示:
標(biāo)準(zhǔn)的粒子群算法使用的慣性因子ω是定值,容易存在收斂早熟,陷入局部最優(yōu)的問(wèn)題。因此,本文引入非線性慣性權(quán)重[15],如式(9)所示:
式中:ωmax為慣性因子最大值;ωmin為慣性因子最小值;Tmax為總迭代次數(shù);T為當(dāng)前迭代次數(shù)。
引入非線性慣性權(quán)重后慣性因子在迭代前期較大,全局搜尋步長(zhǎng)變大,有利于防止粒子趨向局部極值,確保在全局范圍內(nèi)搜尋最優(yōu)解,到迭代后期,粒子逐步趨向全局最優(yōu),慣性因子取值減小,防止粒子在最優(yōu)解空間內(nèi)產(chǎn)生震蕩,加強(qiáng)粒子在局部尋優(yōu)能力。同時(shí)在PSO中引入異步變化學(xué)習(xí)因子[16]調(diào)整粒子搜尋策略,如式(10)所示:
式中:c1用于控制粒子根據(jù)自身經(jīng)驗(yàn)的學(xué)習(xí)能力,c1,max和c1,min是c1的最大值和最小值,c2用于控制粒子根據(jù)群體經(jīng)驗(yàn)的學(xué)習(xí)能力,c2,max和c2,min是c2的最大值和最小值。
兩種學(xué)習(xí)因子根據(jù)自身特點(diǎn)使用不同的方式控制粒子尋優(yōu),在搜尋前期注重全局尋優(yōu)的能力,盡可能地?cái)U(kuò)大搜尋范圍,粒子需要加強(qiáng)自我學(xué)習(xí)能力減少群體尋優(yōu)經(jīng)驗(yàn)對(duì)粒子的影響。在搜尋后期,需要逐漸加強(qiáng)群體經(jīng)驗(yàn)對(duì)粒子的影響,使粒子逐步收斂至全局最優(yōu)點(diǎn)區(qū)域,因而,c1的初始值較大,隨著迭代次數(shù)增加而減小,c2的初始值較小,隨著迭代次數(shù)增加而增大。
1)數(shù)據(jù)預(yù)處理
本文采用的數(shù)據(jù)從天津科技大學(xué)模擬糧倉(cāng)獲得。在每個(gè)實(shí)驗(yàn)倉(cāng)取上、中、下三個(gè)存儲(chǔ)位置的溫度、濕度,數(shù)據(jù)獲取的頻率為每小時(shí)一次。數(shù)據(jù)集的時(shí)間范圍是2019 年1 月至12 月。因儀器故障、電源斷電等意外因素,采集的數(shù)據(jù)中存在短時(shí)間的缺失值,采用均值插值方式填補(bǔ)。預(yù)測(cè)模型以12小時(shí)為一個(gè)時(shí)間滑動(dòng)窗口預(yù)測(cè)后一時(shí)刻的數(shù)據(jù),時(shí)間窗滑動(dòng)的步長(zhǎng)為1h。在神經(jīng)網(wǎng)絡(luò)訓(xùn)練時(shí),由于不同特征的數(shù)量級(jí)存在差異,導(dǎo)致部分特征沒(méi)有表現(xiàn)出明顯的特性,為了消除數(shù)量級(jí)上的影響,對(duì)數(shù)據(jù)進(jìn)行歸一化處理,如式(11)所示。
式中:x*為歸一化處理后得到的數(shù)據(jù),xmin為原始數(shù)據(jù)最小值,xmax為原始數(shù)據(jù)最大值,x為原始數(shù)據(jù)。
2)IPSO優(yōu)化預(yù)測(cè)模型
IPSO 算法搜尋的最優(yōu)候選解向量的過(guò)程即優(yōu)化神經(jīng)網(wǎng)絡(luò)中GRU單元的權(quán)值wr、wz、w?、wy和全連接層wd。具體步驟如下所示:
(1)首先確定粒子規(guī)模m、粒子集合X、學(xué)習(xí)因子初始值和終止值C1,max,C1,min,C2,max,C1,min、慣性因子最大值ωmax、慣性因子最小值ωmin、總迭代次數(shù)maxiter、粒子位置邊界B和最大飛行速度vmax。構(gòu)建粒子位置集合X,X={ }x1,x2,x3…xi,i∈[1,m],每個(gè)粒子的位置信息xi包括GRU神經(jīng)網(wǎng)絡(luò)的權(quán)值。
(2)計(jì)算粒子適應(yīng)度
適應(yīng)度函數(shù)是將粒子位置作為網(wǎng)絡(luò)參數(shù)時(shí)神經(jīng)網(wǎng)絡(luò)得到的損失函數(shù),實(shí)驗(yàn)中使用真實(shí)值與預(yù)測(cè)值的均方誤差MSE作為訓(xùn)練損失函數(shù)。
式中:m 為預(yù)測(cè)值的個(gè)數(shù);yi為第i個(gè)時(shí)間點(diǎn)的真實(shí)值;為第i個(gè)時(shí)間點(diǎn)的預(yù)測(cè)值。
(3)迭代更新粒子位置
在每輪迭代中,若第i個(gè)粒子的粒子適應(yīng)度f(wàn)itness(xi)優(yōu)于當(dāng)前個(gè)體最佳適應(yīng)值Fbest,i或歷史最佳適應(yīng)值Fbest,g,則將該粒子位置xi更新為pi或pg。
在迭代過(guò)程中利用式(7)~(8)更新粒子位置和速度。若在計(jì)算過(guò)程中粒子位置超出邊界,則令粒子位置等于邊界值,xid=Bd;若速度超過(guò)最大速度vmax,則vid=vmax。當(dāng)?shù)螖?shù)達(dá)到最大迭代次數(shù)時(shí),pg為PSO優(yōu)化得到的最優(yōu)權(quán)值。
綜上得到預(yù)測(cè)模型的初始權(quán)重,訓(xùn)練神經(jīng)網(wǎng)絡(luò),預(yù)測(cè)方法流程如圖3所示。
圖3 預(yù)測(cè)方法流程圖
實(shí)驗(yàn)環(huán)境:64 位Windows10 操作系統(tǒng),Intel i7處理器,16G 內(nèi)存,PyCharm,TensorFlow。構(gòu)建神經(jīng)網(wǎng)絡(luò)模型時(shí)合適的超參數(shù)選擇對(duì)訓(xùn)練準(zhǔn)確度有至關(guān)重要的影響,經(jīng)過(guò)多次實(shí)驗(yàn),模型的超參數(shù)設(shè)置如表1所示。
表1 預(yù)測(cè)模型超參數(shù)
為了評(píng)價(jià)模型預(yù)測(cè)效果和精度,使用均方根誤差(RMSE),平均絕對(duì)誤差(MAE),平均百分比誤差(MAPE)作為模型預(yù)測(cè)結(jié)果的評(píng)價(jià)指標(biāo),并將IPSO-GRU 與GRU、LSTM、BP 網(wǎng)絡(luò)對(duì)比。計(jì)算誤差如式(14)~(16)所示:
式中:n為樣本數(shù),pi為預(yù)測(cè)值,yi為真實(shí)值。當(dāng)上述三個(gè)指標(biāo)值越接近零代表預(yù)測(cè)值與真實(shí)值越接近。
3.2.1 時(shí)間窗長(zhǎng)度對(duì)比實(shí)驗(yàn)
時(shí)間窗長(zhǎng)度是模型訓(xùn)練的重要指標(biāo),在無(wú)外界干擾的情況下,儲(chǔ)糧狀態(tài)的數(shù)值變化緩慢且具有周期性,將該特點(diǎn)作為參考依據(jù)本文對(duì)不同時(shí)間窗長(zhǎng)度進(jìn)行對(duì)比實(shí)驗(yàn),在GRU 網(wǎng)絡(luò)上設(shè)置從4~24 的不同的時(shí)間窗長(zhǎng)度,將測(cè)試誤差作為評(píng)價(jià)模型的指標(biāo)。
圖4是不同時(shí)間窗模型訓(xùn)練結(jié)果,當(dāng)時(shí)間窗的長(zhǎng)度是12 時(shí)預(yù)測(cè)模型的均方誤差最小,確定時(shí)間窗長(zhǎng)度為12。
圖4 不同時(shí)間窗長(zhǎng)的對(duì)比實(shí)驗(yàn)
3.2.2 模型訓(xùn)練優(yōu)化器選擇
在訓(xùn)練神經(jīng)網(wǎng)絡(luò)時(shí),優(yōu)化器可以影響模型收斂的速度,本實(shí)驗(yàn)設(shè)置兩層GRU 網(wǎng)絡(luò),一層全連接網(wǎng)絡(luò),輸入層節(jié)點(diǎn)為64,經(jīng)過(guò)300次迭代訓(xùn)練,使用每次迭代的損失函數(shù)MSE 作為評(píng)價(jià)指標(biāo),計(jì)算RMSProp,Adam,AdaGrad 優(yōu)化器的訓(xùn)練誤差,如圖5所示。
圖5 不同優(yōu)化器模型的訓(xùn)練誤差對(duì)比
實(shí)驗(yàn)表明使用AdaGrad 優(yōu)化器的模型收斂速度較慢,RMSProp,Adam 優(yōu)化器對(duì)模型收斂有較好的效果。在經(jīng)過(guò)300 次迭代之后,RMSProp 的訓(xùn)練誤差最小,因此選擇RMSProp作為訓(xùn)練模型的優(yōu)化器。
3.2.3 不同模型預(yù)測(cè)結(jié)果對(duì)比
為評(píng)估本文模型的預(yù)測(cè)精度,選取三種模型進(jìn)行對(duì)比,模型的隱含層層數(shù)和節(jié)點(diǎn)數(shù)和本文模型一致,迭代次數(shù)為300,過(guò)擬合參數(shù)設(shè)置為0.1。
圖6 為不同模型的溫度預(yù)測(cè)擬合曲線,其中TRUE 代表模型的期望輸出,IPSO-GRU 代表本文模型的預(yù)測(cè)輸出,從圖可以看出BP 網(wǎng)絡(luò)預(yù)測(cè)溫度曲線的擬合效果較差,本文模型能有效的擬合溫度變化曲線。表2是不同模型評(píng)價(jià)指標(biāo)對(duì)比結(jié)果。
表2 不同模型預(yù)測(cè)評(píng)價(jià)指標(biāo)對(duì)比
圖6 不同模型預(yù)測(cè)結(jié)果對(duì)比圖
從表中可知,GRU 網(wǎng)絡(luò)和LSTM 網(wǎng)絡(luò)預(yù)測(cè)準(zhǔn)確度比較接近,BP 網(wǎng)絡(luò)預(yù)測(cè)的準(zhǔn)確度最低。IPSO-GRU 在三種評(píng)價(jià)指標(biāo)上的誤差分別是0.078,0.060,0.344%,均大于GRU,LSTM 和BP 網(wǎng)絡(luò)。IPSO-GRU 和GRU 網(wǎng)絡(luò)對(duì)比RMSE 誤差減小13%,和LSTM 對(duì)比誤差減小16%,和BP網(wǎng)絡(luò)對(duì)比誤差減小74%。
圖7是不同模型的預(yù)測(cè)誤差對(duì)比,BP網(wǎng)絡(luò)的預(yù)測(cè)誤差集中在0.2~0.4 之間且隨時(shí)間變化誤差逐漸增加,最大誤差為0.42。IPSO-GRU 的整體誤差小于其他模型且趨勢(shì)較為平穩(wěn),最大誤差為0.13。IPSO-GRU 網(wǎng)絡(luò),誤差集中于0~0.1之間;GRU 網(wǎng)絡(luò)的最大誤差為0.16,LSTM 網(wǎng)絡(luò)的最大誤差為0.19,兩者誤差集中于0~0.2之間。從實(shí)驗(yàn)結(jié)果可以看出IPSO-GRU 模型的預(yù)測(cè)誤差最小且對(duì)于時(shí)間序列的數(shù)據(jù)預(yù)測(cè)更加準(zhǔn)確,這是由于在處理時(shí)序數(shù)據(jù)方面GRU 網(wǎng)絡(luò)較BP 網(wǎng)絡(luò)更具優(yōu)勢(shì),能充分利用儲(chǔ)糧環(huán)境因素的時(shí)間序列特征。GRU網(wǎng)絡(luò)經(jīng)過(guò)IPSO算法全局尋優(yōu),將網(wǎng)絡(luò)初始參數(shù)調(diào)整至最優(yōu)區(qū)間,采用Dropout算法防止過(guò)擬合增強(qiáng)模型的預(yù)測(cè)精度和泛化能力,使模型得到更好的預(yù)測(cè)效果。
圖7 不同模型預(yù)測(cè)誤差對(duì)比圖
本文針對(duì)糧食存儲(chǔ)溫度時(shí)序數(shù)據(jù)的特點(diǎn),提出基于改進(jìn)粒子群優(yōu)化GRU 網(wǎng)絡(luò)的儲(chǔ)糧溫度預(yù)測(cè)方法。該方法使用粒子群算法優(yōu)化網(wǎng)絡(luò)初始權(quán)重,在粒子群中引入了非線性慣性因子和自適應(yīng)學(xué)習(xí)因子,優(yōu)化粒子搜索策略,增強(qiáng)粒子全局搜索能力,在模型中加入Dropout算法和RMSProp優(yōu)化器訓(xùn)練網(wǎng)絡(luò)參數(shù)。實(shí)驗(yàn)使用溫濕度傳感器采集的模擬糧倉(cāng)數(shù)據(jù),為驗(yàn)證模型預(yù)測(cè)精度,選取三種模型與本文模型對(duì)比,預(yù)測(cè)結(jié)果證明本文構(gòu)建的IPSO-GRU 模型較其他傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的預(yù)測(cè)精度更高,為糧情預(yù)測(cè)提供了新的思路。