王 鈞 張 鵬 袁 帥
(寧夏大學,寧夏 銀川 750021)
隨著我國市場經(jīng)濟的快速發(fā)展,股票作為金融產(chǎn)品的重要部分,不僅是人們生活水平的體現(xiàn),也是市場經(jīng)濟的“晴雨表”,對股票走勢的預測已成為研究者越來越關注的課題[1]。因此,不論是對政府宏觀管理,還是對于投資者都有很強的現(xiàn)實意義。
人工智能技術的快速發(fā)展,基于深度神經(jīng)網(wǎng)絡對金融市場進行研究成為該領域研究的熱點??紤]到金融數(shù)據(jù)的時序性,RNN和LSTM神經(jīng)網(wǎng)絡存在梯度消失、過擬合等問題,本文使用Seq2Seq模型對股票時序數(shù)據(jù)進行預測。在相同的條件下,通過多組對比實驗,研究影響模型精度的因素,以此來提高模型的預測精度,根據(jù)實驗結果發(fā)現(xiàn)Seq2Seq對于不定長的序列數(shù)據(jù)具有更好的預測性能。
遞歸神經(jīng)網(wǎng)絡(RNN)是一類由各單元連接形成的有向循環(huán)的神經(jīng)網(wǎng)絡,它是前饋神經(jīng)網(wǎng)絡在處理時間序列數(shù)據(jù)的延伸,通過各單元之間的連接,RNN神經(jīng)網(wǎng)絡可以存儲神經(jīng)元當前時刻的輸入和前一時刻的輸出關系。[2]根據(jù)這一性質,時間序列信息可以在該網(wǎng)絡模型中循環(huán)任意長時間。
循環(huán)神經(jīng)網(wǎng)絡(RNN)模型包括輸入層、輸出層、隱藏層。每個節(jié)點表示序列中,代表RNN網(wǎng)絡的一層,當給定輸入向量序列計算隱藏層的一組序列通過迭代下列公式中的輸出序列
長短時間記憶網(wǎng)絡(LSTM)是一種基于遞歸神經(jīng)網(wǎng)絡(RNN)模型的改進,它由一組特殊的記憶模塊單元替換遞歸神經(jīng)網(wǎng)絡的隱藏層神經(jīng)元,這些模塊可以記憶隱藏層的任意時間狀態(tài),從而解決梯度消失等問題。當使用長短時間記憶模型進行相應數(shù)據(jù)反向傳遞時,使得序列數(shù)據(jù)在循環(huán)神經(jīng)網(wǎng)絡中很長一段時間的學習,從而保證信息進行遠距離傳遞,將誤差保持在更為恒定的水平。
通常長短時間記憶單元模塊包括輸入門、輸出門、遺忘門和記憶單元。根據(jù)門用進行保存和調節(jié)存儲單元和環(huán)境之間的相互作用,這樣保證存儲單元的狀態(tài)從一個單元到另一個單元保持不變。當信息通過長短時間記憶模型的門控制單元,記憶單元根據(jù)們開關控制信息進行增加、修改、刪除。LSTM網(wǎng)絡通過遞歸方程更新網(wǎng)絡單元,激活從輸入到輸出的映射。
不論是RNN網(wǎng)絡模型,還是長短時間記憶(LSTM)網(wǎng)絡模型,它們都存在處理固定長度序列數(shù)據(jù)的限制。為了解決不定長的序列數(shù)據(jù)提出了Seq2Seq模型,該模型將一個序列作為輸入映射到另一個輸出序列時,主要完成編碼輸入與解碼輸出兩個基本環(huán)節(jié)。其中:編碼端根據(jù)輸入序列數(shù)據(jù)進行編碼,并在網(wǎng)絡末端輸出編碼后的狀態(tài)。解碼端接收編碼端最后的狀態(tài),將其作為初始狀態(tài),同時解碼得到的每一步輸出值是下一步的輸入值。因此Seq2Seq模型訓練過程能夠更好的學習數(shù)據(jù)之間時序關系,也能夠有保持更強的魯棒性。
解碼層采用此編碼的特征向量,并生成標記的輸出序列。此層通常也用RNN架構(LSTM或RU)構建。
當使用固定序列的情況下,通過編碼器-解碼器框架進行整個模型的聯(lián)合訓練,獲得目標序列的概率最大化。但是由于固定長度編碼的特征向量包含信息數(shù)量的限制,Seq2Seq模型性能會隨著源序列長度的增加而降低。為解決此問題,Bahdanau等提出了關注機制。在關注機制中,解碼器試圖在編碼器序列中查找最重要信息所在的位置,并使用該信息和以前解碼的單詞來預測序列中的下一個標記,如下圖所示:
圖1 關注機制結構
實驗數(shù)據(jù)來源于tushare提供的數(shù)據(jù)接口,收集相關數(shù)據(jù)進行驗證分析。為了使得測試數(shù)據(jù)具有代表性,選取上證50指數(shù)成份股所在股票于2015-01-01至2017年12月30日作為測試集評估數(shù)據(jù),在每一輪的訓練中,過去5天的數(shù)據(jù)構造的輸入序列的80%作為訓練集,20%作為驗證集,隨后3個月的數(shù)據(jù)構造的序列作為測試集。根據(jù)其歷史交易數(shù)據(jù),預測未來5天的價格趨勢。
本實驗采用tensorflow作為深度學習框架,實驗環(huán)境在E5-2620v4雙CPU、內存為64GB操作系統(tǒng)為Ubuntu18.04的的PC機上進行。
為了評估預測模型的性能,本文選取了平均絕對誤差(Mean Absolute Error,MAE)、平均絕對百分誤差(Mean Absolute Percentage Error,MAPE)和標準誤差(Root Mean Square Error,RMSE)三個指標衡量模型的預測精度,其中:
本實驗將Seq2Seq網(wǎng)絡與傳統(tǒng)的RNN,LSTM神經(jīng)網(wǎng)絡進行對比分析,并在次基礎上使用Seq2Seq+attention模型進行優(yōu)化。傳統(tǒng)RNN模型的準確率只有78.36%,比LSTM模型的準確率低了5個百分點,隨著訓練次數(shù)的增加,RNN模型幾乎沒有改進,模型出現(xiàn)了梯度消失,而LSTM模型可以改善梯度問題。LSTM神經(jīng)網(wǎng)絡可以解決傳統(tǒng)RNN容易梯度消失的問題。從LSTM模型的準確率只有82.69%,比Seq2Seq模型的準確率低了3個百分點。雖然LSTM神經(jīng)網(wǎng)絡從理論上說具備了時序性,當輸入不定長時序的信息,LSTM也容易出現(xiàn)梯度消失問題,此時LSTM網(wǎng)絡并不具備任何優(yōu)勢。但是采用Seq2Seq網(wǎng)絡模型進行不定場時間序列信息進行預測的情況下,其預測的精度明顯高于LSTM神經(jīng)網(wǎng)絡,也說明了Seq2Seq模型對不定長序列具有一定的優(yōu)勢。
綜上,相比于傳統(tǒng)RNN與LSTM網(wǎng)絡,Seq2Seq深度神經(jīng)網(wǎng)絡能夠有效解決不定長序列數(shù)據(jù)的梯度消失問題,并且能夠提高預測精度,對于股市時間序列的預測具有明顯的優(yōu)勢。
為了比較4種網(wǎng)絡模型的性能,將每個模型對上證50成分股數(shù)據(jù)做訓練與預測,設定每個模型epoch為100,通過訓練輸出每只股票未來5天的價格趨勢,和該模型預測輸出的RMSE值。下圖為選取中信證券(600030.SH)作為分析對象。
(d)seq2seq+attention預測價格
通過圖(a)到圖(d)綜合分析得知,RNN和LSTM網(wǎng)絡模型在股價波動較大的時段預測輸出與實際輸出現(xiàn)嚴重偏離,而且預測效果比較差?;赟eq2Seq神經(jīng)網(wǎng)及其優(yōu)化模型對上證50成分股指數(shù)預測效果,比其它兩種網(wǎng)絡模型效果較好。
本文選取A股上證成份指數(shù),使用RNN、LSTM、Seq2Seq及其優(yōu)化模型進行股票價格短期預測,核心內容主要引入Seq2Seq及其優(yōu)化模型,并使用該網(wǎng)絡模型對數(shù)據(jù)進行挖掘學習。實驗表明,深度學習能夠更好的發(fā)現(xiàn)和利用數(shù)據(jù)之間的相互作用。同時,通過使用Seq2Seq網(wǎng)絡模型提高了預測的準確性,并且在解決不定長時間序列的數(shù)據(jù)方面更有優(yōu)勢。雖然Seq2Seq模型的損失值比較高,但是Seq2Seq模型能較好的預測金融時間序列的趨勢,并且在數(shù)值上也與真實的金融時間序列較為接近,提高該模型的預測精度是未來研究的重點。