LSTM理解

news2024/11/16 13:30:40

       

目录

一、LSTM的本质

二、LSTM的原理

三、LSTM的应用


 本文将从LSTM的本质、LSTM的原理、LSTM的应用三个方面,带您一文搞懂长短期记忆网络Long Short Term Memory | LSTM。

 

一、LSTM的本质

        RNN 面临问题:RNN(递归神经网络)在处理长序列时面临的主要问题:短时记忆和梯度消失/梯度爆炸。

梯度更新规则

  • 短时记忆
  • 问题描述:RNN在处理长序列时,由于信息的传递是通过隐藏状态进行的,随着时间的推移,较早时间步的信息可能会在传递到后面的时间步时逐渐消失或被覆盖。
  • 影响:这导致RNN难以捕捉和利用序列中的长期依赖关系,从而限制了其在处理复杂任务时的性能。
  • 梯度消失/梯度爆炸
  • 问题描述:在RNN的反向传播过程中,梯度会随着时间步的推移而逐渐消失(变得非常小)或爆炸(变得非常大)。
  • 影响:梯度消失使得RNN在训练时难以学习到长期依赖关系,因为较早时间步的梯度信息在反向传播到初始层时几乎为零。梯度爆炸则可能导致训练过程不稳定,权重更新过大,甚至导致数值溢出。

        LSTM解决问题:大脑和LSTM在处理信息时都选择性地保留重要信息,忽略不相关细节,并据此进行后续处理。这种机制使它们能够高效地处理和输出关键信息,解决了RNN(递归神经网络)在处理长序列时面临的问题。

 

大脑记忆机制

  • 大脑记忆机制:当浏览评论时,大脑倾向于记住重要的关键词。无关紧要的词汇和内容容易被忽略。回忆时,大脑提取并表达主要观点,忽略细节
  • LSTM门控机制:LSTM通过输入门、遗忘门和输出门选择性地保留或忘记信息,使用保留的相关信息来进行预测,类似于大脑提取并表达主要观点。

二、LSTM的原理

RNN 工作原理:第一个词被转换成了机器可读的向量,然后 RNN 逐个处理向量序列。

 

逐一处理矢量序列

  • 隐藏状态的传递
  • 过程描述:在处理序列数据时,RNN将前一时间步的隐藏状态传递给下一个时间步。
  • 作用:隐藏状态充当了神经网络的“记忆”,它包含了网络之前所见过的数据的相关信息。
  • 重要性:这种传递机制使得RNN能够捕捉序列中的时序依赖关系

 

将隐藏状态传递给下一个时间步

  • 隐藏状态的计算
  • 细胞结构:RNN的一个细胞接收当前时间步的输入和前一时间步的隐藏状态。
  • 组合方式:当前输入和先前隐藏状态被组合成一个向量,这个向量融合了当前和先前的信息。
  • 激活函数:组合后的向量经过一个tanh激活函数的处理,输出新的隐藏状态。这个新的隐藏状态既包含了当前输入的信息,也包含了之前所有输入的历史信息。

 

 

tanh激活函数区间-1~1)

  • 输出:新的隐藏状态被输出,并被传递给下一个时间步,继续参与序列的处理过程。

 

 

RNN的细胞结构和运算

LSTM工作原理

LSTM的细胞结构和运算

  • 输入门
  • 作用:决定哪些新信息应该被添加到记忆单元中。
  • 组成:输入门由一个sigmoid激活函数和一个tanh激活函数组成。sigmoid函数决定哪些信息是重要的,而tanh函数则生成新的候选信息。
  • 运算:输入门的输出与候选信息相乘,得到的结果将在记忆单元更新时被考虑。

 

  • 输入门(sigmoid激活函数 + tanh激活函数)
  • 遗忘门
  • 作用:决定哪些旧信息应该从记忆单元中遗忘或移除。
  • 组成:遗忘门仅由一个sigmoid激活函数组成。

 

sigmoid激活函数(区间0~1)

  • 运算:sigmoid函数的输出直接与记忆单元的当前状态相乘,用于决定哪些信息应该被保留,哪些应该被遗忘。输出值越接近1的信息将被保留,而输出值越接近0的信息将被遗忘。

 

  • 遗忘门(sigmoid激活函数)
  • 输出门
  • 作用:决定记忆单元中的哪些信息应该被输出到当前时间步的隐藏状态中。
  • 组成:输出门同样由一个sigmoid激活函数和一个tanh激活函数组成。sigmoid函数决定哪些信息应该被输出,而tanh函数则处理记忆单元的状态以准备输出。
  • 运算:sigmoid函数的输出与经过tanh函数处理的记忆单元状态相乘,得到的结果即为当前时间步的隐藏状态。

 

  • 输出门(sigmoid激活函数 + tanh激活函数)

三、LSTM的应用

 机器翻译

应用描述:LSTM在机器翻译中用于将源语言句子自动翻译成目标语言句子。

关键组件:

  • 编码器(Encoder):一个LSTM网络,负责接收源语言句子并将其编码成一个固定长度的上下文向量。
  • 解码器(Decoder):另一个LSTM网络,根据上下文向量生成目标语言的翻译句子。

流程:

  1. 源语言输入:将源语言句子分词并转换为词向量序列。
  2. 编码:使用编码器LSTM处理源语言词向量序列,输出上下文向量。
  3. 初始化解码器:将上下文向量作为解码器LSTM的初始隐藏状态。
  4. 解码:解码器LSTM逐步生成目标语言的词序列,直到生成完整的翻译句子。
  5. 目标语言输出:将解码器生成的词序列转换为目标语言句子。

优化:通过比较生成的翻译句子与真实目标句子,使用反向传播算法优化LSTM模型的参数,以提高翻译质量。

情感分析:

应用描述:LSTM用于对文本进行情感分析,判断其情感倾向(积极、消极或中立)。

关键组件:

  • LSTM网络:接收文本序列并提取情感特征。
  • 分类层:根据LSTM提取的特征进行情感分类。

流程:

  1. 文本预处理:将文本分词、去除停用词等预处理操作。
  2. 文本表示:将预处理后的文本转换为词向量序列。
  3. 特征提取:使用LSTM网络处理词向量序列,提取文本中的情感特征。
  4. 情感分类:将LSTM提取的特征输入到分类层进行分类,得到情感倾向。
  5. 输出:输出文本的情感倾向(积极、消极或中立)。

优化:通过比较预测的情感倾向与真实标签,使用反向传播算法优化LSTM模型的参数,以提高情感分析的准确性。

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1868388.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

劳易测应用案例:橡胶密炼生产线安全改造项目(下)

橡胶密炼是汽车轮胎制造流程中的核心环节,主要负责将橡胶与多种添加剂混合,确保均匀分散,以制备合格的橡胶材料。橡胶密炼生产线由多个关键设备组成,包括切胶机、导切机、称重和输送系统、密炼机、开炼机以及胶片冷却机等&#xf…

《分析模式》漫谈07-怎样把一张图从不严谨改到严谨

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 下图是《分析模式》原书第2章的图2.10,里面有一些错误和考虑不周的地方: 2004中译本和2020中译本的翻译如下: 基本上都是照搬,没有改过…

Flutter第十五弹 Flutter插件

目标: 1.Flutter插件是什么?有什么作用? 2.怎么创建Flutter插件? 一、什么是插件 在flutter中,一个插件叫做一个package,使用packages的目的就是为了达到模块化,可以创建出可被复用和共享的代…

数据库逻辑结构设计-实体和实体间联系的转换、关系模式的优化

一、引言 如何将数据库概念结构设计的结果,即用E-R模型表示的概念模型转化为关系数据库模式。 E-R模型由实体、属性以及实体间的联系三个要素组成 将E-R模型转换为关系数据库模式,实际上就是要将实体及实体联系转换为相应的关系模式,转换…

iOS包ShaderVariantCollection预热慢问题

1)iOS包ShaderVariantCollection预热慢问题 2)使用SBP打Bundle如何读取AssetBundleManifest 3)如何将一张贴图经过Shader处理后的结果输出给另外一个Shader使用 4)为什么我的水这么干净,和UE教程里的有差别 这是第392篇…

位运算算法系列|概念讲解|例题讲解

大家好,我是LvZi,今天带来位运算算法系列|概念讲解|例题讲解 一,位运算基本概念 1.基础位运算 <<:左移操作,相当于 *2>>:右移操作,相当于 /2~:按位取反&:按位与操作,有0则0|:按位或操作,有1则1^:按位异或操作,相同为0,相异为1/无进位相加 注:对于^操作,无进…

昇思25天学习打卡营第4天|linchenfengxue

需求&#xff1a;建立一个图像分类模型&#xff0c;提供自动识别有(猫、狗、飞机、汽车等等) 图片的功能 ResNet50图像分类 图像分类是最基础的计算机视觉应用&#xff0c;属于有监督学习类别&#xff0c;如给定一张图像(猫、狗、飞机、汽车等等)&#xff0c;判断图像所属的类…

【直播倒计时】面向AI领域的开发工程师:TinyML在国产FPGA的边缘AI加速应用

TinyML是机器学习中的一个新兴领域&#xff0c;专注于开发可在低功耗、内存受限的设备上运行的算法和模型。其核心目标是将先进的机器学习算法和模型移植到体积小巧、能耗极低的嵌入式设备中&#xff0c;使这些设备具备边缘智能&#xff0c;能够在没有外部服务器支持的情况下进…

05 threeJs基础---阵列立方体和相机适配体验立方体

1.增加相机视角fov 注&#xff1a; 范围更大&#xff0c;意味着可以看到渲染范围更大&#xff0c;远小近大的视觉效果更明显 fov:眼球张开的角度&#xff0c;0时相当于闭眼。aspect:可视区域横纵比。near:眼睛能看到的最近垂直距离。far&#xff1a;眼睛能看到的最远垂直距离。…

Python类的定义和管理库之attrs使用详解

概要 在 Python 编程中,定义类和数据结构是常见的任务。然而,手动编写类的初始化方法、属性验证和比较方法可能会非常繁琐和容易出错。attrs 库是一个功能强大且灵活的工具,旨在简化类的定义和管理。通过使用 attrs,开发者可以轻松定义不可变对象、进行属性验证和类型检查…

2024长三角快递物流展即将开幕点击收藏逛展不迷路~

2024长三角快递物流展是亚洲范围内超大规模的快递物流业展示平台&#xff0c;由于展会的需求及扩大市场的影响力&#xff0c;ESYE2004转战杭州&#xff0c;凭借着先进的经济发展水平、优越的地理位置、成熟的产业环境以及巨大的电商、微商、零售业、消费的市场空间&#xff0c;…

SAP标准报表 S_ALR_8701XXXX是没有export to excel的 或者禁用 %PC也禁用了,如何开回来

以 s_alr_87012172为例子 系统-状态 进入程序 搜索 XXL 做下替换

大型企业组网如何规划网络

大型企业组网是一个复杂的过程&#xff0c;它需要细致的规划和设计&#xff0c;以确保网络能够满足企业的业务需求&#xff0c;同时保证性能、安全性和可扩展性。以下是规划大型企业网络的一些关键步骤和考虑因素&#xff1a; 1. 需求分析 业务需求&#xff1a;与各个业务部门…

如何使用WordPress进行外贸建站?

使用 进行外贸建站既简单又高效&#xff0c;搭建一个外贸网站是一个绝佳的方式来展示你的产品和服务&#xff0c;吸引全球客户&#xff0c;wordpress本身是一个高度可定制化的建站程序&#xff0c;只要你想&#xff0c;他能变成购物网站&#xff0c;宣传网站&#xff0c;所以第…

Centos安装Snaped

本人操作系统为Centos 7 1. 安装epel 和 copr yum #第一步安装epel sudo yum install epel-release #第二步安装copr sudo yum install yum-plugin-copr 2. 添加存储库 sudo yum copr enable ngompa/snapcore-el7 3. 安装snapd软件包 sudo yum -y install snapd 等待安装完…

window10/11如何下载安装JDK(jdk) 超详细图文教程

1、下载jdk 下载安装jdk17&#xff0c;网盘点此下载&#xff1a;https://pan.quark.cn/s/1fb394c360f0 也可以去官网下载&#xff0c;选择如图所示的版本&#xff0c;点击下载。 2、开始安装 双击下载好的exe进行安装 全程点击下一步即可&#xff0c;只有安装路径需要修改以…

基于STM32+华为云IOT设计的智能冰箱(华为云IOT)

文章目录 一、前言1.1 项目介绍【1】项目开发背景【2】设计实现的功能【3】项目硬件模块组成【4】摘要 1.2 设计思路1.3 系统功能总结1.4 开发工具的选择【1】设备端开发【2】上位机开发 二、部署华为云物联网平台2.1 物联网平台介绍2.2 开通物联网服务2.3 创建产品&#xff08…

TypeError: %c requires int or char

踩坑&#xff1a;在用python写脚本查询sql数据时&#xff0c;使用%s来替换sql语句里的变量&#xff0c;结果一直报&#xff0c;而其他sql使用同样的方法正常&#xff0c;最后发现是因为sql语句里有模糊查询 like "%测试%"&#xff0c;这里的%被误以为%s&#xff0c;解…

昇思25天学习打卡营第9天|基于 MindSpore 实现 BERT 对话情绪识别

学AI还能赢奖品&#xff1f;每天30分钟&#xff0c;25天打通AI任督二脉 (qq.com) 环境配置 %%capture captured_output # 实验环境已经预装了mindspore2.2.14&#xff0c;如需更换mindspore版本&#xff0c;可更改下面mindspore的版本号 !pip uninstall mindspore -y !pip in…

valgrind调试c/c++内存问题:非法地址访问_内存泄漏_越界访问

1.valgrind命令 调试内存问题: valgrind --leak-checkfull 更新详细的显示: valgrind --leak-checkfull --show-leak-kindsall valgrind提示信息汇总 内存泄漏 lost in loss record 丢失记录 , 内存泄漏实例[[#2.内存泄漏–不完全释放内存|实例链接]]段错误 Process termina…