
使用循环神经网络预测汇率涨跌
使用循环神经网络预测汇率涨跌
本文中讲简单地介绍如何使用时间序列分析的方法预测汇率变化。
序列问题
首先介绍一下序列问题,常见的机器学习问题都是是一对一的模型,如下图所示:
在这个例子中,我们将一个输入数据传入到模型中,然后模型会根据传入数据生成一个结果,像线性回归,分类问题甚至图像分类卷积神经网络都属于这种类型。
这种模式经过修改可以用于处理一对多模型,如下图所示,模型的输出数据会作为新的输入数据传入回神经网络中,从而产生一系列的值,这种神经网络叫做循环神经网络。
对于序列型的输入数据,循环神经网络的工作方式如下图所示,每个循环网络神经元的输出都会进入下一个神经元,作为下一个神经元的一部分输入数据:
上面的网络中的每个神经元都使用同一个公式:
其中$Yt$是当前神经元的输出,$Y{t-1}$是上一个神经元的输出数据,$x_t$是当前神经元的原始输入,$w$和$u$都是权重参数。
可以通过简单地堆叠神经元来构建一个深层循环神经网络,但是简单的循环神经网络只能处理短时间记忆,对于需要长时间记忆的问题准确度会下降。
对于需要长时间依赖的序列分析问题,我们可以使用lstm神经网络来处理。
LSTM神经网络简介
在上世纪九十年代,Sepp Hochreiter和Jurgen Schmidhuber提出了LSTM神经网络,解决了传统的循环神经网络、隐马尔可夫模型和其他序列模型对长时间跨度不敏感的问题。
LSTM神经元在传统循环神经网络中添加了一些逻辑门,它们的功能如下:
1. 遗忘门
遗忘门会接受来自上一神经元的输出$h_{t-1}$以及当前神经元的输入$x_t$,通过线性变换之后传入sigmod函数,得到一个介于0到1的数字,这个数字可以认为是门的开度。这个数字会与内部状态相乘,所以这个门成为遗忘门,因为如果$f_t$为0时,当前的内部状态会被完全丢弃,如果$f_t$为1时,当前状态会保持完好无损。
2. 输入门
输入门中同样会取上一神经元的输出$h_{t-1}$以及当前神经元的输入$x_t$,经过线性变换后传入sigmoid函数,返回介于0到1到值,该值会与记忆单元的输出值相乘,记忆单元的方程如下:
这一层会对当前输入和上一层输入的线性结果进行双曲正切函数处理,其返回的向量将会被添加到内部状态中。
内部状态通过如下规则更新:
上一层的状态$C_{t-1}$会与遗忘门的返回值相乘,当前的$C_t$的$i_t$倍相加,得到该神经元的最终状态$C_t$,$C_t$会传输到输出门进行计算。
3. 输出门
输出门决定了传入最终output的内部状态的比例,作用方式与前面两种门相似。
以上的三个们分别有独自的权重和偏置,也就是说神经网络将会学习保留多少往期数据,保留多少输入数据,传输多少内部状态。
在循环神经网络中,你不止向网络传入数据,还需要传入上一时刻的状态,这种特性对于需要联系上文的自然语言处理非常有效。
另外循环神经网络还可以用在时间序列分析、视频处理、语音识别等领域。
本文中将简单地介绍一下循环神经网络在汇率预测方面的应用。
将使用的数据是美元与印度卢比的在1980年1月2日到2017年8月10日这段时间内的汇率,共有13730条数据,图像如下:
模型搭建
训练测试数据划分
以1980/1/2到2009/12/31期间为训练数据,2010/1/1到2017/8/10期间为测试数据。
分组之前要对数据进行归一化。
尝试全连接神经网络
所搭建的模型详情如下:
迭代200遍之后的预测结果如图所示:
很明显预测结果与实际情况有较大的偏差。
使用LSTM神经网络预测
接下来改用LSTM神经网络进行建模。模型详情如下:

结果与实际曲线基本吻合,表明LSTM神经网络有应用于汇率预测的前景。
结论
LSTM模型在处理有时间依赖的序列数据时能获得较好的效果,常用于语音识别,音乐分析,手写识别,甚至人类行为分析,是一种拥有记忆能力,能模拟人类决策方式的模型。
本文译自:
https://blog.statsbot.co/time-series-prediction-using-recurrent-neural-networks-lstms-807fa6ca7f
据原博客评论中所言,此博文可能是该博主非法转载,真正原文应该是:http://colah.github.io/posts/2015-08-Understanding-LSTMs/