循环神经网络 RNN 详细图解!

深度学习笔记(四)——循环神经网络(Recurrent Neural Network, RNN) 阅读详情
AI摘要

本文详细介绍了循环神经网络(RNN)的基本概念、结构特点及其在自然语言处理和语音识别领域的广泛应用。从模型结构出发,探讨了RNN的优点与不足,并通过图解方式深入分析了如何利用GRU和LSTM等变体来解决梯度消失等问题。

神经网络是深度学习的载体,而神经网络模型中,最经典非RNN模型所属,尽管它不完美,但它具有学习历史信息的能力。后面不管是encode-decode 框架,还是注意力模型,以及自注意力模型,以及更加强大的Bert模型家族,都是站在RNN的肩上,不断演化、变强的。

这篇文章,阐述了RNN的方方面面,包括模型结构,优缺点,RNN模型的几种应用,RNN常使用的激活函数,RNN的缺陷,以及GRU,LSTM是如何试图解决这些问题,RNN变体等。

这篇文章最大特点是图解版本,其次语言简练,总结全面。

概述

传统RNN的体系结构。Recurrent neural networks,也称为RNNs,是一类允许先前的输出用作输入,同时具有隐藏状态的神经网络。它们通常如下所示:

对于每一时步 , 激活函数   ,输出 被表达为:

这里 是时间维度网络的共享权重系数

是激活函数


下表总结了典型RNN架构的优缺点:

优点缺点
处理任意长度的输入计算速度慢
模型形状不随输入长度增加难以获取很久以前的信息
计算考虑了历史信息无法考虑当前状态的任何未来输入
权重随时间共享

RNNs应用

RNN模型主要应用于自然语言处理和语音识别领域。下表总结了不同的应用:

RNN 类型图解例子
1对1

传统神经网络
1对多

音乐生成
多对1

情感分类
多对多

命名实体识别
多对多

机器翻译

损失函数

对于RNN网络,所有时间步的损失函数 是根据每个时间步的损失定义的,如下所示:

时间反向传播

在每个时间点进行反向传播。在时间步,损失相对于权重矩阵的偏导数表示如下:

处理长短依赖

常用激活函数

RNN模块中最常用的激活函数描述如下:

SigmoidTanhRELU



梯度消失/爆炸

在RNN中经常遇到梯度消失和爆炸现象。之所以会发生这种情况,是因为很难捕捉到长期的依赖关系,因为乘法梯度可以随着层的数量呈指数递减/递增。

梯度修剪

梯度修剪是一种技术,用于执行反向传播时,有时遇到的梯度爆炸问题。通过限制梯度的最大值,这种现象在实践中得以控制。


门的类型

为了解决消失梯度问题,在某些类型的RNN中使用特定的门,并且通常有明确的目的。它们通常标注为,等于:

其中,,,是特定于门的系数,是sigmoid函数。主要内容总结如下表:

门的种类作用应用
更新门 过去对现在有多重要?GRU, LSTM
关联门 丢弃过去信息?GRU, LSTM
遗忘门 是不是擦除一个单元?LSTM
输出门 暴露一个门的多少?LSTM

GRU/LSTM

Gated Recurrent Unit(GRU)和长-短期记忆单元(LSTM)处理传统RNNs遇到的消失梯度问题,LSTM是GRU的推广。下表总结了每种结构的特征方程:

注:符号表示两个向量之间按元素相乘。

RNN的变体

下表总结了其他常用的RNN模型:

Bidirectional (BRNN)Deep (DRNN)

参考文献:

https://stanford.edu/~shervine/teaching/cs-230/cheatsheet-recurrent-neural-networks


觉得还不错就给我一个小小的鼓励吧!


RNN的详细结构图Pytorch RNN长这样,这个图比较抽象: Pytorch的RNN的调用: rnn_layer = nn.RNN(input_size=2, hidden_size=3, num_layers=2) input_size输入特征的维度,即下图中每一时刻Xt的输入长度,Xt=[x1,x2] ,长度为2 hidden_size隐藏层神经元个数,下图中hidden_size=3 num_layers网络的层数,下图为2层(上下之间,不是左右之间,左右之间是同一层) 输入: X = torch.rand(2, 1, 2) 阅读详情

相关推荐

时序模型:循环神经网络(RNN)

1. 循环神经网络(RNN)定义 循环神经网络(recurrent neural network, RNN)是一类专门设计处理不定长序列数据的神经网络。 与使用一种新计算1作为核心的卷积神经网络不同,循环神经网络仍使用特征的线性组合作为计算核心,并使用共享参数策略使模型能泛化不同长度的序列数据。 2. 循环神经网络的由来:从全连接神经网络(DNN)到循环神经网络(RNN) 2.1 全连接神经网络的不足 最初,研究者直接将时间序列看作特征向量,将序列每一时刻的观测作为一种特征输入全连接神经网络,来预测序列的标

xunyishuai5020的博客 1万+

【RNN】深入浅出讲解循环神经网络(介绍、原理)

1、RNN的背景 前馈神经网络不考虑数据之间的关联性,网络的输出只和当前时刻网络的输入相关。然而在解决很多实际问题的时候我们发现,现实问题中存在着很多序列型的数据(文本、语音以及视频等),现实场景如室外的温度是随着气候的变化而周期性的变化的,以及我们的语言也需要通过上下文的关系来确认所表达的含义。 这些序列型的数据往往都是具有时序上的关联性的,既某一时刻网络的输出除了与当前时刻的输入相关之外,还与之前某一时刻或某几个时刻的输出相关。而前馈神经网络并不能处理好这种关联性,因...

程序星空实验室 7万+

循环神经网络(RNN)

在之前学习了全连接神经网络(DNN)模型,网络结构都是从输入层到隐含层再到输出层,层与层之间是全连接或部分连接的,但每层之间的节点是无连接的。 一、神经网络基础 神经网络可以当做是能够拟合任意函数的黑盒子,只要训练数据足够,给定特定的x,就能得到希望的y,结构图如下: 将神经网络模型训练好之后,在输入层给定一个x,通过网络之后就能够在输出层得到特定的y,那么既然有了这么强大的模型,为什么还需要RNN(循环神经网络)呢? 二、为什么需要RNN(循环神经网络) 考虑这样一个问题,如果要预测句子的下一个单词是什么

小朱小朱绝不认输的博客 2万+

RNN 图解版

神经网络是深度学习的载体,而神经网络模型中,最经典非RNN模型所属,尽管它不完美,但它具有学习历史信息的能力。后面不管是encode-decode 框架,还是注意力模型,以及自注意力模型,...

算法channel 746

RNN循环神经网络图解概念及从零开始实现

目录 RNN相关概念解析 图解RNN 衡量标准 梯度剪裁(常用于RNN) RNNS的应用 循环神经网络从零开始实现 独热编码 初始化模型可学习的参数 初始化隐藏状态 定义循环神经网络模型(train 一个batch) 定义RNN类封装参数 预测字符并输出 梯度剪裁 定义训练模型(train 一个epoch) RNN相关概念解析 图解RNN RNN要做的就是把前一个时刻的信息传到下一个时刻。 循环神经网络的输出取决于当前的输入和上一时刻的隐变量。隐变量中包含历史信息...

weixin_45169380的博客 3348

RNN-循环神经网络

循环神经网络(RNN)是一种递归神经网络,其特点是能够处理序列数据,包括时间序列、语音、自然语言等。RNN的核心结构是循环单元,它可以捕获序列数据的时序信息,并能够利用这些信息进行模式识别和预测。RNN的结构可以根据具体任务进行调整,常见的变体包括长短期记忆网络(LSTM)、门控循环单元(GRU)等。这些变体在处理序列数据时具有更强的表达能力和性能。RNN在许多领域得到了广泛应用,包括语音识别、自然语言处理、机器翻译、图像描述等。

2301_78731684的博客 1343

RNN 浅析

循环神经网络 (Recurrent Neural Network, RNN) 是一种特殊的神经网路结构,用于处理序列数据。在传统的神经网络模型中,是从输入层到隐含层再到输出层,层与层之间是全连接的,每层之间的节点是无连接的。但是这种普通的神经网络对于时间序列问题却无能无力 (如预测句子的下一个单词)。RNN 之所以称为循环神经网路,其本身包含循环的网络,允许信息在层内神经元之间传递,能够捕捉序列间的时序信息。

晓野豬 6218

RNN循环神经网络

RNN(Recurrent Neural Network) 在传统的全连接神经网络中,从输入层到隐藏层再到输出层,每一层之间的节点是无连接的,因为输入和输出是独立的,所以这种普通的神经网络对于序列数据的处理是无能为力的。而现实中,绝大多数的数据都是序列数据,比如音频、视频、文本等,都存在时间线,想要挖掘数据中的序列信息和语义信息,就需要神经网有更加特殊的结构,比如对于序列信息每一时刻的信...

baijinswpu的博客 3607

循环神经网络(RNN)原理通俗解释

1.RNN怎么来的? 2.RNN的网络结构及原理 3.RNN的改进1:双向RNN 4.RNN的改进2:深层双向RNN 4.1 Pyramidal RNN 5.RNN的训练-BPTT 6.RNN与CNN的结合应用:看图说话 7.RNN项目练手 1.RNN怎么来的? 循环神经网络的应用场景比较多,比如暂时能写论文,写程序,写诗,但是,(总是会有但是的),但是他们现在还不能正常使...

多元思考力 21万+

【深度学习模型】循环神经网络RNN

理解循环神经网络RNN及重要结构LSTM 循环神经网络(recurrent neural network,RNN)是专门用于处理序列数据的深度学习模型,其广泛应用在自然语言处理、语音识别、情感分析、机器翻译等领域。 RNN的网络结构 在循环神经网络中,一个非常重要的概率就是时刻,因为序列是按照时刻输入的。循环神经网络会对每个时刻的输入结合当前模型的状态给出一个输出。其标准的网络结构为: 其中x为...

florrie 1941

循环神经网络RNN

RNN(Recurrent Neural Network)循环神经网络。 类比血液在体内循环,从过去一直被更新到现在。 RNN具有环路。这个环路可以使数据不断循环。通过数据的循环,RNN一边记住过去的数据,一边更新到最新的数据。 RNN层的循环结构 RNN层的循环结构和它的展开如下图所示。下面的多个RNN层都是同一个层;输出分叉了,也就是说同一个输出被复制了,其中的一个输出将成为自身的输入。 xt是t时刻的输入数据,输入t时刻的RNN层。各个时刻的RNN层接收t时刻的输入数据和前一个RNN层的输出数据。

及时总结 5580

RNN循环神经网络实例

最近又忍不住把RNN这一块儿的东西给过了一遍,感觉还是有一些收获!所以想着给记录下来,因为也看到有人给我提意见说:我写的关于算法的文章太多了,还是要好好搞学术研究,所以就想着最近多更几篇关于深度学习网络方面的文章。 关于RNN循环神经网络的具体概念我就不细讲了,稍微把概念给提下吧,然后会说说其变形模型,以及会给出两个demo讲述其在不同领域的应用,方便大家理解! 1. RNN循环神经网络介绍 ...

飞奔的菜猪的博客 1万+

Chroma向量数据库实战:用Python快速搭建本地知识库(附中文诗词检索案例)

本文详细介绍了如何使用Chroma向量数据库和Python快速搭建本地知识库,并附有中文诗词检索的实战案例。通过解析核心概念、数据准备、向量化及智能检索实现,展示了Chroma在处理中文语义搜索时的轻量级与易用性,为开发者构建AI应用原型提供了实用指南。

weixin_29221753的博客 479

通俗理解RNN循环神经网络原理

1、RNN的简单介绍        我们前面提到的无论是人工神经网络还是CNN卷积神经网络,他们的前提都是:元素之间是相互独立的,前一个输入与后一个输入是没有关系的。但现实世界中,很多元素都是相互连接的,比如:某人说:我喜欢美食,其中最喜欢的吃的是肉蟹煲,以后有钱了一定要每天吃___.这里填空,人应该都知道是填“肉蟹煲“。因为我们是根据上下文的内容推断出来的,但机器要做到这一步就比较难了。因此,我们就需要使用循环神经网络了,他的本质是:像

qq_45301231的博客 6179

告别‘抓瞎’:CANoe的Trace、Graphics和Logging窗口实战技巧,高效分析总线故障

本文深入解析CANoe的Trace、Graphics和Logging窗口实战技巧,帮助工程师高效分析总线故障。通过智能过滤、可视化监控和智能日志管理,构建系统级问题定位工作流,显著提升车载网络故障排查效率。

weixin_42709044的博客 292

麒麟银河操作系统V10下ffmpeg的完整部署指南(兼容Linux系统)

本文提供在麒麟银河操作系统V10上从源码编译部署FFmpeg的完整指南,涵盖环境准备、核心依赖库(如x264)编译、FFmpeg本体配置安装、系统集成及常见问题排查。步骤详细,同样适用于Ubuntu、CentOS等主流Linux发行版,帮助用户打造功能强大的多媒体处理工具链。

weixin_29205061的博客 255

深度学习——循环神经网络RNN

本篇博客详细的介绍了神经网络中的另一大分支——循环神经网络,对其原理、结构、分类进行了详细的阐述,并结合tensorflow框架,给出了如何构建简单的循环神经网络

尘心平的博客 3632

Archery通过OpenResty代理转发后登录一直提示Forbidden

测试几遍,连账号密码都没用验证,因为不管输什么都是提示Forbidden。找到配置文件settings.py,下面命令可到配置文件路径。回到页面刷新,随便输入个账号密码,验证失败证明请求成功了。查看Preview,提示CSRF验证失败,请求被中断。域名:dba.hkeasyspeed.com。打开开发者工具查看,网络里面可以看到报403。添加一条配置,把你配置域名添加进去。可以看到页面可以正常访问到。进入Archery容器。重启Archery容器。正常输入账号密码,OK。

万物皆可学 3143

循环神经网络-RNN

有时候,我们仅仅需要知道先前的信息来执行当前的任务。​​ 这一坨,要消除这种情况就需要把这一坨在求偏导的过程中去掉,至于怎么去掉,一种办法就是使 ∂ S j ∂ S j − 1 ≈ 1 {\frac{\partial{S_{j}}}{\partial{S_{j-1}}}}\approx1∂。答案是,还有很多依赖因素。因为RNN结构能够很好利用序列之间的关系,因此针对自然界具有连续性的输入序列,如人类的语言,,语音等进行很好的处理,广泛应用于NLP领域的各项任务,如文本分类,情感分析,意图识别,机器翻译等。

顺其自然~专栏 3945

强化学习(Q-learning、DQN) —— 理论、案例与交互式 GUI 实现

本文详细介绍了强化学习中基于值函数的 Q-learning 算法及深度强化学习的 DQN 方法,从基本理论、数学模型到算法流程均进行了全面阐述。通过迷宫导航、股票交易策略和机器人控制等典型案例,展示了强化学习在处理高维、非线性和时变问题中的强大适应性。为了帮助工程师和研究者更直观地理解强化学习的训练过程,本文还提供了一份基于 Python 与 PyQt6 实现的交互式 GUI 演示系统代码示例,用户可以在线调整参数,实时观察累计奖励和 Q 值的变化,从而更深入地理解算法收敛和策略演化的过程。

闲人编程的博客 1475

【Python_Zebra斑马打印机编程学习笔记(二)】基于BarTender将btw文件转换为zpl文件

本文介绍如何基于 BarTender 软件将 btw 格式的文件转换为 zpl 格式的文件,有需要的读者可以点赞收藏,也欢迎在评论区进行讨论。

禾戊之昂的博客 3375

循环神经网络RNN详细推导

本文详细推介绍RNN的发展历史,工作原理,以及前向和后向传播算法,并给出了详细的推导过程,最后简单介绍了梯度消失和梯度爆炸。

ch18328071580的博客 3626

74.9008深度刷机原理|高通QPST/Firehose底层刷写协议详解

移动设备刷机与底层维修技术指南 本文为移动设备维修人员和高级玩家提供全面的刷机与底层维修技术指南,涵盖高通、联发科和苹果A系列芯片的主要操作。 主要内容 核心操作:Bootloader解锁、Fastboot刷写、EDL深度修复、iTunes DFU模式恢复和分区表重建 适用场景:系统故障修复、底层损坏恢复、安全限制解除、系统降级和深度硬件维修 关键技术:详细解析刷机协议栈层级、关键分区作用和刷机安全机制 操作步骤: 环境搭建与驱动安装 Bootloader解锁(以小米为例) 高通机型系统刷写 苹果设备DFU

2601_95651806的博客 205

RNN循环神经网络之RNN十问

回忆一下RNN的基本结构。例如,在进行文本处理时,序列数据中包含了N条句子(这个N条句子之间相互独立,无先后顺序),一个 batch 可能包含了其中的若干条句子,样本间是可以并行计算的。随着序列长度的增加,较早时间步的信息在经过多次线性变换和非线性激活后,会逐渐被稀释,难以完整地保留和传递到后续时间步,导致模型对长序列中的早期信息记忆能力下降。如果不是按照batch输入,而是一个字一个字依次输入模型,计算梯度时采用的是随机梯度下降法,那么梯度的估计可能会非常不稳定,因为单个样本的特征可能具有较大的随机性。

wangxiaobin1314的博客 1701

VxWorks系列 快速导航

Vxworks系列快速阅览导航

Mr.Sugarcane 1308

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

上一篇: 不涉及代码,来聊聊用户画像
下一篇: 对比6款 “数据分析” 工具,学什么,一目了然!
Wang_AI
博客等级 码龄12年 989粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值