1. 引言
在如今的国际金融体系中,由于黄金的非货币化,各国逐渐放松了对黄金的管制,于是全球黄金市场得到了极大的发展,已经成为与股票市场、期货市场、债券市场、外汇市场等并列的金融投资市场。作为一种金融产品,黄金价格的动态变化,是经济行为主体在金融市场中投资决策过程的具体反映,黄金价格的预测更是众多投资者和学者讨论的热点话题 [1] [2] [3]。但在实际中,黄金价格受到供求关系、美元汇率、石油价格、通货膨胀率、国际形势、股票、债券等因素的影响,形成一种复杂的非线性过程,很难得到精确的预测。国内外学者在黄金价格预测方面做出了众多成果,使用了不同的方法:文献 [4] 使用BP神经网络对黄金价格进行预测和分析,得出了精度较高的预测结果。然而BP神经网络的滚动优化算法的收敛速度较慢,且多目标优化能力不强,难以摆脱决策过程中的随机性和模糊性。文献 [5] 引入SVR智能预测方法对黄金价格进行预测研究,并通过引入网络搜索法对SVR模型的最优参数进行寻找,从而构建了最优的SVR智能预测模型,结果表明该模型具有优越的学习性能与泛化推广性能,能够较准确地预测黄金价格。但是这些传统的方法只是对黄金价格进行小数据量的分析,导致预测精度低、速度慢且效率低下。随着大数据的深入研究,将长短期记忆网络(LSTM)用于价格指数的预测,能满足用户对实时数据处理的需求。
黄金价格不但具有非线性,而且具有动态特性,即系统的输出不仅与当前时刻的输入有关,还与过去的输入有关。作为一种特殊的循环神经网络,长短期记忆网络(LSTM)不但具有“记忆性”,适合处理带“序列”性质的数据,如时间序列数据、每天的股价走势情况等,同时采用特殊的结构取代原始网络中的隐藏层单元,采用“累加”的形式,避免了循环神经网络中的梯度消失和梯度爆炸 [6] [7]。目前,LSTM已经被应用于声音识别 [8],视频分类 [9]、语音理解 [10] 等诸多前沿领域中。
2. 长短期记忆网络
长短期记忆网络是一种时间递归神经网络,适合于处理和预测时间序列中间隔和延迟相对较长的问题。目前,长短期记忆网络已经在科技领域有了诸多应用:基于长短期记忆网络可以进行语言翻译、控制机器人、图像分析、语音识别、手写识别。2015年,谷歌通过基于CTC训练的长短期记忆网络程序大幅提升了安卓手机和其他设备中语音识别的能力;苹果的iPhone在QuickType和Siri中使用了长短期记忆网络;微软不仅将长短期记忆网络用于语音识别,还将这一技术用于虚拟对话形象生成和编写程序代码等 [11] [12] [13]。
2.1. 长短期记忆网络模型结构及网络原理
长短期记忆网络(Long Short-term Memory, LSTM)是一种特殊的循环神经网络。之所以说它是特殊的RNN,是因为它本身不是一个独立存在的网络结构,而是由LSTM特殊的结构单元取代循环神经网络的隐藏层单元部分。在LSTM中,不同时间点之间的网络存在连接,而不是单个时间点处的网络存在前馈或反馈。
Figure 1. Unit structure diagram of LSTM
图1. 长短期记忆网络单元结构图
从图1可以看出:一个LSTM单元包含了一个细胞状态(Memory Cell)、一个模型输入和三个门信号。其中,细胞状态是LSTM的核心思想,是整个模型的记忆空间。LSTM模型共有四个输入,分别是:模型输入(Input)、输入门(Input gate)、输出门(Output gate)和遗忘门(Forget gate),而普通神经网络只有一个输入,因此LSTM的参数量是它们的4倍。其中Input gate, Output gate, Forget gate是三个门信号,用来选择性处理数据,通过Sigmoid函数和点乘操作实现,Sigmoid的取值介于0和1之间,点乘则决定了传送的信息量。因此当门信号的取值为0时代表完全关闭,1代表完全打开。
2.2. 长短期记忆网络模型的训练算法
长短期记忆网络模型的训练算法包括信号的正向传播和误差的反向传递两部分。
2.2.1. 信号的正向传播
根据图2,我们可以清楚地看到输入节点和门信号的功能:
1) 输入节点:接受当前时刻的样本输入和上一时刻隐层单元的输出。
2) 遗忘门:用来决定前一时刻Memory Cell中的信息是否会被保留下来。当遗忘门的输出为1时,前一时刻Memory Cell中的信息会被保留下来;当遗忘门的输出为0时,前一时刻Memory Cell中的信息就会被遗忘。简单地说,遗忘门的作用是刷新Memory Cell的状态,控制Memory Cell的上一状态对当前状态的影响。公式为:
(1)
其中:
是(t − 1)时刻的输出,
是t时刻本层的输入,
是各个变量的权重,
是截距项,
是遗忘门的Sigmoid函数,
是 之间的数。
3) 输入门:更新细胞状态中的存储信息。具体分为3步计算:第1步决定输入节点的激活值有多少会被保留下来,可以看到输入门的Sigmoid函数会和输入节点的激活值相乘,组成LSTM中Memory Cell的一部分。我们知道,在序列输入中,并不是每个信息都同等的重要,当输入的信息有用时,输入门的输出为1,输入节点的值可以全部输入进去;当输入的信息完全无用时,输入门的输出为0,此时输入节点的信息对internal state没有任何影响。第2步根据tanh函数创建新向量,添加到细胞状态中。第3步用旧的细胞状态乘以遗忘门
,然后再加上新的输入信息,更新当前的细胞状态。公式为:
(2)
(3)
(4)
其中:tanh为正切激励函数,
表示从t时刻输入的信息中提取出来要记住的信息,
表示(t − 1)时刻的细胞状态值,
表示更新后的细胞状态值,
是0~1之间的数。
4) 输出门:先使用Sigmoid函数决定输出多少信息量,然后使用tanh函数决定当前Memory Cell中有多少信息会被输出,可以看到输出门会和Memory Cell的值相乘,当输出门的输出为1时,Memory Cell的值会被完全输出;当输出门的输出为0时,Memory Cell的值就不会被输出。公式为:
(5)
(6)
其中:
是0~1之间的数。
2.2.2. 误差的反向传递
对模型进行训练的关键在于权重矩阵W和截距项b的不断调整,目的是使得网络的输出误差在选定的损失函数下越小越好,而参数的更新主要通过反向传播的链式求导得到。因此反向传播的目的就是求预测误差关于所有参数的梯度,在LSTM模型中,共有五个部分。其类似于BPTT算法 [14]。总梯度为:
(6)
3. 实证研究和结果分析
3.1. 实验数据
为了方便比较和分析,从英为财情官网下载每日黄金期货(GCZ8)数据。把这些数据先从影响因素上分为单因子(最高价)和多因子(开盘价、收盘价、最高价、最低价)两部分,再从时间上分为短期数据(2008/10/22~2018/10/22)和长期数据(1990/06/22~2018/10/22),从而建立4个数据集,表1列出了这些数据集的特征。
Table 1. Summary of experimental data
表1. 实验数据汇总
3.2. 长短期记忆网络模型单因子预测
3.2.1. 实验步骤
1) 数据预处理
读入黄金期货数据,对其进行标准化处理,消除量纲带来的影响。一般数据标准化的步骤为:先求出各变量的算术平均值(数学期望)
和标准差
;再进行标准化处理:
,其中
为标准化后的变量值,
为实际变量值。
接下来定义模型训练时调节的主要参数,主要包括: 批大小(batch_size)、隐层节点数(rnn_unit)、模型的时间步长(time_step)等。
① 批大小是指进行梯度下降时每一批包含的样本数,在训练的时候每批的样本会被计算一次梯度下降,使目标函数被优化一步。它可以决定梯度下降的方向,比如一个极端情况为batch_size等于1,每次参数更新的方向都是各自样本梯度下降的方向,目标函数的优化就难以收敛。
② 隐层节点数(rnn_unit)反映隐藏层内部映射和输出维度。隐层神经元个数的选择对于模型预测效果有着非常重要的影响,如果隐层神经元的个数太少,那么模型就无法很好地提取数据特征,其预测效果也很差;如果神经元个数太多,就会造成模型在训练集表现很好,但在测试集上反而表现很差,即过拟合。
③ 模型的时间步长反映的是模型最多可以记忆多长的时间,如果LSTM的时间步长为10天,即LSTM最多可以记忆10天的时间,那么第11天的黄金期货价格与前10天的价格有关。
本文定义时间步为20,每批次训练60个样例,隐层节点数为10,输入为1维数据,输出为1维数据。
2) 长短期记忆网络的定义与训练
在定义LSTM模型之前,先对神经网络的变量进行定义,如定义输入权重,输入偏差等。然后通过之前定义的输入维度,输出维度定义LSTM神经网络,再对其进行训练。训练的目的是不断调整权重和偏差项,使得最终的均方误差降到最低。最后对模型分别训练1000次、2000次、3000次、4000次和5000次,比较最终的结果。
3) 黄金期货价格的预测
使用训练好的LSTM模型,得到下一日黄金价格的预测值并与实际值比较。
3.2.2. 短期预测结果
使用数据集Short_1生成训练模型,得到单因子短期预测结果,如表2所示。可以看出,只使用最高价一个因子,且有较少数据时,模型的均方误差介于0.001和0.003之间,随着训练次数的增加,均方误差先减小后增大,这是因为当训练次数过多时,会出现过拟合的情况,即训练出来的模型对训练集来说误差很小,但并不适用于测试集。在单因子短期预测中,下一日黄金价格的真实值为1243.00,其标准化结果为−0.268350911。本文的LSTM模型在训练次数为2000次时,得到预测结果为−0.29719335,均方误差为0.0014775329,说明用LSTM模型预测黄金价格可行有效。
Table 2. Single factor short-term forecast results
表2. 单因子短期预测结果
3.2.3. 长期预测结果
使用数据集Long_1生成训练模型,得到单因子长期预测结果,如表3所示。可以看出,使用最高价一个因子,且有较多数据时,模型的均方误差介于0.0005和0.003之间,相比单因子短期预测,同样是单因子,长期预测比短期预测的均方误差有所降低。但随着训练次数的增加,仍会出现过拟合的情况。在单因子长期预测中,下一日黄金价格的真实值为1243.00,其标准化结果为1.10。本文的LSTM模型在训练次数为4000次时,得到预测结果为1.0620697,均方误差为0.000524908,说明LSTM模型在预测黄金价格时表现较好。
Table 3. Single factor long-term forecast results
表3. 单因子长期预测结果
3.3. 长短期记忆网络模型多因子预测
3.3.1. 实验步骤
1) 数据预处理
读入黄金期货数据,并将其分为两部分。对于短期预测,将前2300组数据作为训练集,剩下的286组数据作为测试集;对于长期预测,将前6000组数据作为训练集,剩下的1189组数据作为测试集。再对训练集和测试集数据进行标准化处理,消除量纲带来的影响。最后定义LSTM有两个隐藏层,每个隐藏层有10个神经元,输入为收盘价、开盘价和最低价3维数据,输出为最高价1维数据等。
2) 长短期记忆网络的定义与训练
在定义LSTM模型之前,先对神经网络的变量进行定义,如定义输入权重,输入偏差等。再通过之前定义的输入维度,输出维度定义LSTM神经网络,最后对其进行训练。训练的目的是不断调整权重和偏差项,使得最终的均方误差降到最低。最后对模型分别训练1000次、2000次、3000次、4000次和5000次,比较最终结果。
3) 黄金期货价格的预测
利用生成的训练模型,对测试集上的黄金期货数据进行预测,并计算偏差,即:
。
3.3.2. 短期预测
使用数据集Short_2生成训练模型,得到多因子短期预测结果,如表4所示。可以看出,使用最高价,最低价,开盘价,收盘价四个因子,且数据较少时,模型的均方误差介于0.0001和0.0004之间,相较单因子短期预测,同样数据较少,多因子比单因子预测的均方误差更小。但随着训练次数的增加,仍会出现过拟合的情况。当训练次数为4000次时,模型的均方误差最小,拟合效果最好。
Table 4. Multi factor short-term forecast results
表4. 多因子短期预测结果
使用得到的多因子短期预测模型,设置训练次数为4000次,对测试集的黄金价格进行预测,如图3所示。蓝色为实际值,红色为预测值,可以看出预测值和实际值很接近,说明模型的拟合效果比较好。
Figure 3. Multi factor short-term forecast chart
图3. 多因子短期预测图
3.3.3. 长期预测
使用数据集Long_2生成训练模型,得到多因子长期预测结果,如表5所示。可以看出,使用最高价,最低价,开盘价和收盘价四个因子,且数据较多时,模型的均方误差介于0.00005和0.0005之间,相较多因子短期预测,同样是多因子,长期预测比短期预测的均方误差更小。当训练次数为5000次时,模型的均方误差最小,拟合效果较短期预测也更好。
Table 5. Multi factor long-term forecast results
表5. 多因子长期预测结果
使用得到的多因子长期预测模型,设置训练次数为5000次,对测试集的黄金价格进行预测,如图4所示。蓝色为实际值,红色为预测值,可以看出预测值的趋势和实际值吻合,且在大部分数据点上,预测值和实际值很接近,说明用本文的LSTM模型预测黄金价格的效果比较好。
Figure 4. Multi factor long-term forecast chart
图4. 多因子长期预测图
3.4. 预测结果分析
从以上单因子预测和多因子预测结果来看,无论是有一个影响因素,还是有多个影响因素,长期预测相较短期预测的均方误差更小,预测更接近真实值,这个结果指导我们在用LSTM模型做数据预测时,应尽可能多的收集数据(表6)。另一方面,无论是短期预测还是长期预测,多因子预测较单因子预测的均方误差更小(表7),这一结果说明在用LSTM模型做黄金价格预测时,应更全面地考虑影响黄金价格的因素,预测结果才能越精确。
Table 6. Statistics of prediction results of LSTM
表6. 长短期记忆网络的预测结果统计
4. 结束语
为了对黄金价格进行准确的预测,本文提出了基于长短期记忆网络的预测方法。长短期记忆网络的主要思想体现在用特殊的结构单元取代原始网络的隐藏层部分,用“累加”的形式,避免了梯度消失和梯度爆炸,同时具有记忆性,适合处理间隔和延迟较长的时间序列数据。本文通过对原始数据集中抽样构造多个小数据集,在每个小数据集上用长短期记忆网络进行预测,结果表明多因子长期预测具有更小的均方误差,而长短期记忆网络与文献中的方法相比具有很大的优势。BP神经网络 [4] 预测的均方误差为0.0053104,SVR智能预测方法 [5] 的均方误差为0.0002,本文采用长短期记忆网络预测的均方误差为5.861 × 10−5,所以长短期记忆网络在预测黄金价格上有更大的适用性。
Table 7. Comparison of mean square error of each model
表7. 各模型均方误差的比较
由于国际黄金市场同时受供求关系、美元汇率、石油价格、通货膨胀率、国际形势、股票、债券等因素的影响,内在规律很复杂,长短期记忆网络虽然可以在一定程度上帮助人们进行预测,但训练次数较多,耗费时间过长,想要使预测达到更精确的程度,需要进一步研究与挖掘。
基金项目
山西省自然科学基金资助项目(11571009)。
NOTES
*通讯作者。