《深度学习》循环神经网络RNN 结构及原理解析

目录

一、关于RNN

1、传统神经网络存在的问题

2、什么是循环神经网络

3、RNN特点

二、RNN基本结构

1、RNN基本结构

2、推导方式

注意:

3、循环的由来

4、RNN的局限性


一、关于RNN

1、传统神经网络存在的问题

        无法训练出具有顺序的数据,模型搭建时没有考虑数据上下之间的关系。

2、什么是循环神经网络

        RNN(Recurrent Neural Network,循环神经网络)是一种用于处理序列数据的神经网络架构。其在处理序列输入时具有记忆性,可以保留之前输入的信息并继续作为后续输入的一部分进行计算。

        与传统的前馈神经网络不同,RNN能够在处理序列数据时捕捉序列中的时间依赖关系,即当前时刻的输出不仅依赖于当前时刻的输入,还依赖于过去时刻的输入(或称为状态)。

        如下图所示,例如有一句话,“我要去打球”,将其分词成“我”、“要”、“去”、“打球”,第一个词的词向量表示x1,第二个单词的词向量表示为x2,依次表示所有x,然后首先第一个词向量x1传入h1,然后偏置项h0也同步传入,得到一个结果再传入h2,h2再得到传入的x2传入h3.....,继续像上述流程一样,以此保存了所有的信息并得到最终结果。

3、RNN特点

        引入了隐状态h(hidden state)的概念,隐状态h可以对序列形的数据(如文本、语音、股票、时间序列等数据,当前数据内容与前面的数据有关。)提取特征,接着再转换为输出。

二、RNN基本结构

1、RNN基本结构

        RNN的核心是一个循环连接的隐藏层,这个隐藏层在序列的每个时间步都会接收输入并产生输出。每个时间步的隐藏状态不仅取决于当前时间步的输入,还取决于前一个时间步的隐藏状态。这样,RNN能够保持对之前输入的记忆,并在处理后续输入时利用这些记忆。

2、推导方式

        如下图所示,隐状态h相当于一个函数,f为一个激活函数,其有中的参数U、W、b在每一步都是一样的,也就是说每个步骤的参数都是共享的。

        h0乘以一个参数矩阵W加上x1乘以一个参数矩阵U,再加一个偏置b,得到一个结果,将这个结果传入激活函数f,激活函数一般是Relu函数或者Tanh函数,进行特征提取,然后得到的结果再乘以参数矩阵W加上x2乘以参数矩阵U,加上偏置b传入激活函数进行特征提取得到结果,以此类推得到最终结果,此处不一定只达到x4,一段话中可以有很多很多的词,每个词都有其对应的词向量,这些词向量都可以传入这个结构进行训练。

        对于结果y也会乘以一个矩阵V,加上偏置c后传入一个Softmax交叉熵损失函数,一般情况下y1的用处不大,最重要的是最后一个,例如下图的y4,因为y4涵盖了前面所有的词的特征。

        注意:

                RNN结构中输入是x1, x2, .....xn,输出为y1, y2, ...yn,也就是说,输入和输出序列必须要是等长的

3、循环的由来

4、RNN的局限性

        当出现“我的职业是程序员,…,我最擅长的是电脑”。当需要预测最后的词“电脑”。当前的信息建议下一个词可能是一种技能,但是如果我们需要弄清楚是什么技能,需要先前提到的离当前位置很远的“职业是程序员”的上下文。这说明相关信息和当前预测位置之间的间隔就变得相当的大。

        在理论上,RNN绝对可以处理这样的长期依赖问题。人们可以仔细挑选参数来解决这类问题中的最初级形式,但在实践中,RNN则没法太好的学习到这些知识。

        原因:梯度会随着时间的推移不断下降减少,而当梯度值变得非常小时,就不会继续学习。​例如下图的传声筒游戏

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手机使用技巧:8 个 Android 锁屏移除工具 [解锁 Android]

有时候,您会被锁定在自己的 Android 设备之外,而且似乎不可能重新进入。 一个例子就是你买了一部二手手机,后来发现无法使用。另一种情况是你忘记了屏幕锁定密码和用于验证密码的 Google 帐户凭据。这种情况很少见,但确实会发生&…

A股牛市来袭,资本涌动:加密市场的出路与机遇

近期,随着A股的强劲反弹,不少加密市场的投资者,尤其是一些KOL(关键意见领袖),开始转移资金并公开建议进军A股。这种趋势反映出部分投资者对加密市场的信心动摇,尤其是在全球宏观经济不确定性加剧…

Qt应用程序logo那些事儿

前言 软件的logo一般跟公司的版权、商标、创意、设计密切相关,一般软件在开发之初都会特意设计好,以提高应用软件的辨识度 1 安装包logo EXE压缩包的logo,可以在Inno Setup Compiler的脚本里边设定,这个可以参考文章 2 可执行…

PyTorch单机多卡训练(无废话)

目前大家基本都在使用DistributedDataParallel(简称DDP)用来训练,该方法主要用于分布式训练,但也可以用在单机多卡。 第一步:初始化分布式环境,主要用来帮助进程间通信 torch.distributed.init_process_g…

深圳市步步精科技有限公司荣获发明专利,彰显技术研发实力

2024年8月13日,深圳市步步精科技有限公司(BBJconn)正式获得了其新开发的防水连接器专利,授权公告号为CN 118352837 B。这项技术的突破标志着公司在连接器领域的持续创新,进一步巩固了其行业领先地位。 专利技术概述 此…

成都睿明智科技有限公司真实可靠吗?

在这个日新月异的电商时代,抖音作为短视频与直播电商的佼佼者,正以前所未有的速度重塑着消费者的购物习惯。而在这片充满机遇与挑战的蓝海中,成都睿明智科技有限公司以其独到的眼光和专业的服务,成为了众多商家信赖的合作伙伴。今…

力扣 中等 46.全排列

文章目录 题目介绍题解 题目介绍 题解 代码如下&#xff1a; class Solution {List<List<Integer>> res new ArrayList<>();// 存放符合条件结果的集合List<Integer> path new ArrayList<>();// 用来存放符合条件结果boolean[] used; // 标记…

【D3.js in Action 3 精译_031】3.5.2 DIY实战:在 Observable 平台实现带数据标签的 D3 条形图并改造单元测试模块

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第一部分 D3.js 基础知识 第一章 D3.js 简介&#xff08;已完结&#xff09; 1.1 何为 D3.js&#xff1f;1.2 D3 生态系统——入门须知1.3 数据可视化最佳实践&#xff08;上&#xff09;1.3 数据可…

DAY13

面试遇到的新知识点 char str[10],只有10个字符的空间&#xff0c;但是只能存储9个字符&#xff0c;最后一个字符用来存储终止符\0 strlen只会计算\n,不会计算\0 值传递&#xff1a; void test2(char * str) {str "hello\n"; }int main() {char * str;test2(str);…

红米Turbo 3工程固件预览 修复底层 体验原生态系统 默认开启diag端口

红米Turbo 3机型代码:peridot 国外版本:POCO F6 用于以下型号的小米机型:24069RA21C, 24069PC21G, 24069PC21I。搭载1.5K OLED屏、骁龙8s处理器、5000mAh电池+90W快充、5000万像素主摄。 通过博文了解 1💝💝💝-----此机型工程固件的资源刷写注意事项 2💝💝�…

移动技术开发:文件的读取

1 实验名称 文件的读写 2 实验目的 掌握Android中读写文件的实现方法。 3 实验源代码 布局文件代码&#xff1a; <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android&quo…

STM32-HAL库 驱动DS18B20温度传感器 -- 2024.10.8

目录 一、教程简介 二、驱动理论讲解 三、CubeMX生成底层代码 四、Keil5编写代码 五、实验结果 一、教程简介 本教程面向初学者&#xff0c;只介绍DS18B20的常用功能&#xff0c;但也能满足大部分的运用需求。跟着本教程操作&#xff0c;可在10分钟内解决DS18b20通信难题。…

【vue2.7.16系列】手把手教你搭建后台系统__配置路由(3)

新建页面 我们把 components 改名为 views&#xff0c;并在 views 目录下添加三个页面&#xff0c;Login.vue&#xff0c;Home.vue&#xff0c;404.vue。 三个页面内容简单相似&#xff0c;只有简单的页面标识&#xff0c;如首页页面是 “Home Page”。 Home.vue&#xff0c;…

NVLink 和 NVLink Switch

高速、多 GPU 通信的基础模组,助力将大型数据集更快地输入模型并在 GPU 之间快速交换数据。 文章目录 前言一、简介二、NVLink 性能三、NVLink Switch1. 通过 NVLink 通信提高 GPU 吞吐量2. NVIDIA NVLink 交换机四、NVLink Switch规格1. 通过完全连接实现非凡性能2. 功能强大…

【C++】:bind绑定器和function函数对象机制

欢迎来到 破晓的历程的 博客 ⛺️不负时光&#xff0c;不负己✈️ 文章目录 引言function函数对象function引入细讲function体验function在工程实践中的优势 模拟实现function函数对象机制bind绑定器基本语法示例1. 绑定普通函数2. 使用占位符3. 绑定成员函数4. 绑定 lambda 表…

【汇编语言】寄存器(CPU工作原理)(六)—— 修改CS,IP的指令以及代码段

文章目录 前言1. 修改CS、IP的指令2. 问题分析:CPU运行的流程3. 代码段小结结语 前言 &#x1f4cc; 汇编语言是很多相关课程&#xff08;如数据结构、操作系统、微机原理&#xff09;的重要基础。但仅仅从课程的角度出发就太片面了&#xff0c;其实学习汇编语言可以深入理解计…

基于SpringBoot在线拍卖系统【附源码】

基于SpringBoot在线拍卖系统 效果如下&#xff1a; 网站首页界面 用户登录界面 竞拍商品界面 管理员登录界面 管理员功能界图 竞拍商品界面 系统界面 订单界面 研究背景 随着社会的发展&#xff0c;信息化时代带来了各行各业的变革。电子商务已成为人们日常生活不可或缺的一…

【重学 MySQL】四十四、相关子查询

【重学 MySQL】四十四、相关子查询 相关子查询执行流程示例使用相关子查询进行过滤使用相关子查询进行存在性检查使用相关子查询进行计算 在 select&#xff0c;from&#xff0c;where&#xff0c;having&#xff0c;order by 中使用相关子查询举例SELECT 子句中使用相关子查询…

刷题 -哈希

面试面试经典 150 题 - 哈希 383. 赎金信 - 一个哈希表搞定 class Solution { public:bool canConstruct(string ransomNote, string magazine) {int hash[26] {0};for (auto& ch : magazine) {hash[ch - a];}for (auto& ch : ransomNote) {if (--hash[ch - a] < …

Linux的六个入侵检查思路及预防

背景 入侵检查是保障计算机安全运行的重要手段之一&#xff0c; 通过操作系统的静态配置分析、日志分析、异常行为分析以及文件完整性等方式来做检查&#xff0c;来判断我们的操作系统是否有受到入侵。今天阿祥就介绍十个简单的入侵检查思路及应对措施&#xff0c;希望对大家有…