当前位置: 首页 > news >正文

【深度学习:Recurrent Neural Networks】循环神经网络(RNN)的简要概述

【深度学习】循环神经网络(RNN):连接过去与未来的桥梁

      • 循环神经网络简介
      • 什么是循环神经网络 (RNN)?
      • 传统 RNN 的架构
      • 循环神经网络如何工作?
      • 常用激活函数
      • RNN的优点和缺点
        • RNN 的优点:
        • RNN 的缺点:
      • 循环神经网络与前馈神经网络
      • 随时间反向传播 (BPTT)
      • 标准 RNN 的两个问题
      • RNN 应用
      • 基本 Python 实现(RNN 与 Keras)
      • 经常问的问题
      • 结论

苹果的Siri和谷歌的语音搜索都使用递归神经网络(RNN),这是最先进的顺序数据方法。这是第一个具有内部存储器的算法,可以记住其输入,使其非常适合机器学习中涉及顺序数据的问题。它是在过去几年中导致深度学习取得惊人进步的算法之一。在本文中,我们将介绍递归神经网络的基础知识,以及最紧迫的困难以及如何解决它们。

循环神经网络简介

用于对顺序数据进行建模的深度学习方法是循环神经网络 (RNN)。在注意力模型出现之前,RNN是处理顺序数据的标准建议。深度前馈模型可能需要序列中每个元素的特定参数。它也可能无法泛化为可变长度序列。

在这里插入图片描述
递归神经网络对序列的每个元素使用相同的权重,从而减少了参数的数量,并允许模型泛化为不同长度的序列。由于其设计,RNN 泛化到序列数据以外的结构化数据,例如地理或图形数据。

与许多其他深度学习技术一样,循环神经网络相对较旧。它们最初是在 20 世纪 80 年代开发的,但直到最近我们才充分认识到它们的潜力。 20 世纪 90 年代长短期记忆 (LSTM) 的出现,加上计算能力的提高和我们现在必须处理的大量数据,确实将 RNN 推到了最前沿。

什么是循环神经网络 (RNN)?

神经网络在人工智能、机器学习和深度学习领域模仿人脑的功能,使计算机程序能够识别模式并解决常见问题。

RNN 是一种可用于对序列数据建模的神经网络。 RNN 由前馈网络组成,其行为与人脑相似。简而言之,循环神经网络可以以其他算法无法做到的方式预测顺序数据。

在这里插入图片描述
标准神经网络中的所有输入和输出都是相互独立的,但是在某些情况下,例如在预测短语的下一个单词时,前面的单词是必要的,因此必须记住前面的单词。结果,RNN 应运而生,它使用隐藏层来克服这个问题。 RNN 最重要的组成部分是隐藏状态,它记住有关序列的特定信息。

RNN 有一个内存,用于存储有关计算的所有信息。它对每个输入采用相同的设置,因为它通过在所有输入或隐藏层上执行相同的任务来产生相同的结果。

传统 RNN 的架构

RNN 是一种具有隐藏状态并允许将过去的输出用作输入的神经网络。他们通常是这样的:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
RNN 架构可能会根据您要解决的问题而有所不同。从具有单个输入和输出的那些到具有多个输入和输出的那些(之间存在差异)。

下面是一些 RNN 架构的示例,可以帮助您更好地理解这一点。

  • 一对一:这里只有一对。传统神经网络使用一对一架构。 一对多:一对多网络中的单个输入可能会产生大量输出。例如,在音乐制作中使用了太多的网络。
  • 多对一:在这种情况下,单个输出是通过组合来自不同时间步骤的多个输入来生成的。情感分析和情绪识别使用这样的网络,其中类别标签由单词序列确定。
  • 多对多:对于多对多,有多种选择。两个输入产生三个输出。机器翻译系统,例如英语到法语的翻译系统,反之亦然,使用多对多网络。

循环神经网络如何工作?

循环神经网络中的信息通过循环循环到中间隐藏层。

在这里插入图片描述

输入层 x 接收并处理神经网络的输入,然后将其传递到中间层。

中间层 h 可以找到多个隐藏层,每个隐藏层都有自己的激活函数、权重和偏差。如果不同隐藏层的各种参数不受前一层的影响,即神经网络中没有记忆,则可以使用循环神经网络。

不同的激活函数、权重和偏差将由循环神经网络标准化,确保每个隐藏层具有相同的特征。它不会构建大量隐藏层,而是仅创建一个隐藏层并根据需要循环多次。

常用激活函数

神经元的激活函数决定了它是应该打开还是关闭。非线性函数通常将神经元的输出转换为 0 到 1 或 -1 到 1 之间的数字。

在这里插入图片描述

以下是一些最常用的功能:

  • Sigmoid:用公式 g ( z ) = 1 / ( 1 + e − z ) g(z) = 1/(1 + e^-z) g(z)=1/(1+ez)来表达。
  • Tanh:用公式 g ( z ) = ( e − z – e − z ) / ( e − z + e − z ) g(z) = (e^-z – e^-z)/(e^-z + e^-z) g(z)=(ezez)/(ez+ez) 来表达。
  • Relu:用公式 g ( z ) = m a x ( 0 , z ) g(z) = max(0 , z) g(z)=max(0,z) 来表达。

RNN的优点和缺点

RNN 的优点:

有效处理顺序数据,包括文本、语音和时间序列。
与前馈神经网络不同,处理任意长度的输入。
跨时间步共享权重,提高训练效率。

RNN 的缺点:

容易出现梯度消失和爆炸问题,阻碍学习。
训练可能具有挑战性,尤其是对于长序列。
计算速度比其他神经网络架构慢。

循环神经网络与前馈神经网络

前馈神经网络只有一条信息流路线:从输入层到输出层,经过隐藏层。数据以直线路径在网络中流动,不会两次经过同一节点。

RNN 和前馈神经网络之间的信息流如下两图所示。

在这里插入图片描述
前馈神经网络对接下来发生的事情的预测很差,因为它们没有接收到的信息的记忆。因为前馈网络只是分析当前输入,所以它不知道时间顺序。除了受过的训练之外,它对过去发生的事情没有任何记忆。

该信息通过循环处于 RNN 循环中。在做出判断之前,它会评估当前的输入以及从过去的输入中学到的知识。另一方面,循环神经网络可能会由于内部记忆而回忆起来。它产生输出,复制它,然后将其返回到网络。

随时间反向传播 (BPTT)

当我们将反向传播算法应用于以时间序列数据作为输入的循环神经网络时,我们将其称为时间反向传播。

在普通 RNN 中,每次将单个输入发送到网络中,并获得单个输出。另一方面,反向传播使用当前输入和先前输入作为输入。这称为时间步长,一个时间步长将由同时进入 RNN 的多个时间序列数据点组成。

在这里插入图片描述
神经网络的输出用于计算和收集错误,一旦它在时间集上进行训练并给出输出。然后,网络将回滚,并重新计算和调整权重以解决故障。

标准 RNN 的两个问题

RNN 必须克服两个关键挑战,但为了理解它们,必须首先了解什么是梯度。

在这里插入图片描述
就其输入而言,梯度是偏导数。如果您不确定这意味着什么,请考虑这一点:梯度量化了当输入稍微改变时函数的输出变化的程度。

函数的斜率也称为梯度。斜率越陡,模型学习的速度越快,梯度就越高。另一方面,如果斜率为零,模型将停止学习。梯度用于测量所有权重相对于误差变化的变化。

  • 梯度爆炸: 当算法无缘无故地给权重赋予荒谬的高优先级时,就会发生梯度爆炸。幸运的是,截断或压缩梯度是解决此问题的简单方法。
  • 梯度消失: 当梯度值太小时,就会发生梯度消失,导致模型停止学习或花费太长时间。这是 20 世纪 90 年代的一个大问题,而且它比梯度爆炸更难解决。幸运的是,Sepp Hochreiter 和 Juergen Schmidhuber 的 LSTM 概念解决了这个问题。

RNN 应用

循环神经网络用于解决涉及序列数据的各种问题。序列数据有许多不同类型,但以下是最常见的:音频、文本、视频、生物序列。

使用 RNN 模型和序列数据集,您可以解决各种问题,包括:

  • Speech recognition 语音识别
  • Generation of music 音乐的产生
  • Automated Translations 自动翻译
  • Analysis of video action 视频动作分析
  • Sequence study of the genome and DNA 基因组和DNA的序列研究

基本 Python 实现(RNN 与 Keras)

Import the required libraries 导入所需的库

import numpy as np
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers

这是一个简单的序列模型,它处理整数序列,将每个整数嵌入到 64 维向量中,然后使用 LSTM 层来处理向量序列。

model = keras.Sequential()
model.add(layers.Embedding(input_dim=1000, output_dim=64))
model.add(layers.LSTM(128))
model.add(layers.Dense(10))
model.summary()

Output: 输出:

Model: “sequential”
Layer (type) Output Shape Param #
=================================================================
embedding (Embedding) (None, None, 64) 64000
=_________________________________________________________________
lstm (LSTM) (None, 128) 98816
=_________________________________________________________________
dense (Dense) (None, 10) 1290
=================================================================
Total params: 164,106
Trainable params: 164,106
Non-trainable params: 0

经常问的问题

Q1. 什么是循环神经网络?
答:循环神经网络 (RNN) 是一种人工神经网络,旨在处理顺序数据,例如时间序列或自然语言。它们具有反馈连接,使它们能够保留先前时间步骤的信息,从而能够捕获时间依赖性。这使得 RNN 非常适合语言建模、语音识别和顺序数据分析等任务。

Q2. 递归神经网络是如何工作的?
答:循环神经网络 (RNN) 通过逐步处理顺序数据来工作。它维护一个充当存储器的隐藏状态,该状态在每个时间步使用输入数据和先前的隐藏状态进行更新。隐藏状态允许网络从过去的输入中捕获信息,使其适合顺序任务。 RNN 在所有时间步上使用相同的权重集,从而允许它们在整个序列中共享信息。然而,传统的 RNN 存在梯度消失和爆炸问题,这可能会阻碍它们捕获长期依赖关系的能力。

结论

递归神经网络是一种多功能工具,可用于多种情况。它们被用于语言建模和文本生成器的各种方法中。它们还用于语音识别。

这种类型的神经网络用于为与卷积神经网络配对时未标记的图像创建标签。这种组合的效果令人难以置信。

然而,循环神经网络有一个缺陷。他们在学习远程依赖关系方面遇到困难,这意味着他们无法理解由多个步骤分隔的数据之间的关系。

例如,当预测单词时,我们可能需要更多的上下文,而不仅仅是一个先前的单词。这称为梯度消失问题,可以使用一种称为长短期记忆网络 (LSTM) 的特殊类型的循环神经网络来解决,这是一个更大的主题,将在以后的文章中讨论。

相关文章:

【深度学习:Recurrent Neural Networks】循环神经网络(RNN)的简要概述

【深度学习】循环神经网络(RNN):连接过去与未来的桥梁 循环神经网络简介什么是循环神经网络 (RNN)?传统 RNN 的架构循环神经网络如何工作?常用激活函数RNN的优点和缺点RNN 的优点:RNN 的缺点: 循…...

HTML 基础

文章目录 01-标签语法标签结构 03-HTML骨架04-标签的关系05-注释06-标题标签07-段落标签08-换行和水平线09-文本格式化标签10-图像标签图像属性 11-路径相对路径绝对路径 12-超链接标签13-音频14-视频 01-标签语法 HTML 超文本标记语言——HyperText Markup Language。 超文本…...

大学物理II-作业1【题解】

1.【单选题】——考查高斯定理 下面关于高斯定理描述正确的是(D )。 A.高斯面上的电场强度是由高斯面内的电荷激发的 B.高斯面上的各点电场强度为零时,高斯面内一定没有电荷 C.通过高斯面的电通量为零时,高斯面上各点电场强度…...

Unity引擎有哪些优点

Unity引擎是一款跨平台的游戏引擎,拥有很多的优点,如跨平台支持、强大的工具和编辑器、灵活的脚本支持、丰富的资源库和强大的社区生态系统等,让他成为众多开发者选择的游戏开发引擎。下面我简单的介绍一下Unity引擎的优点。 跨平台支持 跨…...

【华为机试】2023年真题B卷(python)-猴子爬山

一、题目 题目描述: 一天一只顽猴想去从山脚爬到山顶,途中经过一个有个N个台阶的阶梯,但是这猴子有一个习惯: 每一次只能跳1步或跳3步,试问猴子通过这个阶梯有多少种不同的跳跃方式? 二、输入输出 输入描述…...

【Harmony OS - Stage应用模型】

基本概念 大类分为: Ability Module: 功能模块 、Library Module: 共享功能模块 编译时概念: Ability Module在编译时打包生成HAP(Harmony Ability Package),一个应用可能会有多个HAP&#xf…...

Java 8 中的 Stream 轻松遍历树形结构!

可能平常会遇到一些需求,比如构建菜单,构建树形结构,数据库一般就使用父id来表示,为了降低数据库的查询压力,我们可以使用Java8中的Stream流一次性把数据查出来,然后通过流式处理,我们一起来看看…...

Openwrt修改Dropbear ssh root密码

使用ssh工具连接路由器 输入:passwd root 输入新密码 重复新密码 设置完成 rootImmortalWrt:~# passwd root Changing password for root New password:...

js 对象

js 对象定义 <!DOCTYPE html> <html> <body><h1>JavaScript 对象创建</h1><p id"demo1"></p> <p>new</p> <p id"demo"></p><script> // 创建对象&#xff1a; var persona {fi…...

【SpringBoot】常用注解

RequestBody&#xff1a;自动将请求体中的 json 数据转换为实体类对象。 这个例子凑巧传入的json属性键名和User键名一致&#xff0c;可以直接使用User实体类对象&#xff0c;如果键名不一致则需要用一个Map 类接收参数&#xff1a; PutMapping("/update")public R…...

【模拟电路】软件Circuit JS

一、模拟电路软件Circuit JS 二、Circuit JS软件配置 三、Circuit JS 软件 常见的快捷键 四、Circuit JS软件基础使用 五、Circuit JS软件使用讲解 欧姆定律电阻的串联和并联电容器的充放电过程电感器和实现理想超导的概念电容阻止电压的突变&#xff0c;电感阻止电流的突变LR…...

从入门到精通,30天带你学会C++【第十天:猜数游戏】

目录 Everyday English 前言 实战1——猜数游戏 综合指标 游玩方法 代码实现 最终代码 试玩时间 必胜策略 具体演示 结尾 Everyday English All good things come to those who wait. 时间不负有心人 前言 今天是2024年的第一天&#xff0c;新一年&#xff0c;新…...

使用ASP.NET MiniAPI 调试未匹配请求路径

本文将介绍如何在使用ASP.NET MiniAPI时调试未匹配到的请求路径。我们将详细讨论使用MapFallback方法、中间件等工具来解决此类问题。 1. 引言 ASP.NET MiniAPI是一个轻量级的Web API框架&#xff0c;它可以让我们快速地构建和部署RESTful服务。然而&#xff0c;在开发过程中如…...

数据结构: 位图

位图 概念 用一个bit为来标识数据在不在 功能 节省空间快速查找一个数在不在一个集合中排序 去重求两个集合的交集,并集操作系统中的磁盘标记 简单实现 1.设计思想:一个bit位标识一个数据, 使用char(8bit位)集合来模拟 2.预备工作:a.计算这个数在第几个char b.是这个ch…...

Nginx 反向代理负载均衡

Nginx 反向代理负载均衡 普通的负载均衡软件&#xff0c;如 LVS&#xff0c;其实现的功能只是对请求数据包的转发、传递&#xff0c;从负载均衡下的节点服务器来看&#xff0c;接收到的请求还是来自访问负载均衡器的客户端的真实用户&#xff1b;而反向代理就不一样了&#xf…...

SAP FIORI 初步了解

1、对网上存在的部分资料进行收集 一套适合 SAP UI5 开发人员循序渐进的学习教程 SAP Fiori 的学习路线指南 如何根据角色批量激活SAP Fiori服务 关于S/4和Fiori&#xff0c;你必须知道的10件事 SAP Fiori开发教程 SAP FIORI教程 面向ABAP开发人员&#xff0c;SAPUI5 Fiori开发…...

chrome浏览器记录不住网站登录状态,退出后再打开就需要重新登陆的解决办法

chrome浏览器记录不住网站登录状态&#xff0c;退出后再打开就需要重新登陆&#xff0c;比较繁琐。 解决办法&#xff1a; 1、chrome浏览器右上角三个竖的点&#xff0c;然后进入“设置”&#xff08;Settings&#xff09;&#xff0c;选择“隐私与安全”&#xff08;Privacy…...

Linux lpd命令教程:打印服务管理技巧全解析(附实例教程和注意事项)

Linux lpd命令介绍 lpd是Linux操作系统中的一个命令&#xff0c;全称为line printer daemon&#xff0c;其主要职责是管理和控制打印任务。lpd可以接收打印任务请求并将这些请求放入打印任务队列中。当打印机空闲时&#xff0c;lpd会自动将任务队列中的打印请求发送给打印机以…...

利用STM32和可控硅控制220V加热电路

利用STM32和可控硅控制220V加热电路 Chapter1 利用STM32和可控硅控制220V加热电路一、错误原理图二、正确原理图 Chapter2 可控硅驱动芯片MOC3081/3061Chapter3 一个MOC3061的可控硅触发电路的分析Chapter4 可控硅的两种触发方式&#xff1a;移相触发和过零触发1、过零触发2、移…...

在高并发场景下,缓存“雪崩”了怎么办

1. 缓存雪崩的常见原因 缓存“雪崩”是指&#xff0c;因为部分缓存节点不可用&#xff0c;而导致整个缓存系统&#xff08;甚至是整个服务系统&#xff09;不可用。缓存“雪崩”主要分为以下两种情况&#xff1a; 因缓存不支持 rehash 而导致的缓存“雪崩”缓存支持 rehash 时…...

本地git服务器的使用

Windows上使用&#xff1a; 首先要在windows开发机上生成密钥&#xff1a; 1.安装git&#xff0c;首先去git官网下载git&#xff0c;https://git-scm.com/downloads&#xff0c;下载.exe格式并安装。 2.从程序目录启动“Git Bash” 3.键入命令&#xff1a;ssh-keygen -t rsa -…...

Mybatis Java API - SqlSessionFactoryBuilder

在MyBatis中&#xff0c;用于与数据库进行交互的主要Java接口是SqlSession。通过这个接口&#xff0c;您可以执行命令、获取映射器并管理事务。稍后我们将更详细地讨论SqlSession本身&#xff0c;但首先我们必须学习如何获取SqlSession的实例。SqlSession是由SqlSessionFactory…...

【动态规划】 LCR 099. 最小路径和

LCR 099. 最小路径和 解题思路 采用动态规划的思路每次搜索都是向上或者向左进行搜索dp(grid, i, j) 的值取决于 dp(grid, i - 1, j) 和 dp(grid, i, j - 1) 返回的值。同时(i,j)到(i - 1,j - 1)有两种方法&#xff0c;所以一定存在重叠子问题设置备忘录Memo存储dp过程中所有…...

【51单片机系列】DS18B20温度传感器扩展实验之设计一个智能温控系统

本文是关于DS18B20温度传感器的一个扩展实验。 文章目录 一、相关元件介绍二、实验分析三、proteus原理图设计四、软件设计 本扩展实验实现的功能&#xff1a;利用DS18B20设计一个智能温度控制系统&#xff0c;具有温度上下限值设定。当温度高于上限值时&#xff0c;电机开启&a…...

2023年年度总结,一个小白的CSDN涨粉历程

前言 滚滚长江东逝水&#xff0c;一去不复返。 转眼间已到2024年节点&#xff0c;时间如滚滚长江水向东奔流不息&#xff0c;在长江消失之前&#xff0c;都不会停歇&#xff0c;也不会回头。人亦如此&#xff0c;不管是生活还是学习&#xff0c;都是不断往前走的过程&#xff…...

2023-12-17 LeetCode每日一题(使用最小花费爬楼梯)

2023-12-17每日一题 一、题目编号 746. 使用最小花费爬楼梯二、题目链接 点击跳转到题目位置 三、题目描述 给你一个整数数组 cost &#xff0c;其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用&#xff0c;即可选择向上爬一个或者两个台阶。 你…...

《Webpack5 升级》- Vue2.x 组件库 Webpack3 升 5

前言 基于 Vue2.x 的项目和组件库开发于 2019 年 &#xff0c;那时对 Webpack 版本没有概念&#xff0c;项目和组件库的版本混乱…有的使用 v3&#xff0c;有的使用 v4… 对于现今 2023 年&#xff08;或 2024 年&#xff09;的整个生态环境是不够用的&#xff0c;无法使用较新…...

【7K⭐】Pot:一款开源免费支持跨平台划词翻译和OCR的软件

【7K⭐】Pot&#xff1a;一款开源免费支持跨平台划词翻译和OCR的软件 如果你经常需要阅读英文文档或者图片&#xff0c;你可能会遇到以下问题&#xff1a; 浏览器自带的翻译功能翻译效果不佳&#xff0c;无法对照原文&#xff0c;而且不能翻译图片中的文字翻译插件虽然支持多…...

navicat premium历史版本下载及更新navicat premium15 永久(使用)有效期

1、navicat premium介绍 Navicat Premium 是一套可创建多个连接的数据库开发工具&#xff0c;让你从单一应用程序中同时连接 MySQL、Redis、MariaDB、MongoDB、SQL Server、Oracle、PostgreSQL 和 SQLite 。它与 GaussDB 、OceanBase 数据库及 Amazon RDS、Amazon Aurora、Amaz…...

JAVA进化史: JDK8特性及说明

JDK 8&#xff08;Java Development Kit 8&#xff09;是Java平台的一个重大版本&#xff0c;于2014年3月发布。该版本引入了许多令人期待的新特性&#xff0c;其中一些改变了Java语言的面貌&#xff0c;提供了更丰富、灵活和现代的编程体验。以下是JDK 8的一些主要特性&#x…...

网站做跳转链接/企业推广是什么职业

Tomcat学习一 一:开门见山--->Tomcat的两种平台的安装简单介绍 1.1Window平台的安装---> 使用解压版的就可以了,安装版的使用的较少一些.下载地址&#xff1a; Tomcat下载地址:http://tomcat.apache.org/. 解压后就是一个目录&#xff1a;apache-tomcat-7.0.77(我之前用…...

洛阳网站推广公司/谷歌推广怎么开户

180个工程量Excel自动计算表&#xff0c;精准秒计算&#xff0c;工作效率翻倍朋友们有没有觉得算工程量是真的麻烦&#xff0c;这是一个很仔细的活&#xff0c;不管做造价还是施工员&#xff0c;都要接触&#xff0c;还不能马虎&#xff0c;真的很愁人了。为了解决这个问题&…...

电商网站建设日程表/近期时事新闻10条

问&#xff1a;请问购买了一台华为AX3Pro路由器怎么从原来旧路由器获取宽带账号密码呢&#xff1f;家里的宽带账号密码找不到了&#xff0c;华为AX3Pro答&#xff1a;华为或荣耀的路由器均支持新旧路由器换机的功能&#xff0c;也就是从旧路由器通过克隆宽带账号密码的功能实现…...

室内设计资源网/优化大师客服

由于窄带蜂窝物联网&#xff08;NB-IOT&#xff09;标准落地&#xff0c;最近几个交易日&#xff0c;A股市场中与物联网相关的概念股走强&#xff0c;成为市场新热点&#xff0c;例如三川智慧在本周前四个交易日累计大涨近四成。在物联网概念股崛起后&#xff0c;机构也迅速反应…...

东莞公司注册地址变更流程/青岛seo推广

题目链接&#xff1a;http://poj.org/problem?id1068 思路分析&#xff1a;对栈的模拟&#xff0c;将栈中元素视为广义表&#xff0c;如 (((()()())))&#xff0c;可以看做 LS < a1, a2..., a12 >,对于可以配对的序列&#xff0c;如 <a4, a5>看做一个元素&#xf…...

关闭wordpress多站点/优秀网站设计网站

事情的起因要从我打算调用下paas模块服务开始 Feign 现在教程很多,然后引入下pom <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency>自己定义下接口 Feig…...