NLP之LSTM原理剖析

文章目录

  • 背景
    • simpleRNN的局限性
  • LSTM
    • 手写一下sigmoid例子
    • 支持长记忆的神经网络
    • 解读3重门

背景

SimpleRNN有一定局限性,
在这里插入图片描述

  1. 图片上的文字内容:

    • 图片标题提到“SimpleRNN是一种基础模型。它用于解决序列型问题,其中的每一步的输出会影响到下一步的结果。图中的公式和结构图都展示了这种关系。”
    • 下面给出了四行伪代码,描述了SimpleRNN的计算方式。简化为以下形式:
      1. out1和ht1是通过输入x1、前一时刻的状态h(t-1)、权重w1、u1以及偏置项bias进行某种激活函数的计算得到的。
      2. out2和ht2是通过输入x2、前一时刻的状态ht1、权重w2、u2以及偏置项bias进行计算得到的。
      3. out3和ht3是通过输入x3、前一时刻的状态ht2、权重w3、u3以及偏置项bias进行计算得到的。
      4. out4和ht4的计算方式未完整给出,但可以推测其与之前的计算方式类似。
  2. 图片中的图示内容:

    • 图中展示了一个序列型的网络结构,其中每个时间步都有一个输入和一个输出。
    • 从左到右,我们可以看到数据是如何流动的。每个时间步的输入都被标记为“输入”,每个时间步的输出被标记为“输出”,并且每个时间步之间都有一个状态“状态”。
    • 图中还展示了这些状态是如何从一个时间步传递到下一个时间步的,表现了RNN的“记忆”特性。
  3. 解读SimpleRNN的工作机制:

    • SimpleRNN在每个时间步都接受一个输入,并产生一个输出。但与一般的神经网络不同,SimpleRNN还维护一个“状态”,这个状态从一个时间步传递到下一个时间步。
    • 这个状态可以被视为网络的“记忆”,它携带了过去的信息,并用于影响当前时间步的计算。
    • 伪代码展示了每个时间步输出和状态的计算方法,这两者都依赖于当前的输入、前一时间步的状态、权重和偏置。
  4. 识别图中的位置:

    • 在图中,“我、爱、祖国”被分别标注在每一个时间步的上方。它们与每个时间步的“计算”模块相连接。
    • “记忆”则被标注在每个时间步的中心,并在时间步之间传递。
  5. 解释它们在SimpleRNN中的角色:

    • “我、爱、祖国”:这些词分别代表每个时间步的输入。在这个例子中,我们可以认为是在处理一个文本序列,即“我 爱 祖国”。在每一个时间步,“计算”模块会接收这些词作为输入。
    • “记忆”:这代表SimpleRNN的内部状态或“隐藏状态”。它会在时间步之间传递,并保存之前时间步的信息。在每一个时间步,“记忆”会被更新,并用于下一个时间步的计算。

所以,答案是“我、爱、祖国”是输入,而“记忆”代表SimpleRNN的内部状态。如果您有其他问题或需要进一步的澄清,请随时告诉我。

简而言之,图片展示了SimpleRNN如何在每个时间步接受输入,并根据前一时间步的“记忆”产生输出的过程。

simpleRNN的局限性

  1. 什么是神经网络和simpleRNN?

    • 神经网络是一种用于数据处理和模式识别的计算模型。它们通常用于诸如图像识别、自然语言处理等任务。
    • simpleRNN(简单循环神经网络)是一种特殊类型的神经网络,用于处理序列数据,比如文本或时间序列数据。
  2. simpleRNN的主要局限性以及简短解释

    • 梯度消失和梯度爆炸问题: 在处理长序列时,simpleRNN很难学习到早期信息的重要性,这主要是因为梯度(即用于更新模型权重的信号)会随时间减小(消失)或增大(爆炸)。

    • 短期记忆: simpleRNN通常只能记住短期的信息,这意味着它不擅长处理具有长期依赖关系的任务。

    • 计算效率: 尽管结构相对简单,但simpleRNN在处理非常长的序列时可能会变得计算密集和低效。

    • 过拟合: 因为模型较简单,所以它容易过拟合,即在训练数据上表现很好,但在未见过的数据上表现差。

这些是简单循环神经网络(simpleRNN)的主要局限性。

LSTM

手写一下sigmoid例子

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(-5.0, 5.0, 0.1)
print(x)
y = 1 / (1 + np.exp(-x))
print(y)
plt.plot(x, y)
plt.show()

在这里插入图片描述

支持长记忆的神经网络

在这里插入图片描述
在这里插入图片描述
解读并给出图片中所示网络结构的流程解释。

  1. 识别图中的关键部分:

    • A: 网络的核心计算单元。
    • X t − 1 X_{t-1} Xt1, X t X_t Xt, X t + 1 X_{t+1} Xt+1: 输入序列中的各个时间步。
    • h t − 1 h_{t-1} ht1, h t h_t ht, h t + 1 h_{t+1} ht+1: 对应时间步的输出或隐藏状态。
    • “tanh”激活函数,加法和乘法运算。
  2. 为每一部分提供描述:

    • A: 它是网络的核心部分,负责进行所有的计算。接收输入和前一个时间步的隐藏状态,输出当前时间步的隐藏状态。
    • X t − 1 X_{t-1} Xt1, X t X_t Xt, X t + 1 X_{t+1} Xt+1: 这些是顺序输入到网络中的数据,分别对应于连续的时间步。
    • h t − 1 h_{t-1} ht1, h t h_t ht, h t + 1 h_{t+1} ht+1: 这些是网络在各个时间步的输出或隐藏状态。它们包含了之前时间步的信息,并在连续的时间步中传递。
    • “tanh”是一种激活函数,用于非线性转换。
  3. 描述整个流程:

    • 开始于时间步t-1,输入 X t − 1 X_{t-1} Xt1和隐藏状态 h t − 2 h_{t-2} ht2被提供给单元A。
    • 在单元A内,进行了乘法、加法和“tanh”激活函数的计算。
    • 输出结果为隐藏状态 h t − 1 h_{t-1} ht1,这个状态同时也是这一时间步的输出,并且会被传递到下一个时间步。
    • 对于时间步t,该过程重复,输入 X t X_t Xt和隐藏状态 h t − 1 h_{t-1} ht1被提供给单元A,输出为 h t h_t ht
    • 同样的流程继续进行,对于时间步t+1,输入为 X t + 1 X_{t+1} Xt+1和隐藏状态 h t h_t ht,输出为 h t + 1 h_{t+1} ht+1

整体而言,这是一个循环神经网络(RNN)的简化表示,用于处理序列数据。每个时间步接收一个输入和前一个时间步的隐藏状态,产生一个输出,并将该输出传递到下一个时间步。

解读3重门

在这里插入图片描述
上图中,i=input o=output f=forget

这是一个展示长短时记忆(Long Short-Term Memory, LSTM)网络中某一单元的计算过程的图片。

1. 描述图片的主要部分

  • 图片标题:“三重门机制”。
  • 图中给出了几个公式,描述了LSTM中的输入门(i)、遗忘门(f)和输出门(o)的计算,以及记忆细胞的更新方式。
  • 图片下方展示了LSTM单元中数据流的方向。

2. 解释LSTM的工作原理

  • LSTM设计用于解决梯度消失和梯度爆炸的问题,这在传统的RNN中是一个挑战。
  • LSTM通过三个门(输入门、遗忘门和输出门)和一个记忆细胞来工作,从而实现长期记忆。

3. 根据图片内容提供额外的补充和解读

  • 输入门(i): 控制新输入信息的量。计算公式为 i = sigmoid(wt * xt + ut * ht-1 + b)
  • 遗忘门(f): 决定哪些信息从记忆细胞中被抛弃或遗忘。计算公式为 f = sigmoid(wt * xt + ut * ht-1 + b)
  • 输出门(o): 控制从记忆细胞到隐藏状态的输出信息量。计算公式为 o = sigmoid(wt * xt + ut * ht-1 + b)
  • ˜C:当前输入信息的候选值。计算公式为 ˜C = tanh(wt@xt + ht-1@wh + b)
  • Ct: 更新的记忆细胞。计算公式为 Ct = f * Ct-1 + i * ˜C,表示遗忘门选择遗忘的信息和输入门选择的新信息的结合。
  • ht: 当前的隐藏状态。计算公式为 ht = o * tanh(Ct)

这些门的作用使LSTM能够学习和记住长期的依赖关系,从而在各种序列预测任务中取得了成功。

让我们先逐步解读LSTM的计算过程,然后将其与传统RNN进行比较。

1. LSTM的计算过程

a. 输入:

  • x t xt xt:当前时间步的输入。
  • $ht-1$:前一时间步的隐藏状态。
  • C t − 1 Ct-1 Ct1:前一时间步的记忆细胞。

b. 遗忘门(f):
计算哪些先前的记忆需要被保留或遗忘。
f = s i g m o i d ( w t ∗ x t + u t ∗ h t − 1 + b ) f = sigmoid(wt * xt + ut * ht-1 + b) f=sigmoid(wtxt+utht1+b)

c. 输入门(i)记忆候选值(˜C):
决定更新哪些新的记忆。
i = s i g m o i d ( w t ∗ x t + u t ∗ h t − 1 + b ) i = sigmoid(wt * xt + ut * ht-1 + b) i=sigmoid(wtxt+utht1+b)
˜ C = t a n h ( w t @ x t + h t − 1 @ w h + b ) ˜C = tanh(wt@xt + ht-1@wh + b) ˜C=tanh(wt@xt+ht1@wh+b)

d. 更新记忆细胞(Ct):
结合遗忘门的输出和输入门的输出,更新记忆细胞。
C t = f ∗ C t − 1 + i ∗ ˜ C Ct = f * Ct-1 + i * ˜C Ct=fCt1+i˜C

e. 输出门(o):
计算下一个隐藏状态应该是什么。
o = s i g m o i d ( w t ∗ x t + u t ∗ h t − 1 + b ) o = sigmoid(wt * xt + ut * ht-1 + b) o=sigmoid(wtxt+utht1+b)

f. 计算隐藏状态(ht):
h t = o ∗ t a n h ( C t ) ht = o * tanh(Ct) ht=otanh(Ct)

2. LSTM与传统RNN的区别

a. 记忆细胞与隐藏状态:

  • LSTM: 有一个称为“记忆细胞”的附加状态,它可以存储跨多个时间步的信息。
  • RNN: 只有一个隐藏状态。

b. 门机制:

  • LSTM: 使用三个门(输入、输出和遗忘门)来控制信息的流动。
  • RNN: 没有这些门,信息简单地在每个时间步被传递和变换。

c. 长期依赖:

  • LSTM: 由于其门机制和记忆细胞,LSTM可以处理长期依赖,记住信息超过数百个时间步。
  • RNN: 很难处理长期依赖,因为信息在每个时间步都会逐渐丢失或被稀释。

d. 梯度问题:

  • LSTM: 设计来缓解梯度消失和爆炸问题。
  • RNN: 更容易遭受梯度消失或梯度爆炸问题。

总结: 虽然LSTM和RNN都是递归神经网络的变体,但LSTM通过其门机制和记忆细胞设计,使其能够更好地处理长期依赖,而不受梯度消失或梯度爆炸问题的困扰。

在这里插入图片描述

内部结构:
在这里插入图片描述

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Yolo-Z:改进的YOLOv5用于小目标检测

目录 一、前言 二、背景 三、新思路 四、实验分析 论文地址:2112.11798.pdf (arxiv.org) 一、前言 随着自动驾驶汽车和自动驾驶赛车越来越受欢迎,对更快、更准确的检测器的需求也在增加。 虽然我们的肉眼几乎可以立即提取上下文信息,即…

JVM虚拟机:堆结构的逻辑分区

堆内存的逻辑分区 堆内存的逻辑分区如下所示: 堆内存中分为新生代和老年代,二者空间大小1:3。在新生代里面分为两类区域(eden、survivor),三个区域(eden、survivor、survivor),三个区大小比例为8:1:1。 对象存放的位置 栈 当我们new一个对象的时候,首先会将对象…

Wpf 使用 Prism 实战开发Day03

一.实现左侧菜单绑定 效果图: 1.首先需要在项目中创建 mvvm 的架构模式 创建 Models &#xff0c;放置实体类。 实体类需要继承自Prism 框架的 BindableBase&#xff0c;目的是让实体类支持数据的动态变更! 例如: 系统导航菜单实体类 / <summary>/// 系统导航菜单实体类…

vcomp140.dll丢失是什么意思,vcomp140.dll丢失这几个方法都能修复好

vcomp140.dll是什么&#xff1f; vcomp140.dll是一个动态链接库&#xff08;Dynamic Link Library&#xff09;&#xff0c;它主要用于支持Microsoft Visual C 2015编程语言的运行。这个文件包含了编译器相关的函数和资源&#xff0c;对于使用Visual C 2015开发的程序和游戏来…

mac vscode 使用 clangd

C 的智能提示 IntelliSense 非常不准&#xff0c;我们可以使用 clangd clangd 缺点就是配置繁琐&#xff0c;优点就是跳转和提示代码精准 开启 clangd 之后会提示你关闭 IntelliSense 1、安装插件 clangd 搜索第一个下载多的就是 2、配置 clangd 可执行程序路径 clangd 插…

【数据结构】数组和字符串(五):特殊矩阵的压缩存储:稀疏矩阵——压缩稀疏行(CSR)

文章目录 4.2.1 矩阵的数组表示4.2.2 特殊矩阵的压缩存储a. 对角矩阵的压缩存储b~c. 三角、对称矩阵的压缩存储d. 稀疏矩阵的压缩存储——三元组表e. 压缩稀疏行&#xff08;Compressed Sparse Row&#xff0c;CSR&#xff09;矩阵结构体创建CSR矩阵元素设置初始化打印矩阵销毁…

VPS是什么?详解亚马逊云科技Amazon Lightsail(VPS)虚拟专用服务器

2006年&#xff0c;南非开普敦&#xff0c;亚马逊推出了WBS&#xff0c;以网络服务的形式向企业提供基础的IT服务。亚马逊云科技的一小步&#xff0c;在无数技术更迭&#xff0c;天才设计师和程序员的努力与基础设施建设的完善之下成为了人类科技进展的一大步。 亚马逊云科技可…

目标检测概述

1.是什么&#xff1f; 目标检测是计算机视觉领域的核心问题之一&#xff0c;其任务就是找出图像中所有感兴趣的目标&#xff0c;确定他们的类别和位置。由于各类不同物体有不同的外观&#xff0c;姿态&#xff0c;以及不同程度的遮挡&#xff0c;加上成像是光照等因素的干扰&a…

三篇论文:速览GPT在网络安全最新论文中的应用案例

GPT在网络安全领域的应用案例 写在最前面论文1&#xff1a;Chatgpt/CodeX引入会话式 APR 范例利用验证反馈LLM 的长期上下文窗口&#xff1a;更智能的反馈机制、更有效的信息合并策略、更复杂的模型结构、鼓励生成多样性和GPT类似的步骤&#xff1a;Conversational APR 对话式A…

精品基于Python的个性化电影推荐系统

《[含文档PPT源码等]精品基于Python的个性化电影推荐系统设计与实现》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功&#xff01; 软件开发环境及开发工具&#xff1a; 开发语言&#xff1a;python 使用框架&#xff1a;Django 前端技…

C++设计模式_18_State 状态模式

State和Memento被归为“状态变化”模式。 文章目录 1. “状态变化”模式1.1 典型模式 2. 动机 (Motivation)3. 代码演示State 状态模式3.1 常规方式3.2 State 状态模式 4. 模式定义5. 结构( Structure )6. 要点总结7. 其他参考 1. “状态变化”模式 在组件构建过程中&#xf…

Linux网络编程二(TCP三次握手、四次挥手、TCP滑动窗口、MSS、TCP状态转换、多进程/多线程服务器实现)

TCP三次握手 TCP三次握手(TCP three-way handshake)是TCP协议建立可靠连接的过程&#xff0c;确保客户端和服务器之间可以进行可靠的通信。下面是TCP三次握手的详细过程&#xff1a; 假设客户端为A&#xff0c;服务器为B 1、第一次握手&#xff08;SYN1&#xff0c;seq500&…

深度学习_1 介绍;安装环境

深度学习 学习自李沐老师的课程。笔记主要以总结老师所讲解的内容以及我个人的想法为主&#xff0c;侵删&#xff01; 课程链接&#xff1a;课程安排 - 动手学深度学习课程 (d2l.ai) 介绍 AI地图&#xff1a; 我们以前写的非 AI 类程序基本都是人自己去想会遇到什么样的问题…

集成测试、单元测试、系统测试之间的关系和区别

前言 为了使软件正常工作&#xff0c;所有单元都应集成在一起并正常运行。集成测试就像是要求不同工种的工人修建一个房子&#xff0c;希望他们都团结协作。如何判断他们在一起是否可以按照计划完成建设呢&#xff1f;唯一了解的方法是通过将它们全部拉在一起并测试它们如何相互…

Redis入门01-简单了解

目录 Redis的发展历史 特性简介 数据类型 内存存储与持久化 功能丰富 简单稳定 应用场景 为啥用Redis Redis的发展历史 Redis&#xff08;Remote Dictionary Server&#xff09;是一个高性能的键值存储系统&#xff0c;通常用作缓存、消息队列和分布式数据存储的解决方…

数据统计--图形报表--ApacheEcharts技术 --苍穹外卖day10

Apache Echarts 营业额统计 重点:已完成订单金额要排除其他状态的金额 根据时间选择区间 设计vo用于后端向前端传输数据,dto用于后端接收前端发送的数据 GetMapping("/turnoverStatistics")ApiOperation("营业额统计")public Result<TurnoverReportVO…

更新电脑显卡驱动的操作方法有哪些?

更新显卡驱动可以有效的提升我们电脑的性能&#xff0c;可以通过设备管理器、显卡驱动软件等方式进行检查驱动是否需要更新&#xff0c;并修复一些电脑上已知的显卡问题。 然而&#xff0c;对于一些不是很懂电脑技术的人员来说&#xff0c;更新电脑显卡驱动是一件比较复杂和混乱…

Linux服务器部署带Cplex的Java项目

Linux版Cplex安装 Cplex安装包 Cplex 22.1.0 Linux安装包 安装步骤 找到安装包的路径 [roothecs-327697 ~]# cd /www/cplex [roothecs-327697 cplex]# ls cplex_studio2210.linux_x86_64.bin使用chmod 777赋予安装包读、写、执行权限&#xff0c;使用./执行安装 [roothec…

C/S架构和B/S架构

1. C/S架构和B/S架构简介 C/S 架构&#xff08;Client/Server Architecture&#xff09;和 B/S 架构&#xff08;Browser/Server Architecture&#xff09;是两种不同的软件架构模式&#xff0c;它们描述了客户端和服务器之间的关系以及数据交互的方式。 C/S 架构&#xff08…

华为数通方向HCIP-DataCom H12-831题库(多选题:101-120)

第101题 LSR对收到的标签进行保留,且保留方式有多种,那么以下关于LDP标签保留一自由方式的说法 A、保留邻居发送来的所有标签 B、需要更多的内存和标签空间 C、只保留来自下一跳邻居的标签,丢弃所有非下一跳铃邻居发来的标签 D、节省内存和标签空间 E、当IP路由收敛、下一跳…