当前位置: 首页 > news >正文

LSTM长短期记忆网络

LSTM(长短期记忆网络)数学原理

LSTM(Long Short-Term Memory)是一种特殊的递归神经网络(RNN),解决了标准RNN中存在的梯度消失(Vanishing Gradient) 和**梯度爆炸(Exploding Gradient)**问题。它由 Hochreiter 和 Schmidhuber 在1997年提出,广泛应用于处理序列数据,如自然语言处理、时间序列预测等。


1. LSTM 的基本结构

LSTM的核心是引入了一个记忆单元(Memory Cell)和三个主要的门控机制,分别是:

  • 遗忘门(Forget Gate):决定是否丢弃之前的记忆。
  • 输入门(Input Gate):决定当前输入的信息是否加入记忆单元。
  • 输出门(Output Gate):决定从记忆单元输出多少信息到下一时刻的隐藏状态。

通过这些门控机制,LSTM能够选择性地保留重要的信息,抑制不重要的信息,进而解决长期依赖问题。


2. 数学原理与公式

在时间步 t t t,LSTM 主要包含以下数学操作:

2.1 遗忘门(Forget Gate)

遗忘门决定记忆单元中哪些信息需要被保留,哪些信息需要被丢弃。它通过Sigmoid激活函数实现,输出范围在 [ 0 , 1 ] [0,1] [0,1]

f t = σ ( W f ⋅ [ h t − 1 , x t ] + b f ) f_t = \sigma(W_f \cdot [h_{t-1}, x_t] + b_f) ft=σ(Wf[ht1,xt]+bf)

  • f t f_t ft:遗忘门的输出向量(维度与记忆单元相同)
  • W f W_f Wf:遗忘门的权重矩阵
  • h t − 1 , x t h_{t-1}, x_t ht1,xt:将前一时刻的隐藏状态 h t − 1 h_{t-1} ht1 和当前输入 x t x_t xt 进行拼接
  • b f b_f bf:遗忘门的偏置向量
  • σ \sigma σ:Sigmoid激活函数,输出在 ( 0 , 1 ) (0, 1) (0,1) 之间

2.2 输入门(Input Gate)

输入门决定当前输入的信息如何更新到记忆单元中,包括两个步骤:

  1. 候选记忆单元:通过 tanh ⁡ \tanh tanh 激活函数生成候选记忆。
  2. 输入门:通过 Sigmoid 决定候选记忆是否加入当前的记忆单元。

i t = σ ( W i ⋅ [ h t − 1 , x t ] + b i ) i_t = \sigma(W_i \cdot [h_{t-1}, x_t] + b_i) it=σ(Wi[ht1,xt]+bi)
C ~ t = tanh ⁡ ( W C ⋅ [ h t − 1 , x t ] + b C ) \tilde{C}_t = \tanh(W_C \cdot [h_{t-1}, x_t] + b_C) C~t=tanh(WC[ht1,xt]+bC)

  • i t i_t it:输入门的输出范围 ( 0 − 1 ) ( 0-1 ) (01)
  • C ~ t \tilde{C}_t C~t:候选记忆单元
  • W i , W C W_i, W_C Wi,WC:输入门和候选记忆的权重矩阵
  • b i , b C b_i, b_C bi,bC:偏置向量

2.3 更新记忆单元

当前时刻的记忆单元 C t C_t Ct 是由以下两个部分组成的:

  1. 遗忘门决定丢弃多少旧记忆 C t − 1 C_{t-1} Ct1
  2. 输入门决定增加多少候选记忆 C ~ t \tilde{C}_t C~t

C t = f t ⊙ C t − 1 + i t ⊙ C ~ t C_t = f_t \odot C_{t-1} + i_t \odot \tilde{C}_t Ct=ftCt1+itC~t

  • C t C_t Ct:当前时刻的记忆单元
  • f t ⊙ C t − 1 f_t \odot C_{t-1} ftCt1:保留的旧记忆
  • i t ⊙ C ~ t i_t \odot \tilde{C}_t itC~t:添加的候选记忆
  • ⊙ \odot :逐元素乘法(Hadamard积)

2.4 输出门(Output Gate)

输出门决定从记忆单元中输出多少信息,并通过 tanh ⁡ \tanh tanh 激活函数进一步处理:

o t = σ ( W o ⋅ [ h t − 1 , x t ] + b o ) o_t = \sigma(W_o \cdot [h_{t-1}, x_t] + b_o) ot=σ(Wo[ht1,xt]+bo)
h t = o t ⊙ tanh ⁡ ( C t ) h_t = o_t \odot \tanh(C_t) ht=ottanh(Ct)

  • o t o_t ot:输出门的输出范围 ( 0 − 1 ) ( 0-1 ) (01)
  • h t h_t ht:当前时刻的隐藏状态,也是LSTM的输出
  • W o W_o Wo:输出门的权重矩阵
  • b o b_o bo:输出门的偏置向量
  • tanh ⁡ ( C t ) \tanh(C_t) tanh(Ct):将记忆单元中的信息压缩到 [ − 1 , 1 ] [-1,1] [1,1]

3. LSTM 的工作流程总结

  1. 输入当前时刻的数据 x t x_t xt和前一时刻的隐藏状态 h t − 1 h_{t-1} ht1、记忆单元 C t − 1 C_{t-1} Ct1
  2. 遗忘门:决定丢弃多少旧记忆。
  3. 输入门:决定当前输入的信息如何加入记忆单元。
  4. 更新记忆单元 C t C_t Ct:根据遗忘门和输入门进行更新。
  5. 输出门:决定当前时刻的隐藏状态 h t h_t ht 输出多少信息。
  6. 传播到下一时刻 h t h_t ht C t C_t Ct被传递给下一时间步。

4. 解决梯度消失与爆炸问题

LSTM 解决了传统 RNN 的梯度消失问题,主要依靠 记忆单元门控机制

  1. 记忆单元 C t C_t Ct:通过逐元素加法(避免梯度多次相乘),使得记忆信息能够长期保存。
  2. 门控机制:通过遗忘门和输入门的动态调整,能够控制信息的流动,保留有用的信息,抑制无关的信息。
  3. 激活函数:在遗忘门、输入门和输出门中使用 Sigmoid 函数,保证输出在 ( 0 , 1 ) (0,1) (0,1) 之间,防止梯度爆炸。

5. LSTM 与标准 RNN 的对比

特点标准RNNLSTM
结构简单隐藏层引入记忆单元与门控机制
梯度问题容易梯度消失或爆炸能有效缓解梯度消失/爆炸问题
长时依赖问题无法捕捉长期依赖能有效学习长时依赖
计算复杂度相对较高

6. LSTM 的应用场景

  1. 自然语言处理(NLP):文本分类、语言建模、机器翻译等。
  2. 时间序列预测:股票价格、天气预测等。
  3. 语音识别:连续语音识别任务。
  4. 视频分析:视频帧之间的序列建模。
  5. 生成任务:文本生成、音乐生成等。

7. 小结

LSTM通过引入记忆单元门控机制,解决了标准RNN在长时依赖任务中的梯度消失问题。其核心包括遗忘门输入门输出门,动态控制信息的流动与保留,从而实现高效的序列建模。


如果你喜欢这篇文章,请点赞、评论和收藏!😊


http://www.mrgr.cn/news/80697.html

相关文章:

  • Linux -- 线程控制相关的函数
  • 学习笔记:从ncsi/nc-si协议和代码了解网络协议的设计范式
  • 大语言模型的常用微调方法
  • Android上传到Minio本地存储
  • SQL血缘解析
  • python学opencv|读取图像(十)用numpy创建彩色图像
  • 15.初识接口1 C#
  • 搭建分布式HBase集群
  • 基于YOLOv5的行人与帽子检测与识别说明文档
  • gitlab初始化+API批量操作
  • 2010年IMO几何预选题第5题
  • 【字符串匹配算法——BF算法】
  • SpringBoot+vue实现WebSocket通信
  • 论文学习—VAE
  • 【项目管理】GDB调试
  • 搭建分布式Kafka集群
  • Vue2二、指令补充,computed 计算属性vs方法,watch 侦听器,
  • 遇到“REMOTE HOST IDENTIFICATION HAS CHANGED!”(远程主机识别已更改)的警告
  • 知道一个服务器IP地址,如何attack对方美国
  • 从0开始写android 之xwindow
  • MYSQL 利用concat函数 生成更新或者插入SQL
  • HUAWEI-eNSP交换机链路聚合(手动负载分担模式)
  • go 自己写序列化函数不转义
  • linux安装mysql
  • 二、使用langchain搭建RAG:金融问答机器人--数据清洗和切片
  • Python 在Word文档中插入图片的3种方式(插入到段落、插入到指定位置、插入到每一页)