本篇详细介绍 LSTM 及如何以 LSTM 建模预测时间序列。
长短期记忆模型(Long short-term memory,LSTM)为一特殊的 RNN 模型(递归神经网络)
目的是要解决「长序列」训练过程中的梯度消失和梯度爆炸问题,因此相比普通的 RNN,LSTM 能够在更长的序列中有较好的表现。
LSTM 元件与 RNN 不同的地方在於:
state 数量
LSTM cell state 的更新阶段(门控)
可以把它想成一个记忆区,由这三种门控决定什麽资料要被模型记忆并更新到 cell state 传输至下一层。
复习一下在 Day10 曾经列过的分类:
return_sequence
设为 True
股价包含以下属性:
透过神经网络训练捕捉时序特徵,预测未来时间点的均价(当日最高价与最低价之平均)
基本上前处理就是看不同资料集怎麽做,在递归神经网络这边比较重点的是训练格式的转换。
要根据每个「要被预测的时间点 (output)」制作 input data,使用滑动视窗的概念,形成长度相同的许多训练样本,代表各个「要被预测的时间点」前「N 个时间点」的资讯。
因为样本是由不同时间窗格中的序列所组成,LSTM 能够去学习前一段时间和所需预测时间点之间的时序关系。
滑动视窗的概念,可以参考下面这张示意图:
图片来源:researchgate.net
def build_model():
model = Sequential()
model.add(LSTM(128, input_shape=(74, 30), return_sequence=True))
model.add(Dropout(0.3))
model.add(LSTM(32))
model.add(Dropout(0.15))
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer='adam',
loss='mse',
metrics=['mae'])
model.summary()
return model
(还在更新中)
<<: 【在厨房想30天的演算法】Day 12 资料结构:杂凑表 Hash Table
>>: [Day 12]从零开始学习 JS 的连续-30 Days---DOM是什麽?
Control GPIO peripherals using digital input/outpu...
今天一样是 Supporting PMUs on RISC-V platforms 相关的内容,先来...
1-3简化指令电脑(SIC) 简介 简化指令电脑(Simplified Instructional ...
Golang goroutine 我自己理解goroutine 就很类似其他语言的thread[备注...
前面讲 函式 function 时提到参数,回头看自己打的文章发现错误的地方修正了一下。 Param...