LSTM算法

本文深入探讨了长短期记忆网络(LSTM)的工作原理,包括其三个关键的门控机制:遗忘门、输入门和输出门。此外,还介绍了LSTM的一种变体——门控循环单元(GRU),并对比了两者之间的主要区别。最后,讨论了双向循环神经网络(Bi-RNN)如何利用过去和未来的数据信息,以及RNN在不同场景中的应用。

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


1.LSTM

1.1 三个门

  • forget gate 遗忘门 决定了上一个时刻的单元状态 c t − 1 c_{t-1} ct1有多少保留到当前状态 c t c_t ct

  • input gate 输入门 决定当前时刻网格的输入 x t x_t xt有多少可以保存到单元状态 c t \displaystyle c_t ct

  • output gate 输出门 控制单元状态 c t c_t ct有多少输出到 L S T M LSTM LSTM的当前输出值 h t h_t ht

1.2 LSTM单元细节

在这里插入图片描述
符号介绍

  • c t c_t ct为时刻 t t t时的单元状态

  • forget gate

    f = σ ( w f [ h t − 1 , x t ] ) f=\sigma(w_f[h_{t-1},x_t]) f=σ(wf[ht1,xt]) t-1时刻 c t − 1 \displaystyle c_{t-1} ct1在t时刻保留 f ∗ c t − 1 f*c_{t-1} fct1

  • input gate

    i = σ ( w i [ h t − 1 , x t ] ) i=\sigma(w_i[h_{t-1},x_t]) i=σ(wi[ht1,xt])

    z = tanh ⁡ ( w z [ h t − 1 , x t ] ) z=\tanh(w_z[h_{t-1},x_t]) z=tanh(wz[ht1,xt])

    t − 1 t-1 t1时刻在 t t t时刻输入 x t x_t xt保留 i ∗ z i*z iz

  • output gate

    c t = f ∗ c t − 1 + i ∗ z c_t=f*c_{t-1}+i*z ct=fct1+iz

    o = σ ( w o [ h t − 1 , x t ] ) o=\sigma(w_o[h_{t-1},x_t]) o=σ(wo[ht1,xt])

    输出为 h ( t ) = tanh ⁡ ( c t ) ∗ o h(t)=\tanh(c_t) * o h(t)=tanh(ct)o

2.LSTM变种

2.1 GRU

在这里插入图片描述

  • GRU对LSTM做了两个比较大的改动
    • update gate 更新门 z t \displaystyle z_t zt
    • reset gate 重置门 r t \displaystyle r_t rt
    • 将单元状态合并为一个状态 h t \displaystyle h_t ht
  • GRU的前向计算公式为

z t = σ ( W z [ h t − 1 , x t ] ) z_t=\sigma(W_z[h_{t-1},x_t]) zt=σ(Wz[ht1,xt])

r t = σ ( W r [ h t − 1 , x t ] ) r_t=\sigma(W_r[h_{t-1},x_t]) rt=σ(Wr[ht1,xt])

h ~ t = tanh ⁡ ( W [ r t ∗ h t − 1 , x t ] ) \widetilde h_t=\tanh(W[r_t*h_{t-1},x_t]) h t=tanh(W[rtht1,xt])

h = ( 1 − z t ) h t − 1 + z t ∗ h ~ t h=(1-z_t)h_{t-1}+z_t*\tilde h_t h=(1zt)ht1+zth~t

2.2 Bi-RNN (Bidirectional Recurrent Neural Network)

在这里插入图片描述

  • RNN无法利用未来信息,Bi-RNN可以同时输入历史和未来的数据信息,时序相反时两个循环神经网络连接统一输出,输出层可以同时获取历史未来信息。

  • 双向循环神经网络的基本思想是: 每一个训练序列向前和向后分别是两个RNN,而且这两个都连接着一个输出层。这个结构提供给输出层输入序列中每一个点完整的过去和未来的上下文信息。6个独特的权值在每一时步被重复利用,六个权值分别对应着输入层到前向层隐含层和反向层隐藏层 ( w 1 , w 5 ) (w_1,w_5) (w1,w5)、前向/后向隐含层到前向/后向隐含层 ( w 2 , w 5 ) (w_2,w_5) (w2,w5)、向前和向后隐含层到输出层 ( w 4 , w 6 ) (w_4,w_6) (w4,w6)

3.RNN使用场景

在这里插入图片描述
RNN网络适合处理序列数据1,序列长度一般不是固定的。

上图最下层为输入向量,中间层为RNN的状态,最上层为输出向量

RNN的五个应用场景,一次对应上面的5个图

  1. 没有使用RNN的Vanilla模型,从固定的大小的输入得到固定大小的输出
  2. 序列输出(比如图片字幕,输入一张图片输出一段文字序列)
  3. 序列输入(比如情感分析,输入一段文字,然后将它分类为积极或者消极情感)
  4. 序列输入和序列输出(比如机器翻译:一个RNN读取一条英文语句,然后将它以法语形式输出)
  5. 同步序列输入输出(比如视频分类,为视频中每一帧打标签)

  1. 与使用固定计算步骤的固定网络相比,使用序列进行操作要更加强大。RNN将输入向量与状态向量用一个固定函数绑定起来,用来产生一个新的状态向量。在编程层面上,在运行一个程序时可以用特定的输入和一些内部变量对其进行解释。从这个角度上讲,RNN本质上可以描述程序。事实上,RNN是图灵完备的,即他们可以模拟任意程序。 ↩︎

### LSTM算法原理 LSTM(Long Short-Term Memory),即长短时记忆网络,是一种特殊的循环神经网络(RNN)。它通过引入门控机制解决了传统RNN中的梯度消失和长期依赖问题[^1]。 #### 1. 结构组成 LSTM的核心在于其独特的单元结构,该结构由三个主要部分构成:遗忘门、输入门以及输出门。这些门的作用分别是控制信息的流入、流出以及保留程度。具体来说: - **遗忘门**决定了上一时刻的状态有多少会被保留下来。 - **输入门**决定当前输入的信息中有多少会更新到细胞状态中。 - **输出门**则负责筛选细胞状态中的哪些部分可以作为最终输出[^2]。 #### 2. 数学表达 以下是LSTM的关键计算过程及其对应的数学公式: - 遗忘门向量 \( f_t \) 的计算: ```math f_t = \sigma(W_f \cdot [h_{t-1}, x_t] + b_f) ``` - 输入门向量 \( i_t \) 和候选值 \( C̃_t \) 的计算: ```math i_t = \sigma(W_i \cdot [h_{t-1}, x_t] + b_i) ``` ```math C̃_t = tanh(W_C \cdot [h_{t-1}, x_t] + b_C) ``` - 当前时刻的细胞状态 \( C_t \) 更新: ```math C_t = f_t * C_{t-1} + i_t * C̃_t ``` - 输出门向量 \( o_t \) 及隐藏状态 \( h_t \) 计算: ```math o_t = \sigma(W_o \cdot [h_{t-1}, x_t] + b_o) ``` ```math h_t = o_t * tanh(C_t) ``` 其中,\( W_f, W_i, W_C, W_o \) 是权重矩阵;\( b_f, b_i, b_C, b_o \) 是偏置项;\(\sigma\) 表示Sigmoid激活函数;\(tanh\) 表示双曲正切激活函数。 --- ### 应用领域 由于LSTM能够有效捕捉时间序列数据中的长期依赖关系,因此被广泛应用于多个领域,包括但不限于以下几个方面: 1. **自然语言处理 (NLP)** 在文本分类、情感分析、机器翻译等领域,LSTM可以通过建模语句间的上下文关联来提升模型性能。 2. **语音识别** 利用LSTM强大的特征提取能力,可实现高精度的声音信号转换为文字的任务。 3. **时间序列预测** 对于股票价格走势、天气预报等具有明显趋势性和周期性的数据集,LSTM表现出优异的数据拟合效果。 4. **视频动作检测** 视频帧之间存在天然的时间顺序特性,这使得LSTM成为此类任务的理想选择之一。 ```python import numpy as np from keras.models import Sequential from keras.layers import LSTM, Dense # 构造简单的LSTM模型用于二分类任务 model = Sequential() model.add(LSTM(50, activation='relu', input_shape=(n_steps, n_features))) model.add(Dense(1, activation='sigmoid')) model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) ``` 上述代码片段展示了一个基础的Keras框架下构建LSTM模型的过程,适用于解决特定类型的监督学习问题。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值