汪夢園
(河北建筑工程學院信息工程學院,河北 張家口 075000)
為了降低投資風險并獲得穩定的投資回報,研究人員提出了許多預測方法,通常使用的一些預測方法包括統計學方法和深度學習的方法。統計學方法通過建立適當的數學模型來擬合歷史時間趨勢曲線,例如何永沛提出一種ARMA[1]模型的改進算法,提高模型精確度。該方法所依賴的數據較簡單,但是要求時序數據是穩定的,不能很好地處理非線性數據。
而神經網絡作為一個高度復雜的非線性系統,它在處理多影響因素、不穩定的復雜非線性問題時具有一定的優勢[2]。例如,季闊使用三層BP神經網絡[3]對上證指數收盤價進行實證分析,建立了一套更適應于股票預測的網絡結構。趙紅蕊等人[4]建立的LSTM-CNN-CBAM模型,在通混合模型中加入了CBAM 注意力機制,使模型自動提取特征。但是在股票預測的過程中,神經網絡難免出現損耗CPU、梯度消失或者梯度下降的問題。
該文將使用人民銀行股票數據進行研究,并將研究結果與加入注意力機制的LSTM模型(LSTM-Attention)、卷積神經網絡與雙向長短記憶神經網絡混合模型(CNN-BiLSTM)、單獨的長短記憶神經網絡模型(LSTM)進行對比,得出CNNBiLSTM-Attention模型具有良好的效果。
該文的總體思路如下:第一步,數據預處理。先將數據進行預處理,包括數據缺失值、重復值的處理,然后進行歸一化,處理完成后分為測試集與訓練集。第二步,模型構建。將訓練集數據輸入CNN模型中,通過CNN的卷積層和池化層的構建,用來特征提取,再經過BiLSTM模型進行序列預測,期間調整神經網絡的層數、batch_size等模型參數。第三步,更新權重。使用注意力機制對提取到的特征增加權重值,更新權重。最后構建CNN-BiLSTM-Attention模型,將測試集數據輸入,檢驗模型的準確率。整體架構如圖1所示。

圖1 CNN-BiLSTM-Attention模型
由于獲取到的數據存在數據缺失和數據重復的問題,需要對數據進行預處理。
針對缺失數據采取相鄰數據取平均值的方法進行處理,對重復數據進行刪除該樣本的操作,由于股票數據部分結果相差較大,因此在數據輸入神經網絡模型之前需要對數據進行歸一化處理,使用的是0-1歸一化,計算方式如公式(1)所示。

式中:x為原始樣本數據值;min為樣本數據中的最小值;max為樣本數據中的最大值。
卷積式神經網絡(Convolutional Neural Networks,CNN)利用卷積算法操作的優點,可以對原始數據進行更高級和更抽象的表示。從上一級的卷積方法可以得知與時序數據在產生前后的關聯,從而可以運用于CNN處理數據的相關特征。其基本結構包括輸入層、卷積層、池化層、全連接層以及輸出層。
數據從輸入層進入網絡結果,經過卷積層輸出多個特征面,特征面中每個神經元的取值都通過對應卷積核計算得到,如公式(2)所示。

式中:輸入層為l-1層;Wsl-1為特征矩陣,有s個特征;輸出層為l;Ysjl為輸入數據;f為ReLU激活函數。然后再經過池化層,進行數據壓縮,壓縮結果為一維向量。池化層的輸出結果傳到全連接層,全連接層對之前卷積層的池化層所提取到的特征進行整合,然后更新權值,實現反向傳播。
通過調整卷積核的大小,選擇最適合模型的參數。模型中設定卷積層中卷積核數量為64、大小為2×2,激活函數為ReLU函數;池化層的大小設置為1×1。
該文使用CNN對數據進行高維、非線性地特征提取,將處理后相對穩定的信息作為整體傳入 BiLSTM 網絡進行預測。
循環神經網絡(RNN)[5]可以解決有關時間序列的問題,它的每個層不僅要輸出下一層,而且輸出一個當前層以及之前網絡結構的細胞狀態。循環神經網絡同樣也可以擴展到具有較長周期的序列數據,并且大部分的循環神經網絡可以處理不同序列長度的數據,由于RNN每次計算后的數據都會傳到下一個網絡層,當序列過長時,計算梯度的相加過程就容易出現梯度消失或者梯度爆炸,因此在處理長序列問題時,需要保存之前的有用信息。
2005年,Graves提出使用完全的后向傳播方式訓練 LSTM 模型[6],使 LSTM 的訓練結果準確率更高,更能適應長時間序列內部的隱藏信息,當有指定的窗口大小時,從經驗中學習以預測時間序列。另外,通過存儲單元將與時間相關的信息保留,可以解決梯度消失的問題。它可以應用于學習翻譯語言、車流預測等前后信息關聯較大的問題中。
圖2為LSTM神經網絡的細胞結構圖,主要由遺忘門ft、輸入門it、輸出門Ot和細胞狀態4個部分組成,更新過程如圖2所示。

圖2 LSTM細胞結構
更新過程如下。
通過遺忘門篩選需要過濾掉的上一個LSTM細胞的無用信息,如公式(3)所示。

式中:ft為遺忘門的輸出;σ為sigmoid函數,將輸出結果鎖定在0~1;Uf、Wf為權值矩陣;Xt為新輸入的信息;ht-1是上一個LSTM細胞結構的輸出;bf為偏移量。
再經過輸入門通過新輸入的數據和遺忘門過濾后的數據進行下一個細胞的輸入,如公式(4)和公式(5)所示。

式中:it為新細胞需要保存的信息;為原始細胞狀態需要保留的信息;tanh為正切函數,可以將結果壓縮到-1~1;Ui、Wi、Uc、Wc為權值矩陣;bi、bc為偏移量,確定了新細胞需要保留的信息,在確定原始細胞的有用信息和新細胞的保留信息后,更新細胞狀態Ct如公式(6)所示。

最后輸出門輸出目前的信息如公式(7)和公式(8)所示。

式中:Uo、Wo為權值矩陣;bo為偏移量;ht為當前細胞的輸出。
LSTM的細胞構造,使LSTM歷史模型具備了更強的歷史信息篩選能力和時間順序學習能力,可合理利用輸入歷史數據信息,對過去時期的歷史數據信息形成長期記憶,從而規避了有效的歷史信息由于不斷輸入歷史數據的影響,而無法持久存儲的問題。
由于數據處理的過程取決于網絡連接的方向,因此對需要考慮未來數據對歷史數據的影響情況的事件,引入了雙向長短記憶神經網絡(Bi-directional Long Short-Term Memory,BiLSTM)[7],該模型可以同時引用歷史數據和未來數據對預測結果的影響。模型的展開結構如圖3所示。

圖3 BiLSTM展開結構
其中,x為輸入數據,y為神經網絡模型預測結果,數據從2個方向進行輸入,并將結果保存到和中,經過計算,數據輸出到輸出層Hi中,計算過程如公式(9)所示。

該雙向長短記憶神經網絡優化器選擇了Adam函數,batch_size為128,神經元個數為64,學習率為0.001,在CNN和BiLSTM中激活函數使用Sigmoid函數,同時將模型中Dropout層設置為0.2,防止過擬合,提高模型的泛化性能。
由于長的時間序列中不可避免的多個特征對預測結果的影響不同,為了能夠評估每個特征對輸出結果的影響,引入注意力(Attention)機制[8],它可以通過輸入與輸出的結果來對比不同特征的影響,對特征設置不同的權重。
該文將Attention機制引入BiLSTM模型,為所有的特征進行加權評估,實現選擇性地使用輸入數據。
將經過BiLSTM層計算后的數據ht輸入Attention層,經過計算得到Attention層的輸出S,如公式(10)所示。

式中:αt為Attention層的權重,然后使用反向誤差傳播進行參數調整。
神經網絡的輸入項為與股票的交易密切相關的各項數據,輸出項為收盤價,目的是為了預測下一個交易日的收盤價。該文從tushare 官網下載試驗數據,選取的是人民銀行美股(證券代碼為000001)從2005年1月1日到2021年10月4日的數據,其中80%作為訓練集,20%作為測試集。數據集中包括開盤價(open)、收盤價(close)、最高價(high)、最低價(low)、昨日收盤價(pre-close)、漲跌額(amount)、漲跌幅(change)、換手率(rate)、成交量(volume)、成交金額(business)、成交量加權平均價(price)這些基礎交易數據。
該文選用試驗選取MAE(平均絕對誤差)、MSE(均方誤差)和MAPE(平均絕對百分比誤差) 作為評價指標[8],具體計算過程如公式(11)~公式(13)所示。
平均絕對誤差如公式(11)所示。

均方誤差如公式(12)所示。

平方絕對百分比誤差如公式(13)所示。

式中:n為數據集樣本的數量;yi為樣本數據的真實值;yi為預測值。
由于股票數據具有時間序列的特征,因此選用多大的窗口,對預測的準確性有影響,該文選用窗口大小為n,滾動窗口大小為1,選用了5次不同窗口長度的MAE比較,結果見表1。
表1可以得出窗口大小為5時,MAE數值較大,而步長選擇為15時,MAE的數值也比較大,而選擇步長為10時,平均絕對誤差值最小,因此選擇窗口大小的最優選擇為10。

表1 不同滑動窗口大小結果比較
為了驗證模型的高準確率,使用不同的算法進行比較,比較結果見表2。
從表2可知,相較于LSTM混合模型的整體趨勢都較好一些,而新的混合模型CNNBiLSTM-Attention模型MSE為0.012864103,MAPE為0.01984150,比以往的模型有更高的可靠性。

表2 不同模型的預測結果對比
該文針對神經網絡和傳統統計學方法的弊端,基于Python語言和PyTorch框架編寫代碼,提出了基于Attention的卷積神經網絡和雙向長短記憶神經網絡的混合模型,該模型使用CNN進行特征提取,BiLSTM模型進行預測,并加入了注意力機制,提高了預測的精度,能夠對量化交易提供技術支持。