循环神经网络RNN专题(01/6)
一、说明
RNN用于处理序列数据。在传统的神经网络模型中,是从输入层到隐含层再到输出层,层与层之间是全连接的,每层之间的节点是无连接的。但是这种普通的神经网络对于很多问题却无能无力。例如,你要预测句子的下一个单词是什么,一般需要用到前面的单词,因为一个句子中前后单词并不是独立的。RNN之所以称为循环神经网路,即一个序列当前的输出与前面的输出也有关。本文将解释这种结构。
二、什么是 RNN?
循环神经网络(RNN)是一种深度学习模型,经过训练后可以处理顺序数据输入并将其转换为特定的顺序数据输出。顺序数据是指单词、句子或时间序列数据之类的数据,其中的顺序分量根据复杂的语义和语法规则相互关联。RNN 是一种由许多相互连接的组件组成的软件系统,这些组件模仿人类进行顺序数据转换的方式,例如将文本从一种语言翻译成另一种语言。RNN 在很大程度上正在被基于转换器的人工智能(AI)和大型语言模型(LLM)所取代,后者在顺序数据处理中的效率要高得多。
三、循环神经网络如何运作?
下图为 RNN 示意图。
RNN 由神经元组成,神经元是协同工作以执行复杂任务的数据处理节点。神经元分为输入层、输出层和隐藏层。输入层接收要处理的信息,输出层提供结果。数据处理、分析和预测在隐藏层中进行。
3.1 隐藏层
RNN 的工作原理是将接收到的顺序数据逐步传递给隐藏层。但是,RNN 还有一个自循环或循环的工作流程:隐藏层可以在短期记忆组件中记住之前的输入并使用这些输入进行未来的预测。它使用当前输入和存储的记忆来预测下一个序列。
例如,考虑以下序列:Apple is red。您想让 RNN 在接收输入序列 Apple is 时预测 red。当隐藏层处理 Apple 一词时,会在记忆中存储一份副本。随后,当接收到 is 一词时,它会从记忆中调取 Apple,并根据上下文理解完整序列:Apple is。然后,它可以预测 red 以提高准确性。这使得 RNN 在语音识别、机器翻译和其他语言建模任务中颇为有用。
3.2 训练
机器学习(ML)工程师通过向模型提供训练数据并优化其性能来训练 RNN 等深度神经网络。在机器学习中,神经元的权重是确定训练期间学到的信息在预测输出时影响力的信号。RNN 中每一层权重相同。
机器学习工程师可调整权重以提高预测准确性。他们使用一种称为随时间反向传播(BPTT)的技术来计算模型误差并相应地调整其权重。BPTT 将输出回滚到前一个时间步长并重新计算错误率。这样,它便可以识别序列中哪个隐藏状态导致了重大错误,并重新调整权重以减少误差幅度。
四、循环神经网络有哪些类型?
RNN 通常以一对一架构为特征:一个输入序列与一个输出关联。但是,您可以根据特定目的灵活将其调整为各种配置。以下是几种常见的 RNN 类型。
-
一对多
这种 RNN 类型将一个输入传送到多个输出。它通过使用单个关键字生成句子来支持图片说明文字之类的语言应用程序。
-
多对多
此模型使用多个输入来预测多个输出。例如,您可以使用 RNN 创建语言翻译器,该翻译器可以分析句子并正确用不同语言组织词句。
-
多对一
多个输入映射到一个输出。这在情绪分析之类的应用程序中非常有用,在情绪分析中,此模型可以根据输入的评价预测客户的正面、负面和中立情绪。
五、循环神经网络与其他深度学习网络相比如何?
RNN 是多种不同神经网络架构中的一种。
5.1 循环神经网络与前馈神经网络
与 RNN 一样,前馈神经网络是将信息从架构的一端传递到另一端的人工神经网络。前馈神经网络可以执行简单的分类、回归或识别任务,但无法记住之前处理的输入。例如,其神经元在处理 is 这个词时,它会忘记 Apple。RNN 通过在神经元中加入隐藏内存状态克服了这种内存限制。
5.2 循环神经网络与卷积神经网络
卷积神经网络是用于处理时序数据的人工神经网络。使用卷积神经网络,您可以通过神经网络中的一系列卷积层和池化层,从视频和图像中提取空间信息。RNN 旨在捕获顺序数据中的长期依赖关系
六、循环神经网络的局限性是什么?
自 RNN 推出以来,机器学习工程师在使用 RNN 及其变体的自然语言处理(NLP)应用程序方面取得了重大进展。但是,RNN 模型系列有一些限制。
6.1 梯度爆炸
在初始训练中,RNN 可能会错误地预测输出。您需要进行多次迭代来调整模型的参数,以降低错误率。您可以将与模型参数对应的误差率的灵敏度描述为梯度。您可以将梯度想象成下山时的斜坡。陡峭的梯度使模型能够更快地学习,而平缓的梯度则会降低学习速度。
当梯度呈指数增长直至 RNN 变得不稳定时,就会发生梯度爆炸。当梯度变得无限大时,RNN 的行为会不稳定,从而导致性能问题,例如过拟合。过拟合是一种现象,即模型可以使用训练数据进行准确预测,但无法对现实世界数据进行同样准确的预测。
6.2 梯度消失
梯度消失问题是训练中模型的梯度接近于零的情况。梯度消失时,RNN 无法有效地从训练数据中学习,从而导致欠拟合。欠拟合模型在现实应用中表现不佳,因为其权重没有进行适当调整。RNN 在处理长数据序列时存在面临梯度消失和梯度爆炸问题的风险。
6.3 训练速度缓慢
RNN 按顺序处理数据,这使其高效处理大量文本的能力受到限制。例如,RNN 模型可以从几句话中分析买家的情绪。但是,总结一页文章需要耗费大量的计算能力、内存空间和时间。
七、循环神经网络架构有哪些变体?
RNN 架构为机器学习模型获得语言处理能力奠定了基础。目前,已经出现了多种变体,它们共享 RNN 内存保留原则并对其原始功能进行了改进。以下是一些示例。
7.1 双向循环神经网络
双向循环神经网络(BRNN)处理具有向前和向后隐藏节点层的数据序列。向前层的工作原理与 RNN 类似,后者将之前的输入存储在隐藏状态中并使用它来预测后续输出。同时,后向层的工作方向相反,采用当前输入和将来的隐藏状态来更新当前的隐藏状态。将这两个层组合起来使 BRNN 能够通过同时考虑过去和未来的上下文来提高预测的准确性。例如,您可以使用 BRNN 来预测“Apple trees are tall”这句话中的“trees”一词。
7.2 长短期记忆网络
长短期记忆网络(LSTM)是一种 RNN 变体,使模型能够扩展其内存容量,适应更长的时间线需要。RNN 只能记住近期输入。无法使用来自前几个序列的输入来改善其预测。
请考虑以下句子:Tom is a cat。 Tom’s favorite food is fish。使用 RNN 时,模型无法记住“Tom is a cat”。在预测最后一个词时,可能会产生各种各样的食物。LSTM 网络在隐藏层添加了一个名为单元的特殊内存块。每个单元都由输入门、输出门和遗忘门控制,使层能够记住有用的信息。例如,单元会记住 Tom 和 cat 这两个词,从而使模型能够预测 fish 这个词。
7.3 门控循环单元
门控循环单元(GRU)是支持选择性内存保留的 RNN。该模型添加了更新,并遗忘了其隐藏层的门,隐藏层可以在内存中存储或删除信息。
八、转换器如何克服循环神经网络的局限性?
转换器是在编码器-解码器前馈神经网络中使用自注意力机制的深度学习模型。它们可以像 RNN 一样处理顺序数据。
8.1 自注意力
转换器不使用隐藏状态来捕获数据序列的相互依赖性。相反,它们使用自注意力头来并行处理数据序列。这使转换器能够使用比 RNN 更短的时间训练和处理更长的序列。借助自注意力机制,转换器可克服 RNN 面临的内存限制和序列相互依赖性。转换器可以并行处理数据序列,并使用位置编码来记住每个输入与其他输入的关系。
8.2 并行性
转换器通过在训练期间启用并行性来解决 RNN 面临的梯度问题。通过同时处理所有输入序列,转换器不受反向传播限制,因为梯度可以自由流向所有权重。它们还针对并行计算进行了优化,图形处理单元(GPU)为生成式人工智能开发提供了这种优化。并行性使转换器能够通过构建更大的模型来大规模扩展和处理复杂的 NLP 任务。
相关文章:

循环神经网络RNN专题(01/6)
一、说明 RNN用于处理序列数据。在传统的神经网络模型中,是从输入层到隐含层再到输出层,层与层之间是全连接的,每层之间的节点是无连接的。但是这种普通的神经网络对于很多问题却无能无力。例如,你要预测句子的下一个单词是什么&a…...
C# 怎么判断屏幕是第几屏幕?屏幕是垂直还是水平?屏幕的分辨率?
一、怎么判断屏幕是第几屏幕? 可以使用System.Windows.Forms.Screen.AllScreens属性来获取所有已连接的屏幕,并根据鼠标位置或窗口的位置来判断它所在的屏幕索引。 using System; using System.Windows.Forms;// 获取鼠标当前位置所在的屏幕 Point cur…...
在 SQL Server 中使用 SQL 语句查询不同时间范围的数据
在 SQL Server 中,我们经常需要从数据库中检索特定时间范围内的数据。通过合理运用 SQL 语句,我们可以轻松地查询今天、昨天、近7天、近30天、一个月内、上一月、本年和去年的数据。下面是一些示例 SQL 查询,让我们逐一了解。 查询今天的数据…...

学习使用Flask模拟接口进行测试
前言 学习使用一个新工具,首先找一段代码学习一下,基本掌握用法,然后再考虑每一部分是做什么的 Flask的初始化 app Flask(__name__):初始化,创建一个该类的实例,第一个参数是应用模块或者包的名称 app…...

深度学习快速入门--7天做项目
深度学习快速入门--7天做项目 0. 引言1. 本文内容2. 深度学习是什么3. 项目是一个很好的切入点4. 7天做项目4.1 第一天:数据整理4.2 第二天:数据处理4.3 第三天:简单神经网络设计4.4 第四天:分析效果与原因4.5 第五天:…...

Request Response 基础篇
Request & Response 在之前的博客中,初最初见到Request和Response对象,是在Servlet的Service方法的参数中,之前隐性地介绍过Request的作用是获取请求数据。通过获取的数据来进行进一步的逻辑处理,然后通过对Response来进行数…...
数据爬虫是什么
数据爬虫是一种自动化程序,用于从互联网上收集数据。它通过模拟人类浏览器的行为,访问网页并提取所需的数据。数据爬虫通常使用网络爬虫框架或库来实现。 数据爬虫的工作流程通常包括以下几个步骤: 发起请求:爬虫发送HTTP请求到…...
Java注解与策略模式的奇妙结合:Autowired探秘
大家好,欢迎收听今天的播客节目!我是你们的主持人,也是一位对软件开发充满热情的开发者。在今天的节目中,我们将探讨如何巧妙地结合注解与策略模式,创建一个灵活而强大的策略规则工厂。让我们带着好奇的心情一同深入研…...

Datax3.0+DataX-Web部署分布式可视化ETL系统
一、DataX 简介 DataX 是阿里云 DataWorks 数据集成的开源版本,主要就是用于实现数据间的离线同步。DataX 致力于实现包括关系型数据库(MySQL、Oracle 等)、HDFS、Hive、ODPS、HBase、FTP 等各种异构数据源(即不同的数据库&#x…...

【Java 数据结构】排序
排序算法 1. 排序的概念及引用1.1 排序的概念1.2 常见的排序算法 2. 常见排序算法的实现2.1 插入排序2.1.1 直接插入排序2.1.2 希尔排序( 缩小增量排序 ) 2.2 选择排序2.2.1 直接选择排序2.2.2 堆排序 2.3 交换排序2.3.1冒泡排序2.3.2 快速排序2.3.3 快速排序非递归 2.4 归并排…...

Deepin如何开启与配置SSH实现无公网ip远程连接
文章目录 前言1. 开启SSH服务2. Deppin安装Cpolar3. 配置ssh公网地址4. 公网远程SSH连接5. 固定连接SSH公网地址6. SSH固定地址连接测试 前言 Deepin操作系统是一个基于Debian的Linux操作系统,专注于使用者对日常办公、学习、生活和娱乐的操作体验的极致࿰…...

【Springcloud篇】学习笔记十(十七章):Sentinel实现熔断与限流——Hystrix升级
第十七章_Sentinel实现熔断与限流 1.Sentinel介绍 1.1是什么 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。 Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。 用来代替Hystrix Sentinel 具有…...

【算法与数据结构】718、1143、LeetCode最长重复子数组 最长公共子序列
文章目录 一、718、最长重复子数组二、1143、最长公共子序列三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、718、最长重复子数组 思路分析: 第一步,动态数组的含义。 d p [ i ] [ j ] dp[i]…...

C# SSH.NET 长命令及时返回
在SSH中执行长时间的命令,SSH.NET及时在文本框中返回连续显示结果。 c# - Execute long time command in SSH.NET and display the results continuously in TextBox - Stack Overflow 博主管理了一个服务器集群,准备上自动巡检工具,测试在…...

Rust学习之Features
Rust学习之Features 一 什么是 Features二 默认 feature三 简单的features应用示例四 可选(optional)的依赖五 依赖的特性5.1 在依赖表中指定5.2 在features表中指定 六 命令行中特性控制七 特性统一路径八 其它8.1 相互排斥特性8.2 观察启用特性8.3 Feature resolver version …...

云计算基础(云计算概述)
目录 一、云计算概述 1.1 云计算的概念 1.1.1 云计算解决的问题 1.1.2 云计算的概念 1.1.3 云计算的组成 1.2 云计算主要特征 1.2.1 按需自助服务 1.2.2 泛在接入 1.2.3 资源池化 1.2.4 快速伸缩性 1.2.5 服务可度量 1.3 云计算服务模式 1.3.1 软件即服务(Softwar…...

【机器学习】科学库使用手册第2篇:机器学习任务和工作流程(已分享,附代码)
本系列文章md笔记(已分享)主要讨论人工智能相关知识。主要内容包括,了解机器学习定义以及应用场景,掌握机器学习基础环境的安装和使用,掌握利用常用的科学计算库对数据进行展示、分析,学会使用jupyter note…...

【React】前端项目引入阿里图标
【React】前端项目引入阿里图标 方式11、登录自己的iconfont-阿里巴巴矢量图标库,把需要的图标加入到自己的项目中去;2、加入并进入到项目中去选择Font class 并下载到本地3、得到的文件夹如下4. 把红框中的部分粘贴到自己的项目中(public 文…...

Javascript入门:第三个知识点:javascript里的数据类型、运算符
数字类型 123 //整数 123.1 //浮点数 1.123e3 //科学计数法 -10 //负数 NaN //not a number Infinity //无限大 以上的类型在javascript里都是数字类型 字符串类型 在开始之前,我需要先说明白两个知识点: console.log()是啥? let 与 v…...

最新版国产会声会影2024新功能爆料
会声会影2024是一个视频编辑软件,具备以下功能: 会声会影2024安装包下载如下: https://wm.makeding.com/iclk/?zoneid55677 1. 视频剪辑:可以对视频进行剪辑、裁剪、拼接和分割操作,实现对视频片段的精确控制。 2. 音频编辑&…...

网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...

C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...