【视频】LSTM神经网络架构和原理及其在Python中的预测应用|数据分享

简介: 【视频】LSTM神经网络架构和原理及其在Python中的预测应用|数据分享

长短期记忆网络——通常称为“LSTM”——是一种特殊的RNN递归神经网络,能够学习长期依赖关系。



视频:LSTM神经网络架构和工作原理及其在Python中的预测应用


么是依赖关系?

假设您在观看视频时记得前一个场景,或者在阅读一本书时您知道前一章发生了什么。

传统的神经网络无法做到这一点,这是一个主要缺点。例如,假设您想对电影中每一点发生的事件进行分类。目前尚不清楚传统的神经网络如何利用电影中先前事件来推理后来的事件。

递归神经网络解决了这个问题。它们是带有循环的网络,允许信息持续存在。循环神经网络有循环。

在上图中,一大块神经网络,查看一些输入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

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'\])

下面是训练集与验证集的模型损失的关系图。

预测与实际降雨量的关系图也被生成。

相关文章
|
19天前
|
网络协议 安全 5G
网络与通信原理
【10月更文挑战第14天】网络与通信原理涉及众多方面的知识,从信号处理到网络协议,从有线通信到无线通信,从差错控制到通信安全等。深入理解这些原理对于设计、构建和维护各种通信系统至关重要。随着技术的不断发展,网络与通信原理也在不断演进和完善,为我们的生活和工作带来了更多的便利和创新。
58 3
|
1天前
|
运维 物联网 网络虚拟化
网络功能虚拟化(NFV):定义、原理及应用前景
网络功能虚拟化(NFV):定义、原理及应用前景
10 3
|
12天前
|
开发者 容器
Flutter&鸿蒙next 布局架构原理详解
本文详细介绍了 Flutter 中的主要布局方式,包括 Row、Column、Stack、Container、ListView 和 GridView 等布局组件的架构原理及使用场景。通过了解这些布局 Widget 的基本概念、关键属性和布局原理,开发者可以更高效地构建复杂的用户界面。此外,文章还提供了布局优化技巧,帮助提升应用性能。
75 4
|
12天前
|
存储 Dart 前端开发
flutter鸿蒙版本mvvm架构思想原理
在Flutter中实现MVVM架构,旨在将UI与业务逻辑分离,提升代码可维护性和可读性。本文介绍了MVVM的整体架构,包括Model、View和ViewModel的职责,以及各文件的详细实现。通过`main.dart`、`CounterViewModel.dart`、`MyHomePage.dart`和`Model.dart`的具体代码,展示了如何使用Provider进行状态管理,实现数据绑定和响应式设计。MVVM架构的分离关注点、数据绑定和可维护性特点,使得开发更加高效和整洁。
145 3
|
12天前
|
网络协议 安全 算法
网络空间安全之一个WH的超前沿全栈技术深入学习之路(9):WireShark 简介和抓包原理及实战过程一条龙全线分析——就怕你学成黑客啦!
实战:WireShark 抓包及快速定位数据包技巧、使用 WireShark 对常用协议抓包并分析原理 、WireShark 抓包解决服务器被黑上不了网等具体操作详解步骤;精典图示举例说明、注意点及常见报错问题所对应的解决方法IKUN和I原们你这要是学不会我直接退出江湖;好吧!!!
网络空间安全之一个WH的超前沿全栈技术深入学习之路(9):WireShark 简介和抓包原理及实战过程一条龙全线分析——就怕你学成黑客啦!
|
23天前
|
机器学习/深度学习 人工智能 监控
深入理解深度学习中的卷积神经网络(CNN):从原理到实践
【10月更文挑战第14天】深入理解深度学习中的卷积神经网络(CNN):从原理到实践
70 1
|
24天前
|
容器
Flutter&鸿蒙next 布局架构原理详解
Flutter&鸿蒙next 布局架构原理详解
|
25天前
|
网络协议 Linux 应用服务中间件
Socket通信之网络协议基本原理
【10月更文挑战第10天】网络协议定义了机器间通信的标准格式,确保信息准确无损地传输。主要分为两种模型:OSI七层模型与TCP/IP模型。
|
12天前
|
网络协议 安全 算法
网络空间安全之一个WH的超前沿全栈技术深入学习之路(9-2):WireShark 简介和抓包原理及实战过程一条龙全线分析——就怕你学成黑客啦!
实战:WireShark 抓包及快速定位数据包技巧、使用 WireShark 对常用协议抓包并分析原理 、WireShark 抓包解决服务器被黑上不了网等具体操作详解步骤;精典图示举例说明、注意点及常见报错问题所对应的解决方法IKUN和I原们你这要是学不会我直接退出江湖;好吧!!!
|
24天前
|
机器学习/深度学习 算法 数据建模
计算机前沿技术-人工智能算法-生成对抗网络-算法原理及应用实践
计算机前沿技术-人工智能算法-生成对抗网络-算法原理及应用实践
24 0