深度学习量化交易---0.2.基于长短时记忆网络预测股票价格1

27 篇文章 1 订阅
22 篇文章 19 订阅

在这一节中,我们将先向大家介绍长短时记忆网络(LSTM),然后详细讲解怎样使用长短时记忆网络(LSTM)来预测股票价格,为了避免人为因素干拢,我们还以上证综指为例来进行说明。
长短时记忆网络(LSTM)
股票交易数据是一种典型的时序信号,需要处理较长的时间序列,有时为了准确的进行股票价格预测,可能会需要看几周甚至几个月的历史数据,如果采用普通的多层感知器模型的话,那么要求输入层维度就非常大,整个网络的参数就要求非常多,就非常难以训练,并且容易出现过拟合(Over Fitting)。采用长短时记忆网络(LSTM),每次仅需要输入一个时间点的数据,输入层维度低,同时网络参数少,虽然比较难以训练,但是一旦网络训练成功,就不容易出现过拟合(OverFitting)。
要理解长短时记忆网络,我们先来看普通的神经网络,如下所示:
在这里插入图片描述
如上图所示,输入信号从输入层经过中间的隐藏层,到达输出层,中间没有回路。
而递归神经网络(RNN)则与此不同,隐藏层除了向输出层输出外,还将自己的输出重新作为输入传输给自己,如下图所示:
在这里插入图片描述
如上图所示,隐藏层的输出信号,会重新作为输入信号输入给自己。为了能更好的表示这种网络,我们通常采用展开的形式,如下所示:
在这里插入图片描述
t = 1 t=1 t=1时刻,隐藏层的状态为 h 0 h_0 h0,加上 t = 1 t=1 t=1时刻的输入 x 1 x_1 x1,一起作为隐藏层在 t = 1 t=1 t=1时刻的输入,计算出隐藏层的输出值 h 1 h_1 h1,其一方面输出给上一层网络(如输出层),另一方面也会作为在 t = 2 t=2 t=2时刻的输入,与在 t = 2 t=2 t=2时刻输入信号 x 2 x_2 x2一起,作为隐藏层输入,这时又会产生在 t = 2 t=2 t=2时刻隐藏层的输出,依此类推下去,这就是普通的递归神经网络。
我们假设输入层到隐藏层的连接权值为 W i W^i Wi,而隐藏层到隐藏层的连接权值为 W h W^h Wh,在 t t t时刻,递归神经网络可以表示为:
h t = f h ( W h ⋅ h t − 1 + W i ⋅ x t ) y t = f o ( W o ⋅ h t ) h_t=f_h(W^h \cdot h_{t-1} + W^i \cdot x_t) \\ y_t=f_o(W^o \cdot h_t) ht=fh(Whht1+Wixt)yt=fo(Woht)
在普通递归神经网络的基础上,可以形成深层递归网络和双向递归网络,原现与普通递归神经网络类似,这里就不再具体介绍了。
但是普通递归神经网络在具体使用过程中,由于只能具有短时记忆,并用会出现梯度爆炸等问题,所以在实际应用中,人们一般很少直接使用递归神经网络(RNN),而一般都使用长短时记忆网络(LSTM)或GRU,我们在量化投资中,采用长短时记忆网络。
长短时记忆网络(LSTM)
长短时记忆网络(LSTM)网络结构图如下所示:
在这里插入图片描述
网络由变化很慢的c和变化很快的h组成,在 t = 1 t=1 t=1时刻,隐藏层状态为 c 0 c_0 c0 h 0 h_0 h0,与 t = 1 t=1 t=1时刻输入信号 x 1 x_1 x1一起,输入到隐藏层,隐藏层产生输出 c 1 c_1 c1 h 1 h_1 h1。在 t = 2 t=2 t=2时刻,隐藏层状态为 c 1 c_1 c1 h 1 h_1 h1,与 t = 2 t=2 t=2时刻输入信号一起,输入到隐藏层,产生输出为 c 2 c_2 c2 h 2 h_2 h2,如此循环往复下去。
长短时记忆网络的逻辑图如下所示:
在这里插入图片描述
这是在原始Paper中画出的逻辑结构,为了更好的理解长短时记忆网络,我们通常采用一种不同的方式来表示:
在这里插入图片描述
长短时记忆网络(LSTM)中间层如上图所示,下面我们分步来看长短时记忆网络(LSTM)的原理:
1.由遗忘门决定丢弃信息
在这里插入图片描述
假设在 t t t时刻隐藏层状态为 h t − 1 \boldsymbol{h}_{t-1} ht1,输入信号为 x t \boldsymbol{x}_t xt,遗忘门的连接权值为 W f W_f Wf [ h t − 1 , x t ] [\boldsymbol{h}_{t-1},\boldsymbol{x}_t] [ht1,xt]表示将向量 h t − 1 \boldsymbol{h}_{t-1} ht1 x t \boldsymbol{x}_t xt连接在一起,形成一个新的向量,遗忘门的输出为一个0~1之间的数字,代表需要忘记多少以前的记忆,如下所示:
f t = σ ( W f ⋅ [ h t − 1 , x t ] + b f ) \boldsymbol{f}_t=\sigma (W^f \cdot [\boldsymbol{h}_{t-1}, \boldsymbol{x}_t]+\boldsymbol{b}_f) ft=σ(Wf[ht1,xt]+bf)
2.输入门决定输入信号
在这里插入图片描述
i t = σ ( W i ⋅ [ h t − 1 , x t ] + b i ) c ~ t = tanh ⁡ ( W c ⋅ [ h t , x t ] + b c ) \boldsymbol{i}_t=\sigma(W_i \cdot [\boldsymbol{h}_{t-1}, \boldsymbol{x}_t] + \boldsymbol{b}_i) \\ \tilde{\boldsymbol{c}}_t=\tanh{(W_c \cdot [\boldsymbol{h}_t, \boldsymbol{x}_t] + \boldsymbol{b}_c)} it=σ(Wi[ht1,xt]+bi)c~t=tanh(Wc[ht,xt]+bc)
3.更新长期记忆细胞状态
在这里插入图片描述
c t = f t ⊗ c t − 1 + i t ⊗ c ~ t \boldsymbol{c}_t=\boldsymbol{f}_t \otimes \boldsymbol{c}_{t-1}+\boldsymbol{i}_t \otimes \boldsymbol{\tilde{c}}_t ct=ftct1+itc~t
4.通过输出门产生输出信号
在这里插入图片描述
o t = σ ( W o ⋅ [ h t − 1 , x t ] + b o ) h t = o t ⋅ tanh ⁡ ( c t ) \boldsymbol{o}_t=\sigma(W_o \cdot [\boldsymbol{h}_{t-1}, \boldsymbol{x}_t] + \boldsymbol{b}_o) \\ \boldsymbol{h}_t=\boldsymbol{o}_t \cdot \tanh{(\boldsymbol{c}_t)} ot=σ(Wo[ht1,xt]+bo)ht=ottanh(ct)
通过上述步聚,就产生了 t t t时刻的状态,会传到下一个时刻,一直运行下去。
股票LSTM
上面我们详细讲解了长短时记忆网络的结构和算法,下面我们将用长短时记忆网络(LSTM)来处理股票数据。我们要实现的任务就是根据前一天某支股票的开盘价、最高价、最低价、收盘价预测第二天的价格,用预测价格与第二天实际价格的最小平方和作为代价函数。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值