机器学习笔记 :LSTM 变体 (conv-LSTM、Peephole LSTM、 coupled LSTM、conv-GRU,TPA-LSTM)

1 LSTM复习

机器学习笔记 RNN初探 & LSTM_UQI-LIUWJ的博客-CSDN博客

机器学习笔记:GRU_UQI-LIUWJ的博客-CSDN博客_gru 机器学习

 2 PeepholeLSTM 

有的地方也叫做FC-LSTM?

就是计算输入门、遗忘门和输出门 的时候,我们不仅仅考虑h和x,还将C考虑进来

其他的三项不变 

3  coupled  LSTM

输入门和遗忘门二合一

4 Conv LSTM 

为了构建时空序列预测模型,同时掌握时间和空间信息,所以将LSTM中的全连接权重改为卷积

 可以看到conv LSTM中也使用了peephole LSTM的结构——cell部分也用于遗忘门和输入门的计算

于是我们有如下的计算流程(这里我之前理解错了,谢谢评论区批评指正!)

        在这里*表示 卷积操作 ●表示哈达玛积

        对于conv-LSTM,输入是,w是时间窗口,a,b是 grid的尺寸;k是特征数量

         另一种convLSTM的理解方法是,我们普通的LSTM可以看成最后两个维度都是1 的ConvLSTM,其中卷积核大小为1×1

4.1 ConvLSTM VS CNN+LSTM

        对于时间序列预测问题而言,一般来说不存在conLSTM的结构,因为对于convlstm来说,输入是矩阵形式的,即每一个时间步都是一个矩阵输入(例如视频分类问题),而典型的时间序列预测的每一个时间步输入是一个向量(多变量时间序列预测)或一个标量(单变量时间序列预测)。

        因此在时间序列预测中,一般是使用conv1d+lstm的方式来做,例如输入是一个长度为10的sequence,经过conv1d(padding)之后仍旧是长度为10的sequence,然后这个sequence再送入LSTM,cnn作为滤波器存在,cnn和lstm的网络结构是完全独立的;

          cnn+lstm是无法直接处理视频问题的,因为视频的每一个时间步是一张图像,不考虑多通道问题则至少是一个矩阵,而LSTM中,输入部分和上一个时间步的hidden state的传入部分一般来说是向量。

4.2 图示ConvLSTM

 换言之,我们可以理解为,H,C以及sequence的每个元素X都是三维的tensor,每次我们都是用卷积操作来生成下一个sequence的H和C

5 ConvGRU

和Conv-LSTM类似,也是*表示 卷积操作 ●表示哈达玛积

6 TPA-LSTM

1809.04206.pdf (arxiv.org)

  • 在LSTM的基础上,强调了hidden state的不同dimension对某个dimension预测的重要性是不一样的 

    • 比如下图,原油(crude oil)和Gasoline之间的关联度很大,和Lumber关联度很小
    • 而传统LSTM/时间维度的attention并没有考虑到这个channel之间的重要性
      • ——>通过引入channel-wise attention,提高LSTM的预测精度 

参考文献

【串讲总结】RNN、LSTM、GRU、ConvLSTM、ConvGRU、ST-LSTM - 知乎 (zhihu.com)

<think>好的,用户想了解ConvLSTM的实现和应用方法。首先我需要回忆ConvLSTM的基本概念,然后结合提供的引用资料来组织回答。根据引用[2],ConvLSTM结合了卷积操作和LSTM,适用于时空序列预测,比如天气预测或视频分析。接下来需要解释算法原理,引用[2]提到了结构部分,应该详细说明输入门、遗忘门等如何用卷积代替全连接。然后是实现方法,引用[3]和[4]提到了PyTorch的实现,特别是ConvLSTM类作为nn.Module的子类,可以示例代码展示。应用方面,引用[1]和[2]提到了应用场景,比如雷达回波预测。需要确保LaTeX公式正确,行内公式用$...$,独立公式用$$...$$。还要生成相关问题,可能涉及优化、对比分析等。检查引用标识是否正确添加,比如代码理解引用[^1],算法原理引用[^2]等。最后确保回答结构清晰,分点说明,并符合用户的中文要求。</think>### ConvLSTM实现及应用解析 #### 1. 算法原理 ConvLSTMConvolutional LSTM)结合了卷积神经网络的空间特征提取能力和LSTM的时间序列建模能力,核心公式为: $$ \begin{aligned} i_t &= \sigma(W_{xi} * X_t + W_{hi} * H_{t-1} + b_i) \\ f_t &= \sigma(W_{xf} * X_t + W_{hf} * H_{t-1} + b_f) \\ o_t &= \sigma(W_{xo} * X_t + W_{ho} * H_{t-1} + b_o) \\ \tilde{C}_t &= \tanh(W_{xc} * X_t + W_{hc} * H_{t-1} + b_c) \\ C_t &= f_t \circ C_{t-1} + i_t \circ \tilde{C}_t \\ H_t &= o_t \circ \tanh(C_t) \end{aligned} $$ 其中$*$表示卷积操作,$\circ$为逐元素乘法。 #### 2. PyTorch实现 引用[3][4]提供的开源项目实现了ConvLSTM模块: ```python import torch.nn as nn class ConvLSTMCell(nn.Module): def __init__(self, input_dim, hidden_dim, kernel_size, bias=True): super().__init__() self.hidden_dim = hidden_dim padding = kernel_size[0] // 2, kernel_size[1] // 2 self.conv = nn.Conv2d( in_channels=input_dim + hidden_dim, out_channels=4 * hidden_dim, # 对应i,f,o,g四个门 kernel_size=kernel_size, padding=padding, bias=bias ) def forward(self, input_tensor, cur_state): h_cur, c_cur = cur_state combined = torch.cat([input_tensor, h_cur], dim=1) combined_conv = self.conv(combined) cc_i, cc_f, cc_o, cc_g = torch.split(combined_conv, self.hidden_dim, dim=1) i = torch.sigmoid(cc_i) f = torch.sigmoid(cc_f) o = torch.sigmoid(cc_o) g = torch.tanh(cc_g) c_next = f * c_cur + i * g h_next = o * torch.tanh(c_next) return h_next, c_next ``` #### 3. 应用场景 主要应用于时空序列预测任务: - 气象预测:雷达回波图预测降雨演变[^1] - 视频预测:预测视频后续帧内容 - 交通流量预测:处理交通网络时空数据 - 医学影像分析:动态MRI序列分析 #### 4. 优势特性 1. 空间特征保留:卷积操作保持空间结构 2. 参数共享:卷积核共享减少参数量 3. 局部感知:适应图像数据的局部相关性
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UQI-LIUWJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值