↑↑↑关注后"星标"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图解!相关推荐

  1. 深度学习 -- TensorFlow(9)循环神经网络RNN

    目录 一.循环神经网络RNN介绍 二.Elman network && Jordan network 三.RNN的多种架构 1.一对一 2.多对一 3.多对多 4. 一对多 5.Seq ...

  2. 循环神经网络(RNN、LSTM、GRU)

    循环神经网络(RNN.LSTM.GRU) 目录 循环神经网络(RNN.LSTM.GRU) 概述: 计算: LSTM(长短记忆模型): GRU:

  3. 「NLP」 深度学习NLP开篇-循环神经网络(RNN)

    https://www.toutiao.com/a6714260714988503564/ 从这篇文章开始,有三AI-NLP专栏就要进入深度学习了.本文会介绍自然语言处理早期标志性的特征提取工具-循环 ...

  4. 史上最全!27种神经网络简明图解:模型那么多,我该怎么选?

    27种?!神经网络竟有那么多种?这篇文章将逐一介绍下面这张图片中的27种神经网络类型,并尝试解释如何使用它们.准备好了吗?让我们开始吧! 神经网络的种类越来越多,可以说是在呈指数级地增长.我们需要一个 ...

  5. 深度学习~循环神经网络RNN, LSTM

    目录 1. 循环神经网络RNN 1.1 RNN出现背景 1.2 RNN概念 2. LSTM 2.1 LSTM出现背景 2.2 LSTM结构 参考 1. 循环神经网络RNN 1.1 RNN出现背景 pr ...

  6. 循环神经网络(RNN, Recurrent Neural Networks)介绍

    循环神经网络(RNN, Recurrent Neural Networks)介绍   循环神经网络(Recurrent Neural Networks,RNNs)已经在众多自然语言处理(Natural ...

  7. DL之RNN:循环神经网络RNN的简介、应用、经典案例之详细攻略

    DL之RNN:循环神经网络RNN的简介.应用.经典案例之详细攻略 目录 循环神经网络RNN的简介 1.RNN的分类 1.RNN的常见算法分类 2.RNN的三种分类

  8. 【NLP】 深度学习NLP开篇-循环神经网络(RNN)

    从这篇文章开始,有三AI-NLP专栏就要进入深度学习了.本文会介绍自然语言处理早期标志性的特征提取工具-循环神经网络(RNN).首先,会介绍RNN提出的由来:然后,详细介绍RNN的模型结构,前向传播和 ...

  9. Pytorch实现基本循环神经网络RNN (3)

    1.47.Pytorch实现基本循环神经网络RNN (3) Recurrent Neural networks(Rumelhart, 1986)主要用来处理序列型数据,具有对以往数据的记忆功能.下图所 ...

最新文章

  1. 软件测试工程师面试英语
  2. boost::fibers::future用法的测试程序
  3. Java上传文件到MongoDB GirdFS
  4. vue 日期格式化返回指定个数月份_12、vue中日期格式化转换的函数
  5. HDU 3861 The King’s Problem (强连通缩点+DAG最小路径覆盖)
  6. ReportViewer教程(14)-钻取报表和传入参数
  7. linux给目录加裸设备磁盘,Linux添加裸设备空间(Redhat)
  8. mysql 9_mysql-9索引
  9. HashMap遍历方式
  10. [Linux源码分析]内存管理
  11. 十天学会单片机可能吗?单片机入门需要多久?
  12. adams c语言,Adams2013编译C语言用户子程序生成dll超详细教程讲解
  13. UML图的画法,简单详细,以实战代码为例子画UML
  14. python 录屏_《自拍教程70》Python adb一键录屏
  15. 敏捷开发中,团队成员认领的是任务还是用户故事?
  16. 世界的物质性及其发展规律
  17. python橙色_如何自定义橙色Firefox菜单按钮的外观
  18. 求集合的所有非空子集
  19. ubuntu常用的服务器搭建
  20. 计算机生成全息投影代码,常见的投影控制代码 汇总 1

热门文章

  1. 各种函数调用约定及浮点数传参
  2. Android通过ksoap2调用.net(c#)的webservice
  3. MS SQL入门基础:备份和恢复系统数据库
  4. 我翻译的一篇文章,OO设计中对象的创建和使用
  5. 姜子上:利用BiLSTM-CRF进行命名实体识别
  6. 七天学会「股票数据分析软件」的开发(中)
  7. 【ACM】UVa 489 刽子手游戏(自顶向下)
  8. 从事了两年 AI 研究,我学到了什么?
  9. 推荐 6 个好用到爆的 Pycharm 插件
  10. 网友:Java岗,自学一个月跳槽计算机视觉,其实入门很简单