LSTM理解

本文详细介绍了LSTM(长短时记忆网络)的工作原理,包括忘记门、输入门和输出门的作用及计算过程,并探讨了LSTM的一些变体如带有窥视孔连接的LSTM、耦合门LSTM以及GRU。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考博文链接:

作者:Not_GOD
链接:http://www.jianshu.com/p/9dc9f41f0b29
來源:简书

http://www.jianshu.com/p/9dc9f41f0b29

RNN与LSTM理解还可以参考http://blog.youkuaiyun.com/Dark_Scope/article/details/47056361,包含LSTM前向传播公式推导

LSTM的反向传播公式推导http://www.cnblogs.com/ooon/p/5594438.html

LSTM逐步理解

在我们 LSTM 中的第一步是决定我们会从细胞状态中丢弃什么信息。这个决定通过一个称为 忘记门层完成。该门会读取 h_{t-1}x_t,输出一个在 0 到 1 之间的数值给每个在细胞状态 C_{t-1} 中的数字。1 表示“完全保留”,0 表示“完全舍弃”。
让我们回到语言模型的例子中来基于已经看到的预测下一个词。在这个问题中,细胞状态可能包含当前 主语的性别,因此正确的 代词可以被选择出来。当我们看到新的 主语,我们希望忘记旧的 主语

下一步是确定什么样的新信息被存放在细胞状态中。这里包含两个部分。第一,sigmoid 层称 “输入门层” 决定什么值我们将要更新。然后,一个 tanh 层创建一个新的候选值向量, \tilde{C}_t,会被加入到状态中。下一步,我们会讲这两个信息来产生对状态的更新。
在我们语言模型的例子中,我们希望增加新的主语的性别到细胞状态中,来替代旧的需要忘记的主语。
确定更新的信息
确定更新的信息

现在是更新旧细胞状态的时间了,C_{t-1} 更新为 C_t。前面的步骤已经决定了将会做什么,我们现在就是实际去完成。
我们把旧状态与 f_t 相乘,丢弃掉我们确定需要丢弃的信息。接着加上 i_t * \tilde{C}_t。这就是新的候选值,根据我们决定更新每个状态的程度进行变化。
在语言模型的例子中,这就是我们实际根据前面确定的目标,丢弃旧代词的性别信息并添加新的信息的地方。

更新细胞状态
更新细胞状态

最终,我们需要确定输出什么值。这个输出将会基于我们的细胞状态,但是也是一个过滤后的版本。首先,我们运行一个 sigmoid 层来确定细胞状态的哪个部分将输出出去。接着,我们把细胞状态通过 tanh 进行处理(得到一个在 -1 到 1 之间的值)并将它和 sigmoid 门的输出相乘,最终我们仅仅会输出我们确定输出的那部分。
在语言模型的例子中,因为他就看到了一个 代词,可能需要输出与一个 动词 相关的信息。例如,可能输出是否代词是单数还是负数,这样如果是动词的话,我们也知道动词需要进行的词形变化。

输出信息
输出信息

LSTM 的变体

我们到目前为止都还在介绍正常的 LSTM。但是不是所有的 LSTM 都长成一个样子的。实际上,几乎所有包含 LSTM 的论文都采用了微小的变体。差异非常小,但是也值得拿出来讲一下。
其中一个流形的 LSTM 变体,就是由 Gers & Schmidhuber (2000) 提出的,增加了 “peephole connection”。是说,我们让 门层 也会接受细胞状态的输入。

peephole 连接
peephole 连接

上面的图例中,我们增加了 peephole 到每个门上,但是许多论文会加入部分的 peephole 而非所有都加。

另一个变体是通过使用 coupled 忘记和输入门。不同于之前是分开确定什么忘记和需要添加什么新的信息,这里是一同做出决定。我们仅仅会当我们将要输入在当前位置时忘记。我们仅仅输入新的值到那些我们已经忘记旧的信息的那些状态 。

coupled 忘记门和输入门
coupled 忘记门和输入门

另一个改动较大的变体是 Gated Recurrent Unit (GRU),这是由 Cho, et al. (2014) 提出。它将忘记门和输入门合成了一个单一的 更新门。同样还混合了细胞状态和隐藏状态,和其他一些改动。最终的模型比标准的 LSTM 模型要简单,也是非常流行的变体。

GRU
GRU


作者:Not_GOD
链接:http://www.jianshu.com/p/9dc9f41f0b29
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。



### CNN-LSTM 架构详解 #### 1. 结合卷积神经网络 (CNN) 和长短期记忆网络 (LSTM) CNN-LSTM 是一种混合模型,它结合了两种强大的深度学习技术来处理复杂的数据模式。一方面,CNN 能够有效地提取局部特征;另一方面,LSTM 可以捕捉长时间依赖关系。 - **CNN 的作用**:在一维时间序列上滑动窗口操作可以自动识别出不同尺度下的时空关联特性[^3]。 - **LSTM 的功能**:对于经过 CNN 提取后的特征图谱,LSTM 层能够进一步分析这些特征随时间变化的趋势并做出预测。 ```python import torch.nn as nn class CNNTimeseriesModel(nn.Module): def __init__(self, input_size=10, hidden_dim=50, num_layers=2, output_size=1): super(CNNTimeseriesModel, self).__init__() # 定义一维卷积层 self.conv1d = nn.Conv1d(in_channels=input_size, out_channels=hidden_dim, kernel_size=3) # LSTM 层定义 self.lstm = nn.LSTM(input_size=hidden_dim, hidden_size=hidden_dim, num_layers=num_layers, batch_first=True) # 输出全连接层 self.fc_out = nn.Linear(hidden_dim, output_size) def forward(self, x): conv_output = self.conv1d(x.permute(0, 2, 1)) lstm_input = conv_output.permute(0, 2, 1).contiguous() lstm_output, _ = self.lstm(lstm_input) prediction = self.fc_out(lstm_output[:, -1, :]) return prediction ``` #### 2. 应用场景举例 这种组合特别适用于那些既存在短周期波动又具有长期趋势的时间序列数据分析任务中。比如金融市场的股票价格走势预测就是一个典型例子,在这里不仅需要关注每日涨跌情况(即短期内的变化),还需要考虑宏观经济环境对公司业绩的影响因素所带来的更长远影响。 另一个实际案例是在物联网设备监控领域内,通过对传感器采集到的各种物理量如温度、湿度等进行建模,从而提前预警可能出现的问题或故障状态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值