【机器学习300问】124、什么是LSTM?LSTM的基本结构是怎样的?

        长短期记忆网络(LSTM)是一种解决隐变量模型长期信息保存和短期输入缺失问题的方法,有趣的是,长短期记忆网络的设计比门控循环单元稍微复杂一些, 却比门控循环单元早诞生了近20年。

一、什么是LSTM?

        LSMT全称为长短期记忆网络(Long Short-Term Memory)是一种特殊的循环神经网络(RNN),专门设计用于解决长期依赖的问题,即在处理序列数据时能够记住较长时间间隔的信息。RNNs通过在序列中每个时间步传递隐藏状态来保留过去信息,但它在处理长序列时往往会遇到梯度消失或梯度爆炸的问题,这限制了它记忆远距离信息的能力

        位于序列后端的was和were的选择取决于前面的名词是单数还是复数,图中的序列还比较短,但若是对长序列而言,记忆cat的单复数就显得非常关键。

二、LSTM的基本结构

        LSTM的基本结构由四个主要组件构成:输入门、遗忘门、输出门以及记忆细胞(也称为细胞状态)。还有一个额外的概念是候选记忆状态,它是新信息被考虑加入到细胞状态之前的形式。下面先把LSTM的网络模型图放出来,有助于理解这四个组件。

LSTM基本结构图解

        为了更加直观的展示LSTM的结构,我把B站UP主梗直哥丶的视频截取出来给大家看,强烈推荐大家去看他的视频,讲的非常好。

(1)输入门

        输入门(Input Gate)记为 i_t ,是决定当前输入中哪些部分应当被更新到细胞状态。它使用一个sigmoid函数来产生一个0到1之间的值,表示新信息的多少应该被“记忆”。 数学表达式为:

i_t = \sigma(W_i \cdot [h_{t-1}, x_t] + b_i)

\tilde{C}_t = \tanh(W_C \cdot [h_{t-1}, x_t] + b_C)

        其中 W_i 和 W_C 分别是输入门和候选细胞状态的权重矩阵,b_i和 b_C 是对应的偏置项。x_t是当前时间步的输入。\tilde{C_t}是候选细胞状态。

(2)遗忘门

        遗忘门(Forget Gate)记为 f_t ,是确定细胞状态中哪些信息应当被遗忘。同样使用sigmoid函数,决定过往记忆的重要性,值接近1表示大部分保留,接近0表示大部分遗忘。 数学表达式为:

f_t = \sigma(W_f \cdot [h_{t-1}, x_t] + b_f)

        其中 \sigma 是sigmoid激活函数,W_f是遗忘门的权重矩阵,b_f是遗忘门的偏置项,h_{t-1}是上一个时间步的隐藏状态,x_t是当前时间步的输入。

删除对应遗忘门和增加对应输入门

(3)细胞状态

        细胞状态(Cell State)记为 C_t, 是LSTM的核心,一个能够存储长期信息的向量。它通过点积运算结合遗忘门和前一时间步的细胞状态,以及输入门和一个新的候选记忆状态来更新。候选记忆状态是由当前输入和一个输入的权重矩阵通过tanh激活函数得到的。 数学表达式为:

  C_t = f_t * C_{t-1} + i_t * \tilde{C}_t

        候选细胞状态,记为 \tilde{C}_t ,是在每个时间步中,当前输入x_t和前一隐藏状态h_{t-1}的信息经过处理生成了一个候选细胞状态,该候选细胞状态包含可能加入长期状态的信息。

        隐藏状态,记为 h_t ,包含了当前时间步的输出信息,它是基于细胞状态的过滤输出,输出门控制着细胞状态中的哪些信息会传输到隐藏状态,然后用于输出或传递到下一个时间步。

(4)输出门

        输出门(Output Gate)记为 o_t ,是控制细胞状态中哪些信息应当被用于生成当前时间步的输出。它结合了sigmoid函数(决定哪些细胞状态的内容应该输出)和tanh函数(对选定的记忆进行缩放,确保输出在-1到1之间)。 数学表达式为:

o_t = \sigma(W_o \cdot [h_{t-1}, x_t] + b_o)

h_t = o_t * \tanh(C_t)

        其中W_o是输出门的权重矩阵,b_o 是输出门的偏置项。h_{t-1}是上一个时间步的隐藏状态,x_t是当前时间步的输入。

三种门和候选记忆细胞的计算图解

 

三、LSTM和GRU的区别与联系

        LSTM(长短期记忆网络)和GRU(门控循环单元)都是循环神经网络(RNN)的变种,目的是解决标准RNN中的梯度消失问题,并更好地捕捉长期依赖关系。下面是它们之间的一些关键区别与联系

(1)联系

  1. 共同目标:LSTM和GRU都被设计来改善标准RNN在处理长期依赖问题上的能力,通过引入门控机制来控制信息的遗忘和更新。
  2. 门控机制:两者都使用门(gate)来调节信息流,允许网络选择性地忘记旧信息或记住新信息。
  3. 解决梯度消失:它们都能有效缓解梯度消失问题,从而在序列数据建模中表现得更为稳定和强大。

(2)区别

① 门的数量和结构

  • LSTM拥有三个门:遗忘门(forget gate)、输入门(input gate)和输出门(output gate),以及一个细胞状态(cell state)和隐藏状态(hidden state)。遗忘门决定哪些旧信息被遗忘,输入门控制新信息的接纳程度,输出门则决定细胞状态中多少信息将被用于生成隐藏状态。
  • GRU简化了结构只有两个门:重置门(reset gate)和更新门(update gate)。重置门决定在处理新输入时,多少以前的信息应该被“重置”或遗忘;更新门则同时控制着旧信息的保留和新信息的加入。

② 记忆单元

  • LSTM拥有独立的细胞状态,这个细胞状态可以长期存储信息,而隐藏状态则基于此细胞状态计算得出,这为信息的长期保留提供了专门的机制。
  • GRU没有明确区分细胞状态和隐藏状态,而是直接在一个状态中通过门控机制控制信息的更新,使得模型结构更为简洁。

③ 计算复杂性和参数量

  • LSTM结构更复杂,拥有更多的门和独立的细胞状态,因此在计算上通常比GRU更耗时且需要更多的参数。
  • GRU结构简化,计算效率较高,所需参数较少,这在资源有限或数据量较小的场景下可能更有优势。

④ 性能

  • 在多数任务上,LSTM和GRU的表现相近,但在某些特定任务或大规模数据集上,LSTM由于其更强的表达能力和参数量,可能会取得更好的性能。
  • GRU以其较少的参数量和较简单的结构,在训练速度和资源消耗上占有优势,尤其是在处理较短序列或资源受限环境时

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

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

相关文章

Character Animator 2024 mac/win版:赋予角色生命,动画更传神

Character Animator 2024是一款强大的角色动画制作软件,以其创新的功能和卓越的性能,为动画师、游戏开发者以及设计师们带来了全新的创作体验。 Character Animator 2024 mac/win版获取 这款软件采用了先进的骨骼绑定技术,使得角色动画的制作…

图解ZGC

ZGC(Z Garbage Collector) 是一款性能比 G1 更加优秀的垃圾收集器。ZGC 第一次出现是在 JDK 11 中以实验性的特性引入,这也是 JDK 11 中最大的亮点。在 JDK 15 中 ZGC 不再是实验功能,可以正式投入生产使用了,使用 –X…

corona渲染器与vray比哪个好?支持云渲染平台吗

​在视觉渲染技术领域,V-Ray和Corona都以其卓越的性能和广泛应用赢得了高度评价。这两款渲染器各有其独特的优势,使得在它们之间做出选择并非易事。不同的应用场景和用户需求可能会让它们各自展现出不同的优势。 一、corona渲染器跟vray怎么样 在比较V-…

【VUE3学习手札】

VUE3学习手札 vue3成长之路学习笔记 文章目录 VUE3学习手札前言一、markRaw1.1 代码示例1.2 应用场景1.3 拓展(toRaw)1.4 实际应用 二、ref 和 reactive 前言 主要用于自己的一个备忘,对知识点的查缺补漏 一、markRaw 将一个对象标记为不可被…

【启明智显技术分享】工业级HMI芯片-Model系列关于SDCard / Udisk 烧录时显示进度条和数字百分比技术指导

【Model系列芯片】 是启明智显针对工业、行业以及车载产品市场推出的系列HMI芯片,主要应用于工业自动化、智能终端HMI、车载仪表盘、两轮车彩屏仪表、串口屏、智能中控、智能家居、充电桩显示屏、储能显示屏、工业触摸屏等领域。此系列具有高性能、低成本的特点&am…

01studio的miropython哥伦布407开发板真实管脚

抹黑的管脚都不能用!绿色是sd卡占用,红色的是串口占用,还有其他的只能看原理图了 管脚都引出来了,不能用,引出来干嘛呢?纯瞎耽误功夫 谨慎使用吧。

C++ 62 之 冒泡排序

#include <iostream> // #include <string> #include <cstring>using namespace std;// 冒泡排序:函数模板 template<typename T> void mySort(T arr[], int len){ // size参数是数组的个数&#xff0c;一定是int型的for (size_t i 0; i < len -1;…

玩转编程的终极挑战,C++究竟有多难?

C是一门非常强大和灵活的编程语言&#xff0c;它可以实现面向对象、泛型、元编程等多种编程范式&#xff0c;可以开发高性能的系统软件、游戏、图形、网络等各种应用。但是&#xff0c;C也是一门非常复杂和难学的语言&#xff0c;很多初学者在学习C的过程中会遇到很多困难和挫折…

mysql下载安装教程(图文详细版)

如果一次没成功的话&#xff0c;就删掉重安&#xff08;前提是清理干净&#xff09;&#xff08;up就下了好几次&#xff0c;在错误中找到答案&#xff09; navicat(可视化工具)在其他文章里 一、mysql下载 进入官网地址https://www.mysql.com/downloads/ 然后就开始下载了&…

C++ 48 之 继承的基本语法

#include <iostream> #include <string> using namespace std;// 定义一个基类&#xff0c;把公共的部分写在这里&#xff0c;以后让别的类继承即可 class BasePage{ public:void header(){cout << "公共的头部"<< endl;}void footer(){cout…

如何恢复iPhone iCloud云盘资料删除?给出建议

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…

【尚庭公寓SpringBoot + Vue 项目实战】后台岗位管理(十六)

【尚庭公寓SpringBoot Vue 项目实战】后台岗位管理&#xff08;十六&#xff09; 文章目录 【尚庭公寓SpringBoot Vue 项目实战】后台岗位管理&#xff08;十六&#xff09;1、业务说明2、逻辑模型介绍3、接口开发3.1、分页查询岗位信息3.2、保存或更新岗位信息3.3、根据ID删…

Flutter 小技巧之面试题里有意思的异步问题

很久没更新小技巧系列了&#xff0c;本次简单介绍一下 Flutter 面试里我认为比较有意思的异步基础知识点。 首先我们简单看一段代码&#xff0c;如下代码所示&#xff0c;是一个循环定时器任务&#xff0c;这段代码里&#xff1a; testFunc 循环每 1 秒执行一次 asyncWorkasy…

PAT B1008. 数组元素循环右移问题

题目描述 一个数组A中存有N(N>O)个整数&#xff0c;在不允许使用另外数组的前提下&#xff0c;将每个整数循环向右移M(M≥0)个位置,即将A中的数据由( …)变换为(……)(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,则应如何设计移动的方法?输…

[vue3]掌握pinia

pinia Pinna是vue的最新状态管理工具, 用来替代vuex 官网: Pinia | The intuitive store for Vue.js 优势 更简洁的API, 去掉了mutaion与Vue3配套的组合式API风格去掉了modules, 每个store都是独立的模块更好的TS支持, 提供可靠的类型推断 安装 命令: npm i piniamain.js挂…

国内docker镜像加速

自己注册一个阿里云或者华为云的账户&#xff0c;搜索镜像 点击开通&#xff0c;再点击镜像加速器&#xff0c;可以看到自己的加速器地址&#xff0c;然后替换就可以了。再去pull即可成功&#xff0c;但是响应还是要慢一点

【多模态】39、HRVDA | 基于高分辨率输入的高效文档助手(CVPR2024)

论文&#xff1a;HRVDA: High-Resolution Visual Document Assistant 代码&#xff1a;暂无 出处&#xff1a;中国科学技术大学 | 腾讯优图 贡献点&#xff1a; 作者提出了高分辨率视觉文档助手 HRVDA&#xff0c;能直接处理高分辨率图像输入作者提出了内容过滤机制和指令过…

Altair 人工智能技术助力MABE预测消费者行为,实现设备性能优化

主要看点 行业&#xff1a; 家电行业 挑战&#xff1a; 企业面临的挑战是如何利用已收集的大量数据&#xff0c;深入了解消费者在产品使用过程中对某些保鲜程序的影响。 Altair 解决方案&#xff1a; Altair采用了Altair RapidMiner人工智能平台来解决问题&#xff0c;特别是…

C++ 60 之 虚析构和纯虚析构

#include <iostream> #include <string> #include <cstring> using namespace std;class Animal13{ public:Animal13(){cout << "Animal的默认构造函数" << endl;}virtual void speak(){cout << "动物叫" << en…

CP AUTOSAR标准之MemoryDriver(AUTOSAR_CP_SWS_MemoryDriver)

1 简介和功能概述 该规范描述了AUTOSAR基础软件模块内存驱动程序(Mem)的功能、API和配置。   内存驱动程序提供访问不同类型内存设备的基本服务,如读取、写入、擦除和空白检查。   尽管闪存仍然是最常见的非易失性存储器技术,但内存驱动程序规范考虑了所有相关的内存设备…