【深度学习】循环神经网络RNN、LSTM、GRU

李宏毅深度学习笔记
https://www.bilibili.com/video/BV1qM4y1M7Nv

RNN

在 RNN 里面,每一次隐藏层的神经元产生输出的时候,该输出会被存到记忆元。下一次有输入时,这些神经元不仅会考虑输入 x1, x2,还会考虑存到记忆元里的值。

记忆元可简称为单元,记忆元的值也可称为隐状态

RNN 可以是深层的。比如把 x丢进去之后,它可以通过一个隐藏层,再通过第二个隐藏层,以此类推 (通过很多的隐藏层) 才得到最后的输出。每一个隐藏层的输出都会被存在记忆元里面,在下一个时间点的时候,每一个隐藏层会把前一个时间点存的值再读出来,以此类推最后得到输出,这个过程会一直持续下去。

简单循环网络(Simple Recurrent Network,SRN),也称为 Elman 网络,即把隐藏层的值存起来,在下一个时间点在读出来
Jordan 网络存的是整个网络输出的值,它把输出值在下一个时间点在读进来,把输出存到记忆元里。

双向循环神经网络,循环神经网络还可以是双向。可以同时训练一个正向的循环神经网络,又可以训练一个逆向的循环神经网络,然后把这两个循环神经网络的隐藏层拿出来,都接给一个输出层得到最后的 y。

在这里插入图片描述
在这里插入图片描述
内部运算过程

在这里插入图片描述

RNN特点:
1、串联结构,体现出“前因后果”,后面结果的生成,要参考前面的信息
2、所有特征共享同一套参数。面对不同的输入(两个方面),能学到不同的相应的结果;极大减少了训练参数量;输入和输出数据在不同例子中可以有不同的长度

RNN学习方式
梯度下降用在前馈神经网络里面我们要用一个有效率的算法称为反向传播。循环神经网络里面,为了要计算方便,提出了反向传播的进阶版,即随时间反向传播(BackPropagation Through Time,BPTT)。BPTT 跟反向传播其实是很类似的,只是循环神经网络它是在时间序列上运作,所以 BPTT 它要考虑时间上的信息

损失函数可以自定义(如二分类任务可以使用交叉熵)

RNN梯度爆炸和梯度消失:https://blog.csdn.net/qq_41020633/article/details/124044086

LSTM

长短时记忆网络(Long Short-Term Memory,LSTM)长时间的短期记忆。是一种循环神经网络(RNN)的变体,旨在解决传统RNN在处理长序列时的梯度消失和梯度爆炸问题。LSTM引入了一种特殊的存储单元和门控机制,以更有效地捕捉和处理序列数据中的长期依赖关系。

之前的循环神经网络,它的记忆元在每一个时间点都会被洗掉,只要有新的输入进来,每一个时间点都会把记忆元洗掉,所以的短期是非常短的,但如果是长时间的短期记忆元,它记得会比较久一点,只要遗忘门不要决定要忘记,它的值就会被存起来。

LSTM 有三个门,当外界某个神经元的输出想要被写到记忆元里面的时候,必须通过一个输入门,输入门要被打开的时候,才能把值写到记忆元里面。输出的地方也有一个输出门,输出门会决定外界其他的神经元能否从这个记忆元里面把值读出来。输入门和输出门的开关是神经网络自己学的,其可以自己学什么时候要把输入门打开,什么时候要把输入门关起来。遗忘门决定什么时候记忆元要把过去记得的东西忘掉。这个遗忘门什么时候会把存在记忆元的值忘掉,什么时候会把存在记忆元里面的值继续保留下来,这也是网络自己学到的。

整个 LSTM 可以看成有 4 个输入、1 个输出。在这 4 个输入中,一个是想要被存在记忆元的值,但不一定能存进去,还有操控输入门的信号、操控输出门的信号、操控遗忘门的信号,有着四个输入但它只会得到一个输出。
在这里插入图片描述
在这里插入图片描述

内部运算过程

在这里插入图片描述

gt是图上的ct;h是状态,c是记忆单元

fi是遗忘门,fi的值可能为0或1。fi × Ct-1 ,所以fi决定是否遗忘之前的记忆 Ct-1
输入输出门也是同理,带公式即可理解

GRU

门控循环单元(Gated Recurrent Unit,GRU)是 LSTM 稍微简化的版本,它只有两个门。虽然少了一个门,但其性能跟 LSTM 差不多,少了 1/3 的参数,也是比较不容易过拟合。

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

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

相关文章

高危行业的安全守护者,顶坚防爆手机无惧挑战

高危行业的安全守护者,防爆手机以卓越性能,无惧极端挑战,为每一位前线工作者筑起坚不可摧的安全防线。石油勘探的深邃海洋、化工生产的复杂车间、矿山的幽深隧道……这些高危行业中,每一步都需谨慎前行,每一刻都需安全…

技术成神之路:设计模式(二)建造者模式

1.定义 建造者模式(Builder Pattern)是一种创建型设计模式,它允许你分步骤创建复杂对象,而不必直接调用构造函数。建造者模式特别适合那些包含多个组成部分并且构造过程复杂的对象。 2. 结构 建造者模式的主要组成部分包括&#…

TensorRT动态形状(Dynamic Shape)出错,官方demo+自己模型运行时出错

(2024.7.2) 使用TensorRT处理动态输入形状推理时出现的错误,本案基于官方demo文件,已解决: TensorRT版本10.0,官方例子使用的是这个https://github.com/NVIDIA/trt-samples-for-hackathon-cn/blob/master/cookbook/01-SimpleDem…

数据文件传输连接超时?镭速教你如何解决!

Mysql作为一个广泛使用的开源关系型数据库管理系统,以快速、可靠、易于使用、开源的特色闻名,使用 MySQL 来存储和管理数据,已经广泛应用于各个领域、各类大小型应用中。 图片源于网络 使用 MySQL 来存储和管理数据的应用中,与数…

Windows打开redis以及Springboot整合redis

目录 前言Windows系统打开redisSpringboot整合redis依赖实体类yml配置文件config配置各个数据存储类型分别说明记录string数据写入redis,并查询通过命令行查询 list插入数据到redis中从redis中读取命令读取数据 hash向redis中逐个添加map键值对获取key对应的map中所…

【ubuntu18.04】 局域网唤醒 wakeonlan

ai服务器经常因为断电,无法重启,当然可以设置bios 来电启动。 这里使用局域网唤醒配置。 自动开关机设置 工具:ethtool 端口 : enp4s0 Wake-on: d 表示禁用Wake-on: g 激活 ,例如:ethtool -s eth0 wol g 配置/etc/rc.local ,这个文件不存在,自己创建工具下载 tengxun W…

mysql 命令 —— 查看表信息(show table status)

查询表信息,如整个表的数据量大小、表的索引占用空间大小等 1、查询某个库下面的所有表信息: SHOW TABLE STATUS FROM your_database_name;2、查询指定的表信息: SHOW TABLE STATUS LIKE your_table_name;如:Data_length 显示表…

开放式耳机哪个品牌最好?2024高热度机型推荐,选购不迷茫

选购开放式耳机时,面对琳琅满目的品牌与型号是否感到不知道怎么选择?别担心,作为耳机爱好者与资深评测人,我精心整理了几款热门开放式耳机的全面对比。这次对比不仅涵盖如何挑选,有哪些不要菜类的额点,还推…

第十四届蓝桥杯省赛C++B组E题【接龙数列】题解(AC)

需求分析 题目要求最少删掉多少个数后,使得数列变为接龙数列。 相当于题目要求求出数组中的最长接龙子序列。 题目分析 对于一个数能不能放到接龙数列中,只关系到这个数的第一位和最后一位,所以我们可以先对数组进行预处理,将…

数字化供应链:背景特点

​背景 1、外部环境 近年来,供应链脆弱性凸显,企业供应链压力难以缓解。 美国媒体针对美国零售联合会、美国服装和鞋类协会、美国供应链管理专业委员会等主体进行的一项供应链调查显示: 61%的供应链经理预计,供应链紊乱问题至少…

老师怎样将期末成绩怎样私发家长?

作为老师,期末成绩的发布不仅是对学生一学期学习成果的评价,更是家校沟通的重要环节。然而,这一过程往往比我们想象的更为复杂和繁琐。 我们需要确保每个学生的成绩准确无误。这意味着在成绩录入之后,必须进行多次核对&#xff0c…

Java将list数组中重复的对象进行去重

/*** 数组去重*/ public class ArrayDistinct {public static void main(String[] args) {ArrayList<Object> list new ArrayList<>();JSONObject jsonObject1 new JSONObject();jsonObject1.put("name","张三");jsonObject1.put("age&…

序号不足两位前面补0

预期目标 原始效果 代码实现 {${(index 1).toString().padStart(2, 0)}. ${item.sentence}}要实现自动编号并确保显示为两位数的格式&#xff0c;可以在 {index 1} 的地方进行格式化。在 JavaScript 中&#xff0c;可以使用 String.prototype.padStart() 方法来补足数字到指定…

终极指南:RNNS、Transformers 和 Diffusion 模型

一、说明 作为广泛使用这些工具和模型的人&#xff0c;我的目标是解开 RNN、Transformer 和 Diffusion 模型的复杂性和细微差别&#xff0c;为您提供详细的比较&#xff0c;为您的特定需求提供正确的选择。 无论您是在构建语言翻译系统、生成高保真图像&#xff0c;还是处理时间…

kettle从入门到精通 第七十四课 ETL之kettle kettle调用https接口教程,忽略SSL校验

场景&#xff1a;kettle调用https接口&#xff0c;跳过校验SSL。&#xff08;有些公司内部系统之间的https的接口是没有SSL校验这一说&#xff0c;无需使用用证书的&#xff09; 解决方案&#xff1a;自定义插件或者自定义jar包通过javascript调用https接口。 1、http post 步…

为什么是视频传输用YUV格式,而放弃RGB格式?

&#x1f60e; 作者介绍&#xff1a;我是程序员行者孙&#xff0c;一个热爱分享技术的制能工人。计算机本硕&#xff0c;人工制能研究生。公众号&#xff1a;AI Sun&#xff0c;视频号&#xff1a;AI-行者Sun &#x1f388; 本文专栏&#xff1a;本文收录于《音视频》系列专栏&…

Linux系统之 — 线程

Linux系统之 — 线程 线程介绍线程使用死锁&#xff08;Deadlock&#xff09;竞态条件&#xff08;Race Condition&#xff09; 线程使用示例服务器端代码示例服务器端示例拆解1. 引入头文件和宏定义2. 定义全局变量3. 定义线程函数4. 主函数5. 错误处理和资源释放 客户端代码示…

Keil5 ST-LINK setting闪退问题解决

1. 官网下载新版驱动文件 MDK uVision crashes when using ST-Link debugger 2. 解压替换 STLinkUSBDriver6.1.2.0Signed 我的库文件目录&#xff1a; D:\Tool\Keil5\ARM\STLink

一文搞懂 java 线程池:ThreadPoolExecutor 和 FixedThreadPool 原理

你好&#xff0c;我是 shengjk1&#xff0c;多年大厂经验&#xff0c;努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注&#xff01;你会有如下收益&#xff1a; 了解大厂经验拥有和大厂相匹配的技术等 希望看什么&#xff0c;评论或者私信告诉我&#xff01; 文章目录 一…

Linux——shell原理和文件权限

1.shell原理 在我们使用云服务器时&#xff0c;需要通过shell进行使用&#xff0c;而shell则是一种外壳程序。 我们提到过&#xff0c;大部分的指令实际上就是文件&#xff0c;当用户需要执行某种功能时&#xff0c;由于用户不擅长和操作系统直接交互&#xff08;操作复杂&…