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 pltx = 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通过其门机制和记忆细胞设计,使其能够更好地处理长期依赖,而不受梯度消失或梯度爆炸问题的困扰。

在这里插入图片描述

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

在这里插入图片描述

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

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

相关文章

7+共病思路。WGCNA+多机器学习+实验简单验证,易操作

今天给同学们分享一篇共病WGCNA多机器学习实验的生信文章“Shared diagnostic genes and potential mechanism between PCOS and recurrent implantation failure revealed by integrated transcriptomic analysis and machine learning”,这篇文章于2023年5月16日发…

【NI-DAQmx入门】传感器基础知识

1.什么是传感器? 传感器可将真实的现象(例如温度或压力)转换为可测量的电流和电压,因而对于数据采集应用必不可少。接下来我们将介绍您所需的测量类型及其对应的传感器类型。在开始之前,您还可以先了解一些传感器术语&…

SpringBoot面试题8:运行 Spring Boot 有哪几种方式?Spring Boot 需要独立的容器运行吗?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:运行 Spring Boot 有哪几种方式? 运行Spring Boot应用有多种方式,具体取决于你的需求和环境。以下是几种常见的运行Spring Boot应用的方式: 使…

Linux进程程序替换

一、单进程下的程序替换 使用execl进行程序替换,先执行execl前面的代码,在execl处替换成其它进程的代码和数据继续执行,后面的内容就不执行了,因此只打印before 二、程序替换原理 前面我们fork创建子进程,子进程会继承…

在全新ubuntu上用gpu训练paddleocr模型遇到的坑与解决办法

目录 一. 我的ubuntu版本![在这里插入图片描述](https://img-blog.csdnimg.cn/297945917309494ab03b50764e6fb775.png)二.首先拉取paddleocr源代码三.下载模型四.训练前的准备1.在源代码文件夹里创造一个自己放东西的文件2.准备数据2.1数据标注2.2数据划分 3.改写yml配置文件4.…

PostGreSQL:数据表继承

PostGreSQL手册的简史部分介绍到:被称为PostGreSQL的对象关系型数据库管理系统,由美国加州大学伯克利 分校编写的POSTGRES软件包发展而来。经过十几年的发展,PostGreSQL目前是世界上最先进的开源数据库。 The object-relational database man…

Vue 的双向数据绑定是如何实现的?

目录 1. 响应式数据 2. v-model 指令 3. 实现原理 4. 总结 Vue.js 是一款流行的前端 JavaScript 框架,它以其强大的双向数据绑定能力而闻名。双向数据绑定使得数据在视图和模型之间保持同步,并且任一方的变化都会自动反映到另一方。那么,…

2021-arxiv-GPT Understands, Too

2021-arxiv-GPT Understands, Too Paper: https://arxiv.org/abs/2103.10385 Code: https://github.com/THUDM/P-tuning Prompt 简单理解 举例来讲,今天如果有这样两句评论: 1. 什么苹果啊,都没有苹果味&#xff0c…

rust std

目录 一,std基本数据结构 1,std::option 2,std::result 二,std容器 1,vector 三,std算法 1,排序 2,二分 (1)vector二分 (2)…

【C++代码】分割等和子集,目标和,一和零,零钱兑换,动态规划--代码随想录

题目&#xff1a;分割等和子集 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集&#xff0c;使得两个子集的元素和相等。 初步想法排序后双指针&#xff0c;发现不行 class Solution { public:bool canPartition(vector<int>&…

计讯物联外贸公司--佰沃恩应邀出席第三届“嘉庚论坛”—科技创新推动经济高质量发展分论坛

10月22日&#xff0c;以“数智创新能动未来”为主题的第三届“嘉庚论坛”—科技创新推动经济高质量发展分论坛于集美海景皇冠假日酒店正式启幕。此论坛聚焦集美区战略前沿产业&#xff0c;汇聚来自全国各地优秀的企业家、高校及科研院所专家学者&#xff0c;并邀请相关领域的亲…

【案例实战】NodeJS+Vue3+MySQL实现列表查询功能

这篇文章&#xff0c;给大家带来一个列表查询的功能&#xff0c;从前端到后端的一个综合案例实战。 采用vue3作为前端开发&#xff0c;nodejs作为后端开发。 首先我们先来看一下完成的页面效果。点击分页&#xff0c;可以切换到上一页、下一页。搜索框可以进行模糊查询。 后端…

CSRF 篇

一、CSRF 漏洞&#xff1a; 1、漏洞概述&#xff1a; &#xff08;1&#xff09;一般情景&#xff1a; 利用已认证用户的身份执行未经用户授权的操作。攻击者试图欺骗用户在其不知情的情况下执行某些操作&#xff0c;通常是在受害者已经登录到特定网站的情况下。 &#xff0…

长沙某公司面经总结 - 失败版

1.Java语言的特征 Java的三大特性&#xff1a;封装、继承、多态 面向对象是利于语言对现实事物进行抽象。面向对象具有以下特征&#xff1a; 继承&#xff1a;继承是从已有类得到继承信息创建新类的过程 封装&#xff1a;封装是把数据和操作数据的方法绑定起来&#xff0c;对…

IP地址与代理ip在网络安全中的关键作用

目录 前言 一、IP地址在网络安全中的作用 1、网络流量监视和分析 2、网络安全事件响应 3、网络安全检测和防御 二、代理IP在网络安全中的作用 1、流量过滤和清洗 2、匿名访问和保护隐私 3、实现全球化业务 三、IP地址和代理IP在网络安全中的应用案例 1、DDoS攻击 2…

QT实现在线流媒体播放平台

文章目录 QT实现在线流媒体播放平台简介开发视频ffmpeg下载SimpleVideoPlayer.hSimpleVideoPlayer.cpp 开发音频添加功能打开文件夹播放暂停播放上下一首选择倍速 效果展示项目下载 QT实现在线流媒体播放平台 简介 Qt是一种流行的C开发框架&#xff0c;它提供了用于构建图形用…

AT32固件库外设使用,ArduinoAPI接口移植,模块化

目录 一、ArduinoAPI移植一、通用定时器使用1.计时1.2.ETR外部时钟计数4.ArduinoAPI - timer 三、ADC1.ADC初始化&#xff08;非DMA&#xff09;2.ADC_DMA 规则通道扫描 六、USB HID IAP1.准备好Bootloader和app2.配置好时钟&#xff0c;一定要打开USB3.将生成的时钟配置复制到…

Mybatis执行流程简析

一、前言 日常工作中&#xff0c;我们用到mybatis的时候&#xff0c;都是写一个Mapper接口xml文件/注解形式&#xff0c;然后就可以在业务层去调用我们在Mapper接口中定义的CRUD方法&#xff0c;很方便&#xff0c;但一直都没有去研究过执行逻辑&#xff0c;下面附一篇我自己研…

使用simple_3dviz进行三维模型投影

【版权声明】 本文为博主原创文章&#xff0c;未经博主允许严禁转载&#xff0c;我们会定期进行侵权检索。 更多算法总结请关注我的博客&#xff1a;https://blog.csdn.net/suiyingy&#xff0c;或”乐乐感知学堂“公众号。 本文章来自于专栏《Python三维模型处理基础》的系列文…

飞鹅打印机使用注意事项:打印小票(云播报打印机)FP-V58-W(c)

文章目录 引言I 基础操作1.1 设置Wi-Fi1.2 在机器内预先内置logo 引言 应用场景&#xff1a; 云播报打印机&#xff1a;支持第三方软件开发商&#xff0c;接单后实现智能语音播报&#xff0c;可播报订单信息、打印订单小票。 http://www.feieyun.com/open/index.html 飞鹅对…