(神经网络深度学习)--循环神经网络LSTM

article/2025/9/22 12:41:09


一、什么是LSTM:

如果你经过上面的文章看懂了RNN的内部原理,那么LSTM对你来说就很简单了,首先大概介绍一下LSTM,是四个单词的缩写,Long short-term memory,翻译过来就是长短期记忆,是RNN的一种,比普通RNN高级(上面讲的那种),基本一般情况下说使用RNN都是使用LSTM,现在很少有人使用上面讲的那个最基础版的RNN,因为那个存在一些问题,LSTM效果好,当然会选择它了!

二、为什么LSTM比普通RNN效果好?

这里就牵扯到梯度消失和爆炸的问题了,我简单说两句,上面那个最基础版本的RNN,我们可以看到,每一时刻的隐藏状态都不仅由该时刻的输入决定,还取决于上一时刻的隐藏层的值,如果一个句子很长,到句子末尾时,它将记不住这个句子的开头的内容详细内容,具体原因可以看我之前写的文章,如下:

韦伟:从反向传播推导到梯度消失and爆炸的原因及解决方案(从DNN到RNN,内附详细反向传播公式推导)679 赞同 · 30 评论文章正在上传…重新上传取消

LSTM通过它的“门控装置”有效的缓解了这个问题,这也就是为什么我们现在都在使用LSTM而非普通RNN。

三、揭开LSTM神秘的面纱:

既然前面已经说了,LSTM是RNN的一种变体,更高级的RNN,那么它的本质还是一样的,还记得RNN的特点吗,可以有效的处理序列数据,当然LSTM也可以,还记得RNN是如何处理有效数据的吗,是不是每个时刻都会把隐藏层的值存下来,到下一时刻的时候再拿出来用,这样就保证了,每一时刻含有上一时刻的信息,如图,我们把存每一时刻信息的地方叫做Memory Cell,中文就是记忆细胞,可以这么理解。

打个比喻吧,普通RNN就像一个乞丐,路边捡的,别人丢的,什么东西他都想要,什么东西他都不嫌弃,LSTM就像一个贵族,没有身份的东西他不要,他会精心挑选符合自己身份的物品。这是为什么呢?有没有思考过,原因很简单,乞丐没有选择权,他的能力注定他只能当一个乞丐,因此他没有挑选的权利,而贵族不一样,贵族能力比较强,经过自己的打拼,终于有了地位和身份,所以可以选择舍弃一些低档的东西,这也是能力的凸显。

LSTM和普通RNN正是贵族和乞丐,RNN什么信息它都存下来,因为它没有挑选的能力,而LSTM不一样,它会选择性的存储信息,因为它能力强,它有门控装置,它可以尽情的选择。如下图,普通RNN只有中间的Memory Cell用来存所有的信息,而从下图我们可以看到,LSTM多了三个Gate,也就是三个门,什么意思呢?在现实生活中,门就是用来控制进出的,门关上了,你就进不去房子了,门打开你就能进去,同理,这里的门是用来控制每一时刻信息记忆与遗忘的。

依次来解释一下这三个门:

  1. Input Gate:中文是输入门,在每一时刻从输入层输入的信息会首先经过输入门,输入门的开关会决定这一时刻是否会有信息输入到Memory Cell。
  2. Output Gate:中文是输出门,每一时刻是否有信息从Memory Cell输出取决于这一道门。
  3. Forget Gate:中文是遗忘门,每一时刻Memory Cell里的值都会经历一个是否被遗忘的过程,就是由该门控制的,如果打卡,那么将会把Memory Cell里的值清除,也就是遗忘掉。

按照上图的顺序,信息在传递的顺序,是这样的:

先经过输入门,看是否有信息输入,再判断遗忘门是否选择遗忘Memory Cell里的信息,最后再经过输出门,判断是否将这一时刻的信息进行输出。

四、LSTM内部结构:

抱歉最近事比较多,没有及时更新。。让我们先回顾一下之前讲了点啥,关于LSTM,我们了解了它的能力比普通RNN要强,因为它可以对输入的信息,选择性的记录或遗忘,这是因为它拥有强大的门控系统,分别是记忆门,遗忘门,和输出门,至于这三个门到底是如何工作的,如何起作用的。本节我们就来详细讲解LSTM的内部结构。

在了解LSTM的内部结构之前,我们需要先回顾一下普通RNN的结构,以免在这里很多读者被搞懵,如下:

我们可以看到,左边是为了简便描述RNN的工作原理而画的缩略图,右边是展开之后,每个时间点之间的流程图,注意,我们接下来看到的LSTM的结构图,是一个时间点上的内部结构,就是整个工作流程中的其中一个时间点,也就是如下图:

注意,上图是普通RNN的一个时间点的内部结构,上面已经讲过了公式和原理,LSTM的内部结构更为复杂,不过如果这么类比来学习,我认为也没有那么难。

我们类比着来学习,首先看图中最中间的地方,Cell,我们上面也讲到了memory cell,也就是一个记忆存储的地方,这里就类似于普通RNN的 St ,都是用来存储信息的,这里面的信息都会保存到下一时刻,其实标准的叫法应该是 ht ,因为这里对应神经网络里的隐藏层,所以是hidden的缩写,无论普通RNN还是LSTM其实t时刻的记忆细胞里存的信息,都应该被称为 ht 。再看最上面的 a ,是这一时刻的输出,也就是类似于普通RNN里的 Ot 。最后,我们再来看这四个 ,,,Z,Zi,Zf,Zo ,这四个相辅相成,才造就了中间的Memory Cell里的值,你肯恩要问普通RNN里有个 Xt 作为输入,那LSTM的输入在哪?别着急,其实这四个 ,,,Z,Zi,Zf,Zo 都有输入向量 Xt 的参与。对了,在解释这四个分别是什么之前,我要先解释一下上图的所有这个符号,

都代表一个激活函数,LSTM里常用的激活函数有两个,一个是tanh,一个是sigmoid。

Z=tanh(W[xt,ht−1])Zi=σ(Wi[xt,ht−1])Zf=σ(Wf[xt,ht−1])Zo=σ(Wo[xt,ht−1])

其中 Z 是最为普通的输入,可以从上图中看到, Z 是通过该时刻的输入 Xt 和上一时刻存在memory cell里的隐藏层信息 ht−1 向量拼接,再与权重参数向量 W 点积,得到的值经过激活函数tanh最终会得到一个数值,也就是 Z ,注意只有 Z 的激活函数是tanh,因为 Z 是真正作为输入的,其他三个都是门控装置。

再来看 Zi ,input gate的缩写i,所以也就是输入门的门控装置, Zi 同样也是通过该时刻的输入 Xt 和上一时刻隐藏状态,也就是上一时刻存下来的信息 ht−1 向量拼接,在与权重参数向量 Wi 点积(注意每个门的权重向量都不一样,这里的下标i代表input的意思,也就是输入门)。得到的值经过激活函数sigmoid的最终会得到一个0-1之间的一个数值,用来作为输入门的控制信号。

以此类推,就不详细讲解 ,Zf,Zo 了,分别是缩写forget和output的门控装置,原理与上述输入门的门控装置类似。

上面说了,只有 Z 是输入,其他的三个都是门控装置,负责把控每一阶段的信息记录与遗忘,具体是怎样的呢?我们先来看公式:

首先解释一下,经过这个sigmod激活函数后,得到的 ,,Zi,Zf,Zo 都是在0到1之间的数值,1表示该门完全打开,0表示该门完全关闭,


http://chatgpt.dhexx.cn/article/sfbaoFXx.shtml

相关文章

机器学习——人工神经网络模型LSTM

LSTM的学习 学习目标: 1理解什么是人工神经网络。2深入理解LSTM(长短期记忆网络)3Code 浅析人工神经网络: 在谈人工神经网络模型之前我们先来了解一下生理上的神经网络。 下面是一张对比图: Neural Science Compute…

LSTM神经网络详解

LSTM 长短时记忆网络(Long Short Term Memory Network, LSTM),是一种改进之后的循环神经网络,可以解决RNN无法处理长距离的依赖的问题,目前比较流行。 长短时记忆网络的思路: 原始 RNN 的隐藏层只有一个状态,即h&am…

LSTM神经网络介绍

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 引言一、介绍1.1什么是LSTM?1.2基础知识1.2.1门控机制1.2.2 相关激活函数1.2.3网络参数介绍 二、LSTM网络架构2.1架构图 三、LSTM的门3.1遗忘门3.2输入门3.3输出门…

大白话理解LSTM神经网络(附实例讲解)

前言 本文章为个人学习笔记整理,所学习的内容来自b站up主老弓的学习日记,附有实例讲解。 归类 长短期记忆神经网络(LSTM)是一种特殊的循环神经网络(RNN)。原始的RNN在训练中,随着训练时间的加长以及网络层数的增多&a…

Idea如何导入一个SpringBoot项目

最近公司要求开发工具要用Idea,作为一个eclipse的老员工,记录一下Idea中遇到的坑 刚开始用Idea从Git上导入一个项目时,遇到了很多坑,网上有很多方法,我不多做介绍。只说明一下我使用的方法。 1.本地新建一个文件夹&a…

idea导入项目框架的方法

学习时,使用IDEA的时候,经常需要导入项目框架,下面操作介绍如何导入项目框架。 打开需要导入的项目 打开方式: 打开 idea ,选择 Import Project 也可以进入idea后,选择 Flie --> New --> Project …

IDEA导入Eclipse项目

背景:用习惯了idea再去用eclipse实在用的不习惯,于是将老的eclipse项目导入到eclipse,网上有很多教程,看了很多博客都不行,一直报错,各种报错,现在终于好了,我们一起来看看怎么将ecl…

关于新版idea如何导入项目

现今有很多同学都发现idea怎么找不到import project这个按钮了,我也遇到了这个问题,经过研究发现,之前使用import project最关键还是在于project form Existing Sources。 而就在打开项目后,File-->New-->Project form Exi…

idea导入项目后没有被识别为maven项目的解决办法

开发中遇到了idea导入项目后没有被识别为maven项目,使用下面方法即可 1、首先点击工具栏最左边的 Help 再点击 Find Action ;或者使用快捷键 CtrlShiftA 2、接着在输入框中输入 maven projects ,会弹出一个 Add Maven Projects 选项&#xf…

IDEA导入web项目并启动

导入项目 依次点击idea左上角的File->Project Structure->project 修改SDK、Language level,选择自己电脑对应的jdk版本,为web的运行提供jdk的环境 第二步,依次点击Facts->Web 点击Artifacts->Web Application:Exploded->…

Java代码实例2,idea导入项目后,没有项目结构

目录 专栏导读一、idea导入项目后,没有项目结构二、解决方案1、点击file -> project structure -> Modules2、点击右上角加号 --> import Modules3、选择import modules from external model4、导入后,就可以显示项目的目录结构了。 专栏导读 &…

IntelliJ IDEA导入Maven项目

(1)项目导入, 点击intelliJ IDEA的Open按钮, 找到项目目录下pom的文件,然后点击ok (先admin, 在biz-admin, 再加dal) 由于之前导入过这个项目,所以现在要先删除再导入 导入后编译器的右侧就会出现Maven Projects的侧边…

新手小白如何用IDEA成功导入并运行项目(IDEA+gradle+mysql)

因为我也是最近刚开始使用 IntelliJ IDEA ,以下是我的一个成功在浏览器运行出项目界面的过程,主要分为5步走战略,仅供参考。 1、打开IDEA 选择 file–>Open–>找到自己所要导入项目–>选着项目文件里的build.gradle文件–>点击…

eclipse项目导入idea

目录 一、IDEA的导入 二、项目配置 三,在IntelliJ IDEA配置Tomcat 一、IDEA的导入 1、首先选择File->New->Project from Existing sources/Project form Version Control,如果项目在你的本地则选择 Project from Existing sources, 如果你想从SVN上直接导入…

idea导入项目全部爆红问题怎么解决

背景 今天导入Git上拉下来的项目,又双叒爆红了。就像代码来大姨妈一样,紧张地手足无措。让我们一起看下咋回事。 二. 走过的路 为数不多的曾经爆红的经验告诉我,这一定是maven大哥们出问题了! 于是我开始检查: IDEA…

IDEA导入一个本地项目并运行

IDEA导入一个本地项目并运行 操作如下: 至此,一直点击下一步即可导入项目成功 此时项目想要运行,还需要配置Artifacts,如下图: 由于时间原因,稍后会补充更多细节

eclipse导入idea项目

eclipse导入已存在的项目,之前是用的idea 1、使用idea打开项目 ctrlaltshifts 2、打开eclipse,选择import,再选择 Exsting Projects into Workspace 3、用eclipse打开后,再用idea右键新建一个类发现没有 java class 选项了&#…

IntelliJ IDEA导入本地SpringBoot项目最超详细教程

前言 废话不多说,可是换成idea开发又该怎样导入呢?整合最近我已需要学习别人的项目,希望把这个过程记录下来帮助大家学习.1.打开open,去寻找对应的位置文件 2.如何引入的问题 ![在这里插入图片描述](https://img-blog.csdnimg.cn/8874d34b7be648138027d8d02dc88c2b…

在IDEA中导入本地项目

最近的软件构造实验需要把项目交到GitHub上,想要验证一下交上去的东西能不能运行,打算从GitHub上把提交的项目克隆下来,那克隆下来的项目怎么导入到IDEA中运行呢 第一步:从GitHub上clone代码-Download ZIP 第二步:下载…

IDEA使用教程—5、如何导入一个已有的项目

scala与此类似,只是需要的是sbt而不是maven. 今天刚开始学习使用intellij IDEA来进行后台开发,感觉这个软件跟之前用过的eclipse和myeclipse都不是很想同,然后学长给了《精通Spring4.x企业应用开发实战》这本书上相关的代码,今…