《深度学习》LSTM 长短期记忆网络 结构及原理解析

目录

一、关于LSTM网络

1、什么是LSTM网络

        举例:

2、RNN网络的结构

3、Tanh双曲正切函数

二、LSTM网络结构

1、遗忘门

        1)功能

        2)步骤

2、输入门

        1)功能

        2)步骤

3、输出门

        1)功能

        2)步骤


一、关于LSTM网络

1、什么是LSTM网络

        LSTM网络,全称长短期记忆网络(Long Short-Term Memory network),是一种特殊的循环神经网络(RNN)架构,大部分与RNN模型相同,但它们用了不同的函数来计算隐状态h,旨在解决传统RNN在处理长序列数据时遇到的梯度消失梯度爆炸问题。LSTM网络通过引入自循环的巧妙设计,使得信息能够在网络中长期保留或遗忘,从而能够捕获长距离的时间依赖关系。

        举例:

                当你想在网上购买生活用品时,一般都会查看一下其他已购买的用户评价。当你浏览评论时,大脑下意识记住重要的关键词,比如“好看”和“真酷”这样的词汇,而不太会关心“我”、“也”、“是”等字样。如果朋友第二天问你用户评价都说了什么,你不可能会全部记住它,而是说出大脑里记得的主要观点,比如“下次肯定还会来买”,无关紧要的内容自然会从记忆中逐渐消失。

2、RNN网络的结构

        如下图所示,首先第一个单词的词向量进入隐含层与偏置项进行处理后进入tanh激活函数然后得到的结果进入下一个隐含层与第二个单词的词向量结合再传入激活函数,以此类推,将所有单词都传入隐含层处理,得到最终结果。

        上述的隐状态单独拿出来一个,得到下列状态

3、Tanh双曲正切函数

                保证值在-1~1之间

4、sigmoid函数

二、LSTM网络结构

        X表示做内积+表示数值相加

        LSTM网络的核心在于其内部的“记忆单元”(Memory Cell),这个单元由三个“门”结构(遗忘门、输入门和输出门)来控制信息的流动。

1、遗忘门

        上述第一幅图的左下角,x和h经过乘以矩阵U和W再加上偏置项后传入sigmoid激活函数,得到0-1之间的结果,然后左上角传来一个c细胞或叫c仓库,其中存储当前的关键信息(关键词信息),h存储句子的特征信息,将上述结果与c做内积,如下图所示,最终得到的结果一部分很接近0,一部分很接近1,遗忘接近0的数据,保留接近1的信息。

        c仓库的数据最初为空,之后来自于上一层的隐藏层的输出的处理完的关键词信息,每输入一个词,经过sigmoid激活函数处理后与c仓库的数据内积,即可除去当前隐藏层处理的不需要的词,然后剩下的即为需要的关键词,将关键词加入c仓库,经过不断剔除,最终得到完整的所有关键词。

        1)功能

                决定从上一个时间步长的记忆单元状态中丢弃哪些信息。

        2)步骤

                来自前一个隐藏状态的信息和当前输入的信息同时传递到 sigmoid 函数中去,输出值介于 0 和 1 之间,越接近 0 意味着越应该丢弃,越接近 1 意味着越应该保留。

2、输入门

        1)功能

                决定当前时间步长的输入信息中有哪些部分应该被加入到记忆单元c中,以此来更新细胞状态

        2)步骤

                1、首先将前一层隐藏状态的信息和当前输入的信息传递到 sigmoid 函数中去。将值调整到 0~1 之间来决定要更新哪些信息。0 表示不重要,1 表示重要。

                2、将前一层隐藏状态的信息和当前输入的信息传递到 tanh 函数中去,创造一个新的侯选值向量。最后将 sigmoid 的输出值与 tanh 的输出值相乘,sigmoid 的输出值将决定 tanh 的输出值中哪些信息是重要且需要保留下来的,然后将重要的信息增加到仓库c中去。

3、输出门

        1)功能

                用来确定下一个隐藏状态的值。

        2)步骤

                1、将前一个隐藏状态和当前输入传递到 sigmoid 函数中,然后将新得到的细胞状态传递给 tanh 函数。

                2、将 tanh 的输出与 sigmoid 的输出相乘,以确定隐藏状态应携带的信息。再将隐藏状态作为当前细胞的输出,把新的细胞状态和新的隐藏状态传递到下一个时间步长中去。

### LSTM模型架构图及其解释 LSTM(Long Short-Term Memory)是一种特殊的循环神经网络(RNN),其核心在于通过门控机制解决传统RNN中的长期依赖问题。以下是关于LSTM模型架构图的详细说明以及其实现方式。 #### 1. LSTM的核心组件 LSTM的主要组成部分包括遗忘门、输入门、细胞状态和输出门。这些部分共同作用,控制信息流并决定哪些信息应该被保留或丢弃[^1]。 - **遗忘门**:决定了前一时刻的状态有多少会被保留到当前时刻。 - **输入门**:用于更新单元状态的信息量。 - **细胞状态**:存储网络的记忆,允许长时间传递信息。 - **输出门**:基于当前输入和隐藏状态来计算最终输出。 #### 2. 架构图示例 下图为典型的LSTM结构图: ![LSTM Structure](https://upload.wikimedia.org/wikipedia/commons/thumb/6/63/LSTM_diagram.svg/800px-LSTM_diagram.svg.png) 此图展示了LSTM内部各模块之间的连接关系,其中: - 输入向量 \(x_t\) 和上一时间步的隐状态 \(h_{t-1}\) 被送入LSTM单元; - 遗忘门、输入门和输出门分别由不同的权重矩阵和偏置项控制; - 细胞状态经过一系列操作后得到新的状态,并影响下一时间步的操作。 #### 3. PyTorch实现中的LSTM定义 在PyTorch框架中,可以通过内置类快速构建LSTM模型。下面是一个简单的代码示例: ```python import torch.nn as nn class LSTMModel(nn.Module): def __init__(self, input_size, hidden_size, num_layers, output_size): super(LSTMModel, self).__init__() self.lstm = nn.LSTM(input_size=input_size, hidden_size=hidden_size, num_layers=num_layers, batch_first=True) self.fc = nn.Linear(hidden_size, output_size) def forward(self, x): lstm_out, _ = self.lstm(x) out = self.fc(lstm_out[:, -1, :]) # 只取最后一个时间步的结果 return out ``` 在此代码片段中,`nn.LSTM` 定义了一个标准的LSTM层,而 `batch_first=True` 参数表示输入张量的第一个维度对应批次大小[^4]。 #### 4. 数据格式与输出解析 喂给LSTM的数据通常具有形状 `(batch_size, sequence_length, feature_dim)`,即批量大小、序列长度和特征维数三个维度。对于单个样本而言,则可以简化为 `[sequence_length, feature_dim]` 的二维数组形式[^2]。 当调用 `.forward()` 方法时,返回的是整个序列的时间步预测值或者仅最后一步的结果取决于具体应用场景需求[^3]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

菜就多练_0828

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

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

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

打赏作者

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

抵扣说明:

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

余额充值