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

NLP 03(LSTM)

一、LSTM

LSTM (Long Short-Term Memory) 也称长短时记忆结构,它是传统RNN的变体,与经典RNN相比:

  • 能够有效捕捉长序列之间的语义关联
  • 缓解梯度消失或爆炸现象

LSTM的结构更复杂,它的核心结构可以分为四个部分去解析:

遗忘门、输入门、细胞状态、输出门

LSTM内部结构:

1.1 遗忘门

遗忘门结构分析:与传统RNN的内部结构计算非常相似

  • 首先将当前时间步输入x(t)与上一个时间步隐含状态h(t-1)拼接,得到[x(t),h(t-1)];
  • 然后通过一个全连接层做变换,最后通过sigmoid函数进行激活得到f(t)。

我们可以将f(t)看作是门值,好比一扇门开合的大小程度,门值都将作用在通过该扇门的张量,遗忘门门值将作用的上一层的细胞状态上,代表遗忘过去的多少信息,又因为遗忘门门值是由x(t),h(t-1)计算得来的,因此整个公式意味着根据当前时间步输入和上一个时间步隐含状态h(t-1)来决定遗忘多少上一层的细胞状态所携带的过往信息.

1.2 输入门

我们看到输入门的计算公式有两个,

  • 第一个就是产生输入门门值的公式,它和遗忘门公式几乎相同,区别只是在于它们之后要作用的目标上.这个公式意味着输入信息有多少需要进行过滤.
  • 输入门的第二个公式是与传统RNN的内部结构计算相同.对于LSTM来讲它得到的是当前的细胞状态,而不是像经典RNN一样得到的是隐含状态。

1.3 细胞状态更新

细胞更新的结构与计算公式非常容易理解,这里没有全连接层,只是将刚刚得到的遗忘门门值与上一个时间步得到的C(t-1)相乘,再加上输入门门值与当前时间步得到的未更新C(t)相乘的结果.最终得到更新后的C(t)作为下一个时间步输入的一部分。整个细胞状态更新过程就是对遗忘门和输入门的应用。

1.4 输出门

输出门部分的公式也是两个,

  • 第一个即是计算输出门的门值,它和遗忘门,输入门计算方式相同。
  • 第二个即是使用这个门值产生隐含状态h(t),他将作用在更新后的细胞状态C(t)上,并做tanh激活,最终得到h(t)作为下一时间步输入的一部分。

整个输出门的过程,就是为了产生隐含状态h(t)。

 

二、Bi-LSTM

Bi-LSTM即双向LSTM,它没有改变LSTM本身任何的内部结构,只是将LSTM应用两次且方向不同,再将两次得到的LSTM结果进行拼接作为最终输出

我们看到图中对“我爱中国”这句话或者叫这个输入序列,进行了从左到右和从右到左两次LSTM处理,将得到的结果张量进行了拼接作为最终输出这种结构能够捕捉语言语法中-些特定的前置或后置特征,增强语义关联,但是模型参数和计算复杂度也随之增加了一倍,一般需要对语料和计算资源进行评估后决定是否使用该结构.

三、LSTM优缺点

  • 优点

LSTM的门结构能够有效减缓长序列问题中可能出现的梯度消失或爆炸,虽然并不能杜绝这种现象,但在更长的序列问题上表现优于传统RNN。

  • 缺点

由于内部结构相对较复杂,因此训练效率在同等算力下较传统RNN低很多。

http://www.lryc.cn/news/179719.html

相关文章:

  • Python集成开发环境(IDE):WingPro for Mac
  • [Machine learning][Part3] numpy 矢量矩阵操作的基础知识
  • 【中秋国庆不断更】HarmonyOS对通知类消息的管理与发布通知(上)
  • 喜讯 | 怿星科技获评SAE“优秀核心零部件企业”,测试软件平台工具广受赞誉
  • 基于Java的医院预约挂号系统设计与实现(源码+lw+部署文档+讲解等)
  • 福利!这两款我自制的免费配色工具你领到了吗?
  • Docker 网桥、docker0 网桥和 --net host:平台差异、使用方式和场景介绍简介:
  • 【深度学习】系统架构工具链的学习笔记
  • Linux 网络编程
  • SpringBoot读取配置的方式
  • c# winform程序,DispatcherTimer被调用延迟,响应间隔长
  • 【智能家居项目】裸机版本——项目介绍 | 输入子系统(按键) | 单元测试
  • 算法练习8——有序三元组中的最大值
  • git创建
  • yolov8 opencv模型部署(python版)
  • Simulink仿真封装中的参数个对话框设置
  • 【C++】class的设计与使用(十)重载iostream运算符
  • Java使用Scanner类实现用户输入与交互
  • FFmpeg 命令:从入门到精通 | ffppeg 命令参数说明
  • Chrome(谷歌浏览器)如何关闭搜索栏历史记录
  • 基于Java的宠物医院管理系统设计与实现(源码+lw+部署文档+讲解等)
  • 使用WPS自动化转换办公文档: 将Word, PowerPoint和Excel文件转换为PDF
  • 对pyside6中的textedit进行自定义,实现按回车可以触发事件。
  • Spark SQL
  • 初识多线程
  • Linux用户、用户组和文件权限的管理与实践
  • 【CMU15-445 Part-14】Query Planning Optimization I
  • 七、垃圾收集中级
  • el-menu 导航栏学习(1)
  • Axios请求封装