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

递归神经网络 (RNN) 简介

文章目录

一、介绍

在不断发展的人工智能 (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仍然是机器学习和自然语言处理领域的重要工具。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【微信小程序】自定义组件 - behaviors
  • 微服务:配置管理和配置热更新
  • PostgreSQL 内核资源管理
  • 2024下半年软考有哪些科目开考?该怎么选?
  • PHP开发过程中常见问题快速解决
  • Kakfa的核心概念-Replica副本(kafka创建topic并指定分区和副本的两种方式)
  • 136.使用Redis 解决分布式系统下的并发问题
  • 全球卫星星座规划
  • transformers调用llama的方式
  • Transformer系列-10丨一文理解透Transformer
  • webpack打包优化方案
  • 深度学习一(Datawhale X 李宏毅苹果书 AI夏令营)
  • WHAT - graphql 系列(二)- graphql-codegen
  • 【Linux篇】Linux命令基础
  • 大数据-92 Spark 集群 SparkRDD 原理 Standalone详解 ShuffleV1V2详解 RDD编程优化
  • @jsonView过滤属性
  • 07.Android之多媒体问题
  • 2017届校招提前批面试回顾
  • CSS相对定位
  • download使用浅析
  • egg(89)--egg之redis的发布和订阅
  • input实现文字超出省略号功能
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • mysql 数据库四种事务隔离级别
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • 半理解系列--Promise的进化史
  • 将 Measurements 和 Units 应用到物理学
  • 判断客户端类型,Android,iOS,PC
  • 实现菜单下拉伸展折叠效果demo
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 数据结构java版之冒泡排序及优化
  • 算法-图和图算法
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 硬币翻转问题,区间操作
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • 自定义函数
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​Linux·i2c驱动架构​
  • ​ubuntu下安装kvm虚拟机
  • ​虚拟化系列介绍(十)
  • (1)STL算法之遍历容器
  • (3)(3.5) 遥测无线电区域条例
  • (3)选择元素——(17)练习(Exercises)
  • (4.10~4.16)
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (不用互三)AI绘画工具应该如何选择
  • (超详细)语音信号处理之特征提取
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (小白学Java)Java简介和基本配置
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (一) 初入MySQL 【认识和部署】
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (自用)交互协议设计——protobuf序列化