左亞堯,王銘鋒,洪嘉偉,馬 鐸
1(廣東工業(yè)大學 計算機學院,廣州 510006)2(西安工業(yè)大學 電子信息工程學院,西安 726200)
近年來,在時序數(shù)據(jù)的預測上,主要利用循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)[1]和支持向量機(Support Vector Machine,SVM)[2]等方法.在這方面,Borovykh A等[3]提出了一種基于深度卷積架構(gòu)(WaveNet)的自適應條件時間序列預測方法,證明了卷積神經(jīng)網(wǎng)絡(luò)能夠有效地學習序列間的關(guān)系.Chaudhary V等利用長短期記憶(Long Short-Term Memory,LSTM)進行大氣污染物濃度的預測[4],預測其未來幾個小時的濃度.
利用上述的模型來預測時間序列時,大多只是簡單的應用深度學習模型,沒有結(jié)合時間序列數(shù)據(jù)的特點.為此,有學者結(jié)合時間序列數(shù)據(jù)特點構(gòu)建混合模型,以提高時間序列預測性能.Chen J等[5]利用LSTM構(gòu)建了集成學習模型進行風速預測,結(jié)果表明,集成學習模型效果優(yōu)于單一LSTM.Madan R等[6]利用ARIMA(Autoregressive Integrated Moving Average)和RNN構(gòu)建混合模型進行流量預測.Lai G等[7]提出了一種深度學習框架LSTNet來解決多元時間序列預測問題,利用卷積神經(jīng)網(wǎng)絡(luò)提取數(shù)據(jù)間的關(guān)系,再使用LSTM獲取長期的特征,結(jié)合兩者的優(yōu)點進行時間序列的預測.
目前所用到的循環(huán)神經(jīng)網(wǎng)絡(luò),大多數(shù)都是利用LSTM[8]來進行時間序列預測.同時,還有許多學者致力于對LSTM進行改進.Chung等[9]提出了門控循環(huán)單元(Gated Recurrent Unit,GRU),減少了記憶單元門的數(shù)量,在保證性能的情況下,優(yōu)化了參數(shù)規(guī)模.Kumar S等[10]在電力負荷預測時,將LSTM與GRU進行性能對比,結(jié)果顯示GRU的速度快于LSTM,而且GRU預測效果略優(yōu)于LSTM.
而在現(xiàn)實生活中,時間序列數(shù)據(jù)通常是多元的,多元時間序列的序列間總是存在復雜的相關(guān)性.這種相關(guān)性不僅會限制預測模型的性能,還會使得模型變得更復雜.同時,復雜的相關(guān)性也會增加計算量,降低預測精度,甚至導致“維度災難”[11].
本文針對多元時間序列可能導致預測精度較低的問題,提出一種基于RNN和卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)的混合模型HRCNN(Hybrid Recurrent Convolutional Neural Network).HRCNN利用CNN捕獲局部特征,并使用GRU獲取數(shù)據(jù)對時間的依賴,將兩者所獲得的特征拼接傳遞給Decoder部分進行解碼得到預測輸出.
CNN是目前非常成熟的一種網(wǎng)絡(luò)框架,不僅在圖像領(lǐng)域應用廣泛,也逐漸被應用在語音語義識別、生物醫(yī)學信號分類等方面.時間序列預測與交通流量預測[12]相似,在交通流量預測中,所輸入的數(shù)據(jù)為多元時間序列數(shù)據(jù),CNN可以直接處理該結(jié)構(gòu)的數(shù)據(jù),另外,CNN在處理交通數(shù)據(jù)過程中,能夠從全局角度關(guān)注并提取序列的一些重要特征.受此啟發(fā),本文將其應用于時間序列預測上.
CNN是一類包含卷積計算且具有深度結(jié)構(gòu)的前饋神經(jīng)網(wǎng)絡(luò),包含輸入層、隱層、全連接層及輸出層.其中,隱層主要包含卷積層和池化層,卷積層用于特征提取,池化層進行特征壓縮,提取主要特征,由全連接層接收池化層的輸出,處理后得到最終預測輸出.如果卷積神經(jīng)網(wǎng)絡(luò)用于分類預測的話,往往最后用softmax層處理.
近幾年來,基于RNN的Seq2Seq模型[13]被提出,同時因其在機器翻譯上的成功,而變得流行起來.Seq2Seq模型的核心思想是把一個語言序列翻譯成另外一個語言序列,其處理過程是通過使用RNN將一個輸入序列映射為另外一個輸出序列.其輸入和輸出長度是可變的,靈活度較高,便于輸出特征長度的調(diào)整.
其中,RNN是一種專為序列建模的深度神經(jīng)網(wǎng)絡(luò),該模型具有對前面的時序數(shù)據(jù)信息進行記憶的特點,并將其應用于當前輸出的計算中.但是傳統(tǒng)的RNN存在梯度消失問題,因此不能很好的捕獲長時間的依賴,在處理時序數(shù)據(jù)上往往會過于依賴臨近點數(shù)據(jù)而忽略長距離的信息.為此,學者們提出了LSTM、GRU等改進的RNN,使其能夠捕捉到更長距離的信息,從而學習到長依賴的特征.LSTM與GRU兩者的預測性能相差不大,但GRU速度快于LSTM,因此本文選用GRU構(gòu)建模型.
GRU表達式如公式(1)-公式(4):
rt=σ(itWir+ht-1Whr+br)
(1)
zt=σ(itWiz+ht-1Whz+bz)
(2)
(3)
(4)

GRU通過重置門和更新門確定保留下來的隱藏狀態(tài),并將其作為下一時刻的輸入或處理成預測輸出.

圖1 Seq2Seq結(jié)構(gòu)圖Fig.1 Seq2Seq structure
而在Seq2Seq中,編碼器(encoder)把所有的輸入序列都編碼成一個統(tǒng)一的語義向量(context),然后由解碼器(decoder)解碼,如圖1所示,隱藏層中均由RNN單元組成.解碼器解碼時,不斷地將上一時刻的輸出作為后一時刻的輸入,循環(huán)解碼.
本文結(jié)合CNN和Seq2Seq兩者的優(yōu)點,利用CNN獲取時間序列間的關(guān)系以及GRU獲取對時間的依賴,構(gòu)建一個多元時間序列預測模型HRCNN.本節(jié)將從數(shù)據(jù)預處理、模型構(gòu)建、目標函數(shù)和優(yōu)化器的選擇等方面進行介紹.
數(shù)據(jù)集中有些可能不是影響目標變量的因素,例如:預測農(nóng)產(chǎn)品價格時所用到的天氣數(shù)據(jù)中的氣壓,紫外線指數(shù)等.如果特征數(shù)過多,分析特征、訓練模型所需的時間就越長,模型也會越復雜.另外,還可能出現(xiàn)特征稀疏、過擬合等問題,使得模型效果下降.因而,需要先對其進行特征選擇,選取出真正影響目標變量的數(shù)據(jù),減少特征數(shù)量并降維,使模型泛化能力更強.
特征選擇的方法有Filter,Wrapper和Embedded.其中Filter是通過計算自變量與目標變量之間的關(guān)聯(lián),來判斷是否選擇該自變量.為了方便后續(xù)時間窗的數(shù)據(jù)輸入,本文選用Filter中的互信息法[14],互信息是一個隨機變量包含另一個隨機變量信息量的度量,也是在給定另一個隨機變量的知識的條件下,原隨機變量不確定度的縮減量,這個不確定度的度量是用熵來表示.假設(shè)有兩個隨機變量X和Y,互信息的表示如公式(5)所示:
(5)
其中p(x,y)是X和Y的聯(lián)合概率密度函數(shù),p(x)和p(y)分別是X和Y的邊際概率密度函數(shù).
互信息越大,說明X和Y兩個變量的關(guān)聯(lián)度越大,故可利用互信息法將與農(nóng)產(chǎn)品價格關(guān)聯(lián)度大的影響因素找出來.
HRCNN模型采用RNN和CNN構(gòu)建,其中RNN和CNN共同組成Encoder,進行特征提取,RNN作為Decoder,進行解碼所提取的信息,得到最終預測輸出,整體流程如圖2所示.

圖2 整體的預測流程Fig.2 Overall prediction process
3.2.1 Seq2Seq部分
由于數(shù)據(jù)集中每組數(shù)據(jù)均存在時序性,與GRU模型處理思路相契合,HRCNN采用GRU捕獲各個時間序列的時序依賴性.以滑動窗口取得數(shù)據(jù)作為輸入,第n個窗口內(nèi)的數(shù)據(jù)定義為xn,并利用式(6)來更新GRU在第n個窗口的隱層狀態(tài).
hn=fe(hn-1,xn)
(6)
fe是編碼器的GRU更新函數(shù).

最終Decoder的預測輸出如式(7):
(7)
其中,fd是解碼器中GRU單元的更新函數(shù).

3.2.2 潛在特征的提取
在時間窗里面,GRU能夠?qū)W習到的主要是時間序列對時間的依賴,而對于不同時間維度的特征關(guān)系,卻無法提取到.還需要引入卷積模塊,來提取這些潛在的特征.
卷積神經(jīng)網(wǎng)絡(luò)部分的特征提取主要是基于CNN的卷積層和池化層進行展開,在卷積層中,通過卷積操作,可以獲得一系列的特征,使用卷積核w對時間窗內(nèi)的矩陣數(shù)據(jù)進行卷積操作,對大小為h*h的窗口進行卷積,具體操作如式(8)所示:
(8)

(9)
q是一個時間窗內(nèi)所提取的特征總數(shù),它由濾波器的大小以及平移的步長所決定.
利用SeLU激活函數(shù)所構(gòu)建的網(wǎng)絡(luò)具有自歸一化的功能,同時能夠有效地防止梯度爆炸以及梯度消失的現(xiàn)象,可作為卷積層的激活函數(shù),該函數(shù)定義如式(10):

(10)
HRCNN通過池化層對卷積層提取的特征向量進行采樣,得到局部最優(yōu)特征,公式如式(11)所示:
(11)


為量化實驗結(jié)果便于比較,HRCNN選用均方根(RMSE)、平均絕對誤差(MAE)、R平方?jīng)Q定系數(shù)、平均絕對百分比誤差(MAPE)作為評價函數(shù),其具體公式如式(12)-式(15)所示:
(12)
(13)
(14)
(15)

為了加快訓練的過程,HRCNN選用COntinuousCOin Betting(COCOB)[15]作為優(yōu)化器,與以往的優(yōu)化器不同,它不需要設(shè)置任何學習率,這意味著不需要進行學習率的調(diào)整,也不用目標函數(shù)的假定曲率,只是將其參數(shù)優(yōu)化的過程簡化為投硬幣的游戲,可以更快的達到擬合.
綜上,完整的多元時間序列預測算法描述如下.
Input:滑動窗口觀測值X
Output:未來K天觀測值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//計算誤差
COCOB optimizer to updatew,c//優(yōu)化器更新w,c
end for
End
數(shù)據(jù)集:本文的價格數(shù)據(jù)來源于中國蔬菜網(wǎng),天氣數(shù)據(jù)由darksky網(wǎng)站上獲取.同時,利用空氣質(zhì)量數(shù)據(jù)集和室內(nèi)溫度數(shù)據(jù)集進行對比測試.空氣質(zhì)量數(shù)據(jù)集采用北京PM2.5數(shù)據(jù)信息[16],是典型的多變量時間序列,包括氣象數(shù)據(jù)和PM2.5數(shù)據(jù),發(fā)布于UCI上;室內(nèi)溫度數(shù)據(jù)集是UCI開源數(shù)據(jù)集SML2010[17],包含室內(nèi)溫度和二氧化碳、相對濕度等其他相關(guān)數(shù)據(jù).
在訓練模型之前,歸一化是非常重要的,歸一化可以加快梯度下降求最優(yōu)解的速度.HRCNN采用的z-score歸一化,z-score可以將不同量級的數(shù)據(jù)統(tǒng)一轉(zhuǎn)化為同一個量級,統(tǒng)一用計算出的z-score值衡量,保證數(shù)據(jù)之間的可比性.其歸一化公式如式(16)所示:
(16)
其中,z表示歸一化后的數(shù)據(jù),x代表原始數(shù)據(jù),μ,σ分別代表原始數(shù)據(jù)的均值和標準差.
在本實驗中,將輸入窗口時間長度為30,卷積核大小為3×3.此外還有幾個超參數(shù)需要設(shè)定,GRU的隱藏層的特征維度,Encoder的GRU的個數(shù),Decoder的GRU的個數(shù).
在超參數(shù)選擇的方法中,包括網(wǎng)格搜索、隨機搜索、貝葉斯調(diào)參等,其中貝葉斯調(diào)優(yōu)[18]的原理是建立在高斯過程回歸上,而高斯過程回歸則是在求解目標函數(shù)的后驗分布,每次取一組參數(shù)來得到相應的輸出,用來矯正對后驗概率分布的評估,最終得到參數(shù)與對應輸出的關(guān)系.這個過程相對其他調(diào)參方法,在每次迭代中都會考慮之前的參數(shù)信息,而且迭代次數(shù)少,速度快,故HRCNN選用貝葉斯調(diào)參.
經(jīng)過貝葉斯調(diào)參后確定GRU的隱層維度為30,Encoder的GRU的個數(shù)為2,Decoder的GRU的個數(shù)為1.
本文將數(shù)據(jù)集分為訓練集與測試集,按照前面確定好的參數(shù),利用訓練集進行訓練.通過Tensorboard得到訓練集的損失函數(shù)圖,其變化如圖3所示.

圖3 訓練過程中MSE的變化圖Fig.3 Changes of MSE during training
結(jié)果表明,隨著迭代次數(shù)的增加,訓練集的損失不斷減少,當?shù)螖?shù)達到3000的時候,損失值趨于平穩(wěn),模型的訓練已經(jīng)達到了預期效果.

表1 不同預測模型的預測結(jié)果Table 1 Prediction results of different prediction models
為了檢驗HRCNN模型的性能,本文將其與LSTM,GRU和梯度提升回歸樹模型(GBRT)進行對比.
從表1可以看出,HRCNN性能較好,RMSE值為0.1013,MAE值為0.0628,R值為0.9621,MAPE值為3.1147%,而對比的模型中,性能較好的是GBRT,其RMSE值為0.1086,MAE值為0.0678,R值為0.9566,MAPE值為28.6383%.
圖4給出了不同模型下大白菜價格預測的結(jié)果,相比其他模型,HRCNN模型預測未來一天的預測值與實際值基本一致,表明本文所構(gòu)建的模型性能的優(yōu)越性.

圖4 預測結(jié)果對比Fig.4 Comparison of prediction results
本文,為了檢驗HRCNN多天預測的性能,也構(gòu)建了GRU和LSTM并進行實驗對比,測試集損失值如表2所示.

表2 大白菜RMSE對比Table 2 RMSE comparison of Napa cabbage
GRU2和LSTM2分別代表的是兩層GRU和兩層LSTM.從表2可以看出,LSTM,GRU和HRCNN的預測性能均會隨著預測天數(shù)的增加而降低.但相對于其他模型,本文所構(gòu)建的HRCNN模型,RMSE較小,而且隨著預測天數(shù)的增加,預測性能下降慢于其他模型,也說明了本文所構(gòu)建模型在測試集上的效果優(yōu)于其他模型.
在預測未來K天的數(shù)據(jù)時,隨著預測天數(shù)K的增加,訓練所需的時間逐漸增加,而預測未來8天的價格,相對于預測未來7天所花費的時間大幅增加,而預測性能卻有所下降,因此將K的最佳值設(shè)定為7,即預測未來7天.

表3 兩個數(shù)據(jù)集的性能對比Table 3 Performance comparison of the two datasets
此外,為了檢驗HRCNN模型的泛用性,本文將HRCNN在PM2.5數(shù)據(jù)集和SML2010數(shù)據(jù)集進行測試,并且與EA-LSTM[19]做性能對比,結(jié)果如表3所示.
實驗參照文獻[19],采用MAE和RMSE兩種評價函數(shù)進行性能對比.從表3可以看出,HRCNN模型在PM2.5數(shù)據(jù)集上訓練測試,所得到的MAE為0.1261,RMSE為0.2253,在PM2.5數(shù)據(jù)集上預測性能表現(xiàn)上,MAE值優(yōu)于EA-LSTM 34%,RMSE值優(yōu)于EA-LSTM 18.2%.HRCNN模型在SML2010數(shù)據(jù)集上訓練測試,所得到的MAE為0.084,RMSE為0.0135,同樣優(yōu)于EA-LSTM,分別提升MAE 18.4%,RMSE 12.3%.HRCNN模型在這兩個公開數(shù)據(jù)集上均表現(xiàn)出一定的性能提升,表明了HRCNN在多元時間序列預測具有較為優(yōu)越的性能.
本文通過結(jié)合CNN與RNN兩種模型,CNN提取全局特征,RNN提取與時間相關(guān)的特征,并對輸入形式進行了處理,構(gòu)建出新的HRCNN模型,且利用貝葉斯對該模型進行優(yōu)化調(diào)參.實驗表明,該模型在預測農(nóng)產(chǎn)品價格上,體現(xiàn)了較好的預測性能,另外利用該模型在PM2.5和SML2010數(shù)據(jù)集上進行預測訓練,也進一步表明其性能優(yōu)于EA-LSTM.