LSTM原理解析

news2024/11/18 11:27:17

一、背景

前文讲了RNN的基本原理,可以发现RNN是一个比较简单的神经网络结构,虽然为文本和时间序列的建模提供了一个很好的思路,但是也有一定的局限性。最直观的就是使用了Tanh函数造成梯度消失的问题。
在这里插入图片描述
根据Tanh的性质,很容易出现一个现象就是激活函数结果太大,激活函数的绝对值在很接近于1的位置,而对应的激活函数的梯度就会接近于0 。这样,在沿着时间反向传播的过程中,梯度就会逐渐减小,知道非常接近于0,这样会导致一个直接的结果就是RNN会很容易遗忘,即隐含的状态很难描述长距离输入的依赖关系。

为防止这个现象的发生,LSTM和GRU这两种循环神经网络被开发出来,解决信息丢失问题。

二、LSTM原理

长短时记忆网络(Long Short-term Memory Network,LSTM),不同于RNN只能记忆短期的记忆 S t S_t St,LSTM隐含状态是两个状态,短期记忆 S t S_{t} St和长期记忆 C t C_{t} Ct

下面我们来解析下LSTM的网络结构

2.1 LSTM 网络结构

在RNN中,如下图,左边红色是不同时刻的输入X,中间的蓝色部分是隐层状态S,右边绿色是网络输出Y
在这里插入图片描述

LSMT加了一条新的时间链C,同时增加了两条链之间的关联关系,如下图
在这里插入图片描述

计算隐藏状态 S t S_t St时,除了输入 X t − 1 X_{t-1} Xt1和前一时刻,还要包含当前时刻的信息 C t C_t Ct
在这里插入图片描述

2.2 LSTM解析

S t S_t St C t C_t Ct间的关联放大看,把一条线拆成三条线,包含了两步更加细致的操作

  • 需要遗忘的信息
  • 需要记住的信息

在这里插入图片描述

  • 遗忘门
    函数 f 1 f_1 f1就像一个橡皮擦,根据上一时刻的记忆 S t − 1 S_{t-1} St1和今天输入 x t x_t xt,决定要修改哪些信息,用数学语言描述就是 f 1 = s i g m o i d ( w 1 [ S t − 1 x t ] + b 1 ) f_1 = sigmoid(w_1\begin{bmatrix} S_{t-1}\\ x_t\\ \end{bmatrix} + b_1) f1=sigmoid(w1[St1xt]+b1),我们知道,sigmoid函数的取值在[0,1]之间,矩阵元素相乘时会抹掉那些取值为0的元素,相当于选择性遗忘了部分记忆(具体哪些需要进行选择遗忘就是模型训练的目标),这个就被成为forget gate,即遗忘门,就像一个阀门一样过滤重要特征,忽略无关信息;

  • 记忆门
    函数 f 2 f_2 f2就像一支笔,再次根据上一时刻的记忆 S t − 1 S_{t-1} St1和今天输入 x t x_t xt,决定要在信息里面保留哪些信息,数学语言描述就是 f 2 = s i g m o i d ( w 2 [ S t − 1 x t ] + b 2 ) ∗ t a n h ( w ^ 2 [ S t − 1 x t ] + b ^ 2 ) f_2 = sigmoid(w_2\begin{bmatrix} S_{t-1}\\ x_t\\ \end{bmatrix} + b_2 )*tanh(\hat w_2\begin{bmatrix} S_{t-1}\\ x_t\\ \end{bmatrix} + \hat b_2) f2=sigmoid(w2[St1xt]+b2)tanh(w^2[St1xt]+b^2),其中sigmoid函数再次对信息进行选择,tanh函数取值在[-1, 1]之间,这不操作不是遗忘,而是相当于把 x t − 1 x_{t-1} xt1 x t x_t xt这两个时刻的信息进行梳理和归纳,因此被称为input gate ,记忆门

  • 更新
    把两步操作合起来,用公式表示就是 C t = f 1 ∗ C t − 1 + f 2 C_t = f_1 * C_{t-1} +f_2 Ct=f1Ct1+f2,对应上图,就是先相乘再相加,这样就得到了新的 C t C_{t} Ct,他除了会继续向下传递,同时还会被用来更新当前短期记忆 S t S_{t} St,最后我们就可以计算输出得到 y t y_{t} yt,同时保持记忆短期记忆 S t S_{t} St和长期记忆 C t C_{t} Ct,并且相互更新,以上就是LSTM的原理

大多数关于LSTM文章的解析习惯用下图右边的图进行解释,里面内容看起来很多,理解起来也比较困难,所以我们把左右量还在那个图对照一下,再根据上面的解释,再去理解应该就简单了
在这里插入图片描述

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

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

相关文章

树莓派Bullseye版本更新

1、参考链接:树莓派11bullseye换源/Opencv安装_所罗门大帝的博客-CSDN博客 2、参考链接:https://blog.csdn.net/weixin_39589455/article/details/124514099 步骤1、使用镜像帮助:https://mirrors.tuna.tsinghua.edu.cn/help/raspbian/ 步骤…

面试题 链表相交 -剑指offer简单

面试题 链表相交 题目链接 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意&#…

DIY生日蛋糕笔记

自制6寸生日蛋糕笔记 实验环境: 长帝CRTF32PD搪瓷烤箱32升, 九阳电动打蛋器, 裱花盘一套 蛋糕盒子 称重器 硅胶刀 两个大碗1号和2号。 材料: 参考: https://www.bilibili.com/video/BV1t34y1Z7mL/?spm_id_from333…

揭开苹果供应链,如何将其命运与中国深度捆绑

前 言 诺基亚在2007年时拥有9亿用户,在手机市场上占据主导地位,福布斯在当时以“谁能赶上手机之王?”为标题刊登了一篇关于该公司的报道,与此同时,苹果公司推出了iPhone系列产品。16年后,苹果公司以充足的…

如何解锁华为手机PIN/图案/指纹/人脸锁?

您的手机存储主要数据,因此为您的设备设置安全代码让您高枕无忧。屏幕和生物识别锁可在手机丢失时保护您的手机,并使其在被盗时无法访问。每次您需要密码来解锁手机时,但如果您被锁在密码之外怎么办? 今天的话题将独家帮助华为用…

ChatGPT引发的新一轮网络安全威胁,要如何应对?

近期随着美国ChatGPT横空出世,沉寂一时的人工智能领域再次掀起波澜,引起社会的广泛关注,仅在短短数月内,ChatGPT的注册用户就超过数亿。作为一款免费的聊天机器人,它几乎可以回答任何问题。和搜索引擎不同的是&#xf…

JavaSE 文件内容的读写

读文件和写文件有俩种风格的操作(俩组不同的类) 字节流 InputStream(负责读)/ OutputStream (负责写)~~针对二进制文件进行读写,操作基本单位是字节。字符流 Reader(负责读)/ Write…

vue初识

第一次接触vue,前端的html,css,jquery,js学习也有段时间了,就照着B站的视频简单看了一些,了解了一些简单的用法,这边做一个记录。 官网 工具:使用VSCode以及Live Server插件(能够实时预览) 第…

【龙芯1B】:LCD显示图片文字背景色前景色、小创语音控制lcd显示、数码管倒计时

项目场景: 闲来无事,写了几个关于嵌入式技能大赛的任务。希望对大家有所帮助。本文开发板由百科荣创的龙芯1b开发板支持,关于嵌入式技能大赛的开发板。 LCD显示图片&文字&背景色&前景色小创语音控制lcd显示数码管倒计时LCD显示图…

创建自己的脚手架(一)

创建自己的脚手架 脚手架基本框架 使用pnpm init 创建环境 取一个自己喜欢的名字 这里叫gucli 生成 package.json文件的内容 {"name": "gucli","version": "1.0.0","description": "","main": "…

【JavaSE】Java9Java10Java11新特性(687~717)

687.复习:动态代理 688.复习:Lambda表达式 689.复习:函数式接口 690.复习:方法引用与构造器引用 691.复习:Stream API 692.复习:Optional类的使用 693.jdk版本更新说明 JDK 9 的发布 经过4次跳票&#x…

Leetcode力扣秋招刷题路-0074

从0开始的秋招刷题路,记录下所刷每道题的题解,帮助自己回顾总结 74. 搜索二维矩阵 编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性: 每行中的整数从左到右按升序排列。 每行的第一个整数大于前…

《MySQL学习》 事务的隔离

一.快照读与当前读 众所周知,MySQL默认的隔离级别为可重复读(RR),开启一致性视图后,事务提交前后数据都是不变的。 事务 T 启动的时候会创建一个视图 read-view,之后事务 T 执行期间,即使有其他事务修改了…

数值卡,让数据可视化玩出新花样丨三叠云

数值卡 路径 仪表盘 >> 仪表盘设计 功能简介 1. 数值卡增加「数值标题」、「图标」、「进度条」功能,使得应用场景更为广泛,实现数据可视化,让用户能够轻松地获取、处理信息。 2.「数据模型」支持0个维度1个指标、1个维度1个指标。…

EMC简介(文末有易灵思核心板)

EMC测试又叫做电磁兼容(EMC),指的是对电子产品在电磁场方面干扰大小(EMI)和抗干扰能力(EMS)的综合评定,是产品质量最重要的指标之一,电磁兼容的测量由测试场地和测试仪器…

嵌入式Linux文件系统的介绍

学习Linux都是跟文件打交道,却不知道文件系统下的目录存放的内容,有点说不过去,特意准备了这篇文章供大家阅读,哪怕有一点点帮助,都是对我的鼓励。 根文件系统一般应该比较小,因为包括严格的文件和一个小的…

手机子品牌的“性能战事”:一场殊途同归的大混战

在智能手机行业进入存量市场后,竞争更加白热化。当各国产手机品牌集体冲高端,旗下子品牌们也正厮杀正酣,显现出刀光剑影。处理器、屏幕、内存、价格等各方面无不互相对标,激烈程度并不亚于高端之争。源于OPPO的中端手机品牌realme…

input专题--独占事件

最近在群里聊天,遇到一个哥们描述的一个问题: 大家好,请教一个关于文件的问题。有几个进程打开了/dev/input 设备,都可以收到数据,又来了一个进程x,打开了这个设备,不知道采用了什么方式&#…

C++框架学习一:朴实无华的高性能RPC框架推荐

一个高性能的RPC框架: 介绍: 框架特性 操作系统:Linux编程语言:C14完全独立:不依赖任何第三方库高性能:微秒级响应高并发:单机百万连接IO多路复用:epoll连接池线程池用法简单 服…

快速入门nginx

目录 1.nginx前言 2.什么是nginx 3.Nginx作用? 1.正向代理 2.反向代理 3.轮询 4.加权轮询 4.Nginx的安装 1.windows下安装 2.linux下安装 5.Nginx常用命令 1.nginx前言 我们公司项目刚刚上线的时候,并发量小,用户使用的少&#…