当前位置: 首页 > news >正文

基于注意力机制的循环神经网络对 金融时间序列的应用 学习记录

摘要:

概况论文内容,包含解决的问题,解决的方法,成果

金融时间序列由于高噪声性以及序列间的相关性,导致传统模型的预测精度和泛化能力往往较低。为了克服这一问题,提出一种基于注意力机制的循环神经网络预测模型。利用金融时间序列的技术指标作为特征序列,通过GRU 得 到隐藏状态,再利用注意力机制将其重构,并与目标序列一起作为新的 GRU 的输入,提高目标序列的预测效果。利用上证综指数据,分别使用加入注意力机制的门控循环网络与标准门控循环网络进行预测。在 6 个输入维度的情况下,基于注意 力机制的 GRU模型平均绝对百分比误差为 0.76%,低于标准 GRU 模型的 0.90%;在 48 个输入维度的情况下,基于注意力机 制的 GRU模型平均绝对百分比误差为 0.73%,低于标准 GRU 模型的 1.61%。结果表明,加入注意力机制后门控循环网络的预测效果得到提升,并且在特征序列的输入维度增大时,其预测效果提升更为明显。

引言

传统时间序列模型受限于固定的模型框架,无法对复杂的金融时间序列做出准确的预测,而基于深度学习的方法从数据本身出发能更好地应对“非理想化”的时间序列。近年来,具有非线性处理能力的方法,如支持向量机、BP 神经网络、小波神经网络以及循环神经网络被应用于分析时间序列,也有经典计量模型与机器学习方法的组合模型,取得了不错的效果。
目前而言,RNN(循环神经网络)及其变种 LSTM(长短期记忆网络)由于其关注历史信息的网络结构而广泛被应用。LSTM 可与进化算法结合以提升预测能力。Althelaya 等使用双向 LSTM 以及堆叠 LSTM 提高性能。基于金融时间序列高噪声的特点,也有在使用 LSTM 预测之前,对原始序列做相关处理:Li 和 Tam 对原始序列进行小波去噪;Bao 等在此基础上加入堆叠自编码器;Singh 等利用双向二维主成分分析对原始序列降维提取特征;Zhang等在 LSTM 单元内的遗忘门以及输入门后将状态向量分解为多频率信息,最后在输出门前做聚合重构。
可以看出,一般通过优化网络结构或者对原始数据进行前期处理两个角度来提升预测能力。然而,对于特征序列对目标序列在时间维度上的影响的关注却很少,本文利用被广泛应用于情感分析和机器翻译的注意力机制,对只有特征序列输入的 RNN 的每一时间步的隐藏状态通过注意力机制进行重构,并与目标序列共同作为新的 RNN 输入进行预测。结果表明,加入注意
力机制的 RNN 具有较好的预测性能,尤其是在特征维度增加的情况下,其预测效果相较于标准 RNN 提升更为明显。

方法与模型

GRU 原理和结构介绍

循环神经网络的网络层接收当前时刻的输入 xt 以及上一个时刻的网络状态 ht - 1,得到当前时刻的网络状态 ht 并作为下一时刻的输入。循环神经网络关注历史因素的影响使其适合处理时间序列问题,其工作原理如下:
在这里插入图片描述
式(1)表示状态更新过程,式(2)表示预测输出过程。式中:xt 为 t 时刻的特征输入;ht 为 t 时刻的状态向量;ot为 t时刻的输出。
标准的循环神经网络更新状态向量常常表示如下:
在这里插入图片描述
由于标准循环网络的结构过于简单,常常无法长期保存有效信息,即短时记忆问题。为了有效延长这种短时记忆,提出 LSTM(长短期记忆网络)并取得了不错的效 果 ,同 时 其 简 化 的 变 种 门 控 循 环 网 络(Gated Recurrent Unit,GRU)也被广泛应用。GRU 将 LSTM 的内部状态向量和输出向量合并为状态向量,同时门控数量也由 3 个(遗忘门、输入门、输出门)减少到 2 个(复位门、更新门)。虽然 GRU 是在 LSTM 的基础上做出简化,但在大部分情况下两者的效果相差不大,更为重要的是GRU 的参数相比于 LSTM 要少 1/ 3,计算代价降低的同时减轻了过拟合的可能。
GRU 的 网 络 结 构 如 图 1 所 示 ,状 态 的 更 新 规 则如下:
在这里插入图片描述
在这里插入图片描述
其中,式(4)和式(5)表示复位门的过程,控制上一时刻的状态 h~t -1~进入 GRU 的量。r 表示复位门门控向量,由当前输入 xt 和上一时刻的状态
h t-1 得到,由于激活函数使用了 sigmoid 函数,r的取值范围在 0 和 1 之间,所以可以控制 ht-1 的接收量并与 x~t ~共同得到新输入h t 。式(6)和式(7)表示更新门的过程,用于控制新输入ht 与上一时刻状态 ht-1 对当前时刻状态 ht的贡献量。z 表示更新门门控向量,同样使用 sigmoid 函数作为激活函数,以 1 - z 作为上一时刻状态 ht-1 对 ht 的贡献程度,以 z 作为新输入h t 对 ht的贡献程度。

注意力机制

注意力机制实现了每一时刻的输入对于当前时刻的输出的贡献差异,通过构造得分函数得到相应的权重,通过加权平均的方法重构新的输入用来预测当前输出。注意力机制多在编码⁃解码模型(Encoder⁃Decoder)中使用**,对于循环神经网络而言,编码器所有时刻的隐藏状态对于某一时刻解码器的隐藏状态的贡献度应表现出差异,才能更有效地完成预测任务。**这种贡献度的度量可以通过得分函数式(8)获得,具体形式多样,如式(9)、式(10)所示。得分函数需要归一化才能表现为权重,一般使用 softmax 函数式(11),最后将编码器的隐藏状态加权平均即可得到新的解码器输入式(12)。
在这里插入图片描述
在这里插入图片描述式 中 :s t-1 表 示 解 码 器 在 t - 1 时 刻 的 隐 藏 状 态 ;h =( h1 , h2 ,…, hT)表示编码器的各个时刻的隐藏状态;et 表示贡献度的得分;at表示得到的权重;ct表示解码器的新输入。

基于注意力机制的 GRU

将金融时间序列分为特征序列与目标序列,设定时间窗大小为 T,以特征序列为输入,建立 GRU 网络作为编码器,将输出的所有时刻状态与解码器的每一时间步的状态使用注意力机制重构新的解码器输入分量,并与目标序列一起作为解码器 GRU 网络的输入。基于注意力机制的 GRU 结构如图 2所示。
在这里插入图片描述

实证分析

数据说明与预处理

本文的实证数据来自于上证指数,上证指数反映了上海证券交易所上市的所有股票价格的变动情况,其变动趋势在一定程度上能够反映中国宏观经济的走势。本文的预测目标是上证指数的收盘价,收盘价作为交易所每一个交易日的最后一笔交易价格,既是当日行情的标准,又是下一个交易日的开盘价的依据,具有重要的意义。为了更为准确地考量模型的预测效果,考虑不同
维度的特征输入下模型的性能变化。因此,这里选择两个不同维度的特征输入,一个是 6 个输入维度的上证指数开盘价、最高价、最低价、交易量、成交额以及收盘价本身;另一个是在此基础上增加了与上证指数相关的7个综合指数(上证 A 指、上证 B 指、上证工业类指数、上证商业类指数、上证房地产指数、上证公用事业股指数、上证综合股指数)的开盘价、收盘价、最高价、最低价、交易量和成交额作为特征输入,即 48个输入维度。

为了克服序列之间不同量纲的影响,提升模型精度,并提高迭代求解的收敛速度,在训练模型之前选择以训练集的序列数据的最大值和最小值对所有的特征序列以及目标序列做归一化处理:
在这里插入图片描述
式中:x为所有原始数据;x train 为训练集数据;x′ 为所有归一化后的数据。
将归一化后的数据输入模型,模型变成对归一化后的收盘价的预测,因此需再将最终输出的结果进行反归一化处理,即得到最终的预测结果。

衡量指标

为了对比基于注意力机制的 GRU 与标准形式的GRU 的预测效果,本文用绝对偏差和相对偏差两个衡量指标进行表示。绝对偏差的衡量指标选择测试集的收 盘 价 预 测 值 和 真 实 值 的 均 方 误 差(Mean Square Error ,MSE),其计算公式为:
在这里插入图片描述
相对偏差的衡量指标选择测试集的收盘价预测值和 真 实 值 的 平 均 绝 对 百 分 比 误 差(Mean Absolute Percentage Error,MAPE),其计算公式为:
在这里插入图片描述
式中:n 为样本总数;y ′i 为收盘价的预测值;yi 为收盘价的真实值。

网络结构设定

为了尽可能减少参数,降低模型复杂度,选择式(10)作为注意力机制的得分函数。另外,基于注意力机制的GRU 模型的一些参数设定如下:编码器与解码器的GRU 隐藏层神经元个数均为 64;时间窗大小为 30;批处理大小为 128(每训练 128组样本迭代更新一次参数);训练次数为 150 次(将所有训练集样本完整训练 150 次);以归一化后的收盘价的预测值和真实值的均方误差MSE作为损失函数,使用 Adam 优化算法更新参数。

实证结果

以上证指数收盘价为预测目标,分别将 6 个输入维度的特征序列和 48 个输入维度的特征序列放入模型训练,将测试集数据输入训练好的模型,得到实验结果。表 1和表 2分别给出了 6个输入维度以及 48个输入维度下标准形式的 GRU 与基于注意力机制的 GRU 在测试集上的预测效果。可以看出,无论是哪一种输入维度,基于注意力机制的 GRU 的预测效果均优于标准形式的 GRU,这说明在 GRU 中加入注意力机制是有利于预测性能提升的。在输入维度为 6 时,两种模型在测试集上的 MSE 与 MAPE 相差不大 ,标准形式的 GRU 在MAPE 上仅仅比基于注意力机制的 GRU 多 0.14%。但在输入维度为 48 时,由于输入维度的增加,导致模型的参数增加,模型复杂度上升,对于信息的整合能力下降。
在这里插入图片描述
相较于 6 个输入维度,此时 GRU 的 MAPE 增加了0.71%,增加了近 1 倍。而基于注意力机制的 GRU 预测性能变化不大,相反 MAPE 降低了 0.03%。相较于标准形式的 GRU,可以认为注意力机制的引入增强了 GRU应对更高维输入的能力。
图 3~图 6 也分别给出了 6 个输入维度以及 48 个输入维度下标准形式的 GRU 与基于注意力机制的 GRU 在测试集上的实际预测结果。通过与原始数据的直观对比,可以看出在 6 个输入维度下两种模型都有着不错的预测效果,2个模型在输入维度变为 48后才出现较为明显的预测差距。
在这里插入图片描述
在这里插入图片描述

结 语

本文通过在循环神经网络中加入注意力机制,探寻其在金融时间序列方面的应用。以上证指数为例,建立基于注意力机制的 GRU,并与标准形式的 GRU 进行对比,得出基于注意力机制的 GRU 可以提高预测金融时间序列的能力的结论。同时,考虑不同序列输入维度对模型的影响,发现随着输入维度的增加,标准形式的GRU 预测能力下降明显,而基于注意力机制的 GRU 预测性能变化不大。可以认为加入注意力机制后,GRU对于信息的整合能力有所提升。因此,在循环神经网络中加入注意力机制,对于金融时间序列的预测任务来说,不仅可以提升预测性能,还能在保证预测效果的同时应对更多维度输入的情况。

相关文章:

  • 女篮亚军,为啥男篮那么水?
  • 发动机曲轴及曲柄连杆机构受力有限元分析
  • 进程概念(Linux)
  • 国庆弯道超车之最长递增子序列衍生的一类题
  • 30. Python 修改列表的元素
  • Redis入门-下载-安装-启动服务测试
  • 一个C#开发的、跨平台的服务器性能监控工具
  • ARM - LED灯实验(cortex A7核/cortex M4核)
  • 【云原生之Docker实战】使用Docker部署Lsky Pro个人图床平台
  • 【剑指Offer】--->详解二分查找相关练习
  • 如何使用SpringBoot里面的StopWatch统计耗时
  • 图解网络 记录
  • 嵌入式AI入坑经历
  • 【QT学习】如何自定义exe图标和详细信息?(三分钟解决)
  • 【CSS3】 平面转换 空间转换 动画
  • k8s 面向应用开发者的基础命令
  • k个最大的数及变种小结
  • Laravel 菜鸟晋级之路
  • Object.assign方法不能实现深复制
  • Python学习笔记 字符串拼接
  • springboot_database项目介绍
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • 让你的分享飞起来——极光推出社会化分享组件
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 我看到的前端
  • ​iOS安全加固方法及实现
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (4.10~4.16)
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (蓝桥杯每日一题)love
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • ***详解账号泄露:全球约1亿用户已泄露
  • .NET WebClient 类下载部分文件会错误?可能是解压缩的锅
  • .NET/C# 避免调试器不小心提前计算本应延迟计算的值
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换
  • .NET中统一的存储过程调用方法(收藏)
  • .考试倒计时43天!来提分啦!
  • @DateTimeFormat 和 @JsonFormat 注解详解
  • [<MySQL优化总结>]
  • [2021]Zookeeper getAcl命令未授权访问漏洞概述与解决
  • [acm算法学习] 后缀数组SA
  • [bzoj1912]异象石(set)
  • [BZOJ2208][Jsoi2010]连通数
  • [C/C++]数据结构 堆的详解
  • [C]编译和预处理详解
  • [C++]Leetcode17电话号码的字母组合
  • [ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-controller-manager失败
  • [Java] 图说 注解
  • [js] 正则表达式
  • [Prism]Composite Application Guidance for WPF(9)——命令
  • [Python] 递归返回值 为 None 的问题
  • [SAP] ABAP注释快捷键修改
  • [SQL]mysql密码读取