LSTM解释+例子

LSTM通过门控结构解决RNN的长期依赖问题,如遗忘门、输入门和输出门,有效地保留和更新长期信息。在处理序列数据如文本时,隐藏状态和记忆单元协同工作,捕捉上下文和语义,适应如电影分析和电视剧观看等场景。

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

                          

作用

        LSTM为了解决RNN存在长期依赖的问题。比如分析电影的时候,某些情节的推断需要依赖很久以前的一些细节,随着时间间隔不断增大,RNN会丧失学习到连接如此远的信息的能力。

怎么做到的?

        LSTM可以通过“门”结构来去除或者增加“细胞状态”的信息,实现了对重要内容的保留和对不重要内容的去除,通过Sigmoid层输出一个0到1之间的概率值,描述每个部分有多少量可以通过。

细节

        假设判断一句话的情感"我喜欢这个电影":

  1. 预处理:首先,我们需要将这个句子转换为单词向量。我们可以使用预训练的词嵌入模型将每个单词映射为固定大小的向量。
  2. 时间步 t=1:在LSTM中,句子是一个序列,每个单词对应一个时间步。在第一个时间步 t=1,我们有一个输入单词 "我" 的词向量 x(1) 和初始的隐藏状态 h(0)。
  3. LSTM计算:在时间步 t=1,LSTM会根据输入 x(1) 和初始隐藏状态 h(0) 来计算当前时间步的输出和新的隐藏状态。
  • 遗忘门:LSTM使用遗忘门 f(1) 来决定在当前时间步要遗忘哪些以前的记忆信息。
  • 输入门:LSTM使用输入门 i(1) 来决定在当前时间步要添加哪些新的信息到记忆中。
  • 候选记忆单元:LSTM计算候选记忆单元 C_hat(1),即一个临时的记忆单元,它将用于计算输入门和更新记忆单元 C(1)。
  • 记忆单元更新:根据遗忘门 f(1)、输入门 i(1) 和候选记忆单元 C_hat(1),LSTM更新记忆单元 C(1) 来保留需要的长期依赖信息。
  • 隐藏状态更新:LSTM根据输出门和记忆单元 C(1) 来更新隐藏状态 h(1),并将其作为当前时间步的输出。

     4. 时间步 t=2:在第二个时间步 t=2,我们有下一个输入单词 "喜欢" 的词向量 x(2) 和上一个时间步的隐藏状态 h(1)。

     5. LSTM计算:与之前一样,LSTM在时间步 t=2 会根据输入 x(2) 和上一个时间步的隐藏状态    h(1) 来计算当前时间步的输出和新的隐藏状态。

     6. 重复步骤:这个过程会一直持续,直到处理完整个句子中的所有单词。

注:

xt:当前时刻的输入向量。

ht:可以理解为短时记忆。

ct:可以理解为长时记忆。

比如写日记:

想象你在写日记记录你的生活,每天都写下当天的情况和感受。在写日记的过程中,你会在每天的日记中提到前一天发生的事情,同时也会根据当天的情况记录下新的感受。这样,随着时间的推移,你的日记就成为了一个连续的序列,每个时间步代表一天的记录。

在这个比喻中:

  • 输入 x(t):每天的日记内容,代表当天的输入特征或信息。
  • 隐藏状态 h(t):你在某一天写下的记录,它是你对过去日记内容和当天信息的综合记忆。这个隐藏状态 h(t) 包含了过去的经历和感受,并且会传递给明天的日记,作为第二天的记忆基础。
  • 记忆单元 C(t):在这个比喻中,可以将记忆单元 C(t) 视为你在每天写日记时的内心状态,它存储着更为长期的情感和信息。这些信息会在写日记的过程中根据输入 x(t) 和前一天的隐藏状态 h(t-1) 来更新。

比如看电视剧: 

假设你正在观看一部电视剧,其中有一个复杂的剧情。每个时间步就是一集,而隐藏状态 h 就是你在每一集结束时的心理状态和记忆。

  • 输入 x(t):在每一集中,你观看了剧情的不同事件和情节,这些事件和情节对应于输入 x(t)。每一集的情节会引发你的情感和思考。

  • 隐藏状态 h(t):在每一集结束时,你会对当集的情节进行综合记忆和理解,形成一个心理状态。这个隐藏状态 h(t) 就代表了你对过去所有已观看的剧情和当前集的情节的综合记忆和情感体验。

  • 记忆单元 C(t):记忆单元 C(t) 可以类比为你对整个剧情的持久记忆,即跨越整个剧集的情节线索和重要事件。这些持久记忆会在每一集结束时结合当前情节和隐藏状态 h(t) 来更新。

随着电视剧的推进,你会随着每一集的观看不断更新你的心理状态和对剧情的理解。每一集的情节都会影响你的情感和认知,而隐藏状态 h 就是你在整个观看过程中的心理状态和综合理解。记忆单元 C 则类似于你在观看电视剧过程中形成的持久记忆和情节线索,帮助你更好地理解剧情的整体。

通过这个比喻,我们可以理解 LSTM 中隐藏状态 h 的作用:它是一种记忆和综合机制,能够在序列中记住过去的信息,并结合当前的输入信息来生成新的隐藏状态,以便更好地理解和处理序列数据。类似地,当你观看电视剧时,你会在每一集结束时更新你的心理状态和记忆,并将这些综合的记忆应用于之后的剧情观看。这种记忆机制使得LSTM能够捕捉序列中的长期依赖关系,从而更好地理解序列数据中的上下文和语义。

h和C的区别

使用炼金术士炼金的过程来比喻LSTM中隐藏状态 h 和记忆单元 C 的区别,可以想象以下情景:

将LSTM比作一个炼金术士,而序列数据则是原材料。我们希望通过炼金术士的操作,将原材料逐步转化为有价值的物品。

  • 隐藏状态 h: 隐藏状态 h 类比为炼金术士在每个阶段的炼金结果。在每个炼金阶段,炼金术士都会得到一个中间产物(隐藏状态 h),这个产物记录了当前阶段的一些转化结果,是一个中间的短期状态信息。

  • 记忆单元 C: 记忆单元 C 可以类比为炼金术士在整个炼金过程中积累的知识和记忆。它是一个持久的存储单元,用于捕捉过去阶段的关键信息,而不仅仅是当前阶段的短期状态。

### LSTM与GNN结合的应用 #### 背景介绍 长短期记忆网络(LSTM)擅长处理和预测时间序列中的事件,尤其对于具有复杂长期依赖性的数据表现优异[^1]。另一方面,图神经网络(GNN)则专注于结构化数据上的节点间关系建模,可以有效地表示实体及其相互作用[^2]。 #### 结合方式 当两者结合起来时,可以通过先利用GNN捕捉静态或准静态的关系模式来增强LSTM的时间维度分析能力。具体来说,在某些应用场景下,比如交通流量预测中,车辆之间的相对位置变化构成了随时间演化的动态图形;此时采用GNN-LSTM架构就显得尤为合适——前者负责编码即时的空间关联性,后者用于追踪这些联系如何随着时间发展而改变[^5]。 #### 应用实例 在一个具体的例子中,研究者们提出了GCN-LSTM混合模型来进行短程交通状况预报。该方法不仅考虑到了道路网内各路段间的固有连接特性(由GCN部分实现),还兼顾了历史车流记录所蕴含的趋势规律(借助于LSTM组件)。实验结果显示这种组合策略能显著提高对未来路况估计精度,并且优于单独使用的传统机器学习算法或是简单的基线方案[^3]。 ```python import torch from torch_geometric.nn import GCNConv, RNN class GCNLSTM(torch.nn.Module): def __init__(self, input_dim, hidden_dim, output_dim): super(GCNLSTM, self).__init__() self.gcn = GCNConv(input_dim, hidden_dim) self.lstm = RNN(hidden_dim, output_dim) def forward(self, x, edge_index): h = self.gcn(x, edge_index).relu() out = self.lstm(h.unsqueeze(0)) return out.squeeze() # 假设我们有一个batch_size=1数据集 data = ... # 包含node_features 和 edge_indices 的 PyTorch Geometric Data 对象 model = GCNLSTM(data.num_node_features, 16, 1) output = model(data.x, data.edge_index) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值