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

《深度学习》LSTM 长短期记忆网络 结构及原理解析

目录

一、关于LSTM网络

1、什么是LSTM网络

        举例:

2、RNN网络的结构

3、Tanh双曲正切函数

二、LSTM网络结构

1、遗忘门

        1)功能

        2)步骤

2、输入门

        1)功能

        2)步骤

3、输出门

        1)功能

        2)步骤


一、关于LSTM网络

1、什么是LSTM网络

        LSTM网络,全称长短期记忆网络(Long Short-Term Memory network),是一种特殊的循环神经网络(RNN)架构,大部分与RNN模型相同,但它们用了不同的函数来计算隐状态h,旨在解决传统RNN在处理长序列数据时遇到的梯度消失梯度爆炸问题。LSTM网络通过引入自循环的巧妙设计,使得信息能够在网络中长期保留或遗忘,从而能够捕获长距离的时间依赖关系。

        举例:

                当你想在网上购买生活用品时,一般都会查看一下其他已购买的用户评价。当你浏览评论时,大脑下意识记住重要的关键词,比如“好看”和“真酷”这样的词汇,而不太会关心“我”、“也”、“是”等字样。如果朋友第二天问你用户评价都说了什么,你不可能会全部记住它,而是说出大脑里记得的主要观点,比如“下次肯定还会来买”,无关紧要的内容自然会从记忆中逐渐消失。

2、RNN网络的结构

        如下图所示,首先第一个单词的词向量进入隐含层与偏置项进行处理后进入tanh激活函数然后得到的结果进入下一个隐含层与第二个单词的词向量结合再传入激活函数,以此类推,将所有单词都传入隐含层处理,得到最终结果。

        上述的隐状态单独拿出来一个,得到下列状态

3、Tanh双曲正切函数

                保证值在-1~1之间

4、sigmoid函数

二、LSTM网络结构

        X表示做内积+表示数值相加

        LSTM网络的核心在于其内部的“记忆单元”(Memory Cell),这个单元由三个“门”结构(遗忘门、输入门和输出门)来控制信息的流动。

1、遗忘门

        上述第一幅图的左下角,x和h经过乘以矩阵U和W再加上偏置项后传入sigmoid激活函数,得到0-1之间的结果,然后左上角传来一个c细胞或叫c仓库,其中存储当前的关键信息(关键词信息),h存储句子的特征信息,将上述结果与c做内积,如下图所示,最终得到的结果一部分很接近0,一部分很接近1,遗忘接近0的数据,保留接近1的信息。

        c仓库的数据最初为空,之后来自于上一层的隐藏层的输出的处理完的关键词信息,每输入一个词,经过sigmoid激活函数处理后与c仓库的数据内积,即可除去当前隐藏层处理的不需要的词,然后剩下的即为需要的关键词,将关键词加入c仓库,经过不断剔除,最终得到完整的所有关键词。

        1)功能

                决定从上一个时间步长的记忆单元状态中丢弃哪些信息。

        2)步骤

                来自前一个隐藏状态的信息和当前输入的信息同时传递到 sigmoid 函数中去,输出值介于 0 和 1 之间,越接近 0 意味着越应该丢弃,越接近 1 意味着越应该保留。

2、输入门

        1)功能

                决定当前时间步长的输入信息中有哪些部分应该被加入到记忆单元c中,以此来更新细胞状态

        2)步骤

                1、首先将前一层隐藏状态的信息和当前输入的信息传递到 sigmoid 函数中去。将值调整到 0~1 之间来决定要更新哪些信息。0 表示不重要,1 表示重要。

                2、将前一层隐藏状态的信息和当前输入的信息传递到 tanh 函数中去,创造一个新的侯选值向量。最后将 sigmoid 的输出值与 tanh 的输出值相乘,sigmoid 的输出值将决定 tanh 的输出值中哪些信息是重要且需要保留下来的,然后将重要的信息增加到仓库c中去。

3、输出门

        1)功能

                用来确定下一个隐藏状态的值。

        2)步骤

                1、将前一个隐藏状态和当前输入传递到 sigmoid 函数中,然后将新得到的细胞状态传递给 tanh 函数。

                2、将 tanh 的输出与 sigmoid 的输出相乘,以确定隐藏状态应携带的信息。再将隐藏状态作为当前细胞的输出,把新的细胞状态和新的隐藏状态传递到下一个时间步长中去。


http://www.kler.cn/a/350401.html

相关文章:

  • 云原生周刊:K8s 生产环境架构设计及成本分析
  • 【汇编器和编译器的区别】
  • 基于SpringBoot+Vue的智慧动物园管理系统的设计与实现
  • 2025年1月17日(点亮三色LED)
  • 【前端】CSS学习笔记
  • 如何下载对应城市的地理json文件
  • Redis学习笔记:跳跃表
  • nn.functional.softmax(X, dim=-1)
  • Visual Studio 2022常用快捷键
  • Elastisearch查询最近一年消费金额排名前五的用户
  • Jmeter脚本录制、Badboy脚本录制
  • Chromium html<img>对应c++接口定义
  • 【计算机毕设】springboot-考研资讯平台(附源码)
  • 五、UI弹窗提示
  • 嵌入式linux中条件变量的具体实现
  • UniApp 与微信小程序详细对比
  • JavaSE——泛型
  • 基于SpringBoot的在线视频教育平台的设计与实现(论文+源码)_kaic
  • linux查看系统的上次重启时间的几种方法
  • 数字媒体技术基础:视频编码中的比特率
  • Java基于微信小程序的健身小助手打卡预约教学系统(源码+lw+部署文档+讲解等)
  • MATLAB - 浮动基座机器人的逆运动学
  • 三亚旅游微信小程序的设计与实现
  • 006集—— CAD锁文档的用法(CAD—C#二次开发入门)
  • 一篇文章带你搞懂总线舵机驱动电路
  • android中使用svg