在这一节中,我们将先向大家介绍长短时记忆网络(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(Wh⋅ht−1+Wi⋅xt)yt=fo(Wo⋅ht)
在普通递归神经网络的基础上,可以形成深层递归网络和双向递归网络,原现与普通递归神经网络类似,这里就不再具体介绍了。
但是普通递归神经网络在具体使用过程中,由于只能具有短时记忆,并用会出现梯度爆炸等问题,所以在实际应用中,人们一般很少直接使用递归神经网络(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}
ht−1,输入信号为
x
t
\boldsymbol{x}_t
xt,遗忘门的连接权值为
W
f
W_f
Wf,
[
h
t
−
1
,
x
t
]
[\boldsymbol{h}_{t-1},\boldsymbol{x}_t]
[ht−1,xt]表示将向量
h
t
−
1
\boldsymbol{h}_{t-1}
ht−1和
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⋅[ht−1,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⋅[ht−1,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=ft⊗ct−1+it⊗c~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⋅[ht−1,xt]+bo)ht=ot⋅tanh(ct)
通过上述步聚,就产生了
t
t
t时刻的状态,会传到下一个时刻,一直运行下去。
股票LSTM
上面我们详细讲解了长短时记忆网络的结构和算法,下面我们将用长短时记忆网络(LSTM)来处理股票数据。我们要实现的任务就是根据前一天某支股票的开盘价、最高价、最低价、收盘价预测第二天的价格,用预测价格与第二天实际价格的最小平方和作为代价函数。
深度学习量化交易---0.2.基于长短时记忆网络预测股票价格1
最新推荐文章于 2024-01-29 10:34:49 发布