左亞堯,王銘鋒,洪嘉偉,馬 鐸
1(廣東工業(yè)大學(xué) 計(jì)算機(jī)學(xué)院,廣州 510006)2(西安工業(yè)大學(xué) 電子信息工程學(xué)院,西安 726200)
近年來(lái),在時(shí)序數(shù)據(jù)的預(yù)測(cè)上,主要利用循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)[1]和支持向量機(jī)(Support Vector Machine,SVM)[2]等方法.在這方面,Borovykh A等[3]提出了一種基于深度卷積架構(gòu)(WaveNet)的自適應(yīng)條件時(shí)間序列預(yù)測(cè)方法,證明了卷積神經(jīng)網(wǎng)絡(luò)能夠有效地學(xué)習(xí)序列間的關(guān)系.Chaudhary V等利用長(zhǎng)短期記憶(Long Short-Term Memory,LSTM)進(jìn)行大氣污染物濃度的預(yù)測(cè)[4],預(yù)測(cè)其未來(lái)幾個(gè)小時(shí)的濃度.
利用上述的模型來(lái)預(yù)測(cè)時(shí)間序列時(shí),大多只是簡(jiǎn)單的應(yīng)用深度學(xué)習(xí)模型,沒(méi)有結(jié)合時(shí)間序列數(shù)據(jù)的特點(diǎn).為此,有學(xué)者結(jié)合時(shí)間序列數(shù)據(jù)特點(diǎn)構(gòu)建混合模型,以提高時(shí)間序列預(yù)測(cè)性能.Chen J等[5]利用LSTM構(gòu)建了集成學(xué)習(xí)模型進(jìn)行風(fēng)速預(yù)測(cè),結(jié)果表明,集成學(xué)習(xí)模型效果優(yōu)于單一LSTM.Madan R等[6]利用ARIMA(Autoregressive Integrated Moving Average)和RNN構(gòu)建混合模型進(jìn)行流量預(yù)測(cè).Lai G等[7]提出了一種深度學(xué)習(xí)框架LSTNet來(lái)解決多元時(shí)間序列預(yù)測(cè)問(wèn)題,利用卷積神經(jīng)網(wǎng)絡(luò)提取數(shù)據(jù)間的關(guān)系,再使用LSTM獲取長(zhǎng)期的特征,結(jié)合兩者的優(yōu)點(diǎn)進(jìn)行時(shí)間序列的預(yù)測(cè).
目前所用到的循環(huán)神經(jīng)網(wǎng)絡(luò),大多數(shù)都是利用LSTM[8]來(lái)進(jìn)行時(shí)間序列預(yù)測(cè).同時(shí),還有許多學(xué)者致力于對(duì)LSTM進(jìn)行改進(jìn).Chung等[9]提出了門(mén)控循環(huán)單元(Gated Recurrent Unit,GRU),減少了記憶單元門(mén)的數(shù)量,在保證性能的情況下,優(yōu)化了參數(shù)規(guī)模.Kumar S等[10]在電力負(fù)荷預(yù)測(cè)時(shí),將LSTM與GRU進(jìn)行性能對(duì)比,結(jié)果顯示GRU的速度快于LSTM,而且GRU預(yù)測(cè)效果略?xún)?yōu)于LSTM.
而在現(xiàn)實(shí)生活中,時(shí)間序列數(shù)據(jù)通常是多元的,多元時(shí)間序列的序列間總是存在復(fù)雜的相關(guān)性.這種相關(guān)性不僅會(huì)限制預(yù)測(cè)模型的性能,還會(huì)使得模型變得更復(fù)雜.同時(shí),復(fù)雜的相關(guān)性也會(huì)增加計(jì)算量,降低預(yù)測(cè)精度,甚至導(dǎo)致“維度災(zāi)難”[11].
本文針對(duì)多元時(shí)間序列可能導(dǎo)致預(yù)測(cè)精度較低的問(wèn)題,提出一種基于RNN和卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)的混合模型HRCNN(Hybrid Recurrent Convolutional Neural Network).HRCNN利用CNN捕獲局部特征,并使用GRU獲取數(shù)據(jù)對(duì)時(shí)間的依賴(lài),將兩者所獲得的特征拼接傳遞給Decoder部分進(jìn)行解碼得到預(yù)測(cè)輸出.
CNN是目前非常成熟的一種網(wǎng)絡(luò)框架,不僅在圖像領(lǐng)域應(yīng)用廣泛,也逐漸被應(yīng)用在語(yǔ)音語(yǔ)義識(shí)別、生物醫(yī)學(xué)信號(hào)分類(lèi)等方面.時(shí)間序列預(yù)測(cè)與交通流量預(yù)測(cè)[12]相似,在交通流量預(yù)測(cè)中,所輸入的數(shù)據(jù)為多元時(shí)間序列數(shù)據(jù),CNN可以直接處理該結(jié)構(gòu)的數(shù)據(jù),另外,CNN在處理交通數(shù)據(jù)過(guò)程中,能夠從全局角度關(guān)注并提取序列的一些重要特征.受此啟發(fā),本文將其應(yīng)用于時(shí)間序列預(yù)測(cè)上.
CNN是一類(lèi)包含卷積計(jì)算且具有深度結(jié)構(gòu)的前饋神經(jīng)網(wǎng)絡(luò),包含輸入層、隱層、全連接層及輸出層.其中,隱層主要包含卷積層和池化層,卷積層用于特征提取,池化層進(jìn)行特征壓縮,提取主要特征,由全連接層接收池化層的輸出,處理后得到最終預(yù)測(cè)輸出.如果卷積神經(jīng)網(wǎng)絡(luò)用于分類(lèi)預(yù)測(cè)的話(huà),往往最后用softmax層處理.
近幾年來(lái),基于RNN的Seq2Seq模型[13]被提出,同時(shí)因其在機(jī)器翻譯上的成功,而變得流行起來(lái).Seq2Seq模型的核心思想是把一個(gè)語(yǔ)言序列翻譯成另外一個(gè)語(yǔ)言序列,其處理過(guò)程是通過(guò)使用RNN將一個(gè)輸入序列映射為另外一個(gè)輸出序列.其輸入和輸出長(zhǎng)度是可變的,靈活度較高,便于輸出特征長(zhǎng)度的調(diào)整.
其中,RNN是一種專(zhuān)為序列建模的深度神經(jīng)網(wǎng)絡(luò),該模型具有對(duì)前面的時(shí)序數(shù)據(jù)信息進(jìn)行記憶的特點(diǎn),并將其應(yīng)用于當(dāng)前輸出的計(jì)算中.但是傳統(tǒng)的RNN存在梯度消失問(wèn)題,因此不能很好的捕獲長(zhǎng)時(shí)間的依賴(lài),在處理時(shí)序數(shù)據(jù)上往往會(huì)過(guò)于依賴(lài)臨近點(diǎn)數(shù)據(jù)而忽略長(zhǎng)距離的信息.為此,學(xué)者們提出了LSTM、GRU等改進(jìn)的RNN,使其能夠捕捉到更長(zhǎng)距離的信息,從而學(xué)習(xí)到長(zhǎng)依賴(lài)的特征.LSTM與GRU兩者的預(yù)測(cè)性能相差不大,但GRU速度快于LSTM,因此本文選用GRU構(gòu)建模型.
GRU表達(dá)式如公式(1)-公式(4):
rt=σ(itWir+ht-1Whr+br)
(1)
zt=σ(itWiz+ht-1Whz+bz)
(2)
(3)
(4)
GRU通過(guò)重置門(mén)和更新門(mén)確定保留下來(lái)的隱藏狀態(tài),并將其作為下一時(shí)刻的輸入或處理成預(yù)測(cè)輸出.
圖1 Seq2Seq結(jié)構(gòu)圖Fig.1 Seq2Seq structure
而在Seq2Seq中,編碼器(encoder)把所有的輸入序列都編碼成一個(gè)統(tǒng)一的語(yǔ)義向量(context),然后由解碼器(decoder)解碼,如圖1所示,隱藏層中均由RNN單元組成.解碼器解碼時(shí),不斷地將上一時(shí)刻的輸出作為后一時(shí)刻的輸入,循環(huán)解碼.
本文結(jié)合CNN和Seq2Seq兩者的優(yōu)點(diǎn),利用CNN獲取時(shí)間序列間的關(guān)系以及GRU獲取對(duì)時(shí)間的依賴(lài),構(gòu)建一個(gè)多元時(shí)間序列預(yù)測(cè)模型HRCNN.本節(jié)將從數(shù)據(jù)預(yù)處理、模型構(gòu)建、目標(biāo)函數(shù)和優(yōu)化器的選擇等方面進(jìn)行介紹.
數(shù)據(jù)集中有些可能不是影響目標(biāo)變量的因素,例如:預(yù)測(cè)農(nóng)產(chǎn)品價(jià)格時(shí)所用到的天氣數(shù)據(jù)中的氣壓,紫外線(xiàn)指數(shù)等.如果特征數(shù)過(guò)多,分析特征、訓(xùn)練模型所需的時(shí)間就越長(zhǎng),模型也會(huì)越復(fù)雜.另外,還可能出現(xiàn)特征稀疏、過(guò)擬合等問(wèn)題,使得模型效果下降.因而,需要先對(duì)其進(jìn)行特征選擇,選取出真正影響目標(biāo)變量的數(shù)據(jù),減少特征數(shù)量并降維,使模型泛化能力更強(qiáng).
特征選擇的方法有Filter,Wrapper和Embedded.其中Filter是通過(guò)計(jì)算自變量與目標(biāo)變量之間的關(guān)聯(lián),來(lái)判斷是否選擇該自變量.為了方便后續(xù)時(shí)間窗的數(shù)據(jù)輸入,本文選用Filter中的互信息法[14],互信息是一個(gè)隨機(jī)變量包含另一個(gè)隨機(jī)變量信息量的度量,也是在給定另一個(gè)隨機(jī)變量的知識(shí)的條件下,原隨機(jī)變量不確定度的縮減量,這個(gè)不確定度的度量是用熵來(lái)表示.假設(shè)有兩個(gè)隨機(jī)變量X和Y,互信息的表示如公式(5)所示:
(5)
其中p(x,y)是X和Y的聯(lián)合概率密度函數(shù),p(x)和p(y)分別是X和Y的邊際概率密度函數(shù).
互信息越大,說(shuō)明X和Y兩個(gè)變量的關(guān)聯(lián)度越大,故可利用互信息法將與農(nóng)產(chǎn)品價(jià)格關(guān)聯(lián)度大的影響因素找出來(lái).
HRCNN模型采用RNN和CNN構(gòu)建,其中RNN和CNN共同組成Encoder,進(jìn)行特征提取,RNN作為Decoder,進(jìn)行解碼所提取的信息,得到最終預(yù)測(cè)輸出,整體流程如圖2所示.
圖2 整體的預(yù)測(cè)流程Fig.2 Overall prediction process
3.2.1 Seq2Seq部分
由于數(shù)據(jù)集中每組數(shù)據(jù)均存在時(shí)序性,與GRU模型處理思路相契合,HRCNN采用GRU捕獲各個(gè)時(shí)間序列的時(shí)序依賴(lài)性.以滑動(dòng)窗口取得數(shù)據(jù)作為輸入,第n個(gè)窗口內(nèi)的數(shù)據(jù)定義為xn,并利用式(6)來(lái)更新GRU在第n個(gè)窗口的隱層狀態(tài).
hn=fe(hn-1,xn)
(6)
fe是編碼器的GRU更新函數(shù).
最終Decoder的預(yù)測(cè)輸出如式(7):
(7)
其中,fd是解碼器中GRU單元的更新函數(shù).
3.2.2 潛在特征的提取
在時(shí)間窗里面,GRU能夠?qū)W習(xí)到的主要是時(shí)間序列對(duì)時(shí)間的依賴(lài),而對(duì)于不同時(shí)間維度的特征關(guān)系,卻無(wú)法提取到.還需要引入卷積模塊,來(lái)提取這些潛在的特征.
卷積神經(jīng)網(wǎng)絡(luò)部分的特征提取主要是基于CNN的卷積層和池化層進(jìn)行展開(kāi),在卷積層中,通過(guò)卷積操作,可以獲得一系列的特征,使用卷積核w對(duì)時(shí)間窗內(nèi)的矩陣數(shù)據(jù)進(jìn)行卷積操作,對(duì)大小為h*h的窗口進(jìn)行卷積,具體操作如式(8)所示:
(8)
(9)
q是一個(gè)時(shí)間窗內(nèi)所提取的特征總數(shù),它由濾波器的大小以及平移的步長(zhǎng)所決定.
利用SeLU激活函數(shù)所構(gòu)建的網(wǎng)絡(luò)具有自歸一化的功能,同時(shí)能夠有效地防止梯度爆炸以及梯度消失的現(xiàn)象,可作為卷積層的激活函數(shù),該函數(shù)定義如式(10):
(10)
HRCNN通過(guò)池化層對(duì)卷積層提取的特征向量進(jìn)行采樣,得到局部最優(yōu)特征,公式如式(11)所示:
(11)
為量化實(shí)驗(yàn)結(jié)果便于比較,HRCNN選用均方根(RMSE)、平均絕對(duì)誤差(MAE)、R平方?jīng)Q定系數(shù)、平均絕對(duì)百分比誤差(MAPE)作為評(píng)價(jià)函數(shù),其具體公式如式(12)-式(15)所示:
(12)
(13)
(14)
(15)
為了加快訓(xùn)練的過(guò)程,HRCNN選用COntinuousCOin Betting(COCOB)[15]作為優(yōu)化器,與以往的優(yōu)化器不同,它不需要設(shè)置任何學(xué)習(xí)率,這意味著不需要進(jìn)行學(xué)習(xí)率的調(diào)整,也不用目標(biāo)函數(shù)的假定曲率,只是將其參數(shù)優(yōu)化的過(guò)程簡(jiǎn)化為投硬幣的游戲,可以更快的達(dá)到擬合.
綜上,完整的多元時(shí)間序列預(yù)測(cè)算法描述如下.
Input:滑動(dòng)窗口觀測(cè)值X
Output:未來(lái)K天觀測(cè)值YK
Begin:
Initializew,c
iter←number of iterations
fori← 0 to iter do
forjto N do
Xjinput to CNN
cn←fc(Xj)
fort←0 toLdo
Xjtinput to GRU
hjt←fe(Xjt)
end for
updatehej//更新encoder的隱層狀態(tài)
end for
error←(OK-YK)2//計(jì)算誤差
COCOB optimizer to updatew,c//優(yōu)化器更新w,c
end for
End
數(shù)據(jù)集:本文的價(jià)格數(shù)據(jù)來(lái)源于中國(guó)蔬菜網(wǎng),天氣數(shù)據(jù)由darksky網(wǎng)站上獲取.同時(shí),利用空氣質(zhì)量數(shù)據(jù)集和室內(nèi)溫度數(shù)據(jù)集進(jìn)行對(duì)比測(cè)試.空氣質(zhì)量數(shù)據(jù)集采用北京PM2.5數(shù)據(jù)信息[16],是典型的多變量時(shí)間序列,包括氣象數(shù)據(jù)和PM2.5數(shù)據(jù),發(fā)布于UCI上;室內(nèi)溫度數(shù)據(jù)集是UCI開(kāi)源數(shù)據(jù)集SML2010[17],包含室內(nèi)溫度和二氧化碳、相對(duì)濕度等其他相關(guān)數(shù)據(jù).
在訓(xùn)練模型之前,歸一化是非常重要的,歸一化可以加快梯度下降求最優(yōu)解的速度.HRCNN采用的z-score歸一化,z-score可以將不同量級(jí)的數(shù)據(jù)統(tǒng)一轉(zhuǎn)化為同一個(gè)量級(jí),統(tǒng)一用計(jì)算出的z-score值衡量,保證數(shù)據(jù)之間的可比性.其歸一化公式如式(16)所示:
(16)
其中,z表示歸一化后的數(shù)據(jù),x代表原始數(shù)據(jù),μ,σ分別代表原始數(shù)據(jù)的均值和標(biāo)準(zhǔn)差.
在本實(shí)驗(yàn)中,將輸入窗口時(shí)間長(zhǎng)度為30,卷積核大小為3×3.此外還有幾個(gè)超參數(shù)需要設(shè)定,GRU的隱藏層的特征維度,Encoder的GRU的個(gè)數(shù),Decoder的GRU的個(gè)數(shù).
在超參數(shù)選擇的方法中,包括網(wǎng)格搜索、隨機(jī)搜索、貝葉斯調(diào)參等,其中貝葉斯調(diào)優(yōu)[18]的原理是建立在高斯過(guò)程回歸上,而高斯過(guò)程回歸則是在求解目標(biāo)函數(shù)的后驗(yàn)分布,每次取一組參數(shù)來(lái)得到相應(yīng)的輸出,用來(lái)矯正對(duì)后驗(yàn)概率分布的評(píng)估,最終得到參數(shù)與對(duì)應(yīng)輸出的關(guān)系.這個(gè)過(guò)程相對(duì)其他調(diào)參方法,在每次迭代中都會(huì)考慮之前的參數(shù)信息,而且迭代次數(shù)少,速度快,故HRCNN選用貝葉斯調(diào)參.
經(jīng)過(guò)貝葉斯調(diào)參后確定GRU的隱層維度為30,Encoder的GRU的個(gè)數(shù)為2,Decoder的GRU的個(gè)數(shù)為1.
本文將數(shù)據(jù)集分為訓(xùn)練集與測(cè)試集,按照前面確定好的參數(shù),利用訓(xùn)練集進(jìn)行訓(xùn)練.通過(guò)Tensorboard得到訓(xùn)練集的損失函數(shù)圖,其變化如圖3所示.
圖3 訓(xùn)練過(guò)程中MSE的變化圖Fig.3 Changes of MSE during training
結(jié)果表明,隨著迭代次數(shù)的增加,訓(xùn)練集的損失不斷減少,當(dāng)?shù)螖?shù)達(dá)到3000的時(shí)候,損失值趨于平穩(wěn),模型的訓(xùn)練已經(jīng)達(dá)到了預(yù)期效果.
表1 不同預(yù)測(cè)模型的預(yù)測(cè)結(jié)果Table 1 Prediction results of different prediction models
為了檢驗(yàn)HRCNN模型的性能,本文將其與LSTM,GRU和梯度提升回歸樹(shù)模型(GBRT)進(jìn)行對(duì)比.
從表1可以看出,HRCNN性能較好,RMSE值為0.1013,MAE值為0.0628,R值為0.9621,MAPE值為3.1147%,而對(duì)比的模型中,性能較好的是GBRT,其RMSE值為0.1086,MAE值為0.0678,R值為0.9566,MAPE值為28.6383%.
圖4給出了不同模型下大白菜價(jià)格預(yù)測(cè)的結(jié)果,相比其他模型,HRCNN模型預(yù)測(cè)未來(lái)一天的預(yù)測(cè)值與實(shí)際值基本一致,表明本文所構(gòu)建的模型性能的優(yōu)越性.
圖4 預(yù)測(cè)結(jié)果對(duì)比Fig.4 Comparison of prediction results
本文,為了檢驗(yàn)HRCNN多天預(yù)測(cè)的性能,也構(gòu)建了GRU和LSTM并進(jìn)行實(shí)驗(yàn)對(duì)比,測(cè)試集損失值如表2所示.
表2 大白菜RMSE對(duì)比Table 2 RMSE comparison of Napa cabbage
GRU2和LSTM2分別代表的是兩層GRU和兩層LSTM.從表2可以看出,LSTM,GRU和HRCNN的預(yù)測(cè)性能均會(huì)隨著預(yù)測(cè)天數(shù)的增加而降低.但相對(duì)于其他模型,本文所構(gòu)建的HRCNN模型,RMSE較小,而且隨著預(yù)測(cè)天數(shù)的增加,預(yù)測(cè)性能下降慢于其他模型,也說(shuō)明了本文所構(gòu)建模型在測(cè)試集上的效果優(yōu)于其他模型.
在預(yù)測(cè)未來(lái)K天的數(shù)據(jù)時(shí),隨著預(yù)測(cè)天數(shù)K的增加,訓(xùn)練所需的時(shí)間逐漸增加,而預(yù)測(cè)未來(lái)8天的價(jià)格,相對(duì)于預(yù)測(cè)未來(lái)7天所花費(fèi)的時(shí)間大幅增加,而預(yù)測(cè)性能卻有所下降,因此將K的最佳值設(shè)定為7,即預(yù)測(cè)未來(lái)7天.
表3 兩個(gè)數(shù)據(jù)集的性能對(duì)比Table 3 Performance comparison of the two datasets
此外,為了檢驗(yàn)HRCNN模型的泛用性,本文將HRCNN在PM2.5數(shù)據(jù)集和SML2010數(shù)據(jù)集進(jìn)行測(cè)試,并且與EA-LSTM[19]做性能對(duì)比,結(jié)果如表3所示.
實(shí)驗(yàn)參照文獻(xiàn)[19],采用MAE和RMSE兩種評(píng)價(jià)函數(shù)進(jìn)行性能對(duì)比.從表3可以看出,HRCNN模型在PM2.5數(shù)據(jù)集上訓(xùn)練測(cè)試,所得到的MAE為0.1261,RMSE為0.2253,在PM2.5數(shù)據(jù)集上預(yù)測(cè)性能表現(xiàn)上,MAE值優(yōu)于EA-LSTM 34%,RMSE值優(yōu)于EA-LSTM 18.2%.HRCNN模型在SML2010數(shù)據(jù)集上訓(xùn)練測(cè)試,所得到的MAE為0.084,RMSE為0.0135,同樣優(yōu)于EA-LSTM,分別提升MAE 18.4%,RMSE 12.3%.HRCNN模型在這兩個(gè)公開(kāi)數(shù)據(jù)集上均表現(xiàn)出一定的性能提升,表明了HRCNN在多元時(shí)間序列預(yù)測(cè)具有較為優(yōu)越的性能.
本文通過(guò)結(jié)合CNN與RNN兩種模型,CNN提取全局特征,RNN提取與時(shí)間相關(guān)的特征,并對(duì)輸入形式進(jìn)行了處理,構(gòu)建出新的HRCNN模型,且利用貝葉斯對(duì)該模型進(jìn)行優(yōu)化調(diào)參.實(shí)驗(yàn)表明,該模型在預(yù)測(cè)農(nóng)產(chǎn)品價(jià)格上,體現(xiàn)了較好的預(yù)測(cè)性能,另外利用該模型在PM2.5和SML2010數(shù)據(jù)集上進(jìn)行預(yù)測(cè)訓(xùn)練,也進(jìn)一步表明其性能優(yōu)于EA-LSTM.