长短期记忆网络是循环神经网络的变体,可以有效解决简单循环神经网络的梯度爆炸或梯度消失问题。

LSTM的构成

长短期记忆网络引入了记忆元(memory cell),或简称为单元(cell)。

用来从单元中输出条目的门,我们将其称为输出门(output gate)。

用来决定何时将数据读入单元的门,我们将其称为输入门(input gate)。

重置单元的内容,则通过遗忘门(forget gate)来管理。

LSTM 的隐藏单元更新过程,本质是通过记忆元与遗忘门、输入门、输出门四大模块的协作,实现对信息的选择性遗忘与更新,最终生成新的隐藏状态。

隐状态 h

隐状态 h_{t} 是 “当前时刻的信息输出窗口”,它既承载了短期关键信息,又负责连接相邻时刻的计算,是模型与外部交互、内部传递信息的核心媒介。

循环神经网络中的隐状态 h 储存了历史信息,可以看作一种记忆。在简单循环网络中,隐状态每时每刻都会被重写,因此可以看作一种短期记忆。

隐状态与 “记忆元” 是互补关系,是短期信息的 “传递者与输出者”。隐状态并非独立生成,而是从记忆元的 “长期记忆” 中筛选、转换而来。

公式:h_{t}= o_{t}\bigodot \tanh \left ( c_{t} \right )

这个公式通过 “归一化” 和 “选择性输出” 两步,从长期记忆中提取短期记忆。

记忆元 c

记忆元 c_{t} 是实现长期记忆存储与更新的核心载体,它通过门控机制(遗忘门、输入门、输出门)来控制信息的流入、流出和保留,是 LSTM 区别于传统 RNN 的关键。

在神经网络中,长期记忆可以看作网络参数,隐含了从训练数据中学到的经验,其更新周期要远远慢于短期记忆。而在LSTM网络中,记忆元 c 可以在某个时刻捕捉到某个关键信息,并有能力将关键信息保存一定的时间间隔。记忆元 c 中保存信息的生命周期要长于短期记忆 h ,但又远远短于长期记忆,因此称为长短期记忆。

公式:c_{t}= f_{t}\odot c_{t-1}+i_{t}\odot \tilde{c}_{t}

对 “上一时刻的长期记忆” 进行筛选,丢弃无用信息,保留有用信息;对 “当前时刻的新信息” 进行筛选,将重要的新信息准备好,等待与历史信息融合;将 “筛选后的历史信息” 与 “筛选后的当前新信息” 直接相加,得到当前时刻的新记忆元 c_{t} 。这个公式解决了RNN的梯度消失问题。

候选记忆元 \tilde{c}

候选记忆元 \tilde{c}_{t} 是 “新信息的候选容器”,它负责将当前输入与历史短期信息融合,生成待筛选的 “新记忆素材”,是后续更新记忆元 c_{t} 的核心前提。

公式:\tilde{c}_{t}=\tanh \left ( W_{c}x_{t}+U_{c}h _{t-1}+b_{c}\right )

 \tilde{c}_{t} 将上一时刻的隐状态 h_{t-1}​ 与当前输入 x_{t} 进行 “拼接”。用权重矩阵 W_{C} 和偏置 b_{c} ​对组合向量做线性变换,将不同来源的信息映射到同一维度空间,实现信息的初步整合。通过 tanh 激活函数对线性变换结果进行处理,将数值范围压缩到 [-1,1] 之间,避免后续计算中出现数值爆炸,同时让信息表达更稳定。

输入门 i_{t}

输入门 i_{t} 的核心作用是筛选当前信息,判断当前输入 x_{t}和上一时刻隐藏状态 h_{t-1}结合后,哪些新信息是重要的;控制信息进入,决定筛选后的重要信息,以多大比例存入记忆元c_{t} 。

公式:i_{t}= \sigma \left ( W_{i}x_{t}+U_{i}h_{t-1}+b_{i} \right )

这是在决定候选信息中哪些部分需要被保留。同样拼接 h_{t-1}与 x_{t},但通过 sigmoid 激活函数处理,得到输入门 i_{t} 。W_{i} 和 b_{i} 是可训练的权重与偏置,用于学习 “如何判断信息重要性”,sigmoid 函数将控制信号的数值范围压缩到[0, 1]。

遗忘门 f_{t}

遗忘门 f_{t}  是LSTM 的 “记忆筛选第一关”,是实现 “选择性保留历史信息” 的核心,直接决定了哪些长期记忆需要被延续。其本质是通过一个 “0-1 权重控制器”,对上一时刻的细胞状态(长期记忆)进行筛选,决定其中哪些信息需要被保留、哪些需要被丢弃,为新记忆的融入腾出空间。它解决了普通 RNN 无法主动遗忘冗余信息的问题。

公式:f_{t}= \sigma \left ( W_{f}x_{t}+U_{f}h_{t-1}+b_{f} \right )

将 h_{t-1}与 x_{t}按列拼接,整合历史与当前信息;用可训练的权重矩阵 W_{f} 和偏置 b_{f} 对拼接向量进行线性变换,捕捉信息间的关联;通过 sigmoid 激活函数,将线性变换的结果压缩到[0,1]区间,得到遗忘门 f_{t} 。

输出门 o_{t}

输出门 o_{t} 作为 LSTM 的 “信息输出控制器”,是连接记忆元与隐状态的关键闸门,直接决定哪些长期记忆会转化为即时可用的信息。输出门的核心作用是从包含所有长期记忆的细胞状态中,挑选出当前任务真正需要的信息,将筛选后的信息封装成隐状态,一方面用于当前时刻的模型输出(如分类结果、预测值),另一方面传递到下一时刻,作为下一时刻计算的历史依据。

公式:o_{t}= \sigma \left ( W_{o}x_{t}+U_{o}h_{t-1}+b_{o} \right )

通过权重矩阵 W_{o} 对当前输入 x_{t} 进行线性变换,提取当前输入中与 “输出筛选” 相关的特征,通过权重矩阵 U_{o} 对上一时刻隐状态 h_{t-1} 进行线性变换,提取历史信息中与 “输出筛选” 相关的特征,将两部分特征与偏置 b_{o} 相加,得到整合了当前与历史信息的线性结果,通过 sigmoid 激活函数将融合结果压缩到 [0,1],生成最终的输出门 o_{t} 。

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐