田賢忠,顧思義,胡安娜
(浙江工業(yè)大學 計算機科學與技術(shù)學院,杭州 310000)
當代社會的各個領域中,每時每刻都會產(chǎn)生海量的時序數(shù)據(jù),例如,金融、氣象、交通和醫(yī)療等.高效的對這些時序數(shù)據(jù)進行處理和分析,能夠讓人把握事件的趨勢,做出更好的決策.
使用循環(huán)神經(jīng)網(wǎng)絡(Recurrent Neural Network,RNN)來處理時序數(shù)據(jù)是一種有效的方法,其中長短期記憶(Long-Short Time Memory,LSTM)[1]網(wǎng)絡和門控循環(huán)單元(Gated Recurrent Unit,GRU)[2]網(wǎng)絡是最常用的兩種RNN的變體,解決了RNN中梯度爆炸和梯度消失的問題.在交通領域,F(xiàn)u R等人使用了LSTM和GRU對交通流量數(shù)據(jù)進行預測[3];在工業(yè)領域,Zhao R等人將GRU使用于機器設備的健康監(jiān)測[4];在醫(yī)療領域,Choi E,Ruan T等人使用GRU訓練了電子健康檔案數(shù)據(jù),預測病人未來的健康狀況[5,6],Che Z等人則考慮到了醫(yī)療數(shù)據(jù)中時序數(shù)據(jù)采樣不均的問題,使用了改進結(jié)構(gòu)的GRU模型進行訓練[7];在語音語義識別中,馮詩影等人對循環(huán)神經(jīng)網(wǎng)絡運用在語音識別中,并對訓練過程優(yōu)化,明顯提高了模型訓練效率[8],李永帥等人構(gòu)建了一個雙向的LSTM多層網(wǎng)絡模型,克服了傳統(tǒng)情感詞典中情感詞傾向不變形等問題[9];在時序數(shù)據(jù)預測任務中,張旭東等人設計了一種LSTM模型,可以使網(wǎng)絡訓練與人的經(jīng)驗知識結(jié)合,使訓練過程更有目的性[10].
早在1996年,Chen P等人發(fā)現(xiàn)宏觀和金融指數(shù)色混沌的廣泛證據(jù),證明經(jīng)濟體運動是高度復雜的非線性運動,不是隨機過程[11].因此,金融系統(tǒng)走勢也是可以被預測的,許多研究都選擇使用機器學習來對金融市場走勢進行預測.Fengmei Y 等人混合了多種機器學習方法[12],對中國股市進行預測并自動作出決策,Kai Chen等人使用LSTM預測了中國股市的回報[13],Sreelekshmy S等人比較了LSTM,RNN和滑動窗口的CNN在股市預測中的表現(xiàn)[14],Qin Y等人提出了雙階段注意力機制循環(huán)神經(jīng)網(wǎng)絡模型,預測了納斯達克100的股票價格[15],Hajiabotorabi Z等人使用RNN變種來對變化較快的高頻交易數(shù)據(jù)進行預測[16],Yeqi L等人提出了一種RNN的改進結(jié)構(gòu),增強了RNN的時空關聯(lián),并運用于金融市場的預測中[17].
雖然RNN能在大多數(shù)時序數(shù)據(jù)處理任務上有較好的表現(xiàn),但是目前并沒有合適的RNN模型是針對金融時序數(shù)據(jù)的特點的.首先,金融數(shù)據(jù)僅僅會在工作日產(chǎn)生,在周末以及節(jié)假日,不會有新的數(shù)據(jù)產(chǎn)生,因此時間序列時間間隔是非等的;其次,金融系統(tǒng)的市場穩(wěn)定程度也會影響系統(tǒng)后續(xù)的趨勢.由于金融數(shù)據(jù)中的時間序列非等并不是由于數(shù)據(jù)缺失,因此當前RNN模型主要用于處理這類問題的插值法并不適用,而市場的穩(wěn)定程度這一信息在RNN模型中也不能高效的被利用.
針對上述RNN模型在處理金融時序數(shù)據(jù)時問題,本文基于GRU模型結(jié)合模糊控制提出了一種新的網(wǎng)絡模型——GRU-F(GRU-Fuzzy).GRU-F的特點如下:1)能夠解決金融時序數(shù)據(jù)中時間間隔非等的問題;2)通過模糊控制的結(jié)構(gòu)來利用金融數(shù)據(jù)中市場穩(wěn)定程度的信息.
GRU模型[2]是RNN模型的變體,可以用于時序數(shù)據(jù)處理.RNN模型認為輸入(包括輸出)之間不是相互獨立的.它可以實現(xiàn)神經(jīng)元參數(shù)共享,即網(wǎng)絡當前時刻的神經(jīng)元訓練參數(shù)可以在接下來的過程中被使用,所以網(wǎng)絡在序列上可以保存歷史的狀態(tài)信息,適合用于訓練有序序列數(shù)據(jù).由于RNN模型在一個時間窗口中共享了神經(jīng)元參數(shù),因此可以大幅減少模型中需要學習的參數(shù)數(shù)量.GRU模型在RNN的基礎上增加了2個門結(jié)構(gòu),用于解決RNN中的長期依賴問題.
GRU模型結(jié)構(gòu)為圖1所示.at為網(wǎng)絡輸入,ht為記憶層的輸入輸出,它既是上一記憶層的輸出,也是下一記憶層的輸入.這種結(jié)構(gòu)繼承了RNN模型的特性,共享了神經(jīng)元參數(shù).GRU的重置門rt,更新門zt控制每一時間步上的記憶層的更新.模型的前向傳播公式如下:
圖1 GRU模型結(jié)構(gòu)Fig.1 Structure of GRU
rt=σ(Wrat+Urht-1+br)
(1)
zt=σ(Wzat+Uzht-1+bz)
(2)
h′t=tanh(Wat+U(rt⊙ht-1)+b)
(3)
(4)
其中矩陣Wr,Wz,W和向量br,bz,b是模型參數(shù),分別表示連接權(quán)值矩陣和偏置值.本文使用σ(v)代表向量中逐元素進行Sigmoid函數(shù)運算,⊙是逐元素相乘的運算符.
GRU模型的局限性在于,模型不能很好的處理時間間隔不等的時序數(shù)據(jù),相鄰的兩層之間時間間隔變化時,這種變化無法很好的在模型中體現(xiàn).
模糊控制是以模糊集理論、模糊語言變量和模糊邏輯推理為基礎的一種智能控制方法[18],它是從行為上模仿人的模糊推理和決策過程的一種智能控制方法.模糊控制適用于有模糊環(huán)境且難以建模的控制系統(tǒng).模糊控制器的基本結(jié)構(gòu)如圖2所示.
圖2 模糊控制器Fig.2 Fuzzy controller
模糊化是將系統(tǒng)中的精確量轉(zhuǎn)化到模糊集合中;模糊規(guī)則是根據(jù)經(jīng)驗建立模糊規(guī)則庫,實現(xiàn)基于知識的推理決策;去模糊化則將推理得到的控制量轉(zhuǎn)化為控制輸出.
通過模糊控制器使記憶層在保留信息的過程中能夠?qū)Ξ斍皵?shù)據(jù)的波動水平有自適應調(diào)整.
本文提出了一種使用模糊控制的時間序列循環(huán)神經(jīng)網(wǎng)絡模型——模糊循環(huán)GRU神經(jīng)網(wǎng)絡(GRU-F).其基本思想是:改進GRU模型的結(jié)構(gòu),在t-1時刻的記憶層傳遞到t時刻時增加一個模糊控制結(jié)構(gòu),使其能夠更合理的處理時間間隔不等的時間序列.模糊控制結(jié)構(gòu)能夠根據(jù)t時刻之前的信息和t時刻到t-1時刻的間隔決定記憶層有多少信息從t-1時刻保留到t時刻.具體的網(wǎng)絡模型由圖3所示.
圖3 由GRU-F組成的網(wǎng)絡模型Fig.3 Network model consists of GRU-F
1)A是一個D維長度為M的數(shù)據(jù)序列
A=[a1,a2,a3,…,aM]T∈M×D
2)一個大小與A相同的序列S
S=[s1,s2,s3,…,sM]T∈M×D
3)一個長度為T的序列Δ
Δ=[δ1,δ2,δ3,…,δM]T
其中δt為t時刻數(shù)據(jù)與t-1時刻數(shù)據(jù)的時間間隔.
每個輸入(An,Sn,Δn),GRU-F模型單輸出一個K維的向量Y,
Y=[y1,y2,y3,…,yk]
其中,yk表示當前輸入經(jīng)過模型后得到的結(jié)果在維度k上的值.當K=1時,模型的輸出一個預測值.
金融市場產(chǎn)生的數(shù)據(jù),由于在節(jié)假日不會有市場不會產(chǎn)生交易,不會有新的數(shù)據(jù)產(chǎn)生,因此金融數(shù)據(jù)中的時間間隔是不固定的.例如,普通工作日市場的相鄰兩個數(shù)據(jù)之間間隔為1天,而每逢周末,相鄰兩個數(shù)據(jù)之間的間隔為3天,在節(jié)假日這個間隙會更大.數(shù)據(jù)中的時間間隔是影響金融市場走勢的一個重要因素.除此之外,市場的波動水平也是影響市場走勢的一個重要因素.因此,一個能夠很好的處理市場不規(guī)律的時間間隔和市場波動水平兩個信息的單元結(jié)構(gòu)可以提高預測性能.
GRU-F的網(wǎng)絡結(jié)構(gòu)如圖4所示.在記憶層的信息進入下個記憶層之前,會通過一個完全由輸入驅(qū)動的分解網(wǎng)絡,該結(jié)構(gòu)可以根據(jù)時間間隔和市場波動水平控制記憶層記憶多少信息進入下一層.相對于較小的時間間隔,時間間隔較大時記憶層將遺忘更多的信息;相對于較小的市場波動,市場波動較大時記憶層也將遺忘更多的信息.其具體結(jié)構(gòu)如下:
圖4 GRU-F單元結(jié)構(gòu)Fig.4 Structure of GRU-F
(5)
(6)
g(δt,st)=lapse(δt)·fuzzy(st)
(7)
fuzzy(st)為一個單變量二維模糊控制器.根據(jù)st記錄的數(shù)據(jù)中每個維度的當前波動的程度,控制記憶層中信息衰減程度.輸入變量的模糊集論域計算出st的范圍,輸出變量的論域為(0,1].模糊化過程的隸屬度函數(shù)選擇三角形隸屬度.輸入變量和輸出變量的模糊子集均為{NB,NS,ZE,PS,PB}.去模糊化的過程本文使用直觀且運算量小的重心法.
(8)
(9)
(10)
(11)
其中,at是當前時刻的輸入,參數(shù){Wr,Ur,br},{Wz,Uz,bz},{W,U,b}分別是重置門、更新門和候選集的網(wǎng)絡參數(shù).σ(·)是向量中逐個元素的Sigmoid(x)計算:
(12)
最后,ht經(jīng)過輸出層得到輸出,
Ot=f(Woht)
(13)
以上的合計決定了數(shù)據(jù)的時間間隔和數(shù)據(jù)波動水平會影響記憶層保留多少信息到下一層.使模型更合理的處理金融時序數(shù)據(jù).
GRU-F是一個平滑的、相互連接的模型,模型是可微的,因此,本文采用了反向傳播(BPTT)的算法對模型參數(shù)進行更新.
本文采用batch技術(shù),使網(wǎng)絡能夠更好的收斂.訓練時,從樣本池中按順序選取batch-size數(shù)量的樣本進行訓練,batch的規(guī)模默認為32.另一方面,根據(jù)網(wǎng)絡輸出值和目標值之間的差值的平方,即均方誤差(Mean Squared Error,MSE)為目標函數(shù)函數(shù),即:
(14)
其中,N代表總樣本數(shù),targett代表了t時刻的樣本的實際觀測值,predictedt代表了t時刻樣本的網(wǎng)絡預測值.訓練使用Adam優(yōu)化器更新網(wǎng)絡參數(shù).
GRU-F模型架構(gòu)的完整訓練過程如表1所示.
表1 模型的訓練過程Table 1 Training process of the model
本文通過實驗,驗證GRU-F模型的性能.實驗環(huán)境均為Python 3.6,Windows10 64位系統(tǒng),64G內(nèi)存,CPU i9-9820X,顯卡NVIDA 2080Ti顯存11G,TensorFlow的版本為1.12.
數(shù)據(jù)使用美股S&P500中選取的25支股票與上證50中選取的25支股票近10年的日線數(shù)據(jù),包括了每只股票每日的開盤價,最高價,最低價,收盤價,成交量數(shù)據(jù),以及通過以上基礎數(shù)據(jù)計算出的RSV,KDJ,AR,BR,ASI,ROC,RSI,W&R指標,組成特征數(shù)據(jù)集.
通過滑動窗口將M個交易日的數(shù)據(jù)作為一組輸入數(shù)據(jù),第M+1個交易日的收盤價作為輸出對數(shù)據(jù)進行分組,生成訓練數(shù)輸入據(jù)集X和輸出數(shù)據(jù)集Γ.
由于股市中各指標數(shù)據(jù)通常數(shù)值較大,且單位不同,不適用于模型,所以為了使數(shù)據(jù)適合GRU-F計算,并且一定程度上消除量綱的影響,本文對數(shù)據(jù)進行歸一化操作得到A∈M×D.對于長度為M的窗口任意維度的數(shù)據(jù),使用tanh函數(shù)進行歸一化處理:
(15)
按照70%的訓練集、15%的驗證集和15%的測試集劃分.輸出層使用大小為64的Linear層,使用Dropout設置為0.2防止過擬合,Batch-Size為32.
GRU-F有3個參數(shù)需要設置,時間窗口長度M,記憶層的大小h,波動水平偵測參數(shù)l.為了確定M和l的值,本文使用網(wǎng)格搜索,并且為了簡化,將其設定為M=l,M=l∈{5,10,15,30},通過實驗得出當M=15時,模型表現(xiàn)最佳;確定h的值,h∈{16,32,64,128,256},實驗得出當h=32, 64時,模型表現(xiàn)最佳,實驗結(jié)果如圖5所示.同時,我們發(fā)現(xiàn),我們的GRU-F模型有著更好的魯棒性.為了評估各個模型的性能,使用絕對平均誤差(MAE).
圖5 各個模型不同的記憶層規(guī)模在上證50中的平均MAEFig.5 Average MAE of different hidden layer sizes of each model in SSE 50
本文以蘋果(AAPL.US)的數(shù)據(jù)為例,預測次日收盤價.將GRU-F模型訓練過程與Attention-RNN和GRU進行對比.在Attention-RNN和GRU模型中,時間間隔僅作為一個普通的輸入數(shù)據(jù)來處理.可見本文提出的GRU-F的效果更好.實驗中,如圖6所示,GRU-F的Epoch在150左右時已經(jīng)有較好的結(jié)果,繼續(xù)訓練測試集上的精度不再上升.
圖6 Att-RNN,GRU和GRU-F訓練過程對比Fig.6 Comparison of Att-RNN,GRU and GRU-F training process
本文對數(shù)據(jù)集中所有的50支股票進行測試,對比使用不同方法得出的預測結(jié)果,包括ARIMA[19],GRU,Attention-RNN[20],DA-RNN[15]記憶層規(guī)模在32和64時.評估結(jié)果如表2所示.
由于GRU-F能夠更好的處理數(shù)據(jù)中的非等的時間間隔和數(shù)據(jù)的穩(wěn)定程度,如表2所示,GRU-F的表現(xiàn)最好.而ARIMA預測模型依賴數(shù)據(jù)的穩(wěn)定性,因此在股市上的表現(xiàn)略差.結(jié)果中還可以看出,模型在上證股票中的表現(xiàn)要好于S&P500,這可能是由于中國股市每日的波動會被控制在10%以內(nèi),而美股的股價完全自由,波動范圍更大.
表2 模型在美股和A股市場中性能評估Table 2 Performance evaluation of the model in S&P500 and SEE50
時序數(shù)據(jù)預測的問題一直存在于社會生產(chǎn)中,利用機器學習處理數(shù)據(jù)可以消除人的主管干擾.針對不同生產(chǎn)環(huán)境數(shù)據(jù)的特點,使用或者改進相應的機器學習模型,能夠得到更好的結(jié)果.本文提出了一種GRU-F的網(wǎng)絡模型,針對金融市場中的時序數(shù)據(jù)的特點對GRU模型進行了改進.一方面,模型改進后能夠處理金融數(shù)據(jù)中的非等時間間隔;另一方面,模型能夠更好的利用當前市場波動程度的信息,提高模型預測精度.最后,對于金融數(shù)據(jù)的特點如何使模型預測精度更高是未來研究的方向.