RNN循环神经网络原理理解

news2025/3/14 20:08:48

一、基础

正常的神经网络
在这里插入图片描述
一般情况下,输入层提供数据,全连接进入隐藏层,隐藏层可以是多层,层与层之间是全连接,最后输出到输出层;通过不断的调整权重参数和偏置参数实现训练的效果。深度学习的网络都是水平方向延伸的,都没有考虑单个隐藏呢个在时间上的变化。

这种普通的神经网络模型对于很多问题是无能为力的,例如,在语言分析或者时序预测时就会遇到问题。我们要预测下一个单词是什么,一般需要用到前面的单词,因为一个句子中前后单词并不是独立的。

比如:
一个妹子跟你说了下面两句话

  • 情景1:快过圣诞节了,好想要一个苹果
  • 情景2:手机坏了,好想要一个苹果

预测的结果都是苹果,但是根据前文的话不一样那么结果也不一样;情景1下,你要是给妹子买个iPhone,当然会换来妹子的惊喜,但是呢,有钱就好
在情景2下,你要是买一个苹果去给妹子,就是一筐估计也不会给你好脸色吧

所以要想让计算机理解语言本身的含义,需要对输入的数据进行前后文的分析,也就是需要在时间上建立联系。

二、RNN

RNN主要是用来处理序列数据

2.1原理

前面说了,在传统的神经网络模型中,是从输入层到隐含层再到输出层,层与层之间是全连接的,每层之间的节点是无连接的。

RNN之所以称为循环神经网络,即一个序列当前的输出与前面的输出也有关。具体的表现形式为网络会对前面的信息进行记忆并应用于当前的输出计算中,即隐藏层之间的节点不再无连接而是有链接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出。

RNN结构图
图释:以翻译为例
h代表网络模型,按照时间展开,
在t-1时刻,输入一个单词,经过网络模型产生一个输出,同时会有一个状态值,这个状态值可以理解为对前面句子的理解,因为对于前面句子的理解会有助于下一个单词的解释和翻译;因为单词与单词之间是有关系的。所以在t-1时刻不仅输出一个而翻译的结果,还会输出一个状态值,这个状态值会输出到t时刻。
在t时刻,会得到一个输入,同时还会得到t-1时刻隐藏层的输出,即他的状态值,两者结合输入到t时刻模型中进行训练,翻译得到t时刻的输出;同时还会输出一个t时刻的状态值,交给下一个时刻。
依次循环。。。
这里的状态可以理解为:当前训练完成后,对现有输入的(可能是一句话)的理解

重点

  • 输入:当前时刻输入的训练内容和上一时刻的训练状态
  • 输出:当前时刻的输出和当前时刻的训练状态

公式解释:

一般的神经网络: S = f ( W i n X + b ) S = f(W_{in}X + b ) S=f(WinX+b)

RNN : S t = f ( W i n X + W S S t − 1 + b ) S_t = f(W_{in}X + W_SS_{t-1} + b ) St=f(WinX+WSSt1+b)

2.2 理解

在文本分类的例子中,我们只考虑句子的整体含义,因此我们可以忽略每个单元生成的输出,而将重点放在隐藏状态上。隐藏状态的目的是保持句子的连续含义,我们可以用最后的隐藏状态作为分类特征。
在这里插入图片描述
因为每个单词使用相同的RNN单元,所以大大减少了神经网络所需要的参数量,这使我们能够处理较大规模的小批次数据。
网络参数进行学习的方式是处理序列的顺序,也是RNN的核心原则。

  1. RNN模型实际上只有一份参数,也可以说是只有一个模型,也就是同一个模型执行了N次,而不是N个模型或者RNN单元。每一次运行的参数也是一样的,只有输入和输出不同。
  2. 从RNN的结构图中我们要知道,图中状态V并不是RNN的一部分,比如第二次执行RNN的状态实际上是第一次执行的隐藏层的输出,第三次的状态是第二次的输出,而第一次的状态是初始状态。RNN的状态是通过上一次的隐藏层输出层保持的。

在这里插入图片描述
我们在把RNN的结构图拆分来看,根据上面的模型的运行状态。

  • 处理完第一个元素后,我们除了得到输出1外,还得到了隐藏层的输出1;处理第二个元素的时候就把隐藏层输出1作为隐藏层的输入,实际上这就是我们前面提到的RNN可以记忆之前元素的原因。
  • 处理输入2时使用输出1的隐藏层输出作为影藏层的输入。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【安全知识】——对Linux密码文件的处理

作者名:白昼安全主页面链接: 主页传送门创作初心: 一切为了她座右铭: 不要让时代的悲哀成为你的悲哀专研方向: web安全,后渗透技术每日emo:他既乐观又悲观,生活也一无是处昨天在挖掘…

mycat2使用

安装部署下载1:mycat2-install-template-1.21.zip下载2:mycat2-1.21-release-jar-with-dependencies.jar解压mycat2-install-template-1.21.zipunzip mycat2-install-template-1.21.zip把mycat2-1.21-release-jar-with-dependencies.jar放在mycat/lib中修…

神码ospfv3配置.docx

一.配置各设备的ip地址 sw1(config)#ipv6 enable sw1(config)#vlan 1000 sw1(config-vlan1000)#swi int eth1/0/3 Set the port Ethernet1/0/3 access vlan 1000 successfully sw1(config)#int vlan 1000 sw1(config-if-vlan1000)#ipv6 address aa::aa/64 sw1(config-if-vla…

分享微信商城小程序搭建步骤_微信公众号商城小程序怎么做

如何搭建好一个微信商城?这三个功能要会用! 1.定期低价秒杀,提高商城流量 除了通过私域流量裂变,低价秒杀是为商城引流提高打开率的良好手段。 以不同节日作为嘘头,在情人节、38妇女节、中秋国庆、七夕节等日子&…

Node=>Express中间件 学习3

1.概念: 例:在处理污水的时候,一般都要经过三个处理环节,从而保证处理过后的废水,达到排放标准 处理污水的这三个中间处理环节,就可以叫中间件 2.中间件调用流程 当一个请求到达Express的服务器之后&#x…

大数据---Hadoop安装jdk简易版

编写自动安装的shell脚本 完整流程: 大数据—Hadoop安装教程(一) 文章目录编写自动安装的shell脚本上传压缩包编写shell脚本vim autoinstall.sh解压更名添加环境运行上传压缩包 在opt目录下创建连个目录install和soft 将压缩包上传到install目录下 …

Google杀入AI聊天机器人领域,暴跌千亿?错哪了?

大家好,ChatGPT 现在被大家玩坏了,甚至在用户的不断逼问之下,露出了鸡脚,原来 ChatGPT 也是小黑子ChatGPT 太火了,火的谷歌都坐不住了。为了应对爆火的ChatGPT,谷歌推出的Bard,但是谷歌翻车了&a…

Python Web 框架要点

Python Web 框架要点 1. Web应用程序处理流程 2. Web程序框架的意义 用于搭建Web应用程序免去不同Web应用相同代码部分的重复编写,只需关心Web应用核心的业务逻辑实现 3. Web应用程序的本质 接收并解析HTTP请求,获取具体的请求信息处理本次HTTP请求&a…

三大基础排序算法——冒泡排序、选择排序、插入排序

目录前言一、排序简介二、冒泡排序三、选择排序四、插入排序五、对比References前言 在此之前,我们已经介绍了十大排序算法中的:归并排序、快速排序、堆排序(还不知道的小伙伴们可以参考我的 「数据结构与算法」 专栏)&#xff0…

【内网安全】——数据库提权姿势

作者名:白昼安全主页面链接:主页传送门创作初心: 一切为了她座右铭: 不要让时代的悲哀成为你的悲哀专研方向: web安全,后渗透技术每日emo: 在哪能找到解救我的办法模拟环境我们拿到了一个普通用…

java开发-用户注册-MD5工具加密密码

加密方式介绍 对称加密:加密和解密使用的相同的密钥,常见的对称加密算法有:DES、3DES非对称加密:加密和解密使用的密钥不同,常见的非对称加密算法有:RSA 加密:使用私钥加密解密:使用公钥解密 消息摘要: 消…

vcs仿真教程

VCS是在linux下面用来进行仿真看波形的工具,类似于windows下面的modelsim以及questasim等工具,以及quartus、vivado仿真的操作。 1.vcs的基本指令 vcs的常见指令后缀 sim常见指令 2.使用vcs的实例 采用的是全加器的官方教程,首先介绍不使用…

Netty(IO模型/零拷贝技术/IO复用之select、poll、epoll模型)

目录 IO模型 阻塞IO和非阻塞IO 阻塞IO 非阻塞IO IO复用模型 异步IO mmap IO复用之select、poll、epoll模型 select poll epoll IO模型 阻塞IO和非阻塞IO 阻塞IO 所谓阻塞IO就是当应用B发起读取数据申请时,在内核数据没有准备好之前,应用…

分享111个JS菜单导航,总有一款适合您

分享111个JS菜单导航,总有一款适合您 111个JS菜单导航下载链接:https://pan.baidu.com/s/1WkrSIyHC5JySwrCTL0sgLA?pwd13yx 提取码:13yx Python采集代码下载链接:https://wwgn.lanzoul.com/iKGwb0kye3wj base_url "h…

【GPLT 二阶题目集】L2-036 网红点打卡攻略

一个旅游景点,如果被带火了的话,就被称为“网红点”。大家来网红点游玩,俗称“打卡”。在各个网红点打卡的快(省)乐(钱)方法称为“攻略”。你的任务就是从一大堆攻略中,找出那个能在…

开源ChatGPT要来了;软件2.0智能革命;GLM、Diffusion模型大加速

1. 2023年AI十大展望:GPT-4领衔大模型变革,谷歌拉响警报,训练数据告急 新年伊始,大模型的话题热度不减。ChatGPT展现的惊人能力将大模型研究和应用热度推向高潮,人们激烈讨论着这个高级“物种”的推出意味着什么。 本文…

如何操作python的列表和元组?

继上篇文章,我们叙述了 列表是什么? 这篇文章,我们主要叙述 列表如何操作。 如何遍历列表呢?这只需要几行代码,无论列表有多长。 循环让我们能够对列表的每个元素都采取一个或一系列相同的措施, 从而高效地…

CHAPTER 4 Jenkins pipeline (流水线)

Jenkins pipeline4.1 pipeline概念4.2 pipeline优势4.3 pipeline演示1. 新建任务2. 配置任务3. 执行任务4.4 pipeline语法4.4.1 片段生成器1. 生成git clone代码2. 执行任务4.4.2 pipeline语法详解1. 声明式流水线基础2. 脚本化流水线基础3. agent 执行位置4. tool 工具5. envi…

原生微信小程序按需引入vant

vant Vant Weapp - 轻量、可靠的小程序 UI 组件库 1.npm安装 找到项目根目录 安装 # 通过 npm 安装 npm i vant/weapp -S --production# 通过 yarn 安装 yarn add vant/weapp --production# 安装 0.x 版本 npm i vant-weapp -S --production 2 .修改 app.json 将 app.jso…

【GD32F427开发板试用】使用Arm-2D显示电池电量

本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动,更多开发板试用活动请关注极术社区网站。作者:boc 【虽迟但到】 由于快递的原因,11月份申请的,12月1日才收到GD32F427开发板。虽然姗姗来迟,但也没有减少…