汪梦园
(河北建筑工程学院信息工程学院,河北 张家口 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模型进行预测,并加入了注意力机制,提高了预测的精度,能够对量化交易提供技术支持。