全文下载链接:http://tecdat.cn/?p=23544
在本文中,长短期记忆网络——通常称为“LSTM”——是一种非凡的 RNN 递归神经网络,可能学习长期依赖关系。
最近咱们被客户要求撰写对于 LSTM 的钻研报告,包含一些图形和统计输入。
什么是依赖关系?
假如您在观看视频时记得前一个场景,或者在浏览一本书时您晓得前一章产生了什么。
传统的神经网络无奈做到这一点,这是一个次要毛病。例如,假如您想对电影中每一点产生的事件进行分类。目前尚不分明传统的神经网络如何利用电影中先前事件来推理起初的事件。
递归神经网络解决了这个问题。它们是带有循环的网络,容许信息继续存在。循环神经网络有循环。
在上图中,一大块神经网络,查看一些输出 x 并输入一个值 h. 循环容许信息从网络的一个步骤传递到下一个步骤。
这些循环使循环神经网络看起来有点神秘。然而,如果你想得更多,就会发现它们与一般的神经网络并没有什么不同。循环神经网络能够被认为是同一网络的多个正本,每个正本都将消息传递给后继者。考虑一下如果咱们开展循环会产生什么:
这种链状性质表明循环神经网络与序列和列表密切相关。它们是用于此类数据的神经网络的天然架构。在过来的几年里,将 RNN 利用于各种问题获得了令人难以置信的胜利:语音辨认、语言建模、翻译、图像字幕……举不胜举。这些胜利的要害是应用“LSTM”,这是一种十分非凡的循环神经网络,简直所有基于循环神经网络的令人兴奋的后果都是用它们实现的。本文将探讨的正是这些 LSTM。
长期依赖问题
上面是一个对于如何应用循环神经网络(RNN)来拟合语言模型的例子。
RNN 的吸引力之一是它们可能可能将先前的信息与当前任务分割起来,例如应用先前的视频帧可能会告知对以后帧的了解。如果 RNN 能够做到这一点,它们将十分有用。但他们能够吗?
有时,咱们只须要查看最近的信息即可执行当前任务。例如,思考一个语言模型试图依据之前的单词预测下一个单词。如果咱们试图预测“云在天空”中的最初一个词,咱们不须要任何进一步的上下文——很显著下一个词将是天空。在这种状况下,相干信息与所需地位之间的差距很小,RNN 能够学习应用过来的信息。
但也有咱们须要更多上下文的状况。思考尝试预测文本“我在中国长大……我说纯粹的中文”中的最初一个词。最近的信息表明,下一个词可能是一种语言的名称,但如果咱们想放大哪种语言的范畴,咱们须要中国的上下文,从更远的中央。相干信息和须要的点之间的差距齐全有可能变得十分大。
随着差距的扩充,RNN 变得无奈学习连贯信息。
LSTM 网络
长短期记忆网络——通常称为“LSTM”——是一种非凡的 RNN,可能学习长期依赖关系。它们在解决各种各样的问题时表现出色,当初被宽泛应用。LSTM 被明确设计为防止长期依赖问题。长时间记住信息实际上是他们的默认行为,而不是他们难以学习的货色!
所有循环神经网络都具备神经网络的反复模块链的模式。在规范 RNN 中,此反复模块将具备非常简单的构造,例如单个 tanh 层。
LSTM 也有这种链状构造,但反复模块有不同的构造。不是只有一个神经网络层,而是三个局部组成,以一种十分非凡的形式进行交互。
LSTM 的工作形式十分相似于 RNN 单元。这是 LSTM 网络的外部性能。LSTM 由三个局部组成,如图所示,每个局部执行一个独自的性能。第一局部抉择来自前一个工夫戳的信息是被记住还是不相干并且能够被忘记。在第二局部中,单元尝试从该单元的输出中学习新信息。最初,在第三局部,单元将更新的信息从以后工夫戳传递到下一个工夫戳。LSTM 单元的这三个局部称为门。第一局部称为遗记门或忘记门,第二局部称为输出门,最初一部分称为输入门。
Python 用 LSTM 长短期记忆神经网络对不稳固降雨量工夫序列进行预测剖析
每年的降雨量数据可能是相当不安稳的。与温度不同,温度通常在四季中体现出显著的趋势,而雨量作为一个工夫序列可能是相当不安稳的。冬季的降雨量与夏季的降雨量一样多是很常见的。
上面是某地区 2020 年 11 月降雨量数据 ( 查看文末理解数据获取形式 ) 的图解。
作为一个间断的神经网络,LSTM 模型能够证实在解释工夫序列的波动性方面有劣势。
应用 Ljung-Box 测验,小于 0.05 的 p 值表明这个工夫序列中的残差体现出随机模式,表明有显著的波动性。
>>> sm.stats.acorr_ljungbox(res.resid, lags=[10])
Ljung-Box 测验
Dickey-Fuller 测验
数据操作和模型配置
该数据集由 722 个月的降雨量数据组成。
抉择 712 个数据点用于训练和验证,即用于建设 LSTM 模型。而后,过来 10 个月的数据被用来作为测试数据,与 LSTM 模型的预测后果进行比拟。
上面是数据集的一个片段。
而后造成一个数据集矩阵,将工夫序列与过来的数值进行回归。
# 造成数据集矩阵
for i in range(len(df)-previous-1):
a = df[i:(i+previous), 0]
dataX.append(a)
dataY.append(df[i + previous, 0])
而后用 MinMaxScaler 对数据进行标准化解决。
将前一个参数设置为 120,训练和验证数据集就建设起来了。作为参考,previous = 120 阐明模型应用从 t – 120 到 t – 1 的过来值来预测工夫 t 的雨量值。
前一个参数的抉择要通过试验,但抉择 120 个时间段是为了确保辨认到工夫序列的波动性或极其值。
# 训练和验证数据的划分
train_size = int(len(df) * 0.8)
val_size = len(df) - train_size
train, val = df[0:train_size,:], df[train_size:len(df),:]# 后期的数量
previous = 120
而后,输出被转换为样本、工夫步骤、特色的格局。
# 转换输出为[样本、工夫步骤、特色]。np.reshape(X_train, (shape[0], 1, shape[1]))
模型训练和预测
该模型在 100 个历时中进行训练,并指定了 712 个批次的大小(等于训练和验证集中的数据点数量)。
# 生成 LSTM 网络
model = tf.keras.Sequential()
# 列出历史中的所有数据
print(history.history.keys())
# 总结准确度变动
plt.plot(history.history['loss'])
上面是训练集与验证集的模型损失的关系图。
预测与理论降雨量的关系图也被生成。
点击题目查阅往期内容
在 Python 中应用 LSTM 和 PyTorch 进行工夫序列预测
左右滑动查看更多
01
02
03
04
# 绘制所有预测图
plt.plot(valpredPlot)
预测后果在均匀方向准确性(MDA)、均匀平方根误差(RMSE)和均匀预测误差(MFE)的根底上与验证集进行比拟。
mda(Y_val, predictions)0.9090909090909091
>>> mse = mean_squared_error(Y_val, predictions)
>>> rmse = sqrt(mse)
>>> forecast_error
>>> mean_forecast_error = np.mean(forecast_error)
- MDA: 0.909
- RMSE: 48.5
- MFE: -1.77
针对测试数据进行预测
尽管验证集的后果相当可观,但只有将模型预测与测试(或未见过的)数据相比拟,咱们能力对 LSTM 模型的预测能力有正当的信念。
如前所述,过来 10 个月的降雨数据被用作测试集。而后,LSTM 模型被用来预测将来 10 个月的状况,而后将预测后果与理论值进行比拟。
至 t -120 的先前值被用来预测工夫 t 的值。
# 测试(未见过的)预测
np.array([tseries.iloctseries.iloc,t
取得的后果如下
- MDA: 0.8
- RMSE: 49.57
- MFE: -6.94
过来 10 个月的均匀降雨量为 148.93 毫米,预测精度显示出与验证集类似的性能,而且绝对于整个测试集计算的均匀降雨量而言,误差很低。
论断
在这个例子中,你曾经看到:
- 如何筹备用于 LSTM 模型的数据
- 构建一个 LSTM 模型
- 如何测试 LSTM 的预测准确性
- 应用 LSTM 对不稳固的工夫序列进行建模的劣势
数据获取
在上面公众号后盾回复“降雨量数据”,可收费获取残缺数据。
本文摘选 《 Python 用 LSTM 长短期记忆神经网络对不稳固降雨量工夫序列进行预测剖析 》,点击“ 浏览原文”获取全文残缺材料。
点击题目查阅往期内容
深度学习实现自编码器 Autoencoder 神经网络异样检测心电图 ECG 工夫序列 spss modeler 用决策树神经网络预测 ST 的股票
Python 中 TensorFlow 的长短期记忆神经网络 (LSTM)、指数挪动平均法预测股票市场和可视化
RNN 循环神经网络、LSTM 长短期记忆网络实现工夫序列长期利率预测
联合新冠疫情 COVID-19 股票价格预测:ARIMA,KNN 和神经网络工夫序列剖析
深度学习:Keras 应用神经网络进行简略文本分类剖析新闻组数据
用 PyTorch 机器学习神经网络分类预测银行客户散失模型
PYTHON 用 LSTM 长短期记忆神经网络的参数优化办法预测工夫序列洗发水销售数据
Python 用 Keras 神经网络序列模型回归拟合预测、准确度检查和后果可视化
R 语言深度学习卷积神经网络 (CNN)对 CIFAR 图像进行分类:训练与后果评估可视化
深度学习:Keras 应用神经网络进行简略文本分类剖析新闻组数据
Python 用 LSTM 长短期记忆神经网络对不稳固降雨量工夫序列进行预测剖析
R 语言深度学习 Keras 循环神经网络 (RNN) 模型预测多输入变量工夫序列
R 语言 KERAS 用 RNN、双向 RNNS 递归神经网络、LSTM 剖析预测温度工夫序列、IMDB 电影评分情感
Python 用 Keras 神经网络序列模型回归拟合预测、准确度检查和后果可视化
Python 用 LSTM 长短期记忆神经网络对不稳固降雨量工夫序列进行预测剖析
R 语言中的神经网络预测工夫序列:多层感知器(MLP)和极限学习机(ELM)数据分析报告
R 语言深度学习:用 keras 神经网络回归模型预测工夫序列数据
Matlab 用深度学习长短期记忆(LSTM)神经网络对文本数据进行分类
R 语言 KERAS 深度学习 CNN 卷积神经网络分类辨认手写数字图像数据(MNIST)
MATLAB 中用 BP 神经网络预测人体脂肪百分比数据
Python 中用 PyTorch 机器学习神经网络分类预测银行客户散失模型
R 语言实现 CNN(卷积神经网络)模型进行回归数据分析
SAS 应用鸢尾花 (iris) 数据集训练人工神经网络 (ANN) 模型
【视频】R 语言实现 CNN(卷积神经网络)模型进行回归数据分析
Python 应用神经网络进行简略文本分类
R 语言用神经网络改良 Nelson-Siegel 模型拟合收益率曲线剖析
R 语言基于递归神经网络 RNN 的温度工夫序列预测
R 语言神经网络模型预测车辆数量工夫序列
R 语言中的 BP 神经网络模型剖析学生问题
matlab 应用长短期记忆(LSTM)神经网络对序列数据进行分类
R 语言实现拟合神经网络预测和后果可视化
用 R 语言实现神经网络预测股票实例
应用 PYTHON 中 KERAS 的 LSTM 递归神经网络进行工夫序列预测
python 用于 NLP 的 seq2seq 模型实例: 用 Keras 实现神经网络机器翻译
用于 NLP 的 Python:应用 Keras 的多标签文本 LSTM 神经网络分类