LSTM论文解读

介绍

LSTM(长短期记忆网络)是循环神经网络(RNN)的改进变体,核心定位是解决传统 RNN 的长时依赖问题,通过门控机制和特殊的细胞状态设计,实现对长序列中远期信息的有效存储与利用。

LSTM 核心定义与结构

LSTM 是一种带有门控机制的循环神经网络,核心由 "细胞状态" 和 "三大门控单元"(输入门、遗忘门、输出门)构成:

  • 细胞状态(C_t):类似 "长期记忆通道",通过固定权重的自循环传递信息,避免信息快速衰减。
  • 遗忘门(f_t):控制历史细胞状态中冗余信息的丢弃。
  • 输入门(i_t):控制当前新信息(候选细胞状态)的准入。
  • 输出门(o_t):控制细胞状态中的信息如何输出为当前隐藏状态(h_t)。

其核心逻辑是通过门控单元的 "选择性过滤",让细胞状态动态更新(遗忘旧信息 + 存储新信息),同时保持信息在长序列中的稳定传递。

二、LSTM 的核心优势

1、解决长时依赖问题: 这是最核心的优势,能捕捉序列中超过上千个时间步的远期依赖关系(如长文本中的上下文关联、时间序列的长期趋势)。
2、缓解梯度消失 / 爆炸: 细胞状态的恒定误差传播设计,避免了传统 RNN 反向传播时梯度的快速衰减或无限放大。
3、信息筛选机制高效: 三大门控单元分别负责 "忘、存、取",能精准过滤冗余信息,聚焦有价值的长期特征。
**4、兼容性强:**可直接替代传统 RNN 用于文本处理、语音识别、时间序列预测等所有序列任务,且支持多层堆叠、双向扩展(BiLSTM)。

LSTM 的 "记忆逻辑"

可以把它想象成一个带 "门卫" 和 "仓库" 的记忆系统

  • 输入门是 "仓库管理员",决定哪些新货物(新信息)能放进仓库(细胞状态);

  • 细胞状态是 "仓库",用来长期存放关键货物(长期记忆);

  • 输出门是 "提货员",决定仓库里的哪些货物能被取出去用(输出记忆);

  • 整个存储单元通过这种 "门控 + 循环记忆" 的机制,解决了传统循环网络 "记不住长时信息" 的问题。

输入门

输入

来自当前时间步的输入 x_t(如文本序列中的当前词向量、时间序列的当前观测值)。

来自上一时间步的隐藏状态 h_t-1上一时刻 LSTM 的输出,包含历史信息)。

输出

输入门通过Sigmoid 激活函数生成一个 0 到 1 之间的向量 i_t,公式为:

这个向量的作用是控制 "新信息" 进入细胞状态的比例:0 表示完全不让新信息进入,1 表示完全让新信息进入。

输出门:

输入

同样来自当前时间步的输入x_t

同样来自上一时间步的隐藏状态 h_t-1
输出

输出门通过Sigmoid 激活函数生成一个 0 到 1 之间的向量 o_t,公式为:

这个向量的作用是控制 "细胞状态中的记忆" 输出到隐藏状态的比例:0 表示完全不让记忆输出,1 表示完全让记忆输出。

可以看到,输入门和输出门都用 了"当前输入 x_t + 上一隐藏状态 h_t-1" 作为输入,是因为 LSTM 需要同时参考 "历史记忆" 和 "当前信息" 来做决策

  • 输入门要决定 "当前新信息是否值得存入长期记忆",必须结合 "历史记忆h_t-1 里包含的细胞状态信息)" 和 "当前输入(\(x_t\) 的新内容)"。
  • 输出门要决定 "当前记忆是否值得输出",也必须结合 "历史记忆的上下文h_t-1" 和 "当前任务的需求x_t 的当前目标)"。
  • 权重和偏置不同,是为了让输入门专注于 "存信息" 的决策输出门专注于 "取信息" 的决策

权重和偏置不同,是为了让输入门专注于 "存信息" 的决策、输出门专注于 "取信息" 的决策

遗忘门

输入:

当前时间步的输入 x_t

.上一时间步的隐藏状态 h_t-1

输出

通过Sigmoid 激活函数生成一个 0 到 1 之间的向量 f_t,公式为:

遗忘门的核心作用是控制 "历史细胞状态 \(C_{t-1}\) 中有多少信息需要被遗忘":

输出 f_t 中,

接近 1 的元素表示 "对应位置的历史记忆要保留";

接近 0 的元素表示 "对应位置的历史记忆要遗忘"。

它与上一细胞状态 C_t-1 做逐元素相乘,实现 "选择性遗忘历史记忆" 的效果。

简单来说,遗忘门是 LSTM 的 "记忆清理工"------ 它决定了历史记忆中哪些是冗余的、需要丢弃的,从而让细胞状态能高效存储真正有价值的长期信息。

细胞状态

阶段 1:细胞状态的更新

输入

上一时间步的细胞状态(历史记忆)。

输入门的输出 (控制新信息的权重)。

候选细胞状态

生成方式:由当前输入 x_t 和上一隐藏状态 h_t-1 经Tanh 激活函数计算得到,公式为:

Tanh 的输出范围是\([-1, 1]\),可以理解为对 "新信息" 的压缩与归一化,让新信息的幅度更可控。

候选细胞状态是当前时间步 "潜在的新记忆",它的作用是为细胞状态 C_t 提供 "待存入的新信息"。

运算和输出

细胞状态的更新公式为:

阶段2:细胞状态的输出

输入:

新的细胞状态 C_t(当前更新后的记忆)

输出门的输出 o_t(控制记忆输出的权重)

输出

隐藏状态的生成公式为:

即 "输出门过滤后的细胞状态(经 Tanh 缩放)",这个 h_t 会作为当前时间步的输出,同时传递到下一时间步作为输入。

信息流动的完整逻辑

这样设计的核心目的是让 LSTM 能在 "长期记忆的存储" 和 "短期输出的决策" 之间找到平衡,既不会因为只关注当前而忘记历史,也不会因为执着于历史而忽略当前任务

补充

一、Sigmoid 激活函数

在 LSTM 中,Sigmoid 被用于 "门控"(输入门、输出门、遗忘门),因为它的输出在 0 到 1 之间,天然适合表示 "开关的强度":

输出接近 1 时,表示 "门完全打开"(允许信息通过);

输出接近 0 时,表示 "门完全关闭"(阻止信息通过)。

二、Tanh 激活函数

在 LSTM 中,Tanh 主要用于 "信息的压缩与归一化":

简单来说,Sigmoid 是 LSTM 的 "决策者"(决定哪些信息该存、该取),而 Tanh 是 "整理者"(把新信息或记忆整理成适合存储 / 输出的形式)。这种分工让 LSTM 既能精准控制信息的流动,又能高效管理长期记忆的存储。

相关推荐
獨枭2 小时前
C# 本地项目引用失效与恢复全攻略
开发语言·c#·visual studio
测试老哥2 小时前
软件测试之单元测试知识总结
自动化测试·软件测试·python·测试工具·职场和发展·单元测试·测试用例
buvsvdp50059ac3 小时前
如何在VSCode中设置Python解释器?
ide·vscode·python
国服第二切图仔3 小时前
Rust开发之Trait 定义通用行为——实现形状面积计算系统
开发语言·网络·rust
mjhcsp3 小时前
C++ 循环结构:控制程序重复执行的核心机制
开发语言·c++·算法
A阳俊yi3 小时前
Spring Data JPA
java·开发语言
csbysj20203 小时前
CSS 对齐
开发语言
爱吃巧克力的程序媛3 小时前
将qt界面中加载css或者qss样式
开发语言·css·qt