神经网络RNN图解!
↑↑↑关注后"星标"Datawhale
每日干货 & 每月组队学习,不错过
Datawhale干货
方向:神经网络,来源:人工智能与算法学习
神经网络是深度学习的载体,而神经网络模型中,最经典非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模块中最常用的激活函数描述如下:
Sigmoid | Tanh | RELU |
---|---|---|
梯度消失/爆炸
在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图解!相关推荐
- 深度学习 -- TensorFlow(9)循环神经网络RNN
目录 一.循环神经网络RNN介绍 二.Elman network && Jordan network 三.RNN的多种架构 1.一对一 2.多对一 3.多对多 4. 一对多 5.Seq ...
- 循环神经网络(RNN、LSTM、GRU)
循环神经网络(RNN.LSTM.GRU) 目录 循环神经网络(RNN.LSTM.GRU) 概述: 计算: LSTM(长短记忆模型): GRU:
- 「NLP」 深度学习NLP开篇-循环神经网络(RNN)
https://www.toutiao.com/a6714260714988503564/ 从这篇文章开始,有三AI-NLP专栏就要进入深度学习了.本文会介绍自然语言处理早期标志性的特征提取工具-循环 ...
- 史上最全!27种神经网络简明图解:模型那么多,我该怎么选?
27种?!神经网络竟有那么多种?这篇文章将逐一介绍下面这张图片中的27种神经网络类型,并尝试解释如何使用它们.准备好了吗?让我们开始吧! 神经网络的种类越来越多,可以说是在呈指数级地增长.我们需要一个 ...
- 深度学习~循环神经网络RNN, LSTM
目录 1. 循环神经网络RNN 1.1 RNN出现背景 1.2 RNN概念 2. LSTM 2.1 LSTM出现背景 2.2 LSTM结构 参考 1. 循环神经网络RNN 1.1 RNN出现背景 pr ...
- 循环神经网络(RNN, Recurrent Neural Networks)介绍
循环神经网络(RNN, Recurrent Neural Networks)介绍 循环神经网络(Recurrent Neural Networks,RNNs)已经在众多自然语言处理(Natural ...
- DL之RNN:循环神经网络RNN的简介、应用、经典案例之详细攻略
DL之RNN:循环神经网络RNN的简介.应用.经典案例之详细攻略 目录 循环神经网络RNN的简介 1.RNN的分类 1.RNN的常见算法分类 2.RNN的三种分类
- 【NLP】 深度学习NLP开篇-循环神经网络(RNN)
从这篇文章开始,有三AI-NLP专栏就要进入深度学习了.本文会介绍自然语言处理早期标志性的特征提取工具-循环神经网络(RNN).首先,会介绍RNN提出的由来:然后,详细介绍RNN的模型结构,前向传播和 ...
- Pytorch实现基本循环神经网络RNN (3)
1.47.Pytorch实现基本循环神经网络RNN (3) Recurrent Neural networks(Rumelhart, 1986)主要用来处理序列型数据,具有对以往数据的记忆功能.下图所 ...
最新文章
- 软件测试工程师面试英语
- boost::fibers::future用法的测试程序
- Java上传文件到MongoDB GirdFS
- vue 日期格式化返回指定个数月份_12、vue中日期格式化转换的函数
- HDU 3861 The King’s Problem (强连通缩点+DAG最小路径覆盖)
- ReportViewer教程(14)-钻取报表和传入参数
- linux给目录加裸设备磁盘,Linux添加裸设备空间(Redhat)
- mysql 9_mysql-9索引
- HashMap遍历方式
- [Linux源码分析]内存管理
- 十天学会单片机可能吗?单片机入门需要多久?
- adams c语言,Adams2013编译C语言用户子程序生成dll超详细教程讲解
- UML图的画法,简单详细,以实战代码为例子画UML
- python 录屏_《自拍教程70》Python adb一键录屏
- 敏捷开发中,团队成员认领的是任务还是用户故事?
- 世界的物质性及其发展规律
- python橙色_如何自定义橙色Firefox菜单按钮的外观
- 求集合的所有非空子集
- ubuntu常用的服务器搭建
- 计算机生成全息投影代码,常见的投影控制代码 汇总 1