胡 艷
(廣西財經學院防城港學院 廣西 南寧 530003)
在許多工程應用領域中均存在時間序列類型的數據,對時間序列的挖掘處理必須考慮數據間的時間關系,從復雜的海量時間序列中挖掘有價值的知識,具有重要的意義[1-2]。混沌時間序列是一種由非線性動力系統所產生的復雜行為,是一種普遍存在的不規則運動,典型的混沌時間序列包括煤礦瓦斯濃度[3]、航站樓離港旅客流量[4]和數控機床熱誤差時間序列[5]等。許多研究表明混沌時間序列具備短期內的可預測性[6-7],因此混沌時間序列的預測成為當前的一個熱門研究領域。在多變量的混沌時間序列問題中,容易出現多重共線性的現象,多變量之間由于存在高度相關性,導致預測模型的泛化能力有限,預測性能降低,容易陷入局部極小,且收斂速度慢[8]。
利用統計機器學習和深度學習技術對時間序列進行在線預測是當前最為常見的一類方法,而向機器學習或神經網絡加入多重非線性的處理機制存在一定的困難。文獻[9]為極限學習機的權重調節矩陣引入懲罰因子,通過懲罰因子降低高相關性變量的權重,從而緩解了多重共線性的效應。文獻[10]為神經網絡的輸出權重設計了平滑處理機制,通過正則項緩解混沌時間序列的多重共線性效應。現有的多重共線性解決機制大多通過增加一個獨立的檢測和調節模塊,而這些模塊一般也通過若干次的迭代學習搜索最佳的輸出權重矩陣,導致計算負擔較重。
多變量混沌時間序列預測算法為了保證較低的模型復雜性,大多采用單層神經網絡結構。混沌時間序列的鞍點數量遠多于局部最優點數量,許多研究表明,深度學習技術對這種問題的效果明顯好于單層神經網絡。本文運用可擴展性較好的循環神經網絡(Recurrent Neural Network,RNN)作為序列學習機,使用實時遞歸學習算法搜索最小化預測誤差的最優網絡參數,采用Levenberg-Marquardt算法對神經網絡進行迭代訓練。將序列的學習問題映射到動態線性模型是解決多重共線性問題的一個有效手段,本文利用卡爾曼濾波器對網絡的輸出權重進行調節,緩解隱層輸出矩陣的多重共線性問題。此外,將卡爾曼濾波器和神經網絡集成,能夠減少奇異矩陣的運算量,加快網絡的訓練速度。
DRNN由棧式網絡層構成,使用實時遞歸學習算法(Real Time Recurrent Learning,RTRL)進行非線性訓練。本文DRNN序列學習機結構如圖1所示。

圖1 基于DRNN的時間序列預測流程

Yn(k)=fANN(Yn(k-1),Yn(k-2),…,Yn(k-q),
U(k-1),U(k-2),…,U(k-p),Φ)
(1)
式中:函數fANN表示輸入信號和輸出信號之間的非線性關系。
將循環網絡關于時間展開,則變為深度前饋神經網絡。圖2所示為RNN關于時間展開的結構示意圖。圖中每個圓形為一個網絡層,可能是輸入層、隱層和輸出層。單隱層RNN的展開結構如圖2(a)所示,該RNN網絡以一定的步長采集當前的輸入信號,單隱層的RNN結構僅能處理時間t的輸入數據,而多隱層的結構可以采集當前時間t輸入數據不同深度的數據空間,本文的多層RNN在時間域和空間域均達到了較高的深度。

(a) 單層循環神經網絡
DRNN結構的訓練程序包括計算誤差和計算梯度兩個步驟。


U(k)?U(k-1)?…?U(k-p)]
(2)
式中:“?”表示序列連接操作。隱層(s=1,2,…,n-1)和輸出層(s=n)的輸出向量分別定義為:
nets(k)=[net1,net2,…,netNs]+Bs
(3)
式中:s=1,…,n-1,n;⊙表示矩陣元素間的乘法。
(4)
訓練DRNN等價于調節DRNN網絡參數Φ的過程,訓練過程中DRNN的輸出序列逐漸接近真實的序列。網絡的訓練目標定義為:
(5)

(6)
(7)

2) 計算梯度。使用RTRL算法[11]訓練DRNN。以4層神經網絡為例介紹本文梯度學習的過程,其包括1個輸入層、2個隱層和1個輸出層。輸出層誤差ei(k)關于W3,2的偏導數計算為:
(8)

(9)
式中:zim=(i-1)q+m;σ表示克羅內克函數。如果n3=d或n2=l,則σ(n3,d)(n2,l)=1;否則σ(n3,d)(n2,l)=0。
隱層誤差ei(k)關于W2,1的偏導數計算為:
(10)
(11)
(12)
(13)
輸入層誤差關于權重W1,0的偏導數計算為:
(14)
(15)
(16)

(17)
采用基于梯度的Levenberg-Marquardt方法[12]訓練DRNN模型。
使用卡爾曼濾波器調節隱層的輸出權重,利用卡爾曼濾波器處理多重共線性問題。考慮一個動態系統,其狀態向量定義為能夠唯一描述系統動態行為的最小數據集,記為xk,k表示離散序列的時間點。一個動態系統可定義為以下的方程組形式:
xk+1=Ak+1|kxk+wk
(18)
yk=Hkxk+vk
(19)
式中:xk為狀態向量;yk為觀察序列的向量;Ak+1|k為狀態xk從時間k到時間k+1的轉移矩陣。yk為時間點k的觀察樣本,Hk為度量矩陣。式(18)和式(19)分別為系統的狀態方程和度量方程。噪聲表示為:
(20)
式中:wk表示加性高斯白噪聲,噪聲的均值為0;Qk為協方差矩陣。
卡爾曼濾波器是一種回歸型估計器,算法1是估計狀態的卡爾曼濾波器遞歸程序。
算法1估計狀態的卡爾曼濾波器遞歸算法
2.P0=E[(x0-E[x0])(x0-E[x0])T]
3. whilek≠n
//傳播狀態的估計
//傳播協方差的誤差
//計算卡爾曼增益矩陣
//更新狀態的估計
//更新協方差的誤差
9. endwhile
在動態系統中,式(18)-式(20)的矩陣Hk、Ak、Rk(測量噪聲的協方差矩陣)、Qk是已知的,而在時間序列的學習問題中,這些參數的歷史數據是已知的,本文假設時間序列模型的矩陣依賴一個未知的向量參數,記為ψ。ψ的經典求解方案是最大似然估計,但這種方案增加了卡爾曼濾波器的矩陣求逆運算數量和矩陣乘法運算數量,所以導致序列學習算法的計算成本大幅度升高。
本文采用低計算復雜度的噪聲自協方差估計算法[13]估計未知參數ψ,該方法將狀態方程映射為一個線性時不變模型,其解是離散矩陣Ak和Qk,兩個矩陣分別定義為:
Ak=exp(FΔtk)
(21)

(22)
式中:F、L、Qc為常量矩陣,描述了模型的行為;Δtk=tk+1-tk為離散變換尺度的增量。F為反饋矩陣,其值定義了狀態估計的傳播速率,如果F值接近0,其狀態估計類似于傳統的線性回歸過程,如果F值較大,其狀態估計的變化速度較快;L為噪聲效應矩陣,一般設為單位矩陣;Qc為指定對角元素的密度矩陣,對角以外元素的缺省值為0。
一些情況下通過式(22)無法計算出協方差矩陣Qk,此時通過以下的分數分解處理:
(23)
然后,協方差矩陣Qk可計算為:
(24)
該方法無需通過迭代程序來估計矩陣Ak和Qk,所以其計算復雜度明顯低于最大似然估計方法。
對卡爾曼濾波器進行擴展,使其滿足非線性系統優化濾波器的條件。使用高斯近似聯合分布處理系統的狀態和度量,基于泰勒序列進行線性變換:
x~N(m,P)y=g(x)
(25)
式中:x∈Rn,y∈Rm,g:∈Rn→Rm為非線性函數;m為估計的狀態均值,P為狀態的協方差。變量x和y的線性近似值定義為:
(26)

(27)


基于卡爾曼濾波器更新循環神經網絡隱層的輸出權重。初始化階段使用式(21)和式(24)估計轉移矩陣A和協方差矩陣Qk,通過度量訓練時間序列的協方差計算出矩陣Rk。然后對于每一批新到達的時間序列,通過卡爾曼濾波器更新網絡的輸出權重。在序列學習過程中矩陣A、Qk和Rk為常量,僅僅更新回歸系統的參數。最終,使用卡爾曼濾波器輸出的回歸系數調節網絡的輸出權重矩陣。
仿真實驗在Intel Core i5-8265 CPU,主頻1.80 GHz,8 GB內存,MATLAB R2011b編程環境下完成。
為證明提出模型的有效性,選擇7個公開的多變量混沌時間序列數據集作為基準數據集,分別為Abalone、Auto MPG、Blog、Communities、Cycle、Energy和Housing數據集[14]。表1所示是基準數據集的數據量和屬性數量,將每個數據集按60%、10%和30%的比例分別劃分為訓練集、驗證集和測試集。

表1 實驗的基準數據集
實驗中時間序列的每批長度選定為5個觀察信號,采用1.2節的訓練方法訓練每個數據集。通過預處理實驗訓練每個數據集的最優網絡參數,每個數據集的最優結構參數如表2所示。

表2 每個實驗數據集的DRNN結構
每數據集的實驗采用表2所示的DRNN網絡結構,隱層采用log-sigmoid激活函數f(γ)=1/(1+e-γ),輸入層和輸出層采用線性激活函數。在線學習序列的過程中,僅通過卡爾曼濾波器實時計算遞歸位置參數,并根據該參數調節DRNN隱層的輸出權重矩陣。
每組實驗獨立地運行30次,統計30次的平均值和標準偏差作為最終的性能結果。
選擇5個考慮多重共線性問題的時間序列預測算法與本文算法比較,橫向驗證本文算法的有效性。對比方法如下:
(1) CVEA[15]:采用交叉驗證解決自回歸模型的多重共線性問題。
(2) DTS[16]:通過矩陣分解處理網絡的輸出權重矩陣,再通過距離度量評價分解元素之間共線性嚴重程度。
(3) ROTSP[17]:一種基于單層循環神經網絡的時間序列預測算法,并未包含多重共線性問題的處理機制。
(4) LSTM[18]:一種基于長短期記憶的循環神經網絡模型,其有效地提高了循環神經網絡的學習效率。
(5) AWNN[19]:一種基于小波神經網絡的時間序列預測模型,通過小波函數實現了非線性預測能力,并且接近單層神經網絡的效率。
采用根均方根誤差(Root Mean Square Error,RMSE)作為預測性能的評價指標,定義如下:
(28)

圖3所示為6個時間序列預測算法對于7個測試數據集的預測誤差結果,本文算法對于Abalone、Auto MPG、Communities、Cycle、Energy和Housing數據集的預測誤差均低于其他對比方法。綜合比較圖中的結果,可看出深度神經網絡的預測性能好于單層神經網絡。DTS算法雖然考慮了多重共線性問題,但是單層神經網絡也嚴重限制了總體的預測性能。

圖3 時間序列的預測誤差實驗
多重共線性的出現情況一般為兩個以上的預測器之間高度相關,這種情況下,模型包含的預測器越多,則預測的準確率越低。本文首先評估原數據集屬性之間的線性依賴程度,采用方差膨脹系數(Variance inflation factor, VIF)和條件指數(Condition Index, CI)評估每個屬性的多重共線性的嚴重程度。第k個屬性的VIF定義為:
(29)

CI定義為:
(30)
式中:λ1為矩陣的最大特征值;λl為第l大的特征值。如果CI值在0~10范圍表示屬性之間是弱依賴性;如果CI值在10~30范圍表示屬性之間是普通依賴性;如果CI值在30~100范圍表示屬性之間是高度依賴性;如果CI值大于100表示屬性之間是強依賴性。
表3所示為原數據集的最大VIF值和最大CI值。經多次測算,Blog數據集的最大VIF值很大,且無確切數值。可以看出,Cycle數據集和Housing數據集的屬性之間依賴性較低,Abalone數據集和Auto MPG數據集的屬性之間依賴性中等,而Blog數據集、Communities數據集和Energy數據集的屬性之間依賴性很高。

表3 數據集特征的多重共線性分析
在神經網絡模型中,經過隱層映射之后的輸出矩陣列之間一般具有高度的相互依賴性,但如果依賴性過高,則會出現多重共線性問題,導致預測的性能受到嚴重影響。本文網絡模型對每個數據集分別獨立地訓練50次,統計了其中最大的CI值和VIF值以及平均CI值和VIF值,結果如表4所示。結果顯示,原數據集中相關性過低的數據集經過本文網絡模型的學習,相關性得到提高,符合神經網絡的特點;而原數據集中相關性過高的數據集經過本文網絡模型的學習,有效地降低相關性,體現了卡爾曼濾波器的權重調節效果。

表4 數據集特征的多重共線性分析平均值(RBF激活函數)
對比本文DRNN模型與LSTM模型、AWNN模型的訓練時間。將LSTM網絡的隱層數量設為和本文DRNN一致,將隱層深度記為L,每個數據集的L值設為參數優化程序的平均值。
統計平均訓練100個觀察時間序列數據的平均時間,結果如表5所示。可以看出,AWNN的小波函數對于混沌時間序列的計算量依然很高,其訓練時間高于DRNN。而LSTM在訓練高維混沌時間序列的過程中,包含大量的矩陣求逆運算,導致其訓練時間較長,而本文方法的激活函數較為簡潔,且卡爾曼濾波器避免了大部分的矩陣求逆運算,僅保留了非奇異矩陣的求逆運算,因此達到了較好的訓練效率。

表5 不同網絡模型的平均訓練時間 s
本文利用具備時間域和空間域可擴展能力的循環神經網絡作為序列學習機,使用實時遞歸學習算法搜索最小化預測誤差的最優網絡參數,采用Levenberg-Marquardt算法對神經網絡進行迭代訓練。利用卡爾曼濾波器對網絡的輸出權重進行調節,緩解隱層輸出矩陣的多重共線性問題。此外,將卡爾曼濾波器和神經網絡集成,能夠減少矩陣的運算量,加快網絡的訓練速度。實驗表明,本文算法有效地緩解了多變量混沌時間序列的多重共線性問題,并且對時間序列實現了較好的預測性能,其時間效率也高于傳統的深度神經網絡。
本文DRNN的網絡結構參數選定過程依然較為繁瑣,目前預處理的訓練程序較為耗時。未來的研究重點是設計一套深度循環神經網絡的結構參數優化程序,通過少量訓練集選定最優的網絡結構參數。