基于 Bi-LSTM 和迁移学习的多元汇率预测研究学习记录

Posted 彭祥.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于 Bi-LSTM 和迁移学习的多元汇率预测研究学习记录相关的知识,希望对你有一定的参考价值。

博主初步打算使用Keras框架来实现LSTM网络,现阅读了相关论文并记录了实现流程,以供参考学习。
下面是相关论文介绍:

基于 Bi-LSTM 和迁移学习的多元汇率预测研究

Bi-LSTM 模型

双向长短期记忆网络 (Bi-directional long short-termmemory, Bi-LSTM) 是 LSTM 模型的扩展, 其包括前向LSTM 和后向 LSTM, 前向和后向的 LSTM 应用可以改善模型学习的长期依赖性, 从而提高模型的准确性[。 其结构如图 1 所示。

图 1 为 Bi-LSTM 网络在 t-1、 t、 t+1 时刻, 模型沿时间轴展开的结果, 其中 x 为模型输入, h 为隐藏层状态, y 为输出。假设 为 t 时刻前向 LSTM 网络的隐藏层状态, 其计算公式如公式 (1) 所示:

公式 (1) 中 xt 表示神经单元在 t 时刻的时序数据输入, 表示神经单元在 t-1 时刻前向 LSTM 网络的隐藏层状态。同理 为 t 时刻后向 LSTM 网络的隐藏层状态, 其计算式如公式 (2) 所示:

公式 (2) 中 表示 t-1 时刻后向 LSTM 网络的隐藏层状态。Bi-LSTM 网络输出就是两部分隐藏层状态 与 组合在一起, 从而构成网络整体隐藏状态 ht。

迁移学习

迁移学习将训练任务分为 Task A 与 Task B。 首先保存已经训练好的 Task A 的网络结构与权重。 在使用Task A 的网络训练 Task B 之前, 冻结 Task A 前几层网络的权重, 微调剩下的网络结构与权重, 最后再使用Task B 的数据训练网络[4]。 迁移学习过程如图 2 所示。

数据预处理

为了加速模型参数的优化, 对输入模型的汇率时间序列数据进行预处理操作。 具体而言, 采用 min-max 函数对汇率数据在 [0,1] 范围内进行归一化, 以加快模型收敛的速度。 归一化转化公式如公式如下所示:

其中 xi 为模型训练后的预测值, xi’ 为预测值的反归一化值。数据归一化后, 创建序列数据集用于模型训练和测试。 以 5 个时间步为一个样本, 并根据相应的时间步长分 1 天、 3 天、 5 天和 7 天确定输出。

短期预测模型构建及预测结果

基于 Windows 操作系统进行了长期短期汇率预测实 验 。 使 用 CPU 版 本 的 TensorFlow 神 经 网 络 库 中 的Keras 框架, 搭建神经网络模型。 在构建 Bi-LSTM 模型的过程中借鉴了江知航和王艳霞在基于 Bi-LSTM 的棉
花价格预测中所使用的 Bi-LSTM 神经网络并对其进行改造。 所构建的 Bi-LSTM、 LSTM 模型网络结构如图 3所示。

图 3 (a) 为所构建的 Bi-LSTM 模型网络结构, 包括 6 层神经网络: 一个 LSTM 隐藏层、 两个 Bi-LSTM 隐藏层和 3 个 Dense 层。设置模型的第 1 层为 LSTM 隐藏层, 采用 256 个初始神经元, 使用 Relu 函数, 并添加 Dropout 机制, 以10%的比例将部分神经元从神经网络中丢弃; 模型的第
2 层和第 3 层皆为 Bi-LSTM 层, 同样设置 256 个初始神经元, 使用 Relu 函数, 并添加 Dropout 机制; 结构的第 4 层和第 5 层为 Dense 层, 设置 256 个初始神经元, 使用 Relu 激活函数, 同样添加 Dropout 机制; 结
构的第 6 层为输出层, 将输出维度设为 1, 并使用 Relu函数。
在 LSTM 模型的网络结构和神经元数量设置方面,与 Bi-LSTM 模型保持一致, 并且使用相同的网络优化器和损失函数。 而两个模型之间的差异在于 LSTM 模型用 LSTM 神经网络层来替代 Bi-LSTM 神经网络层, 并进行模型预测训练。 其结构如图 3 (b) 所示。LSTM 模型的第 1、 2、 3 层都设置为 LSTM, 256 个初始神经元, 使用 Relu 函数, 并添加 Dropout 机制, 按10%的比例将神经元从神经网络中丢弃; 模型的第 4、 5层为 Dense 层, 神经元个数都为 256, 使用 Relu 函数,并添加 Dropout 机制; 模型的第 6 层为输出层, 同样将输出维度设为 1, 并使用 ReLu 函数。
将 2010 年 1 月至 2020 年 12 月的 3 种货币的汇率序列数据, 按照 8∶2 的比例划分训练集和测试集。 构造完时间序列数据后, 最终得到每种货币的汇率时间序列, 其中每种货币的汇率时间序列样本各为 3647 条。同时不同的优化算法决定了不同的学习率。 当学习率过大时, 模型可能无法收敛, 损失将继续上下波动。 当学习率过小时, 模型可能收敛缓慢, 耗费较多训练时间。因此使用 Adam 优化算法, 从而更加精细准确地调整网络。
首先以人民币/日元汇率数据为例来进行预测建模。图 4、 图 5 分别反映了 Bi-LSTM 和 LSTM 模型在测试集的预测值与真实值的对比曲线。


图 4 中的曲线是模型预测的汇率值, 图 5 中曲线是真实汇率收盘价。 相对于 LSTM, Bi-LSTM 神经网络预测值与真实值曲线的拟合程度更高。 为了更加客观评估这两个模型的预测效果, 计算其在测试集上的两种预测误差指标如表 1 所示。

长期预测模型构建及预测结果

由于长期汇率预测存在时间跨度大、 数据样本少的问题, 若是直接使用长期汇率数据训练模型, 会损失较多时间成本和预测精度。 因此, 采用迁移学习方法, 即利用长期汇率数据与短期汇率数据之间的相似性, 通过冻结短期 Bi-LSTM 神经网络前数层的权值, 再利用微调样本微调剩下的网络结构参数, 以达到提高长期汇率预测模型的准确性和时间效率的目标。
通过手动逐层累计冻结短期 Bi-LSTM 模型的神经网络层, 以检验不同迁移学习冻结层数对长期汇率预测模型性能的影响, 进而确定最佳的冻结层数。 如表 4 所示以人民币/日元预测时间步长 3 天为例, 比较在不同冻结层数下迁移模型的预测性能。

结语

构建了一种基于 Bi-LSTM 的短期汇率预测模型,提高了短期汇率预测的准确性, 为外汇交易者的短期交易提供更多参考意见。 进一步在短期 Bi-LSTM 模型的基础上, 运用迁移学习构建出了长期预测模型。 结论主要归纳为以下两点:
(1) 在短期汇率预测方面, 利用 RMSE 和 MAE 指标将 Bi-LSTM 神经网络与传统 LSTM 神经网络在 3 种货币上的预测误差进行对比分析, 可以得出, Bi-LSTM 神经网络具有更好的数据拟合和预测性能。 证明了 Bi-LSTM 模型在短期汇率预测中的可行性和泛化能力
(2) 在长期汇率预测方面, 采用迁移学习, 将训练好的短期 Bi-LSTM 模型作为预训练模型, 在不同时间步长上对 3 种货币进行迁移学习建模实证, 结果表明迁移学习可以有效解决时间步长增大而导致预测误差增大的问题, 同时节省模型训练时间。
Bi-LSTM 神经网络和迁移学习方法在长短期汇率预测中的优异表现, 不仅节省了模型训练时间, 而且提高了预测精度, 实现了对汇率更加准确有效的预测。 其他学者进行汇率研究提供了参考。 基于 Bi-LSTM 神经网络和迁移学习方法的预测模型在未来金融时间序列预测的发展中将具有广阔的前景和研究价值。

以上是关于基于 Bi-LSTM 和迁移学习的多元汇率预测研究学习记录的主要内容,如果未能解决你的问题,请参考以下文章

基于遗传算法的BP神经网络在汇率预测中的应用研究(Matlab代码实现)

基于python的机器学习实现日元币对人民币汇率预测

DELM回归预测基于matlab多元宇宙优化算法改进深度学习极限学习机数据回归预测含Matlab源码 2230期

基于人工智能算法的多元负荷预测

基于人工智能算法的多元负荷预测

LSTM时间序列预测基于matlab深度学习的长短期记忆网络LSTM时间序列预测未来含Matlab源码 2345期