递归神经网络 (RNN) 简介

news2024/12/25 15:36:02

文章目录

一、介绍

在不断发展的人工智能 (AI) 领域,弥合人与机器之间的鸿沟已经取得了显着进展。研究人员和爱好者都在该领域的许多方面孜孜不倦地工作,带来了惊人的进步。在这些领域中,机器学习作为探索和创新的关键领域脱颖而出。

机器学习领域的议程是多方面的,旨在提高计算机从数据中学习并在没有明确编程的情况下做出预测或决策的能力。这包括一系列广泛的任务,包括:模式识别、预测分析、自然语言处理 (NLP)、深度学习等。循环神经网络 (RNN) 的改进极大地影响了 NLP、时间序列分析和顺序数据处理中应用的发展。

本文旨在为理解 RNN 的工作原理及其应用提供全面的介绍。

二、什么是递归神经网络 (RNN)?

受人脑启发的人工神经网络 (ANN) 旨在教计算机处理数据。这涉及到一个机器学习过程(深度学习),该过程在类似于人脑的层次结构中使用互连的节点或神经元。它创建了一个自适应系统,计算机可以使用它从错误中吸取教训并不断改进。因此,人工神经网络试图以更高的精度解决复杂的问题,例如总结文档或识别人脸。

RNN 是一种特殊类型的 ANN,适用于时间序列数据或涉及序列的数据。它经过训练,可以处理顺序数据输入并将其转换为特定的顺序数据输出。顺序数据是单词、句子、时间序列数据等数据,其中顺序组件基于复杂的语义和句法规则相互关联。

三、展开递归神经网络

一个简单的 RNN 有一个反馈循环,如下图所示。灰色矩形中显示的反馈回路可以按三个时间步长展开,以产生下面的第二个网络。我们还可以改变架构,以便网络展开 k 时间步骤。
在这里插入图片描述

压缩表示(顶部),展开网络(底部)。图片来自:RNN Introduction
在每个时间步长,我们都可以将网络展开 k 个时间步长,以获得时间 k+1 的输出。展开网络类似于前馈神经网络。在 RNN 的前馈传递中,网络计算隐藏单元的值和 k 时间步长后的输出。与网络关联的权重是临时共享的。每个循环层都有两组权重:一组用于输入,另一组用于隐藏单元。最后一个前馈层,计算第 k 个时间步长的最终输出,就像传统前馈网络的普通层一样。
在这里插入图片描述

RNN 的一个例子。图片来自:https://www.youtube.com/watch?v=Y2wfIKQyd1I&t=526s
这是四个相同的单个图层,但显示不同时间步长的状态。将前一个单词的输出作为第二个单词的输入提供,以按顺序生成文本。

解码 RNN 的运营动态
RNN 由神经元组成,神经元是数据处理节点,它们协同工作以执行复杂的任务。RNN通常有四层,即输入层、输出层、隐藏层和损失层。输入层接收要处理的信息,输出层提供结果。隐藏层位于输入层和输出层之间,可以记住并使用以前的输入根据存储的内存进行未来预测。迭代处理随着顺序数据遍历隐藏层而展开,每一步都会带来增量的洞察和计算。
在这里插入图片描述

RNN网络。图片来自:https://aws.amazon.com/what-is/recurrent-neural-network/
激活函数
激活函数通过计算加权和并进一步增加偏差来确定神经元是否应该被激活。它可以引入非线性,通常将神经元的输出转换为 0 和 1 或 -1 和 1 之间的值。

可以使用的常见激活函数有:

Sigmoid 函数
Tanh 函数
ReLu 函数
在这里插入图片描述

激活函数。图片来自Kazi,激活函数

四、训练递归神经网络

RNN 是通过提供训练数据并优化其性能来训练的。神经元具有权重,用于在训练期间预测结果时表示信息的重要性。调整权重以提高预测准确性。一种称为时间反向传播 (BPTT) 的方法可以计算模型误差并相对调整权重。BPTT 通过图形从右向左移动,将输出回滚到前一个时间步长,并重新计算错误率,以确定哪个隐藏状态导致了错误,并调整此权重以减少错误,从而提高预测精度。
在这里插入图片描述

训练 RNN。图片来自:什么是递归神经网络 (RNN)?,codebasics
一般步骤如下:

初始化神经网络的参数,如权重矩阵(U、V、W)和偏置向量(b、c)。
前向传播以计算预测。这涉及使用当前参数值按顺序计算网络中每一层的输出。
计算损失以衡量预测输出与实际目标值之间的差异。
反向传播,用于计算损失函数的梯度。这涉及到在网络中逐层向后传播误差,并使用微积分链规则来计算梯度。
在梯度计算之后,使用 SGD 或 Adam 等优化方法调整权重和偏差,以最小化损失函数。
重复步骤 2-5,直到满足条件。
培训结果:
在这里插入图片描述

训练结果示例。图片来自:第十讲 |递归神经网络,斯坦福大学工程学院 Youtube 频道(12 年前 2017 年)
通过训练过程,模型逐渐学会根据观察到的数据和计算的梯度调整其参数,从而做出更好的预测。从上图中可以看出,通过逐步训练,结果生成的句子更加连贯、结构化和有意义。

五、RNN 的类型

在这里插入图片描述

RNN 类型。来源: 第十讲 |递归神经网络,斯坦福大学工程学院 Youtube 频道(12 年前 2017 年)
每个矩形都是一个向量,箭头表示函数。输入向量为红色,输出向量为蓝色,绿色向量保存 RNN 的状态。从左到右:

传统的神经网络采用一对一的架构。原版神经网络,从固定大小的输入到固定大小的输出。例如,图像分类获取图像并输出单个分类词。
一对多网络,单个输入可以产生多个输出。序列输出,从固定大小的输入到可变长度的序列。例如,图像标题:获取图像并输出一句话。
多对一网络,来自不同时间步长的许多输入产生单一输出。序列输入,从可变大小的输入到固定大小的输出。例如,情感分析,其中给定的句子被归类为表达积极或消极的情感。
多对多网络:序列输入和序列输出,从可变大小的输入到可变大小的输出。例如,机器翻译,RNN 用英语读一个句子,然后用法语输出一个句子。
具有同步序列的多对多网络:同步序列输入和输出,从可变大小的输入到可变大小的输出。例如,视频分类,我们希望标记视频的每一帧。

六、现实生活中的 RNN 用例

以下是四个有用的序列模型应用程序。

  1. 谷歌Gmail
    在这里插入图片描述

谷歌Gmail。
当您输入句子时,它会自动完成它。谷歌在其中嵌入了这个RNN。

自动生成结果。
2. 谷歌翻译
在这里插入图片描述

谷歌翻译。
将句子从一种语言翻译成另一种语言

  1. 命名实体识别 (NER)
    在这里插入图片描述

NER。图片来自:什么是递归神经网络 (RNN)?,codebasics
给定一个语句,它将分析文本以检测和分类实体。

  1. 情感分析
    在这里插入图片描述

情绪分析。图片来自:什么是递归神经网络 (RNN)?,codebasics
给定一个陈述,它将分析文本以确定其中表达的情感或情感语气。

七、RNN 的两个主要限制

爆炸梯度:当单个导数很大时,最终的导数也会变得巨大,权重也会发生巨大变化。
消失梯度:随着隐藏层数量的增加,梯度变得非常小,权重几乎不会改变。这将阻碍学习过程。
RNN 变体。

八、RNN的变体

8.1 双向递归神经网络 (BRNN)

在 BRNN 中,数据在两个方向上进行处理,包括前向层和后向层,以考虑过去和未来的上下文。与只有前向层的 RNN 相比,结合这两层使 BRNN 的预测精度更高。

8.2 长短期记忆 (LSTM)

在 LSTM 中,模型可以扩展其内存容量以适应更长的时间线。它有一个特殊的内存块(单元),由输入门、输出门和忘记门控制,因此 LSTM 可以记住比 RNN 更有用的信息。

8.3 门控循环单元 (GRU)

在 GRU 中,它启用选择性内存保留。该模型有一个更新和忘记门,可以在内存中存储或删除信息。

九、结论

总之,递归神经网络 (RNN) 是一种强大且有用的神经网络,用于处理顺序数据。RNN具有处理序列变量的能力,在文本生成、文本翻译、语音识别、情感分析等方面有着广泛的应用。总体而言,RNN仍然是机器学习和自然语言处理领域的重要工具。

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

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

相关文章

色彩的含义和使用色彩象征的艺术

无论你走到哪里,你都能看到颜色:天空中的白云,绿色的植被逐渐上升,灰色的石头结构和红砖建筑,在你脚下磨砺着棕色的土壤。你不只是看到这些颜色......你感觉到它们。 一,颜色的含义从何而来? 熟…

华为OD算法题整理目录

目录 专栏导读华为OD机试算法题太多了,知识点繁杂,如何刷题更有效率呢? 一、逻辑分析二、数据结构1、线性表① 数组② 双指针 2、map与list3、队列4、链表5、栈6、滑动窗口7、二叉树8、并查集9、矩阵 三、算法1、基础算法① 贪心思维② 二分查…

面试搜狐大模型算法工程师,体验真棒!!!

搜狐大模型算法工程师面试题 应聘岗位:搜狐大模型算法工程师 面试轮数: 整体面试感觉:偏简单 面试过程回顾 1. 自我介绍 在自我介绍环节,我清晰地阐述了个人基本信息、教育背景、工作经历和技能特长,展示了自信和沟通…

代码随想录算法训练营第 53 天 |卡码网110.字符串接龙 卡码网105.有向图的完全可达性 卡码网106.岛屿的周长

代码随想录算法训练营 Day53 代码随想录算法训练营第 53 天 |卡码网110.字符串接龙 卡码网105.有向图的完全可达性 卡码网106.岛屿的周长 目录 代码随想录算法训练营前言卡码网110.字符串接龙卡码网105.有向图的完全可达性卡码网106.岛屿的周长 一、卡码网110.字符串接龙1.题…

Java:StringBuilder、StringBuffer、StringJoiner

文章目录 StringBuilder代码为什么操作字符串建议使用StringBuilder,而不是String?但String还是不可替代的 StringBuffer案例:接收字符串,返回String类型的[11,22]这种形式代码 StringJoiner上面那个案例,用StringJoiner的方法解决…

Linux服务器不能使用su切换到其他用户

1. 现象 使用非root用户登录系统后,想使用su - 切换到root时,输入正确的密码后出现: 一开始以为自己密码记错了,或者是系统被入侵后篡改了root用户密码,服务器上的数据非常重要。后面不通过SSH连接,直接去…

2024年AI最热门行业人才:计算机视觉与自然语言及语音处理设计开发工程师!

2024年,计算机视觉设计与开发工程师以及自然语言及语音处理设计与开发工程师将成为技术行业中的“超级明星”。无论是智能家居、自动驾驶汽车,还是医疗诊断、金融服务,AI已经深刻融入我们的日常生活,而这些领域的智能化转型都离不…

《机器学习》决策树 集成学习 随机森林 参数及实例解析

目录 一、集成学习 1、含义 2、集成学习代表 1)bagging方法 2)boosting方法 3)stacking方法 二、随机森林 1、什么是随机森林 2、特点 1)数据采样随机 2)特征选取随机 3)森林 4)基分类器为…

LLAMA模型解析:快速掌握大模型LLM推理入门技巧

本文借助llama这个模型快速入门LLM的推理过程,技术细节很多都是通用的,也适合其他的LLM。本篇也可以作为CV快速入门NLP简易指南。 本文借助llama这个模型快速入门LLM的推理过程,很多技术细节都是通用的,也适合其他的LLM。这篇文章…

普元EOS-微前端调用base基座的ajax

1 前言 微前端调用EOS应用的服务或API,需要引入base基座,然后使用base基座中的ajax方法。 本文将介绍微前端的高开和低开使用base基座的Ajax的方法。 强烈建议不要自己引入axios或其他ajax库,因为EOS的服务接口都要求身份验证和授权&#…

分页查询面试记录和面试详情

文章目录 1.分页查询面试记录1.req和vo1.InterviewHistoryReq.java2.InterviewHistoryVO.java 2.InterviewController.java3.service1.InterviewHistoryService.java2.InterviewHistoryServiceImpl.java 4.测试 2.查询面试详情1.InterviewQuestionHistoryVO.java2.InterviewCon…

适合开发人员的网页爬虫工具DrissionPage

DrissionPage是一个基于Python的网页自动化工具,它集成了Selenium和Requests的功能,既能够控制浏览器进行用户界面的模拟操作,也能够直接收发数据包进行数据的获取和处理。 开源地址:DrissionPage: 基于python的网页自动化工具。既能控制浏览器,也能收发数据包。可兼顾浏…

CLion调试ROS(包括launch启动的ROS)

打开一个终端,切换到工作空间目录(形如:~/catkin_ws)。 在终端输入,source ./devel/setup.bash 启动Clion,一定要在输入上述命令的窗口启动Clion,否则会存在一些问题。 打开工程,这里也是一个…

【Java】——Java实现数组元素反转的两种方法

在编程中,我们经常会遇到需要对数组元素进行反转的需求。例如,给定一个整数数组arr {1, 2, 3, 4, 5},我们需要将其反转为{5, 4, 3, 2, 1}。下面我们将介绍两种实现数组元素反转的方法。 方法一:遍历数组一半的长度进行元素互换 …

Spring注解:优雅管理依赖的艺术

在Java企业级开发的广阔天地中,Spring框架以其强大的依赖注入(DI)和面向切面编程(AOP)能力,成为了众多开发者的首选。而Spring注解,作为这一框架的核心特性之一,更是将依赖管理提升到…

如何通过数字化资产管理提升企业运营效率

在当今快速发展的商业环境中,企业的资产管理正逐步向数字化迈进。数字化资产管理系统不仅帮助企业提高资产利用率,还能降低管理成本,提升整体运营效率。常达智能物联为各行业企业提供了领先的数字化资产管理解决方案,帮助企业实现…

AI入门指南(四):分类问题、回归问题、监督、半监督、无监督学习是什么?

文章目录 一、前言二、分类问题、回归问题是什么?分类问题概念常见算法分类问题的实际应用:银行贷款审批案例 回归问题概念常见算法回归问题实际应用:线性回归模型预测房价 小结 三、监督、半监督、非监督学习是什么?监督学习非监…

C语言基础(十五)

指针的使用&#xff1a; 测试代码1&#xff1a; #include <stdio.h> // 标准的 main 函数声明&#xff0c;包括可选的 envp 参数 int main(int argc, char *argv[], char *envp[]) { // argc 命令行参数的数量&#xff08;包括程序名&#xff09; // argv 指向字…

github源码指引:一个自制代码生成器(嵌入式脚本语言)

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码目录&#xff1a;CodeTemp…

Global Illumination_Reflective Shadow Maps Deep Optimizations

之前写过一篇Global Illumination_Reflective Shadow Maps&#xff08;RSM&#xff09;、Virtual Point Light&#xff08;VPL&#xff09;&#xff0c;近期重拾传统GI技术的实际工程场景中的应用&#xff0c;于是从效率方面对RSM、LPV、VCT技术进行效率优化&#xff0c;后续逐…