【神经网络】LSTM

article/2025/9/22 12:40:47

1.什么是LSTM

        长短期记忆(Long short-term memory, LSTM)是一种特殊的RNN,主要是为了解决长序列训练过程中的梯度消失和梯度爆炸问题。简单来说,相比普通的RNN,LSTM能够在更长的序列中有更好的表现。

        LSTM区别于RNN地方,主要就在于它在算法中加入了一个判断信息有用与否的"处理器",这个处理器作用的结构被称为cell。一个cell当中被放置了三扇门,分别叫做输入门、遗忘门和输出门。一个信息进入LSTM的网络当中,可以根据规则来判断是否有用。只有符合算法认证的信息才会留下,不符的信息则通过遗忘门被遗忘。

2.LSTM的优势

2-1 LSTM架构

        相比于RNN,LSTM的结构增加了三个门“遗忘门”、“输入门”、“输出门”。LSTM靠着一些“门”结构让信息有选择地影响循环神经网络中每个时刻的状态,所谓“门”结构,就是使用一个sigmoid的全连接层和一个按位做乘法的操作,这两个结合起来就是一个“门”结构。之所以叫“门”结构是因为使用sigmoid作为激活函数的全连接神经网络会输出一个0到1之间的数值,描述当前输入的有多少信息量可以通过这个结构。当门全打开时(sigmoid全连接层输出为1时),全部信息都能通过;当门全部关上时(sigmoid全连接层输出为0时),任何信息不能通过。如下图为LSTM的整体结构图,其中黄色的框代表的是激活函数,其中σ代表sigmoid函数(0-1之间),tanh自然就是tanh函数(-1-1之间);粉色的圆圈代表的是向量之间的运算。 

如下图为LSTM的内部结构图。

    图中ca2e01a80a0220069168f9b012ff4216.png代表遗忘门,cf5bcb9803a46fb739b2800951c1c319.png代表输入门,3091516090d9993be68608a46fdd16f3.png代表输出门。C是memroy cell,存储记忆信息。681ac60ef0697ba97c40ebbbff9872d3.png代表上一时刻的记忆信息,3802974735f2ec4406ecb0f40bb75db7.png代表当前时刻的记忆信息,h是LSTM单元的输出,5a90fed5f45bb9b10a9202b28941df7a.png是前一刻的输出。

2-2 LSTM结构

2-2-1 细胞状态

        LSTM的关键是细胞状态(直译:cell state),表示为 Ct ,用来保存当前LSTM的状态信息并传递到下一时刻的LSTM中。当前的LSTM接收来自上一个时刻的细胞状态C_{t-1} ,并与当前x_{t}LSTM接收的信号输入x_{t} 共同作用产生当前LSTM的细胞状态C_{t} 。      

        在LSTM中,采用专门设计的“门”来引入或者去除细胞状态 Ct 中的信息。门是一种让信息选择性通过的方法。有的门跟信号处理中的滤波器有点类似,允许信号部分通过或者通过时被门加工了;有的门也跟数字电路中的逻辑门类似,允许信号通过或者不通过。这里所采用的门包含一个sigmod神经网络层和一个按位的乘法操作。

2-2-2遗忘门 

       遗忘门决定了细胞状态C_{t-1} 中的哪些信息将被遗忘。 遗忘门由一个sigmod神经网络层和一个按位乘操作构成。

        遗忘门包含一个sigmod神经网络层(黄色方框,神经网络参数为W_{f}b_{f}),接收t时刻的输入信号x_{t}t-1时刻LSTM的上一个输出信号h_{t-1},这两个信号进行拼接以后共同输入到神经网络层sigmod中,然后输出信号f_{t} ,f_{t}是0-1到之间的数值,并与C_{t-1}相乘来决定C_{t-1}中的哪些信息将被保留,哪些信息将被舍弃。具体公式如下:

        C_{t-1}= [0.5,0.6,0.7],h_{t-1} = [0.3,0.8,0.69],x_{t} = [0.2,1,3,0.7] ,那遗忘门的输入信号就是h_{t-1}x_{t}的组合,[h_{t-1},x_{t}] = [0.3,0.8,0.69,0.2,1.3,0.7],然后通过sigmod神经网络层输出每个元素都是处于0-1之间的向量f_{t} = [0.5,0.1,0.8]C_{t-1}按位相乘。

 2-2-3 输入门

        输入门的作用与遗忘门相反,它将决定新输入的信息x_{t}h_{t-1}中哪些信息将被保留。输入门包含两部分,一个是sigmod神经网络层(神经网络参数为W_{i}b_{i})和一个tanh神经网络层(神经网络参数为W_{c}b_{c})

        sigmod神经网络层的作用很明显,跟遗忘门一样,它接收 h_{t-1}x_{t}作为输入,然后输出一个0到1之间的数值i_{t}来决定哪些信息需要被更新; 

        Tanh神经网络层的作用是将输入的 h_{t-1}x_{t}整合,然后通过tanh神经网络层来创建一个新的状态候选向量\tilde{C_{t}}\tilde{C_{t}}的值范围在-1到1之间。 

        输入门的输出由上述两个神经网络层的输出决定i_{t} 与\tilde{C_{t}}相乘来选择哪些信息将被新加入到  时刻的细胞状态C_{t}中。 

2-2-4 细胞状态更新

        通过遗忘门和输入门,将可以细胞状态 Ct更新。

        细胞状态更新公式如下: 

     将遗忘门的输出f_{t} 与上一时刻的细胞状态C_{t-1}相乘来选择遗忘和保留一些信息,将输入门的输出与从遗忘门选择后的信息加和得到新的细胞状态 C_{t}。这就表示t时刻的细胞状态C_{t}已经包含了此时需要丢弃的t-1时刻传递的信息和t时刻从输入信号获取的需要新加入的信息i_{t}*\tilde{C_{t}}。 C_{t}将继续传递到t+1时刻的LSTM网络中,作为新的细胞状态传递下去。  

2-2-5 输出门

        输出门用来控制单元状态C_{t}有多少输入到LSTM的当前输出h_{t}。由sigmod神经网络层tanh激活函数以及按位乘操作组成。

         h_{t-1}x_{t}作为输入,经过sigmod的神经网络层(神经网络层的网络参数为W_{0}b_{0}),然后输出一个0到1之间的数值o_{t}; 

            C_{t}经过一个tanh激活函数,此处需要注意的是(tanh是作为激活函数而不是神经网络层)得到一个在-1到1之间的树枝,并与o_{t}相乘得到输出信号h_{t}。之后h_{t}作为下一时刻的输入信号传递到下一阶段。

3.后记

        LSTM通过门控状态来控制传输状态,记住需要长时间记忆的,忘记不重要的信息;而不像普通的RNN那样只能够“呆萌”地仅有一种记忆叠加方式。对很多需要“长期记忆”的任务来说,尤其好用。但也因为引入了很多内容,导致参数变多,也使得训练难度加大了很多。


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

相关文章

[深入浅出] LSTM神经网络

由来 人类并不是每时每刻都从一片空白的大脑开始他们的思考。在你阅读这篇文章时候,你都是基于自己已经拥有的对先前所见词的理解来推断当前词的真实含义。我们不会将所有的东西都全部丢弃,然后用空白的大脑进行思考。我们的思想拥有持久性。 传统的神经…

简单理解LSTM神经网络

递归神经网络 在传统神经网络中,模型不会关注上一时刻的处理会有什么信息可以用于下一时刻,每一次都只会关注当前时刻的处理。举个例子来说,我们想对一部影片中每一刻出现的事件进行分类,如果我们知道电影前面的事件信息&#xf…

LSTM神经网络

LSTM被广泛用于许多序列任务(包括天然气负荷预测,股票市场预测,语言建模,机器翻译),并且比其他序列模型(例如RNN)表现更好,尤其是在有大量数据的情况下。 LSTM经过精心设…

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

一、什么是LSTM: 如果你经过上面的文章看懂了RNN的内部原理,那么LSTM对你来说就很简单了,首先大概介绍一下LSTM,是四个单词的缩写,Long short-term memory,翻译过来就是长短期记忆,是RNN的一种…

机器学习——人工神经网络模型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,如下图: 由于时间原因,稍后会补充更多细节