【机器学习300问】118、循环神经网络(RNN)的基本结构是怎样的?

        将讲解循环神经网络RNN之前,我先抛出几个疑问:为什么发明循环神经网络?它的出现背景是怎样的?这些问题可以帮助我们更好的去理解RNN。下面我来逐一解答。

一、循环神经网络诞生的背景

        循环神经网络(RNN)的诞生主要是为了解决传统神经网络在处理序列数据时的局限性,尤其是它们无法有效捕获和利用时间序列或序列数据中的顺序依赖信息。

(1)传统神经网络的局限性

① 独立性假设

        前馈神经网络假设输入数据之间相互独立,这与实际情况下许多数据集的自然属性相悖。在自然语言和视频流等应用中,每个元素都与时间上下文紧密相关,网络需要捕捉到这些信息才能进行有效的特征提取和模式识别

② 信息传递的单向性

        前馈网络的信息传递是单向的,从输入层流向输出层,中间无环路。这使得信息只能按照一个方向流动,限制了信息反馈和动态更新,不利于处理序列数据中常见的长距离依赖问题。

③ 缺乏记忆能力

        前馈网络缺乏“记忆”能力,无法存储先前的输入信息,无法共享在不同时间学习到的特征,这对于时序数据的处理是一个重大缺陷。例如,当预测一句话中的下一个单词时,网络需要“记住”前面的语境。

(2)序列数据的需求增加

        随着自然语言处理、语音识别、音乐生成、视频分析等领域的发展,对能够理解和生成序列数据的模型需求日益增长。这些领域的任务往往需要模型能够理解和生成基于时间或位置依赖的输出。

① 自然语言处理

        语言是由词汇按特定顺序组成的,词序影响语义解析。自然语言处理任务,如机器翻译和情感分析,需要模型理解文本中词与词之间的时间先后关系。

② 语音识别与音乐生成

        语音信号具有明显的时间序列特性,识别或生成语音需要模型具备处理时序信息的能力。音乐生成亦是如此,音符的顺序直接影响旋律的流畅度和和谐度。

③ 视频分析

        视频数据可以看作是一系列连续的图像帧,各帧之间存在强时间关联。视频分析任务,如动作识别,需要网络能够处理这种时间序列信息。

二、循环神经网络的基本结构

        那么循环神经网络是如何通过结构设计来解决上述传统前馈神经网络遇到的问题呢?下面让我们看看单层RNN的结构设计

(1)单层RNN的结构设计

 ① 解释RNN处理时间序列

② 结构设计

 

        与前馈神经网络不同,RNN中的每个时间步的神经元不仅接受当前时间步的输入数据,还接受上一时间步的隐藏状态信息。这个隐藏状态可以视为网络对序列到目前为止所见信息的一种“记忆”。每次迭代都基于前一时间步的输出和当前的输入。

有时候也把RNN的网络结构折叠起来表示:

RNN循环结构的两种画法
RNN单元的解释

这种图太抽象,难以理解。可以借助动图来说明。

③ 符号解释

带符号的RNN循环结构

        上图中前一个时间步得到的激活值a会传递给下一个时间步。在RNN中想要预测\hat y^{<3>}不仅用到了x^{<3>}还用到了之前的x^{<1>},x^{<2>}。但如图所示RNN在预测\hat y^{<3>}没有用到其之后的x^{<4>},...,x^{<T_x>}这是它的局限性(可以通过双向循环神经网络解决,之后写文章介绍)。

a^{<1>} = g(W_{aa}a^{<0>}+W_{ax}x^{<1>}+b_a)

\hat y^{<1>} = g(W_{ya}a^{<1>}+b_y)

通常初始化激活值a^{<0>}设置成零向量。其他激活值a^{<t>}和预测值\hat y^{<t>}的公式如上所示。

(2)不同类型的循环神经网络

        循环神经网络(RNN)因其灵活性能够适应不同类型的任务,具体可以分为以下几种常见的模式。

① 一对多

        音乐生成是一个典型的一对多场景。这类任务中,网络通常从一个初始输入(如一个起始音符或音乐风格的编码)开始,然后生成一个序列输出(即后续的音符序列),形成完整的音乐作品。RNN在此过程中能够捕捉到序列内部的依赖关系,生成连贯的音乐流。

② 多对一

        情感分析是多对一任务的代表。在这样的任务里,网络接收一个序列输入(如一句话或一段文本),并通过整个序列的处理,最终产生单个输出值(例如,这段文本的情感分类标签,如正面、负面或中立)。网络学习在整个输入序列中提取特征,用于做出整体判断。

③ 多对多(T_x=T_y

        命名实体识别(NER)是多对多任务的实例。在命名实体识别中,输入是一个文本序列,输出是对文本中每个单词或标记的分类(如人名、地点、组织等)。

④ 多对多(T_x\neq T_y

        机器翻译是多对多任务的实例。在机器翻译任务中,输入是一个语言的句子序列,输出是另一个语言的等价翻译序列,两个序列通常长度不一,要求模型既能理解输入序列的结构和语义,又能生成相应长度和语义的输出序列。

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

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

相关文章

选择CDN加速的优势有哪些?

对于互联网行业来说&#xff0c;网络的传输速度会影响着用户的体验感&#xff0c;快速的网络传输会给企业带来更多的用户&#xff0c;其中CDN加速则是一种网络优化技术&#xff0c;这一技术可以降低网络的延迟程度&#xff0c;提高整体的性能&#xff0c;许多的互联网公司会选择…

男士内裤哪个品牌质量好?国内质量好的男士内裤推荐

今天想和大家分享一个虽不起眼但至关重要的时尚单品——男士内裤。它可能不像外套或鞋子那样引人注目&#xff0c;但却承载着男士们日常的舒适与健康。选择一款合适的男士内裤&#xff0c;不仅能提升穿着体验&#xff0c;更是展现个人品味和生活态度的关键。以下是一些选择内裤…

JAVA学习-练习试用Java实现“找质数”

问题&#xff1a; 找质数 找出大于200的最小的质数 解答思路&#xff1a; 以下是使用 Java 语言实现找出大于 200 的最小质数的代码&#xff1a; java public class PrimeNumber { public static void main(String[] args) { int num 201; while (!isPrime(num)) { num; …

【Python机器学习实战】 | 基于决策树的药物研究分类预测

&#x1f3a9; 欢迎来到技术探索的奇幻世界&#x1f468;‍&#x1f4bb; &#x1f4dc; 个人主页&#xff1a;一伦明悦-CSDN博客 ✍&#x1f3fb; 作者简介&#xff1a; C软件开发、Python机器学习爱好者 &#x1f5e3;️ 互动与支持&#xff1a;&#x1f4ac;评论 &…

SpringMVC系列六: 视图和视图解析器

视图和视图解析器 &#x1f49e;基本介绍&#x1f49e; 自定义视图为什么需要自定义视图自定义试图实例-代码实现自定义视图工作流程小结Debug源码默认视图解析器执行流程多个视图解析器执行流程 &#x1f49e;目标方法直接指定转发或重定向使用实例指定请求转发流程-Debug源码…

win10 k8s dashboard

一、下载所需yaml文件安装dashboard&#xff08;可以直接下载文件&#xff09; kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.0/aio/deploy/recommended.yaml1、修改 recommended.yaml kind: Service apiVersion: v1 metadata:labels:k8s-…

Django ORM非空判断、以及通用写法

django文档 Django ORM中,判断非空(not null)有多种方式, 使用isnull查询方法 # 查找所有name字段不为空的对象 objects MyModel.objects.filter(name__isnullFalse)使用exclude方法排除空值: # 查找所有name字段不为空的对象 objects MyModel.objects.exclude(name__isn…

MATLAB神经网络---lstmLayer(LSTM 长短期记忆神经网络)

前言 描述LSTM就要先描述一下循环神经网络 循环神经网络 循环神经网络通过使用带自反馈的神经元&#xff0c;使得网络的输出不仅和当前的输入有关&#xff0c;还和上一时刻的输出相关&#xff0c;于是在处理任意长度的时序数据时&#xff0c;就具有短期记忆能力。 如下是一个…

vue项目build 打包之后如何本地访问

vue项目build 打包之后如何本地访问 注意&#xff1a;vue项目build打包后 如果想实现本地访问 不能直接打开访问dist文件中的HTML文件&#xff08;因为页面带会报错打不开。&#xff09;&#xff0c;需要启一个服务&#xff0c;通过服务来访问&#xff1a; 具体操作过程如下&am…

Java虚拟机 - JVM(类加载器、类加载的过程、双亲委派模型、GC垃圾回收)

一、JVM中数据内存区域划分 本地方法栈&#xff1a;里面保存的是native 关键字的方法&#xff0c;不是用Java写的&#xff0c;而是jvm内部用c实现的。 **程序计数器 和 虚拟机栈 每个线程都存在一份。 如果一个 JVM 进程 中有 10个 线程&#xff0c;那么就会存在 10份 程序计数…

高精度除法

高精度除法 思路题目 高进度数字指的是 数字的大小非常非常大&#xff0c;大到所有整型数据类型都存不下&#xff0c;本篇讨论的为一个高精度数除以一个较小的数。 思路 高精度除法的计算方式和我们人类平时计算除法的过程是一样的&#xff0c;我们来模拟一下。 首先 2 除 3…

xpath爬取4399的最新游戏系列

# 因为多线程获取数据保存在excel会乱&#xff0c;所以先保存在csv中以及图片文件&#xff0c;后面在结合from openpyxl import load_workbook,Workbook # Load 读取; Workbook 写入 from openpyxl.drawing.image import Image # excel 写入图片 from openpyxl.styles import A…

pikachu中pkxss数据库怎么创建

在用小皮时候&#xff0c;只是知道个pikachu这个数据库&#xff0c;跟着视频看人家用pkxss数据库&#xff0c;自己也想用&#xff0c;查看了很多资料&#xff0c;又蒙又查&#xff0c;终于明白怎么弄&#xff0c;特此传授经验 图像中画横线的就是平常怎么创建数据库的&#xff…

Qt creator day2练习

使用手动连接&#xff0c;将登录框中的取消按钮使用第二种方式&#xff0c;右击转到槽&#xff0c;在该函数中&#xff0c;调用关闭函数&#xff0c;将登录按钮使用Qt4版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否为“admin”&#xff0c;密…

vue3-openlayers 使用tianditu,wmts和xyz等source加载天地图切片服务

本篇介绍一下使用vue3-openlayers加载天地图切片&#xff0c;三种方法&#xff1a; 使用tianditu&#xff08;ol-source-tianditu内部实现其实用的wmts&#xff09;使用wmts&#xff08;ol-source-wmts&#xff09;使用xyz&#xff08;ol-source-xyz&#xff09; 1 需求 vue…

Kotlin 实战小记:No-Arg 引用解决 No constructor found的问题

一、问题 新的项目试用一下kotlin, 调用数据库查询数据的时候报了这个问题&#xff1a;org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.executor.ExecutorException: No constructor found in com.neusoft.collect.entity.cm.CmRoom matc…

Linux搭建我的世界乌托邦探险之旅3.2整合包服务端,Minecraft开服教程

Linux服务器使用MCSM10 搭建 我的世界 乌托邦探险之旅3.2 整合包 服务端 的教程&#xff0c;Minecraft整合包开服教程。 大型养老探险整合包&#xff1a;乌托邦探险之旅3.2&#xff0c;探索上千种结构&#xff0c;造访丰富的自然群系&#xff0c;欣赏生动的生物动画&#xff0…

代码随想录三刷day55

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言轮转数组分为左移和右移 一、力扣189. 轮转数组二、力扣724. 寻找数组的中心下标三、力扣34. 在排序数组中查找元素的第一个和最后一个位置四、力扣922. 按奇偶…

【小白学Python】爬取数据(三)

【小白学Python】自定义图片的生成&#xff08;一&#xff09; 【小白学Python】自定义图片的生成&#xff08;二&#xff09; 本文继前两篇文章之后&#xff0c;将前两篇生成图片的文字自动化爬取生成&#xff0c; 爬取zhihu的部分问答数据&#xff0c;仅作本人的学习使用。…

29. 透镜阵列

导论&#xff1a; 物理传播光学&#xff08;POP&#xff09;不仅可以用于简单系统&#xff0c;也可以设计优化复杂的光学系统&#xff0c;比如透镜阵列。 设计流程&#xff1a; 透镜阵列建模 在孔径类型中选择“入瞳直径”&#xff0c;并输入2 在视场设定中。设置一个视场&…