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