吳雙雙 宋愷濤 陸建峰
(南京理工大學計算機科學與工程學院 南京 210094)
時間序列是按照時間順序采樣得到的一系列有序數(shù)據,它描述了某個變量隨著時間的推移而變化的規(guī)律。近年來,時間序列預測在金融[1~2]、交通[3]和能源[4]等多個領域都得到了廣泛的應用。時間序列預測方法主要分為兩類,一類是傳統(tǒng)的基于數(shù)學建模的預測方法,如經典的自回歸積分滑動平均(Auto Regressive Integrated Moving Average,ARI?MA)模型[5]。另一類是基于機器學習的時間序列預測方法。傳統(tǒng)時間序列方法根據時間序列直接建模,模型較為簡單易用。在實際應用中,由于時間序列具有不規(guī)則、混沌等非線性特征,很難對其建立理想的模型來進行預測。機器學習方法的輸入不限于單一的時間序列輸入,而是可以根據具體應用場景,選取可能影響預測值的特征。因此,基于機器學習的時間序列預測方法往往能取得更高的預測精度。神經網絡作為一種常見的機器學習工具,具有自組織、自學習以及強大的非線性逼近能力,將它用于時間序列預測時,往往能夠取得較好的結果。目前,已經有多種神經網絡模型被用于時間序列預測,包括徑向基(Radial Basis Function,RBF)網絡[6]、多層感知機(Multilayer Perceptron,MLP)[7]和回聲狀態(tài)網絡(Echo State Network,ESN)[8]網絡等。此外,為了提高時間序列預測方法的預測精度并增強其適用性,Bates等提出了組合模型來對時間序列進行預測的思想。文獻[9]提出了同時使用ARIMA模型與配備權值及結構確定(weights and structure determination,WASD)算法的冪激勵前向神經網絡對時間序列進行建模和預測。文獻[10]提出了一種組合深度信念網絡(Deep Belief Net,DBN)和ARIMA模型的時間序列預測方法。
本文采用組合方法的思路,提出了一種組合卷積神經網絡和循環(huán)神經網絡的雙通道時間序列預測框架。卷積神經網絡(Convolutional Neural Net?work,CNN)在各種視覺任務中的巨大成功已經展現(xiàn)出了其強大的特征提取能力[11~12]。循環(huán)神經網絡(Recurrent Neural Network,RNN)引入了時序概念,比起無循環(huán)的前向網絡結構,能夠更好地處理時序分析問題[13]。在所提框架中,利用卷積神經網絡通道的卷積和池化操作提取出時間序列的深層特征,利用循環(huán)神經網絡通道的記憶單元提取出長序列依賴特征,然后將兩個通道所提的特征合并后輸送到全連接層得到最后的輸出。
主要介紹針對一維輸入特征向量的卷積神經網絡的卷積操作。用x∈Rn表示輸入向量,用w∈Rk表示長度為k的一維卷積核參數(shù)。為了使卷積操作后得到的向量與輸入向量具有相同的維度,我們用邊緣值擴展x向量,擴展后的x∈Rn+k-1,用x[i:i+k]表示x向量的第i到第i+k個值。設定卷積步長為1,對輸入向量x的子向量重復應用卷積核操作:
其中,i=1,…,n,·表示內積運算。單個卷積核對x操作后得到一個長度為n的向量o。我們對每個輸出oi添加一個偏置項b∈R和一個激活函數(shù)f,得到最后的特征圖c∈Rn,其中
對于同一個輸入向量x,我們可以使用多個卷積核,目的是讓每個卷積核都學到盡量互補的特征。同時,對于卷積核的大小我們也可以做不同的選擇。
RNN是一種通過維持內部隱藏狀態(tài)來對任意長度的動態(tài)時間序列行為進行建模的神經網絡,內部的隱藏狀態(tài)是通過隱層神經元的定向循環(huán)連接實現(xiàn)的。它可以被認為是一個隱馬爾可夫模型的擴展,采用非線性轉換函數(shù),并能夠建模長時序依賴關系。一個最簡單的RNN結構如圖1。圖1中左邊為RNN未展開時候的結構,右邊為RNN展開后的結構。st為隱藏層的第t步的狀態(tài),它是網絡的記憶單元。ot是第t步的輸出,xt為第t步的輸入。展開后的RNN與傳統(tǒng)神經網絡的唯一區(qū)別在于,RNN中每一層的參數(shù)U,V,W都是共享的,而傳統(tǒng)神經網絡中每一層的參數(shù)都是不同的。圖1中每一步都會有輸出,但是每一步都要有輸出并不是必須的。
圖1 RNN結構
原生的RNN在訓練時容易出現(xiàn)梯度消失的問題,因此在大多數(shù)應用中,都使用RNN的改進版本長短期記憶(Long Short-Term Memory,LSTM)網絡來代替原RNN。LSTM在RNN的基礎上加入三個門來控制信息流入輸出:一個遺忘門f來控制先前信息的輸入比例;一個輸入門i來控制當前信息的輸入比例;一個輸出門o來控制輸出狀態(tài)。這些門使得LSTM能夠學習到一個序列中的長期依賴關系,因為這些門幫助輸入信號有效地通過隱層記憶狀態(tài)r傳播而不影響輸出。LSTM神經元的公式如下:
公式中W∈Rm×n,U∈Rm×m,b∈Rm為要學習的參數(shù),其中m為隱層神經元的個數(shù),n為輸入向量的維數(shù)。?為逐元素相乘操作,σ為激活函數(shù),r?t為候選的記憶狀態(tài)。通過遺忘門 ft控制上一狀態(tài)的影響和輸入門it控制候選狀態(tài)的影響得到最終的記憶狀態(tài)rt。ht是隱層的輸出,其由輸出門ot和記憶狀態(tài)rt共同決定。圖2是對LSTM神經元更直觀的展示。
圖2 LSTM神經元內部結構
本文所設計的雙通道框架如圖3。框架分為CNN和RNN兩個通道,兩個通道并行提取出輸入序列的特征,得到兩個特征向量p和q。為了平衡兩個通道對最后預測結果的影響,將p和q向量的維度都設定為d。兩個通道提取出的p和q向量最后連接到全連接層得到輸出y。
圖3 雙通道框架
本文設計的CNN通道構造如圖4所示。圖中n1為第一個卷積層中卷積核的個數(shù),n2為第二個卷積層中卷積核的個數(shù)。CNN通道主要由卷積層和池化層組成。卷積層是通道中最核心的單元,通道包含了兩個卷積層,第一個卷積層提取出時間序列的低階鄰域特征,第二個卷積層將低階鄰域特征組合成高階的復雜特征。每個卷積層后加入最大值池化層以減少模型參數(shù),同時增強模型魯棒性。CNN通道最后連接了一個全連接層,將CNN提取到的特征映射到一個長度為d的向量上,方便后面將雙通道的特征合并。
Google mind團隊在2014年發(fā)表了一篇使用注意力(attention)機制的RNN模型來進行圖像分類的論文[14],引起了研究人員對于attention機制的關注。attention機制的原理是模擬人腦的注意力模型。當人腦在分析某個事物時,雖然得到的是關于這件事物的全貌,但是在我們想要獲得這件事物的相關信息的時候往往注意的是這件事物的某些部分。在時間序列問題中也存在類似的問題,即所要預測的值并不是均衡地依賴所有歷史時間序列的值,而是有側重地依賴某幾個時間點上的值。因此本文在RNN通道中加入attention機制,以提高原RNN通道的預測精度。
圖4 CNN通道構造
圖5 RNN通道構造
本文所設計RNN通道的構造如圖5所示。原RNN模型中,只使用最后一個時間步上LSTM層的輸出hn進行預測,加入了attention機制后的RNN模型能夠有偏重地考慮每一個時間步上的輸出。本文所設計的attention機制公式如下:
實驗所用的數(shù)據集來自于EEM2016舉辦的能源價格預測比賽,可以從 http:∕complatt.smartwatt.net上下載到。該數(shù)據集是一個描述市場上某個現(xiàn)貨價格的數(shù)據集,時間從2015年1月1日00:00開始,到2016年4月27日21:00結束,以小時為單位。數(shù)據集一共有11590個時間點的數(shù)據,將最后的2000個數(shù)據點作為測試集來評價算法有效性,其余時間點用來訓練網絡。
實驗中用到了三個回歸問題中的常用評價指標:均方根誤差(RMSE),平均絕對誤差(MAE)和平均相對誤差(MRE)。均方根誤差是觀測值與真值偏差的平方與觀測次數(shù)l比值的平方根,用來衡量觀測值同真值之間的偏差。平均絕對誤差是所有觀測值與真值偏差的絕對值的平均。與平均誤差相比,平均絕對誤差由于偏差被絕對值化,不會出現(xiàn)正負相抵消的情況,因而,平均絕對誤差能更好地反映預測值誤差的實際情況。平均相對誤差是所有觀測值與真值偏差除以真值的絕對值的平均,是一個衡量偏差的相對量。三個評價指標的公式如下:
其中,l為測試樣本的總量,yi為第i個數(shù)據點的真實值,y?i為第i個數(shù)據點的預測值。
實驗中用到的CNN通道和RNN通道配置分別見表1和表2。
表1 CNN模塊配置
配置表中maps表示卷積核數(shù)量,k,s,p分別表示卷積核長度,步長和填充大小,windows表示池化層窗口大小。Dense層為全連接層,units為神經元的個數(shù)。輸入序列長度n的設置為12。用來合并兩個通道的全連接層的神經元個數(shù)設置為8。
表2 RNN模塊配置
雙通道模型本質上也是一個神經網絡,可以定義損失函數(shù)后,用BP算法進行參數(shù)學習。但是考慮到CNN和RNN的構造存在一定的差異,有時難以選擇一個合適的學習步長和學習方法來對整個網絡的參數(shù)進行訓練。實驗中也發(fā)現(xiàn),網絡的整體訓練經常出現(xiàn)難以收斂的情況,一方面是因為參數(shù)的初始值選取不當,另一方面網絡過于復雜也會增加出現(xiàn)這種情況的概率。因此,借鑒機器學習中的stacking模型融合方法,提出一種分層訓練方法。此外,分層訓練方法存在另一個優(yōu)勢,即可以對兩個通道進行并行訓練,節(jié)約訓練時間。具體步驟如下:
Step1:將數(shù)據集劃分為兩個互不相交的子集Dataset1和Dataset2;
Step2:用Dataset1分別訓練CNN模型和RNN模型;
Step3:用訓練好的CNN模型和RNN模型對Dataset2的數(shù)據進行預測;
Step4:將step3得到的中間結果,即兩個模型全連接層的輸出p和q整合為新的輸入特征;
Step5:將step4得到新的輸入特征和對應的真實輸出值作為訓練樣本,訓練用來融合雙通道的高層神經網絡;
Step6:將step2訓練好的雙通道模型參數(shù)和step5訓練好的高層神經網絡參數(shù)復制到整體框架中。
為了驗證引入attention機制的改進RNN的效果,將改進模型與原RNN模型進行效果對比。將改進后的模型簡稱為RNN_attention模型。表3為RNN與RNN_attention在2000個測試點上的預測效果對比。從表中可以看出,添加了attention機制的改進模型能夠取得比原RNN模型更好的效果。為了有更直觀的展示,選取測試集中前100個時間點,將真實值與兩個模型預測值的曲線展示在圖6和圖7中??梢钥闯?,圖6中灰線的RNN預測曲線可以基本擬合真實值曲線,但是在某些時間點上的預測結果仍然存在較大的偏差。圖7中灰線曲線的RNN_attention預測曲線比起圖6中的灰線擬合效果更好,在絕大多數(shù)時間點上的預測結果都要優(yōu)于RNN。從而可以得出結論,attention機制能夠使RNN模型更加關注那些對預測結果有影響的時間步上的輸出,從而提高RNN模型的預測精度。
表3 RNN模型與RNN_attention模型預測效果對比
圖6 RNN與Ground Truth對比圖
圖7 RNN_attention與Ground Truth對比圖
為驗證雙通道框架的有效性,將雙通道模型與單通道模型進行對比。將2000個測試點分成十組,每組200個數(shù)據,每組分別計算RMSE、MAE和MRE的值,結果見表4。從表中可以看出,在十組預測結果中,雙通道模型預測結果大多數(shù)時候都能取得優(yōu)于單通道模型的預測結果。圖8和圖9展示了前200天單通道和雙通道的絕對誤差對比圖。在兩張對比圖中,雙通道預測誤差要整體低于單通道預測誤差。并且可以看出,在預測誤差出現(xiàn)峰值的地方,黑線曲線代表的單通道預測誤差值通常要高于灰線曲線代表的雙通道預測誤差值,這是因為雙通道模型能夠綜合考慮兩個通道的特征,對預測結果進行權衡。因此當某個通道的預測結果出現(xiàn)了較大偏差時,雙通道框架能夠考慮到另一個通道的特征,從而使最后的預測誤差不會太大。
圖8 CNN模型與雙通道模型絕對誤差對比
表4 單通道與雙通道結果對比
圖9 RNN模型與雙通道模型絕對誤差對比
本文提出了一種用于時間序列預測的雙神經網絡通道框架,具體而言,框架利用CNN通道提取深層時序特征,利用RNN通道提取長時序依賴特征,然后將兩個通道所提取的特征合并后輸送到全連接層得到最后的輸出。另外,本文對RNN通道進行改進,將attention機制引入RNN,相比于原RNN只使用LSTM層最后一步的輸出信息進行預測,改進后的RNN能夠有偏重地考慮所有時間步上的輸出。真實數(shù)據集上的實驗表明,所提的雙通道框架能夠取得比單一的CNN框架和RNN框架更高的預測精度。