上海大学经济学院 上海 200444
摘要:过往研究中发现,深度学习方法中的LSTM模型在预测金融时间序列时表现良好。本文基于LSTM模型,对模型的层数、结构、激活函数等进行优化,并将优化后的模型用于对上证50ETF收盘价的预测,结果发现:①模型的层数会影响预测结果,过浅或过深的模型层数都会降低模型的预测能力,两层的LSTM模型对上证50ETF收盘价的预测能力最佳;②引入非线性激活函数的全连接层作为隐藏层可以提升模型的预测能力,exponential激活函数的表现最佳;③对特定隐藏层使用Xavier权重初始化方法可以提升模型预测能力。优化后的LSTM模型预测能力明显提升,该优化方法为LSTM模型构造提供了新的思路。
关键词:LSTM模型 模型优化 激活函数 价格预测
一、引言
金融时间序列具有非平稳性、序列相关系等特征,受到多方面因素的非线性影响,因而对金融时间序列预测具有很大难度。传统的金融时间序列预测模型,如ARMA、GARCH等,要求时间序列是平稳的、残差项需要是独立同分布的白噪声等,但金融时间序列很难满足这些假设;同时,传统预测模型都是线性模型,这导致其很难通过线性解析方程式捕捉金融时间序列中的非线性信息。因而,传统金融时间序列模型存在其局限性。
相较于传统金融时间序列预测模型,机器学习方法在处理非线性、非平稳的金融时间序列,捕捉金融时间序列的特征的时候有很大的提升。将数据输入后,机器学习方法会对输入的数据进行学习,识别数据中的特征,并重复这一过程,不断地更新模型的参数,提升模型性能。无需构建符合理论的模型,通过直接捕捉数据之间的关系,给出模型的预测结果。由于机器学习方法训练得到的模型十分复杂,无法直观地展示其内部的工作原理和预测过程,因而它也被称为“黑箱”。
深度学习方法是由机器学习方法下的人工神经网络(ANN)发展而来,随着计算机性能的提高,深度学习方法逐渐受到重视,在众多领域取得成功。深度学习通过增加神经网络的隐藏层层数,从而可以利用更复杂的函数关系解释数据之间的关系,加强模型对数据特征的捕捉,提高模型的预测能力。近年来,学者们开始探究深度学习方法在金融时间序列预测上的应用,目前的文献主要集中在对股指、期货和期权的价格与波动率预测上。Di Persio L(2017)基于谷歌股价,发现LSTM模型在预测未来5天的价格的精确度达到72%,优于RNN与GRU模型。孙达昌和毕秀春(2018)分别使用人工神经网络(ANN)、卷积神经网络(CNN)和LSTM神经网络预测沥青期货涨跌概率,发现基于CNN与LSTM的回测结果均优于ANN。杨青和王晨蔚(2019)基于30个股票指数进行研究,对比ARIMA、SVR、MLP和LSTM四类模型,发现LSTM神经网络在短中长期预测时都具有更高的精确性和稳定性。Qiao(2022)采用5分钟的高频数据对中国50支股票进行研究,发现将LSTM应用于AR模型残差时可以提高预测精度。
过去的研究在引入深度学习方法进行金融时间序列预测时,主要侧重于对比不同深度学习模型和传统金融时间序列模型的预测结果,而较少关注优化单个深度学习模型。因此,本文以过去研究中表现良好的LSTM模型为基础,对模型的层数、结构、激活函数等进行优化,提升LSTM模型的预测能力。本文的主要发现在于:①模型的层数会影响预测结果,过浅或过深的模型层数都会降低模型的预测能力,在本文的实验中,两层的LSTM模型对上证50ETF收盘价的预测能力最佳;②引入非线性激活函数的全连接层作为隐藏层可以提升模型的预测能力,试验比较后,exponential激活函数的表现最佳;③对特定隐藏层使用Xavier权重初始化方法可以提升模型预测能力。
二、模型构建
(一)LSTM模型结构
为了处理RNN无法捕捉长期数据之间关系的问题,Hochreiter和Schmidhuber (1997) 提出了LSTM模型。LSTM模型是RNN模型的变体,旨在解决传统RNN模型中梯度消失和梯度爆炸的问题。通过引入记忆细胞和门结构,LSTM模型能够更好地捕捉和处理数据之间的长期依赖关系。LSTM模型的结构如下:
图1 LSTM神经细胞结构(Yong Yu,2019)
其中,c(t)是记忆细胞,它具备选择性记忆的功能,可以选择记忆时间序列的重要信息,过滤噪声信息;h(t)表示t时刻神经细胞的隐藏状态;f(t)、i(t)和o(t)分别代表遗忘门、输入门和输出门。
相较于RNN的信息单向传播,LSTM有着储存短期细胞隐藏状态的ht和长期细胞记忆的Ct,再加上遗忘门、更新门和输出门的相互作用,在损失函数对权重求梯度时,沿着时间展开并使用链式法则进行计算时的路径更长,从而大大降低了梯度消失的影响,保留金融时间序列中的长期关系。
(二)激活函数
神经网络通过反向传播的方法更新参数。在参数输入后,神经网络首先会逐层计算输出值。接着,将神经网络的输出值与实际值比较,得到每一层的损失函数。之后,从输出层开始,计算损失函数对每个网络参数的偏导数,通过求导的链式法则反向传播到输入层。最后,根据计算得到的结果更新神经网络的参数,减小损失函数值,并进行下一次输入,反复循环。这也是为什么神经网络要求激活函数在定义域内处处连续、处处可导。常用的激活函数有tanh函数和relu函数,本文采用exponential函数作为模型改进。
tanh函数的函数表达式为:
从函数表达式中可知,tanh函数满足处处连续、处处可微的要求,但随着模型的输入逐渐增大或减小,函数的斜率逐渐趋近于0,对应神经元的偏导数值也将趋近于0,这就导致模型在反向传播更新参数的过程中,神经元的权重几乎不会更新,最终导致梯度消失,即梯度为0的问题,致使模型在训练的时候无法收敛,无法得到合理的预测结果。
relu函数的函数表达式为:
相较于tanh函数,relu函数可以很好地解决梯度消失的出现,显著地减少模型的拟合时间、提升模型的学习能力。当输入大于0时,relu函数的导数都为1,从而解决了梯度消失问题。同时,由于表达式简单,relu函数相较tanh函数具有更快的收敛速度,大幅提高模型的预测效率。然而,当输入小于0时,对应神经元的输出和导数都将永远为0,这意味着后续的反向传播计算时,该神经元的输出也将永远为0,如果没有设置合适的dropout参数,有可能导致模型的预测结果不收敛。同时,relu函数通过线性方式输出正数部分,这点也并不符合利用深度学习捕捉金融时间序列中非线性信息的预期。
结合这两个函数的优缺点,本文提出使用exponential函数作为激活函数。
exponential函数的函数表达式为:
相较于tanh函数和relu函数,exponential函数并不是一个常用的激活函数,然而,从其函数特性出发,我们可以发现它具有诸多优势。首先,exponential函数是一个非线性函数,这有助于提升神经网络对金融时间序列中非线性信息的学习能力。其次,exponential函数的导数在整个定义域内存在,因此在数据经过标准化处理后,不会像tanh函数那样出现梯度消失问题。最后,指数形式的激活函数更符合金融学通过对数计算收益率的常用方法。结合以上特征,本文使用exponential函数作为模型的激活函数,探究其是否能提升模型对上证50ETF收盘价的预测能力。
(三)Xavier权重初始化
在深度学习模型训练时,设置合适的权重初始化可以减少模型的收敛时间,提高预测效果。当初始权重过大或过小时,神经网络隐藏层的输出数据的方差会过大,输出将远离函数的中心,导致出现梯度消失的可能性增加,因此合适的权重初始化方法对神经网络模型的学习同样有重要的影响。Xavier权重初始化方法服从均值为0,标准差为的高斯分布,尽可能地保证一层中的神经元的输入和输出的方差一致,其中n表示输入层的神经元个数。本文尝试在模型的不同隐藏层采用Xavier权重初始化方法代替默认的均匀分布,探究其是否能提升模型的预测能力。
(四)LSTM模型构造
本文构造的LSTM模型结构如表1所示。
第一层为LSTM层。由于LSTM模型要求数据的输入需要为张量,输入中的三个参数分别代表:None代表不定长的时间序列数据;时间步长为10,即以前十天的数据作为输入;每个时间步长的特征输入为4,因此第一层的输入形式为(None,10,4)。激活函数使用默认的tanh函数,神经元个数为128个,由于后续还有一个LSTM层,为了保证符合后续LSTM层的输入结构,设置return_sequences = TRUE,每一个时间步的输出都会进入下一层,因此第一层的输出仍是一个三维张量,结构为(None,10,128)。
第二层为Dropout层。Dropout是一种用于防止神经网络过拟合的方法,该方法会在训练过程中随机地丢弃神经元的输出,从而减少神经网络的依赖性,增强泛化能力。这样可以阻止神经网络过度依赖某些特定的神经元,保证每个神经元都有机会学习到有用的特征,并且不会对某些特征过于敏感。模型中使用0.2作为Dropout率,即在第一层神经元的输出中随机丢弃20%。
第三层和第四次分别是LSTM层和Dropout层,与第一层和第二层的结构一致,区别在于神经元个数为64个,且后续的隐藏层为全连接层,只需要对最后一个时间步的输出,因此设置return_sequences = FALSE,即输出为(None,64)。
第五层为增加的全连接层,神经元个数为16个。通过在模型输出层前添加了神经元个数为16的全连接层,使用exponential函数增强模型捕捉序列中非线性关系的能力,采用Xavier作为权重初始化方法,输出的结构为(None,16)。
第六层为输出层,神经元个数为1个,输出模型对于下一天的预测,输出的结构为(None,1)。
表1 LSTM模型优化后结构
层类型 | 输入 | 神经元个数 | Dropout率 | 激活函数 | 输出 |
LSTM层 | (None,10,4) | 128 | tanh | (None,10,128) | |
Dropout层 | (None,10,128) | 0.2 | (None,10,128) | ||
LSTM层 | (None,10,128) | 64 | tanh | (None,64) | |
Dropout层 | (None,64) | 0.2 | (None,64) | ||
Dense层 | (None,64) | 16 | exponential | (None,16) | |
Dense层 | (None,16) | 1 | linear | (None,1) |
三、数据的选取与处理
(一)数据的选取
本文选取上证50ETF(510050)的收盘价作为模型预测的对象,使用的变量包括:开盘价、收盘价、最高价和最低价,均为日度数据,数据来源于CSMAR数据库。
本文采取如下标准选取数据集与划分训练集和测试集:选取2013年1月4日至2023年12月21日的全部交易数据;选取数据集中最后100个交易日作为模型预测的测试集,训练集为剔除测试集后的剩余全部数据。
(二)数据的处理
在选择训练样本后,为提高模型的精度、缩短训练时间,并消除计量单位对训练和预测结果的影响,我们需要对训练样本数据进行预处理。标准化和归一化是常用的预处理手段之一,其主要目的是将原始数据映射到一个统一的尺度,以便更好地适应模型的训练过程。本文将采用标准化方法处理输入数据。
四、模型的优化思路
(一)模型预测结果评估标准
为了比较模型预测结果的准确度,本文采用了平均绝对误差(MAE)和均方根误差(RMSE)作为模型预测值的评估标准。
(二)模型的优化思路
本文按照模型层数、激活函数、模型结构与权重初始化设定的顺序优化模型。
首先,本文通过构建一层、两层和三层LSTM层的模型,使用MAE和RMSE两个指标,比较模型对上证50ETF收盘价的预测结果。一层LSTM模型的MAE为12.6%,误差较大的原因可能源自模型复杂度的不足,导致模型预测产生了较大的误差。相反,两层LSTM模型的MAE和RMSE均有明显下降,这可能是因为两层LSTM模型能够更深层次地学习金融时间序列中的特征关系,从而提高模型的预测能力。然而,当进一步增加到三层LSTM模型时,模型性能并未进一步提升,反而略微下降。这可能是由于模型过于复杂,导致在训练集上的过拟合,从而降低了在测试集上的泛化能力。
综合考虑模型的表现和复杂程度,本文选择在两层LSTM模型的基础上,进一步探讨激活函数、模型结构和权重初始化等方面的优化,从而进一步提升模型的预测能力。
表2 LSTM层数预测结果比较(%)
LSTM层数量 | MAE | RMSE |
一层 | 12.60 | 16.16 |
两层 | 2.15 | 2.85 |
三层 | 3.62 | 4.38 |
接着,本文比较了模型输出层使用激活函数的效果。许多的LSTM模型的输出层都会设置linear函数作为激活函数,用于预测金融时间序列的神经网络输出层中。但linear函数的线性特点意味着它无法捕捉输入和输出中的非线性关系,因此,本文尝试使用tanh、relu和exponential作为输出层的激活函数,并与linear激活函数比较。比较发现,linear函数的MAE和RMSE分别为2.15%与2.85%,表现最优;tanh函数的表现略差于linear函数,为2.22%和2.93%;而exponential函数和relu函数的表现更差,分别为5.13%和8.02%,7.99%与11.55%。其中,tanh函数的表现较好的原因是其输出值的范围是[-1,1],相比之下,relu函数的负数输出都为0,反而限制了模型的输出,导致预测效果最差。
经过上述比较发现,在对金融时间序列进行连续数据预测时,输出层的激活函数最好是具有线性特性的linear函数,可以让模型更好地预测连续数值。而tanh、relu、exponential等非线性激活函数由于输出范围的限制,并不适合用于连续数值预测的输出层,反而会限制模型的预测能力。因此,本文仍然使用linear函数作为输出层的激活函数。
表3 改变输出层激活函数预测结果比较(%)
输出层激活函数 | MAE | RMSE |
linear | 2.15 | 2.85 |
tanh | 2.22 | 2.93 |
relu | 7.99 | 11.55 |
exponential | 5.13 | 8.02 |
之后,本文尝试在输出层之前增加一层全连接层作为隐藏层。第二层LSTM层的输出中仍然存在大量参数,通过添加全连接层可以进一步帮助模型学习和处理数据中复杂的特征,协助输出层更好地拟合数据。同时,全连接层可以使用不同的激活函数,对数据进行非线性输出,有助于数据模型对数据非线性特征的学习。因此,本文在添加全连接层的基础上,分别使用linear函数、tanh函数、relu函数和exponential函数作为激活函数,比较模型各自的效果。
与未添加全连接层的模型的MAE2.15%和RMSE2.85%相比,添加使用linear函数的全连接层的预测结果提升不明显,为2.09%和2.78%,仅有0.06%和0.07%的性能提升。使用其他三个非线性激活函数均有较大提升,尤其是使用relu函数和exponential函数,MAE和RMSE分别从7.99%和11.55%、5.13%和8.02%提升至1.98%和2.64%、1.87%和2.45%,使用tanh函数相较linear函数也有提升,为1.95%和2.60%。
表4 增加全连接层预测结果比较(%)
全连接层激活函数 | MAE | RMSE |
linear | 2.09 | 2.78 |
tanh | 1.95 | 2.60 |
relu | 1.98 | 2.64 |
exponential | 1.87 | 2.45 |
综合看来,在输出层前增加全连接层可以提升模型预测能力,尤其在使用非线性激活函数,如tanh函数、relu函数和exponential函数。其中,使用exponential函数表现出最优的预测结果,这可能是由于exponential函数具有很强的非线性特征,更容易捕捉金融时间序列中的复杂特征,从而提升模型的预测能力。因此,本文在输出层前添加激活函数为exponential的全连接层作为模型的隐藏层。
4.不同权重初始化方法预测结果比较分析
最后,本文尝试使用Xavier作为模型各层的权重初始化设置。由于该方法适合用于非线性激活函数,因此本文分别比较了不改变、改变LSTM层和改变全连接层的权重初始化方法,用以优化模型预测能力。
对LSTM层使用Xavier权重初始化后,模型的预测结果变差,这可能是因为LSTM层默认的初始化方法更为合适。对全连接层使用后,模型的预测能力得到明显提升,这说明Xavier权重初始化方法更适合添加的全连接层,帮助全连接层更好地捕捉数据中的特征。
Xavier权重初始化方法对全连接层具有正向影响,这表明在深度学习模型中,对于不同类型的层选择适当的权重初始化方法十分重要。因此,本文对添加的全连接层使用Xavier权重初始化方法,同时保持LSTM层默认的权重初始化方法。
表5 改变权重初始化预测结果比较(%)
权重初始化 | MAE | RMSE |
不改变权重初始化 | 1.87 | 2.45 |
改变LSTM层 | 2.93 | 3.64 |
改变全连接层 | 1.76 | 2.28 |
5.最终优化模型与预测结果
基于本文优化后的LSTM模型,在使用样本训练集训练该模型后,对样本测试集进行预测,得到的预测结果如下图所示。该模型对样本内最后100天的预测表现较好,可以较快速地捕捉到上证50ETF收盘价短期内的走势。
图2 模型预测结果
五、结论
本文使用了深度学习方法,以上证50ETF收盘价为预测对象,MAE和RMSE作为模型效果评价标准,从神经网络层数、激活函数和权重初始化方面优化并构造了一个深层LSTM模型。在优化模型的过程中,本文发现,过简单和过复杂的LSTM模型都会导致模型预测效果不佳;通过在输出层前添加全连接层,并使用非线性的激活函数,如本文中表现最佳的exponential函数,可以提升模型的预测能力;对不同的层选择适当的权重初始化方法十分重要,在模型预测结果不佳时,可以尝试Xavier权重初始化方法。
在优化模型,并在样本内获得较为准确的预测之后,这只意味着模型对上证50ETF的收盘价具有较强的预测能力,并不意味着模型对其他标的资产具有泛化能力。同时,对样本内的预测结果不代表模型可以在样本外具备同样的预测能力,不意味着我们可以完全捕捉未来的价格波动。谨慎对待模型的预测结果,重视模型对未来数据预测的泛化能力。最后,本文认为的最优模型并非最优。模型的调参和优化过程不同,可能使模型在不同调整阶段产生更好的结果,但参数和模型结构的不断调整和优化是一个有意义的过程,它可以帮助我们不断提升模型的质量和对数据认知的提升。
总之,任何模型都存在其局限性,需要在研究中不断完善模型,适应多变的市场环境,更加深入地理解模型,利用模型为金融投资策略提供支持。
参考文献
[1]Di Persio L, Honchar O. Artificial neural networks architectures for stock price prediction: Comparisons and applications[J]. International journal of circuits, systems and signal processing, 2016, 10: 403-413.
[2]Glorot X, Bengio Y. Understanding the difficulty of training deep feedforward neural networks[C]//Proceedings of the thirteenth international conference on artificial intelligence and statistics. JMLR Workshop and Conference Proceedings, 2010: 249-256.
[3]Qiao R, Chen W, Qiao Y. Prediction of stock return by LSTM neural network[J]. Applied Artificial Intelligence, 2022, 36(1): 2151159.
[4]Yu Y, Si X, Hu C, et al. A review of recurrent neural networks: LSTM cells and network architectures[J]. Neural computation, 2019, 31(7): 1235-1270.
[5]孙达昌,毕秀春.基于深度学习算法的高频交易策略及其盈利能力[J].中国科学技术大学学报,2018,48(11):923-932.
[6]杨青,王晨蔚.基于深度学习LSTM神经网络的全球股票指数预测研究[J].统计研究,2019,36(03):65-77.
[7]赵红蕊,薛雷.基于LSTM-CNN-CBAM模型的股票预测研究[J].计算机工程与应用,2021,57(03):203-207.