长短时期记忆(LSTM)及门控循环单元(GRU)网络结构

2023-10-12 08:59

本文主要是介绍长短时期记忆(LSTM)及门控循环单元(GRU)网络结构,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、背景

1、RNN自身可以通过不停的将信息循环操作,保证信息持续存在,从而可以利用前面得事件信息来对后面得事件进行分类操作。
2、RNN处理这类任务时不一定就可以完全得理解之前的记忆,因为在语句过长得情况下,之前的文本内容在传到后期时已经不再具有那么的信息。
(1)在‘the clouds are in the sky’中,如果最后进行预测,则我们可以大概率的将sky进行预测出来。
(2)若在一个复杂的任务中‘I grew up in France… I speak fluent French.’如果在这句话中我们要进行最后一个单词French的预测就比较麻烦,因为我们最后一个单词离France比较远。
3、在RNN中若要解决2的(2)这类问题则需要通过调参的操作来进行解决。

二、LSTM网络

1、标准的RNN与LSTM网络的对比
(1)在RNN中每个重复的模块仅具有比较简单的一个网络结构
在这里插入图片描述

(2)在LSTM中,它与RNN具有类似的这种链式结构,区别于RNN的地方在于,它的内部具有四个复杂的网络层。
在这里插入图片描述

以下为LSTM中各类符号的定义图
在这里插入图片描述
图中黄色类似于CNN里的激活函数操作,粉色圆圈表示点操作,单箭头表示数据流向,箭头合并表示向量的合并(concat)操作,箭头分叉表示向量的拷贝操作。

2、简述LSTM的核心内容
我们可以把LSTM的核心理解为一个细胞状态,用贯穿细胞的水平线进行表示。这个细胞状态和一个传送带类似,它虽然贯穿整个细胞,却仅有很少的分支出现,只有这样才能保证信息可以不变的流过整个循环神经网络(RNN)。

在这里插入图片描述

然而,在LSTM的网络中,我们可以通过一种被称为门的结构,对细胞状态中的信息进行删除或者添加信息。
这些门可以选择性的决定让细胞状态中的哪些信息通过;门的结构也很简单,在LSTM的内部,门的结构为一个sigmoid层和一个点乘操作的组合。
在这里插入图片描述

由于sigmoid层的输出值是在0到1之间,这代表着有多少的信息可以流过sigmoid层。通常0表示都不能通过,而1表示都能通过。
通常在一个LSTM中包含三个门来控制细胞状态

3、一个一个门的打开LSTM(遗忘门、输入门、输出门)
(1)遗忘门
LSTM的第一件事情是需要决定我们的细胞状态需要丢弃哪些信息。所以我们通过遗忘门来进行这项操作,这个遗忘门是通过sigmoid的单元来进行处理操作的。它通过查看 h t − 1 h_{t-1} ht1 x t x_t xt中的信息来输出一个0-1之间的向量,该向量里面的0-1值可以表示细胞状态 C t − 1 C_{t-1} Ct1中的哪些信息保留或丢弃多少。0表示不保留,1表示保留。遗忘门的结构如下图。

在这里插入图片描述 f t = σ ( W f ∗ [ h t − 1 , x t ] + b f ) f_t = \sigma(W_f*[h_{t-1},x_t]+b_f) ft=σ(Wf[ht1,xt]+bf)

(2)输入门
通过输入门,我们可以决定为当前的细胞状态添加哪些新的信息。这一步分为两个子步骤,第一步,我们得利用 h t − 1 h_{t-1} ht1 x t x_t xt通过一个称为输入门的操作来决定更新哪些信息。第二步,利用 h t − 1 h_{t-1} ht1 x t x_t xt通过一个tanh层得到新的候选细胞信息 C T ′ C'_T CT

这篇关于长短时期记忆(LSTM)及门控循环单元(GRU)网络结构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/qq_40334856/article/details/103787824
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/194770

相关文章

Java中的for循环高级用法

《Java中的for循环高级用法》本文系统解析Java中传统、增强型for循环、StreamAPI及并行流的实现原理与性能差异,并通过大量代码示例展示实际开发中的最佳实践,感兴趣的朋友一起看看吧... 目录前言一、基础篇:传统for循环1.1 标准语法结构1.2 典型应用场景二、进阶篇:增强型for循环2.

Python循环结构全面解析

《Python循环结构全面解析》循环中的代码会执行特定的次数,或者是执行到特定条件成立时结束循环,或者是针对某一集合中的所有项目都执行一次,这篇文章给大家介绍Python循环结构解析,感兴趣的朋友跟随... 目录for-in循环while循环循环控制语句break语句continue语句else子句嵌套的循

MySQL存储过程之循环遍历查询的结果集详解

《MySQL存储过程之循环遍历查询的结果集详解》:本文主要介绍MySQL存储过程之循环遍历查询的结果集,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言1. 表结构2. 存储过程3. 关于存储过程的SQL补充总结前言近来碰到这样一个问题:在生产上导入的数据发现

Nginx部署React项目时重定向循环问题的解决方案

《Nginx部署React项目时重定向循环问题的解决方案》Nginx在处理React项目请求时出现重定向循环,通常是由于`try_files`配置错误或`root`路径配置不当导致的,本文给大家详细介... 目录问题原因1. try_files 配置错误2. root 路径错误解决方法1. 检查 try_f

Spring三级缓存解决循环依赖的解析过程

《Spring三级缓存解决循环依赖的解析过程》:本文主要介绍Spring三级缓存解决循环依赖的解析过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、循环依赖场景二、三级缓存定义三、解决流程(以ServiceA和ServiceB为例)四、关键机制详解五、设计约

Spring 中的循环引用问题解决方法

《Spring中的循环引用问题解决方法》:本文主要介绍Spring中的循环引用问题解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录什么是循环引用?循环依赖三级缓存解决循环依赖二级缓存三级缓存本章来聊聊Spring 中的循环引用问题该如何解决。这里聊

C# foreach 循环中获取索引的实现方式

《C#foreach循环中获取索引的实现方式》:本文主要介绍C#foreach循环中获取索引的实现方式,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、手动维护索引变量二、LINQ Select + 元组解构三、扩展方法封装索引四、使用 for 循环替代

Spring Boot循环依赖原理、解决方案与最佳实践(全解析)

《SpringBoot循环依赖原理、解决方案与最佳实践(全解析)》循环依赖指两个或多个Bean相互直接或间接引用,形成闭环依赖关系,:本文主要介绍SpringBoot循环依赖原理、解决方案与最... 目录一、循环依赖的本质与危害1.1 什么是循环依赖?1.2 核心危害二、Spring的三级缓存机制2.1 三

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

Python循环缓冲区的应用详解

《Python循环缓冲区的应用详解》循环缓冲区是一个线性缓冲区,逻辑上被视为一个循环的结构,本文主要为大家介绍了Python中循环缓冲区的相关应用,有兴趣的小伙伴可以了解一下... 目录什么是循环缓冲区循环缓冲区的结构python中的循环缓冲区实现运行循环缓冲区循环缓冲区的优势应用案例Python中的实现库