LSTM(Long Short Term Memory Network)长短时记忆网络,是一种改进之后的循环神经网络,可以解决 RNN 无法处理长距离的依赖的问题,在时间序列预测问题上面也有广泛的应用。
今天我们根据问题的输入输出模式划分,来看一下几种时间序列问题所对应的 LSTM 模型结构如何实现。
1. Univariate
Univariate 是指:
input 为多个时间步,
output 为一个时间的问题。
数例:
训练集:
X, y
10, 20, 30 40
20, 30, 40 50
30, 40, 50 60
…
预测输入:
X,
70, 80, 90
模型的 Keras 代码:
# define model【Vanilla LSTM】
model = Sequential()
model.add( LSTM(50, activation='relu', input_shape = (n_steps, n_features)) )
model.add( Dense(1) )
model.compile(optimizer='adam', loss='mse')
n_steps = 3
n_features = 1
其中:
n_steps
为输入的 X 每次考虑几个时间步
n_features
为每个时间步的序列数
这个是最基本的模型结构,我们后面几种模型会和这个进行比较。
2. Multiple Input
Multiple Input 是指:
input 为多个序列,
output 为一个序列的问题。
数例:
训练集:
X, y
[[10 15]
[20 25]
[30 35]] 65
[[20 25]
[30 35]
[40 45]] 85
[[30 35]
[40 45]
[50 55]] 105
[[40 45]
[50 55]
[60 65]] 125
…
预测输入:
X,
80, 85
90, 95
100,