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

逼近理论及应用精解【11】

文章目录

  • ANN
    • GRU(Gate Recurrent Unit,门控循环单元)
      • GRU的关键特性
      • GRU的数学公式
      • 总结
    • LSTM(Long Short-Term Memory,长短期记忆网络)
      • 一、定义
      • 二、数学原理与公式
      • 三、计算过程
      • 四、定理
      • 五、架构
      • 六、例子
      • 七、例题
    • LSTM(长短期记忆网络)的数学原理
      • 一、核心组件
      • 二、数学原理
        • 1. 遗忘门
        • 2. 输入门
        • 3. 记忆单元更新
        • 4. 输出门
      • 三、总结
    • LSTM(长短期记忆网络)的数学公式
      • 1. 遗忘门(Forget Gate)
      • 2. 输入门(Input Gate)
      • 3. 记忆单元更新(Cell State Update)
      • 4. 输出门(Output Gate)
      • 5. 隐藏状态更新(Hidden State Update)
      • 总结
  • 参考文献

ANN

GRU(Gate Recurrent Unit,门控循环单元)

是一种有效的循环神经网络架构,它与LSTM相似,但结构更为简洁。GRU旨在解决传统RNN中的梯度消失问题,同时提高模型的学习效率。以下是GRU的关键特性和数学公式:

GRU的关键特性

  1. 重置门(Reset Gate)
    重置门决定了如何将新的输入信息与过去的记忆信息相结合。当重置门关闭时(即输出接近0),模型会忽略过去的记忆信息,而只关注当前的输入。

  2. 更新门(Update Gate)
    更新门决定了过去的记忆信息在当前时间步应该被保留多少。当更新门打开时(即输出接近1),模型会保留大部分过去的记忆信息,并将其与当前输入相结合。

GRU的数学公式

对于给定的输入序列 x = ( x 1 , x 2 , … , x T ) x = (x_1, x_2, \ldots, x_T) x=(x1,x2,,xT),GRU在每个时间步 t t t 的计算公式如下:

  1. 重置门的计算

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

    • r t r_t rt:重置门的输出。
    • W r W_r Wr:重置门的权重矩阵。
    • [ 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 r b_r br:重置门的偏置项。
    • σ \sigma σ:sigmoid激活函数,将输出值限制在0到1之间。
  2. 更新门的计算

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

    • z t z_t zt:更新门的输出。
    • W z W_z Wz:更新门的权重矩阵。
    • b z b_z bz:更新门的偏置项。
  3. 候选隐藏状态的计算

    h ~ t = tanh ⁡ ( W h ⋅ [ r t ⋅ h t − 1 , x t ] + b h ) \tilde{h}_t = \tanh(W_h \cdot [r_t \cdot h_{t-1}, x_t] + b_h) h~t=tanh(Wh[rtht1,xt]+bh)

    • h ~ t \tilde{h}_t h~t:候选隐藏状态。
    • W h W_h Wh:候选隐藏状态的权重矩阵。
    • b h b_h bh:候选隐藏状态的偏置项。
    • r t ⋅ h t − 1 r_t \cdot h_{t-1} rtht1:通过重置门调制的上一时间步的隐藏状态。
  4. 隐藏状态的更新

    h t = ( 1 − z t ) ⋅ h t − 1 + z t ⋅ h ~ t h_t = (1 - z_t) \cdot h_{t-1} + z_t \cdot \tilde{h}_t ht=(1zt)ht1+zth~t

    • h t h_t ht:当前时间步的隐藏状态。
    • z t z_t zt:更新门的输出,用于决定保留多少过去的记忆信息。
    • h ~ t \tilde{h}_t h~t:候选隐藏状态,包含当前输入和通过重置门调制的过去记忆信息的新组合。

总结

GRU通过引入重置门和更新门,实现了对信息的精确控制。重置门允许模型根据当前输入和过去的记忆信息来选择性地重置隐藏状态,而更新门则决定了过去的记忆信息应该被保留多少。这种门控机制使得GRU能够捕捉和保留长期的时间依赖关系,同时避免了传统RNN在处理长序列数据时面临的梯度消失问题。GRU的简洁结构和高效性能使其在自然语言处理、语音识别、时间序列预测等任务中得到了广泛应用。

LSTM(Long Short-Term Memory,长短期记忆网络)

是一种特殊的循环神经网络(RNN),旨在解决传统RNN在处理长序列数据时面临的梯度消失和梯度爆炸问题。以下是关于LSTM的详细解释,包括其定义、数学原理、公式、计算、定理、架构、例子和例题。

一、定义

LSTM是一种能够学习长期依赖关系的循环神经网络。它通过引入一种称为“记忆单元”的结构,能够在长序列中保持信息的流动,从而有效地捕捉和保留长期的时间依赖关系。LSTM在自然语言处理、语音识别、机器翻译等任务中取得了显著的成功。

二、数学原理与公式

LSTM的数学原理基于其独特的门控机制和记忆单元。LSTM包含三个门:遗忘门、输入门和输出门,以及一个记忆单元。这些组件通过数学公式相互作用,实现对信息的精确控制。

  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)

  1. 输入门:决定哪些新信息将被存储在记忆单元中。

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)

  1. 记忆单元更新:结合遗忘门和输入门的结果来更新记忆单元的状态。

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

  1. 输出门:决定哪些信息将从记忆单元输出给下一层或下一个时间步。

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 \cdot \tanh(C_t) ht=ottanh(Ct)

其中, σ \sigma σ 表示 sigmoid 激活函数, tanh ⁡ \tanh tanh 表示双曲正切激活函数, W f , W i , W C , W o W_f, W_i, W_C, W_o Wf,Wi,WC,Wo 是权重矩阵, b f , b i , b C , b o b_f, b_i, b_C, b_o bf,bi,bC,bo 是偏置项, h t − 1 h_{t-1} ht1 是上一个时间步的隐藏状态, x t x_t xt 是当前时间步的输入, C t − 1 C_{t-1} Ct1 是上一个时间步的记忆单元状态, C t C_t Ct 是当前时间步的记忆单元状态, h t h_t ht 是当前时间步的隐藏状态。

三、计算过程

LSTM的计算过程可以概括为以下几个步骤:

  1. 遗忘门计算:根据上一个时间步的隐藏状态 h t − 1 h_{t-1} ht1 和当前时间步的输入 x t x_t xt 计算遗忘门 f t f_t ft
  2. 输入门计算:同样根据 h t − 1 h_{t-1} ht1 x t x_t xt 计算输入门 i t i_t it 和候选记忆单元 C ~ t \tilde{C}_t C~t
  3. 记忆单元更新:结合遗忘门 f t f_t ft、输入门 i t i_t it 和候选记忆单元 C ~ t \tilde{C}_t C~t 来更新记忆单元的状态 C t C_t Ct
  4. 输出门计算:根据 h t − 1 h_{t-1} ht1 x t x_t xt 计算输出门 o t o_t ot
  5. 隐藏状态计算:根据输出门 o t o_t ot 和更新后的记忆单元状态 C t C_t Ct 计算当前时间步的隐藏状态 h t h_t ht

四、定理

LSTM的一个重要定理是其图灵完备性。这意味着LSTM可以模拟任何图灵机,从而对任何可计算函数进行建模。这一定理保证了LSTM在处理序列数据时的强大能力。然而,需要注意的是,虽然LSTM具有图灵完备性,但在实际应用中,其性能仍然受到模型结构、参数设置和数据质量等因素的影响。

五、架构

LSTM的架构主要包括输入层、LSTM层(包含多个LSTM单元)和输出层。输入层接收序列数据,并将其传递给LSTM层。LSTM层是LSTM的核心部分,由多个LSTM单元组成,每个单元都包含遗忘门、输入门、输出门和记忆单元。LSTM单元通过这些组件实现对信息的精确控制,从而捕捉和保留长期的时间依赖关系。输出层则根据LSTM层的输出生成最终的预测结果或分类标签。

六、例子

以下是一个使用LSTM进行文本分类的例子:

  • 任务:对文本进行情感分类(正面或负面)。
  • 数据集:包含一系列带有情感标签的文本数据。
  • 模型架构:输入层接收文本数据(经过词嵌入处理转换为向量形式),然后传递给LSTM层。LSTM层包含多个LSTM单元,用于捕捉文本中的时序依赖性和语义信息。最后,输出层通过全连接层和softmax激活函数生成情感分类的概率分布。
  • 训练过程:使用带有情感标签的文本数据来训练LSTM模型,通过反向传播算法优化模型参数,使得模型能够准确地对文本进行情感分类。

七、例题

例题:使用LSTM进行时间序列预测。给定一系列股票价格的历史数据,预测未来一段时间的股票价格。

解答思路

  1. 数据预处理:将股票价格数据转换为序列形式,每个时间步的输入可以是当前时间步的价格以及之前几个时间步的价格(如使用滑动窗口技术)。
  2. 构建LSTM模型:使用LSTM层来构建模型,LSTM层后面可以接上一个全连接层来生成预测结果。模型可以包含一个或多个LSTM层,以及一个输出层来预测未来价格。
  3. 训练模型:使用历史股票价格数据来训练LSTM模型,通过最小化预测价格与实际价格之间的差异(如使用均方误差损失函数)来优化模型参数。
  4. 预测未来价格:使用训练好的LSTM模型来对未来一段时间的股票价格进行预测。可以将预测结果与实际价格进行比较来评估模型的性能。

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

基于其独特的门控机制和记忆单元结构,旨在解决传统RNN(循环神经网络)在处理长序列数据时面临的梯度消失和梯度爆炸问题。以下是LSTM数学原理的详细解释:

一、核心组件

LSTM包含三个核心组件:遗忘门、输入门和输出门,以及一个记忆单元。这些组件通过数学公式相互作用,实现对信息的精确控制。

二、数学原理

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 是遗忘门的输出, σ \sigma σ 是sigmoid激活函数, 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 是遗忘门的偏置项。遗忘门的输出 f t f_t ft 是一个介于0和1之间的数值,表示要保留的信息量。

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)

其中, i t i_t it 是输入门的输出, W i W_i Wi 是输入门的权重矩阵, b i b_i bi 是输入门的偏置项。

  • tanh激活函数:生成候选记忆单元状态。

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)

其中, C ~ t \tilde{C}_t C~t 是候选记忆单元状态, W C W_C WC 是权重矩阵, b C b_C bC 是偏置项。

3. 记忆单元更新

记忆单元的状态通过遗忘门和输入门的结果来更新:

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

其中, C t C_t Ct 是当前时间步的记忆单元状态, C t − 1 C_{t-1} Ct1 是上一个时间步的记忆单元状态。这个公式表示,记忆单元的状态通过遗忘门保留了一部分之前的状态,并通过输入门添加了一部分新的信息。

4. 输出门

输出门的作用是决定哪些信息从记忆单元中输出。它首先通过sigmoid激活函数计算输出门的输出:

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)

其中, o t o_t ot 是输出门的输出, W o W_o Wo 是输出门的权重矩阵, b o b_o bo 是输出门的偏置项。然后,输出门的输出与经过tanh激活函数的记忆单元状态相乘,得到最终的隐藏状态:

h t = o t ⋅ tanh ⁡ ( C t ) h_t = o_t \cdot \tanh(C_t) ht=ottanh(Ct)

其中, h t h_t ht 是当前时间步的隐藏状态。

三、总结

LSTM通过引入遗忘门、输入门和输出门,以及记忆单元结构,实现了对信息的精确控制。这些门和记忆单元通过数学公式相互作用,使得LSTM能够捕捉和保留长期的时间依赖关系,同时避免了传统RNN在处理长序列数据时面临的梯度消失和梯度爆炸问题。LSTM的这种独特设计使其在自然语言处理、语音识别、机器翻译等任务中取得了显著的成功。

LSTM(长短期记忆网络)的数学公式

描述了其内部各个组件的计算方式,以下是LSTM的核心数学公式:

1. 遗忘门(Forget Gate)

遗忘门决定了上一时刻的单元状态中有多少信息需要被遗忘。计算公式为:

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:遗忘门的输出,一个介于0和1之间的数值,表示需要保留的信息量。
  • σ \sigma σ:sigmoid激活函数,将输出值限制在0到1之间。
  • 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:遗忘门的偏置项。

2. 输入门(Input Gate)

输入门决定了当前时刻的输入中有多少信息需要被保留到单元状态中。输入门包含两个部分:

  • 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)

  • i t i_t it:输入门的输出,一个介于0和1之间的数值,表示需要更新的信息量。

  • W i W_i Wi:输入门的权重矩阵。

  • b i b_i bi:输入门的偏置项。

  • tanh激活函数:生成候选记忆单元状态。

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)

  • C ~ t \tilde{C}_t C~t:候选记忆单元状态,表示新的候选记忆信息。
  • W C W_C WC:生成候选记忆单元状态的权重矩阵。
  • b C b_C bC:生成候选记忆单元状态的偏置项。

3. 记忆单元更新(Cell State Update)

根据遗忘门、输入门和候选记忆单元状态来更新记忆单元的状态。计算公式为:

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

  • C t C_t Ct:当前时刻的记忆单元状态。
  • C t − 1 C_{t-1} Ct1:上一时刻的记忆单元状态。
  • f t ⋅ C t − 1 f_t \cdot C_{t-1} ftCt1:表示需要保留的上一时刻的记忆单元信息。
  • i t ⋅ C ~ t i_t \cdot \tilde{C}_t itC~t:表示需要更新的新的记忆单元信息。

4. 输出门(Output Gate)

输出门决定了当前时刻的单元状态中有多少信息需要被输出到隐藏状态。计算公式为:

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)

  • o t o_t ot:输出门的输出,一个介于0和1之间的数值,表示需要输出的信息量。
  • W o W_o Wo:输出门的权重矩阵。
  • b o b_o bo:输出门的偏置项。

5. 隐藏状态更新(Hidden State Update)

根据输出门和记忆单元状态来更新当前时刻的隐藏状态。计算公式为:

h t = o t ⋅ tanh ⁡ ( C t ) h_t = o_t \cdot \tanh(C_t) ht=ottanh(Ct)

  • h t h_t ht:当前时刻的隐藏状态。
  • o t o_t ot:输出门的输出。
  • tanh ⁡ ( C t ) \tanh(C_t) tanh(Ct):记忆单元状态的tanh激活值,将记忆单元状态的值映射到-1到1之间。

总结

LSTM通过这些数学公式实现了对信息的精确控制,使其能够捕捉和保留长期的时间依赖关系,从而在处理长序列数据时表现出色。这些公式是LSTM网络的核心,也是理解其工作原理的关键。

参考文献

  1. 文心一言

http://www.kler.cn/news/341728.html

相关文章:

  • 11.1 Linux_线程_线程相关函数
  • 多模态方法总结
  • OpenStack Yoga版安装笔记(十六)Openstack网络理解
  • Nuxt.js 应用中的 page:transition:finish 钩子详解
  • Linux系统——硬盘操作
  • 【通过WSL2安装Ubuntu24.04系统及图形化界面】
  • 代码随想录算法训练营Day19
  • 跨境电商独立站||代码建站和SaaS建站的区别
  • 毕业设计 大数据电影数据分析与可视化系统
  • 前端框架选择指南
  • C语言函数栈帧的创建与销毁(32)
  • vue2中组件注册后,调用时如何命名?组件传参时参数名称如何命名?
  • Redis 排行榜:实现、操作与性能优化
  • 使用 Vue 官方脚手架初始化 Vue3 项目
  • 【MySQL】入门篇—数据库基础:数据库的定义与用途
  • Linux:Linux中目录的遍历和C中目录的遍历
  • 最新版IntelliJ IDEA 2024.2.3 创建SpringBoot项目(包含各种依赖的选择和功能)
  • CDN绕过学习
  • VUE 开发——Vue学习(二)
  • 麦田物语AStar算法(二)--- 测试 + 具体实现