基本循环神经网络(RNN)

RNN背景:RNN与FNN

在前馈神经网络中,信息的传递是单向的,这种限制虽然使得网络变得更容易学习,但在一定程度上也减弱了神经网络模型的能力。
在生物神经网络中,神经元之间的连接关系要复杂的多。前馈神经网络可以看着是一个复杂的函数,每次输入都是独立的,即网络的输出只依赖于当前的输入
但是在很多现实任务中,网络的输入不仅和当前时刻的输入相关,也和其过去一段时间的输出相关。比如一个有限状态自动机,其下一个时刻的状态(输出)不仅仅和当前输入相关,也和当前状态(上一个时刻的输出)相关。
此外,前馈网络难以处理时序数据,比如视频、语音、文本等。时序数据的长度一般是不固定的,而前馈神经网络要求输入和输出的维数都是固定的,不能任意改变。因此,当处理这一类和时序相关的问题时,就需要一种能力更强的模型。

循环神经网络(Recurrent Neural Network,RNN) 是一类具有短期记忆能力的神经网络。在循环神经网络中,神经元不但可以接受其它神经元的信息,也可以接受自身的信息,形成具有环路的网络结构。和前馈神经网络相比,循环神经网络更加符合生物神经网络的结构。

基本循环神经网络

循环神经网络的基本结构包括输入层、隐藏层和输出层。输入层的输入是序列数据,隐藏层的输出是经过循环神经网络计算得到的结果,输出层的输出是最终的预测结果。RNN模型的循环结构是指隐藏层的输出不仅可以传递给下一时刻的隐藏层,还可以作为输入层的输入。因此,RNN模型可以处理序列数据,并将每个时刻的数据传递给下一个时刻,以便进行长时间的依赖关系分析。

结构:

x是输入向量,o是输出向量,s表示隐藏层的值;U是输入层到隐藏层的权重矩阵V是隐藏层到输出层的权重矩阵循环神经网络的隐藏层的值s不仅仅取决于当前这次的输入x,还取决于上一次隐藏层的值s-1。权重矩阵W就是隐藏层上一次的值作为这一次的输入的权重。

我们将上图的基本RNN结构在时间维度展开(RNN是一个链式结构,每个时间片使用的是相同的参数):

其中,t 是时刻, x 是输入层, s 是隐藏层, o 是输出层,矩阵 W 就是隐藏层上一次的值作为这一次的输入的权重。

为什么循环神经网络可以往前看任意多个输入值呢?

如果反复把式 2 带入到式 1,将得到:

从上面的式子中可以看出:输出受前面历次输入值的影响

训练算法

循环神经网络的训练过程比较复杂,需要更多的计算资源和时间。训练过程通常采用反向传播算法和梯度下降算法。反向传播算法(BPTT)是指通过计算输出层和隐藏层之间的误差,并将误差反向传递给隐藏层和输入层,以便更新网络的权重。梯度下降算法是指通过计算损失函数对权重的梯度,并将梯度下降的方向作为优化方向,以最小化损失函数。

反向传播算法(BPTT)

BPTT算法是针对循环层的训练算法,它的基本原理和BP算法是一样的,也包含同样的三个步骤:

1.前向计算每个神经元的输出值;
2.反向计算每个神经元的误差项δ j 值,它是误差函数E对神经元j的加权输入netj​的偏导数;
3.计算每个权重的梯度。
最后再用随机梯度下降算法更新权重。

梯度爆炸和消失问题

  • 梯度消失:梯度趋近于零,网络权重无法更新或更新的很微小,网络训练再久也不会有效果;
  • 梯度爆炸:梯度呈指数级增长,变的非常大,然后导致网络权重的大幅更新,使网络变得不稳定。

实践中前面介绍的几种RNNs并不能很好的处理较长的序列,RNN在训练中很容易发生梯度爆炸和梯度消失,这导致梯度不能在较长序列中一直传递下去,从而使RNN无法捕捉到长距离的影响。

通常来说,梯度爆炸更容易处理一些。因为梯度爆炸的时候,我们的程序会收到NaN错误。我们也可以设置一个梯度阈值,当梯度超过这个阈值的时候可以直接截取。

梯度消失更难检测,而且也更难处理一些。总的来说,我们有三种方法应对梯度消失问题:

1、合理的初始化权重值。初始化权重,使每个神经元尽可能不要取极大或极小值,以躲开梯度消失的区域。

2、使用relu代替sigmoid和tanh作为激活函数。

3、使用其他结构的RNNs,比如长短时记忆网络(LTSM)和Gated Recurrent Unit(GRU),这是最流行的做法。

参考:

神经网络算法——反向传播 Back Propagation-腾讯云开发者社区-腾讯云 (tencent.com)

循环神经网络——RNN的训练算法:BPTT_rnn bptt-CSDN博客

循环神经网络(RNN)及衍生LSTM、GRU详解 - 凌逆战 - 博客园 (cnblogs.com)

深度学习--前馈神经网络、反馈神经网络_前馈神经网络和反馈神经网络-CSDN博客

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

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

相关文章

PySide(PyQt)的特殊按钮(互锁、自锁、独占模式)

界面图: Qt Designer中创建窗口,放置一个QGroupBox,命名为btnStation,这就是自定义的按钮站,按钮站里放置6个按钮。自锁按钮相当于电器中的自锁功能的按钮,每按一次状态反转并保持不变。独占按钮也是自锁功能的按钮,不同的是当独占按钮为ON时,其余所有按钮均被置为OFF…

SmartEDA革新电路设计:告别繁琐,轻松步入智能时代!

在数字化浪潮席卷而来的今天,电路设计的复杂性和繁琐性一直是工程师们面临的难题。然而,随着科技的进步,一款名为SmartEDA的电路设计工具应运而生,它以智能化、高效化的特点,彻底颠覆了传统电路设计的方式,…

在3dmax软件中如何快速创建毛发?---模大狮模型网

在3D建模和渲染中,为角色或物体添加逼真的毛发效果是提升场景真实感的重要步骤之一。然而,手动一根一根创建毛发是非常繁琐的,因此掌握如何在软件中快速生成和调整毛发效果至关重要。模大狮将详细介绍如何利用3ds Max 2018创建毛发&#xff0…

Salia PLCC cPH2 远程命令执行漏洞(CVE-2023-46359)

漏洞描述 Salia PLCC cPH2 v1.87.0 及更早版本中存在一个操作系统命令注入漏洞,该漏洞可能允许未经身份验证的远程攻击者通过传递给连接检查功能的特制参数在系统上执行任意命令。 产品界面 fofa语法 "Salia PLCC" POC GET /connectioncheck.php?ip1…

发论文idea来了!强化学习+Transformer,29个创新点汇总

基于Transformer的强化学习(TRL)是一种利用Transformer模型架构来改进和增强强化学习算法性能的方法。 这种方法通过结合Transformer模型强大的表示能力和强化学习的决策优化框架,显著提升了智能体的学习能力和适应能力,为我们解…

dockerfile文件的中的命令

# 基础镜像 FROM registry.cn-beijing.aliyuncs.com/205erp/myopenjdk:8.6 # 设置工作目录 WORKDIR /opt # 拷贝jar包到工作目录 COPY target/*.jar app.jar RUN ls # 设置暴漏的端口 EXPOSE 8080 # 启动jar包 CMD java ${JAVA_TOOL_OPTIONS} -jar app.jar

N7745A Keysight 是德 多端口光功率计 简述

N7745A光功率计专为表征多端口光器件而设计,适用于多路复用器、PON分路器、波长选择开关(WSS)和ROADM等多端口器件的测试。它可以节省通道空间,通过LAN或USB连接进行并行编程,集成多种设备到单一设置,提高了…

企业设备管理现状与解决方案

在当今企业运营中,设备管理作为保障生产稳定、提升效率的重要环节,其复杂性和挑战性日益凸显。无论是生产车间、石油化工、物业小区,还是消防器材、建筑施工等领域,都面临着设备故障频发、维修流程繁琐等共性问题。 为了帮助企业…

VUE3实现个人网站模板源码

文章目录 1.设计来源1.1 网站首页页面1.2 个人工具页面1.3 个人日志页面1.4 个人相册页面1.5 给我留言页面 2.效果和源码2.1 动态效果2.2 目录结构 源码下载万套模板,程序开发,在线开发,在线沟通 作者:xcLeigh 文章地址&#xff1…

对比4090及4090D:国区“特供”与原版相比有何区别?

2023年12月28日 英伟达宣布正式发布GeForce RTX 4090D,对比于一年前上市的4090芯片,两者的区别与差异在哪?而在当前比较火热的大模型推理、AI绘画场景方面 两者各自的表现又如何呢? 规格与参数信息对比现在先来看看GeForce RT…

SCI绘图【1】-不同颜色表示密度和差异--密度图

参考资料:密度图(Density Plot) - 数据可视化图表 - 数字孪生百科 密度图是快速观察变量数值分布的有效方法之一。通常情况下,会根据两个变量将平面绘图区域分为非常多的子区域,之后以不同颜色表示落在该区域上样本的…

揭秘!家用空气净化器针对“毛絮、灰尘”的制胜秘诀是什么?

亲爱的朋友们!作为一个家庭主妇,我想和大家聊聊我日常生活中那些让人头疼的飞尘和毛絮问题。 每天忙得团团转,累得腰酸背痛,但家里仍然飘着那些烦人的飞尘和毛絮。它们就像一群顽皮的小精灵,四处飞舞,怎么…

《2024攻防演练必修高危漏洞集合》

1 漏洞汇总数据 以下数据针对自2024年3月以来截止到目前在攻防演练过程红队利用率比较高的漏洞进行总结汇总,具体的数据如下所示: ●远程代码执行漏洞 漏洞数量:6个 涉及厂商:YzmCMS、畅捷通、pgAdmin、泛微、锐捷、奇安信、 ●…

如何通过自己编写Jmeter函数

在Jmeter的函数助手里,有很多内置的函数,比如Random、UUID、time等等。使用这些函数可以快速帮我们生成某些数据,进行一些逻辑处理。用起来非常的方便。 但是在实际接口测试过程中,有很多的需求,Jmeter内置的函数可能…

苹果不会等到明年才对 Siri 进行改进|TodayAI

据彭博社报道,今年苹果(APPLE)将推出一个更令人满意的 Siri。 当 iOS 18 今年秋季推出时,Siri 的功能不仅仅是让你的 iPhone 边缘显示彩虹光环。虽然苹果智能功能要到 2025 年才会向非测试版用户推出,但据报道&#x…

每天写java到期末考试(6.19)--1.百元买百鸡

好久没有写了,现在赶快先复习复习,哈哈,加油! 收获:写了好久,才写好这一个问题,提示自己不要好高骛远,前期先踏踏实实写好每一个代码; 被困住原因 取余%与整除/区别 pa…

Linux 图形化编程GTK3.0 快速入门之布局

GTK3.0 布局之水平布局 核心语法: 水平布局容器: 水平布局容器的创建: GtkWidget *gtk_hbox_new( gboolean homogeneous, gint spacing ); homogeneous:容器内控件是否大小一致( gboolean 取值为TRUE 或 FALSE ) spacing&#…

Qemu 模拟 Mini2440 扩展SDRAM 64M 到 128M,256M(三)

1. Mini2440 最大支持的SDRAM 是128M+128M MINI2440 板子的内存是由两片64M大小的SDRAM组成,所以实际内存有128M。分别连接到芯片的BANK6和BANK7。从这个图可以看出 Mini2440 最大支持的SDRAM 是128M+128M,我们能不能利用 QEMU 直接给你模拟干满到 256M呢?各位看官看我的操作…

Postman 请求参数传递指南:Query、Path和Body

Postman 作为一个功能强大的工具,极大地简化了 API 测试和调试的过程,提供了发送请求和检查响应的直接方法。本文将着重介绍如何在 Postman 中高效地处理请求参数,以提高 API 测试和开发的便利性。 1、解析请求参数 首先,我们需要…

Linux下调试代码——gdb的使用

1. 文件准备: 测试代码: Makefile文件: 执行结果: 此时,我们的结果是存在问题的,即最终结果少了100。现在我们用gdb来调试它。 我们发现我们还没有安装gdb,这里安装一下。 2. 环境准备&#…