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

server/2024/10/22 11:27:20/

目录

一、关于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.ppmy.cn/server/131444.html

相关文章

Cesium 区域高程图

Cesium 区域高程图 const terrainAnalyse new HeightMapMaterial({viewer,style: {stops: [0, 0.05, 0.5, 1],//颜色梯度设置colors: [green, yellow, blue , red],}});

前端开发笔记--css 黑马程序员1

文章目录 1. css 语法规范2.css的书写风格3.基础选择器选择器的分类标签选择器类选择器类选择器的特殊使用--多类名 id 选择器 字体属性常见字体字体大小字体粗细字体倾斜字体的复合简写字体属性总结 文本属性文本颜色文本对齐装饰文本文本缩进文本间距文本属性总结 css的引入方…

Android适配器更改,ListView未收到通知解析

只需要在每次适配器发生变化时&#xff0c;调用函数adapter.notifyDataSetChanged(); 其中的adapter是适配器名。 需要说明的适配器对应的数组&#xff1a;List<String>也是适配器的一部分。 如&#xff1a;以下代码中的lists数组 List<T> lists new ArrayLis…

mybatisPlus对于pgSQL中UUID和UUID[]类型的交互

在PGSQL中&#xff0c;有的类型是UUID和UUID[]这种类型&#xff0c;在mybatis和这些类型交互的时候需要手动设置类型处理器才可以&#xff0c;这里记录一下类型处理器的设置 /*** UUID类型处理器*/ public class UUIDTypeHandler extends BaseTypeHandler<UUID> {/*** 获…

计算机网络:数据链路层 —— 网络适配器与 MAC 地址

文章目录 网络适配器使用网络适配器网络适配器类型 MAC 地址MAC 地址格式MAC 地址类型MAC 地址发送顺序数据接收MAC 地址泄露问题 网络适配器 要将计算机连接到以太网&#xff0c;需要使用相应的网络适配器&#xff08;Adapter)&#xff0c;网络适配器一般简称为“网卡”。在计…

web1.0,web2.0,web3.0 有什么区别 详解

Web 的发展经历了多个阶段&#xff0c;每个阶段都有其独特的特点和技术进步。下面是 Web 1.0、Web 2.0 和 Web 3.0 之间的主要区别和详细解释&#xff1a; Web 1.0 时间范围&#xff1a;大约在 1991 年至 1995 年。 Web 1.0 是互联网的最初形态&#xff0c;也被称为静态 Web…

问:说说JVM不同版本的变化和差异?

在Java程序的执行过程中&#xff0c;Java虚拟机&#xff08;JVM&#xff09;扮演着至关重要的角色。它不仅负责解释和执行Java字节码&#xff0c;还管理着程序运行时的内存。根据JVM规范&#xff0c;JVM将其所管理的内存划分为多个不同的数据区域&#xff0c;包括程序计数器、J…

163页PPT罗兰贝格品牌战略升级:华为案例启示与电器集团转型之路

罗兰贝格作为一家全球顶级的战略管理咨询公司&#xff0c;其品牌战略升级理念在多个行业中得到了广泛应用。以下将以华为案例为启示&#xff0c;探讨电器集团的转型之路&#xff0c;并融入罗兰贝格品牌战略升级的思想。 一、华为案例的启示 华为与罗兰贝格联合撰写的《数据存…