汪夢園
(河北建筑工程學(xué)院信息工程學(xué)院,河北 張家口 075000)
為了降低投資風(fēng)險并獲得穩(wěn)定的投資回報,研究人員提出了許多預(yù)測方法,通常使用的一些預(yù)測方法包括統(tǒng)計學(xué)方法和深度學(xué)習(xí)的方法。統(tǒng)計學(xué)方法通過建立適當(dāng)?shù)臄?shù)學(xué)模型來擬合歷史時間趨勢曲線,例如何永沛提出一種ARMA[1]模型的改進算法,提高模型精確度。該方法所依賴的數(shù)據(jù)較簡單,但是要求時序數(shù)據(jù)是穩(wěn)定的,不能很好地處理非線性數(shù)據(jù)。
而神經(jīng)網(wǎng)絡(luò)作為一個高度復(fù)雜的非線性系統(tǒng),它在處理多影響因素、不穩(wěn)定的復(fù)雜非線性問題時具有一定的優(yōu)勢[2]。例如,季闊使用三層BP神經(jīng)網(wǎng)絡(luò)[3]對上證指數(shù)收盤價進行實證分析,建立了一套更適應(yīng)于股票預(yù)測的網(wǎng)絡(luò)結(jié)構(gòu)。趙紅蕊等人[4]建立的LSTM-CNN-CBAM模型,在通混合模型中加入了CBAM 注意力機制,使模型自動提取特征。但是在股票預(yù)測的過程中,神經(jīng)網(wǎng)絡(luò)難免出現(xiàn)損耗CPU、梯度消失或者梯度下降的問題。
該文將使用人民銀行股票數(shù)據(jù)進行研究,并將研究結(jié)果與加入注意力機制的LSTM模型(LSTM-Attention)、卷積神經(jīng)網(wǎng)絡(luò)與雙向長短記憶神經(jīng)網(wǎng)絡(luò)混合模型(CNN-BiLSTM)、單獨的長短記憶神經(jīng)網(wǎng)絡(luò)模型(LSTM)進行對比,得出CNNBiLSTM-Attention模型具有良好的效果。
該文的總體思路如下:第一步,數(shù)據(jù)預(yù)處理。先將數(shù)據(jù)進行預(yù)處理,包括數(shù)據(jù)缺失值、重復(fù)值的處理,然后進行歸一化,處理完成后分為測試集與訓(xùn)練集。第二步,模型構(gòu)建。將訓(xùn)練集數(shù)據(jù)輸入CNN模型中,通過CNN的卷積層和池化層的構(gòu)建,用來特征提取,再經(jīng)過BiLSTM模型進行序列預(yù)測,期間調(diào)整神經(jīng)網(wǎng)絡(luò)的層數(shù)、batch_size等模型參數(shù)。第三步,更新權(quán)重。使用注意力機制對提取到的特征增加權(quán)重值,更新權(quán)重。最后構(gòu)建CNN-BiLSTM-Attention模型,將測試集數(shù)據(jù)輸入,檢驗?zāi)P偷臏?zhǔn)確率。整體架構(gòu)如圖1所示。
圖1 CNN-BiLSTM-Attention模型
由于獲取到的數(shù)據(jù)存在數(shù)據(jù)缺失和數(shù)據(jù)重復(fù)的問題,需要對數(shù)據(jù)進行預(yù)處理。
針對缺失數(shù)據(jù)采取相鄰數(shù)據(jù)取平均值的方法進行處理,對重復(fù)數(shù)據(jù)進行刪除該樣本的操作,由于股票數(shù)據(jù)部分結(jié)果相差較大,因此在數(shù)據(jù)輸入神經(jīng)網(wǎng)絡(luò)模型之前需要對數(shù)據(jù)進行歸一化處理,使用的是0-1歸一化,計算方式如公式(1)所示。
式中:x為原始樣本數(shù)據(jù)值;min為樣本數(shù)據(jù)中的最小值;max為樣本數(shù)據(jù)中的最大值。
卷積式神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)利用卷積算法操作的優(yōu)點,可以對原始數(shù)據(jù)進行更高級和更抽象的表示。從上一級的卷積方法可以得知與時序數(shù)據(jù)在產(chǎn)生前后的關(guān)聯(lián),從而可以運用于CNN處理數(shù)據(jù)的相關(guān)特征。其基本結(jié)構(gòu)包括輸入層、卷積層、池化層、全連接層以及輸出層。
數(shù)據(jù)從輸入層進入網(wǎng)絡(luò)結(jié)果,經(jīng)過卷積層輸出多個特征面,特征面中每個神經(jīng)元的取值都通過對應(yīng)卷積核計算得到,如公式(2)所示。
式中:輸入層為l-1層;Wsl-1為特征矩陣,有s個特征;輸出層為l;Ysjl為輸入數(shù)據(jù);f為ReLU激活函數(shù)。然后再經(jīng)過池化層,進行數(shù)據(jù)壓縮,壓縮結(jié)果為一維向量。池化層的輸出結(jié)果傳到全連接層,全連接層對之前卷積層的池化層所提取到的特征進行整合,然后更新權(quán)值,實現(xiàn)反向傳播。
通過調(diào)整卷積核的大小,選擇最適合模型的參數(shù)。模型中設(shè)定卷積層中卷積核數(shù)量為64、大小為2×2,激活函數(shù)為ReLU函數(shù);池化層的大小設(shè)置為1×1。
該文使用CNN對數(shù)據(jù)進行高維、非線性地特征提取,將處理后相對穩(wěn)定的信息作為整體傳入 BiLSTM 網(wǎng)絡(luò)進行預(yù)測。
循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)[5]可以解決有關(guān)時間序列的問題,它的每個層不僅要輸出下一層,而且輸出一個當(dāng)前層以及之前網(wǎng)絡(luò)結(jié)構(gòu)的細胞狀態(tài)。循環(huán)神經(jīng)網(wǎng)絡(luò)同樣也可以擴展到具有較長周期的序列數(shù)據(jù),并且大部分的循環(huán)神經(jīng)網(wǎng)絡(luò)可以處理不同序列長度的數(shù)據(jù),由于RNN每次計算后的數(shù)據(jù)都會傳到下一個網(wǎng)絡(luò)層,當(dāng)序列過長時,計算梯度的相加過程就容易出現(xiàn)梯度消失或者梯度爆炸,因此在處理長序列問題時,需要保存之前的有用信息。
2005年,Graves提出使用完全的后向傳播方式訓(xùn)練 LSTM 模型[6],使 LSTM 的訓(xùn)練結(jié)果準(zhǔn)確率更高,更能適應(yīng)長時間序列內(nèi)部的隱藏信息,當(dāng)有指定的窗口大小時,從經(jīng)驗中學(xué)習(xí)以預(yù)測時間序列。另外,通過存儲單元將與時間相關(guān)的信息保留,可以解決梯度消失的問題。它可以應(yīng)用于學(xué)習(xí)翻譯語言、車流預(yù)測等前后信息關(guān)聯(lián)較大的問題中。
圖2為LSTM神經(jīng)網(wǎng)絡(luò)的細胞結(jié)構(gòu)圖,主要由遺忘門ft、輸入門it、輸出門Ot和細胞狀態(tài)4個部分組成,更新過程如圖2所示。
圖2 LSTM細胞結(jié)構(gòu)
更新過程如下。
通過遺忘門篩選需要過濾掉的上一個LSTM細胞的無用信息,如公式(3)所示。
式中:ft為遺忘門的輸出;σ為sigmoid函數(shù),將輸出結(jié)果鎖定在0~1;Uf、Wf為權(quán)值矩陣;Xt為新輸入的信息;ht-1是上一個LSTM細胞結(jié)構(gòu)的輸出;bf為偏移量。
再經(jīng)過輸入門通過新輸入的數(shù)據(jù)和遺忘門過濾后的數(shù)據(jù)進行下一個細胞的輸入,如公式(4)和公式(5)所示。
式中:it為新細胞需要保存的信息;為原始細胞狀態(tài)需要保留的信息;tanh為正切函數(shù),可以將結(jié)果壓縮到-1~1;Ui、Wi、Uc、Wc為權(quán)值矩陣;bi、bc為偏移量,確定了新細胞需要保留的信息,在確定原始細胞的有用信息和新細胞的保留信息后,更新細胞狀態(tài)Ct如公式(6)所示。
最后輸出門輸出目前的信息如公式(7)和公式(8)所示。
式中:Uo、Wo為權(quán)值矩陣;bo為偏移量;ht為當(dāng)前細胞的輸出。
LSTM的細胞構(gòu)造,使LSTM歷史模型具備了更強的歷史信息篩選能力和時間順序?qū)W習(xí)能力,可合理利用輸入歷史數(shù)據(jù)信息,對過去時期的歷史數(shù)據(jù)信息形成長期記憶,從而規(guī)避了有效的歷史信息由于不斷輸入歷史數(shù)據(jù)的影響,而無法持久存儲的問題。
由于數(shù)據(jù)處理的過程取決于網(wǎng)絡(luò)連接的方向,因此對需要考慮未來數(shù)據(jù)對歷史數(shù)據(jù)的影響情況的事件,引入了雙向長短記憶神經(jīng)網(wǎng)絡(luò)(Bi-directional Long Short-Term Memory,BiLSTM)[7],該模型可以同時引用歷史數(shù)據(jù)和未來數(shù)據(jù)對預(yù)測結(jié)果的影響。模型的展開結(jié)構(gòu)如圖3所示。
圖3 BiLSTM展開結(jié)構(gòu)
其中,x為輸入數(shù)據(jù),y為神經(jīng)網(wǎng)絡(luò)模型預(yù)測結(jié)果,數(shù)據(jù)從2個方向進行輸入,并將結(jié)果保存到和中,經(jīng)過計算,數(shù)據(jù)輸出到輸出層Hi中,計算過程如公式(9)所示。
該雙向長短記憶神經(jīng)網(wǎng)絡(luò)優(yōu)化器選擇了Adam函數(shù),batch_size為128,神經(jīng)元個數(shù)為64,學(xué)習(xí)率為0.001,在CNN和BiLSTM中激活函數(shù)使用Sigmoid函數(shù),同時將模型中Dropout層設(shè)置為0.2,防止過擬合,提高模型的泛化性能。
由于長的時間序列中不可避免的多個特征對預(yù)測結(jié)果的影響不同,為了能夠評估每個特征對輸出結(jié)果的影響,引入注意力(Attention)機制[8],它可以通過輸入與輸出的結(jié)果來對比不同特征的影響,對特征設(shè)置不同的權(quán)重。
該文將Attention機制引入BiLSTM模型,為所有的特征進行加權(quán)評估,實現(xiàn)選擇性地使用輸入數(shù)據(jù)。
將經(jīng)過BiLSTM層計算后的數(shù)據(jù)ht輸入Attention層,經(jīng)過計算得到Attention層的輸出S,如公式(10)所示。
式中:αt為Attention層的權(quán)重,然后使用反向誤差傳播進行參數(shù)調(diào)整。
神經(jīng)網(wǎng)絡(luò)的輸入項為與股票的交易密切相關(guān)的各項數(shù)據(jù),輸出項為收盤價,目的是為了預(yù)測下一個交易日的收盤價。該文從tushare 官網(wǎng)下載試驗數(shù)據(jù),選取的是人民銀行美股(證券代碼為000001)從2005年1月1日到2021年10月4日的數(shù)據(jù),其中80%作為訓(xùn)練集,20%作為測試集。數(shù)據(jù)集中包括開盤價(open)、收盤價(close)、最高價(high)、最低價(low)、昨日收盤價(pre-close)、漲跌額(amount)、漲跌幅(change)、換手率(rate)、成交量(volume)、成交金額(business)、成交量加權(quán)平均價(price)這些基礎(chǔ)交易數(shù)據(jù)。
該文選用試驗選取MAE(平均絕對誤差)、MSE(均方誤差)和MAPE(平均絕對百分比誤差) 作為評價指標(biāo)[8],具體計算過程如公式(11)~公式(13)所示。
平均絕對誤差如公式(11)所示。
均方誤差如公式(12)所示。
平方絕對百分比誤差如公式(13)所示。
式中:n為數(shù)據(jù)集樣本的數(shù)量;yi為樣本數(shù)據(jù)的真實值;yi為預(yù)測值。
由于股票數(shù)據(jù)具有時間序列的特征,因此選用多大的窗口,對預(yù)測的準(zhǔn)確性有影響,該文選用窗口大小為n,滾動窗口大小為1,選用了5次不同窗口長度的MAE比較,結(jié)果見表1。
表1可以得出窗口大小為5時,MAE數(shù)值較大,而步長選擇為15時,MAE的數(shù)值也比較大,而選擇步長為10時,平均絕對誤差值最小,因此選擇窗口大小的最優(yōu)選擇為10。
表1 不同滑動窗口大小結(jié)果比較
為了驗證模型的高準(zhǔn)確率,使用不同的算法進行比較,比較結(jié)果見表2。
從表2可知,相較于LSTM混合模型的整體趨勢都較好一些,而新的混合模型CNNBiLSTM-Attention模型MSE為0.012864103,MAPE為0.01984150,比以往的模型有更高的可靠性。
表2 不同模型的預(yù)測結(jié)果對比
該文針對神經(jīng)網(wǎng)絡(luò)和傳統(tǒng)統(tǒng)計學(xué)方法的弊端,基于Python語言和PyTorch框架編寫代碼,提出了基于Attention的卷積神經(jīng)網(wǎng)絡(luò)和雙向長短記憶神經(jīng)網(wǎng)絡(luò)的混合模型,該模型使用CNN進行特征提取,BiLSTM模型進行預(yù)測,并加入了注意力機制,提高了預(yù)測的精度,能夠?qū)α炕灰滋峁┘夹g(shù)支持。