【论文】Conv-LSTM

文章提出了一种基于ConvLSTM的模型来解决短期局部区域降雨强度预测问题。通过将问题建模为时空序列预测,使用卷积结构在输入到状态和状态到状态的转换中,以捕捉时空依赖。ConvLSTM网络由编码和预测两部分组成,用于压缩输入序列并生成预测。实验在移动MNIST数据集上进行,展示了模型的有效性。

在这里插入图片描述
论文地址:https://arxiv.org/pdf/1506.04214v1.pdf

Intro

背景:相对较短的时间内预测局部区域未来的降雨强度
难点:对预测的准确度和时间的精确性要求较高

本文将降水预报问题建模成一个时空序列预测问题,可以在一般sequence-to-sequence学习框架下解决。为了很好地模拟时空关系,本文将FC-LSTM的概念扩展到ConvLSTM,在input-to-state和state-to-state的转换中都具有卷积结构,通过堆叠多个ConvLSTM层并形成编码预测结构,构建end-to-end的可训练模型。

Preliminaries

时序问题

降水预测问题的输入是每6-10分钟获取一次天气雷达信息,用于预测未来1-6小时的天气(6-60个frames)
观察数据来源于一个M x N的 radar echo map, 在网格中的每个grid中,有 P 个随时间变化的测量值。 因此,任何时候的观察都可以用张量 X∈RP∗M∗NX \in R^{P*M*N}XRPMN来表示。时空序列预测问题是在给定之前和当前的 J 个观测值的情况下预测未来最可能的长度为 K 的序列:
在这里插入图片描述
在这里插入图片描述

LSTM

复习:https://zhuanlan.zhihu.com/p/123857569
在这里插入图片描述

Model

conv-lstm

传统LSTM的x是1d-tensor, 而在Conv-LSTM中是3d-tensor。实际上,传统FC-LSTM的输入、输出和隐藏状态也可以看作是后二维为1的三维张量。从这个意义上说,FC-LSTM实际上是ConvLSTM的一个特例,它的所有特性都位于一个单元上。
在这里插入图片描述
conv-lstm通过本地邻居(XtX_tXt)的输入和过去状态(Ht−1,Ct−1H_{t-1}, C_{t-1}Ht1,Ct1)来确定网格中某个单元格的未来状态。 这可以通过上图所示的卷积算子来实现。公式如下:
在这里插入图片描述
其中,*表示卷积算子,o表示product
为了确保states具有与输入相同的行数和列数,在卷积之前需要padding。通常,在第一个输入到来之前,我们将 LSTM 的所有states初始化为零,这对应于对未来的“完全无知”。 如果我们对hidden states初始化为零,我们实际上是在将外部世界的状态设置为零并且假设没有关于外部的先验知识。

encoding-forecasting structure

conv-lstm由两个网络组成,分别是encoding network编码网络 和 forecasting networ预测网络。预测网络的初始状态和单元输出是从编码网络的最后一个状态复制而来的。 这两个网络都是通过堆叠几个 ConvLSTM 层形成的。 由于我们的预测目标与输入具有相同的维度,我们将预测网络中的所有状态连接起来(红色线),并将它们输入一个 1×1 的卷积层以生成最终预测
在这里插入图片描述
换句话说,编码 LSTM 将整个输入序列压缩为隐藏状态张量,预测 LSTM 展开该隐藏状态以给出最终预测:
在这里插入图片描述
总结:conv-lstm就是3d版的传统lstm, 用卷积kernel来解决高维映射的问题。多层的堆叠也增加了网络的表达能力。

实验

base model: FC-LSTM
dataset: moving MNIST
findings:
在这里插入图片描述
在这里插入图片描述

### Conv-LSTM 的概述 Convolutional Long Short-Term Memory (Conv-LSTM) 是一种结合了卷积操作和 LSTM 结构的深度学习模型,主要用于处理具有空间依赖性的序列数据。它通过引入卷积运算来替代传统 LSTM 中的全连接层,从而能够更好地捕捉输入数据的空间特征。 #### 模型特点 Conv-LSTM 将传统的 LSTM 单元中的矩阵乘法替换为卷积操作,使得隐藏状态和细胞状态能够在时间和空间维度上共同演化[^1]。这种特性使其非常适合应用于视频帧预测、天气预报以及任何涉及时空动态变化的任务。 #### 数学表达式 类似于标准 LSTMConv-LSTM 定义了一系列门控机制(输入门、遗忘门、输出门),并通过卷积核完成这些计算: - **遗忘门**: \[ f_t = \sigma(W_f * [h_{t-1}, x_t] + b_f) \] - **输入门**: \[ i_t = \sigma(W_i * [h_{t-1}, x_t] + b_i), \quad g_t = \tanh(W_g * [h_{t-1}, x_t] + b_g) \] - **细胞更新**: \[ c_t = f_t \odot c_{t-1} + i_t \odot g_t \] - **输出门**: \[ o_t = \sigma(W_o * [h_{t-1}, x_t] + b_o), \quad h_t = o_t \odot \tanh(c_t) \] 其中 \(W\) 表示卷积核权重参数,\(*\) 表示卷积操作,而其他符号定义与常规 LSTM 类似[^3]。 --- ### 实现方式 以下是基于 TensorFlow 和 Keras 的 Conv-LSTM 实现代码示例: ```python from tensorflow.keras.models import Sequential from tensorflow.keras.layers import ConvLSTM2D, Dense, Flatten # 构建 ConvLSTM 模型 model = Sequential() # 添加 ConvLSTM 层 model.add(ConvLSTM2D(filters=64, kernel_size=(3, 3), input_shape=(None, 64, 64, 1), # 输入形状:(时间步数, 高度, 宽度, 通道数) padding='same', return_sequences=True)) # 添加额外的 ConvLSTM 层(可选) model.add(ConvLSTM2D(filters=32, kernel_size=(3, 3), padding='same', return_sequences=False)) # 扁平化并添加全连接层 model.add(Flatten()) model.add(Dense(units=10, activation='softmax')) # 输出类别数量调整为实际需求 # 编译模型 model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy']) # 查看模型结构 model.summary() ``` 上述代码展示了如何构建一个多层 ConvLSTM 网络,并将其用于分类任务。`filters` 参数控制每层提取的特征图数量,`kernel_size` 则指定卷积核大小。 --- ### 应用案例分析 在 Moving MNIST 数据集上的实验表明,相比于 Fully Connected LSTM (FC-LSTM),Conv-LSTM 能够更有效地捕获像素级的时间演变模式[^2]。这是因为其内置的卷积操作可以自动提取局部空间关系,减少了对外部预处理的需求。 此外,在气象领域中,Conv-LSTM 已被成功应用于降水分布预测等问题。这类应用通常需要处理高分辨率卫星图像作为输入,因此对模型的空间感知能力提出了较高要求。 --- ### 注意事项 尽管 Conv-LSTM 功能强大,但在实际部署过程中仍需注意以下几点: 1. 训练过程可能较为耗时,建议使用 GPU 加速; 2. 对于复杂场景下的超参调优尤为重要,例如滤波器数目、卷积核尺寸等; 3. 如果目标仅限于一维信号,则可以选择简化版本或其他更适合的方法代替。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值