点上方计算机视觉联盟获取更多干货

仅作学术分享,不代表本公众号立场,侵权联系删除

转载于:作者:zhenguo

转自:Python与算法社区

AI博士笔记系列推荐

周志华《机器学习》手推笔记正式开源!可打印版本附pdf下载链接

神经网络是深度学习的载体,而神经网络模型中,最经典非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

-------------------

END

--------------------

我是王博Kings,985AI博士,华为云专家、CSDN博客专家(人工智能领域优质作者)。单个AI开源项目现在已经获得了2100+标星。现在在做AI相关内容,欢迎一起交流学习、生活各方面的问题,一起加油进步!

我们微信交流群涵盖以下方向(但并不局限于以下内容):人工智能,计算机视觉,自然语言处理,目标检测,语义分割,自动驾驶,GAN,强化学习,SLAM,人脸检测,最新算法,最新论文,OpenCV,TensorFlow,PyTorch,开源框架,学习方法...

这是我的私人微信,位置有限,一起进步!

王博的公众号,欢迎关注,干货多多

王博Kings的系列手推笔记(附高清PDF下载):

博士笔记 | 周志华《机器学习》手推笔记第一章思维导图

博士笔记 | 周志华《机器学习》手推笔记第二章“模型评估与选择”

博士笔记 | 周志华《机器学习》手推笔记第三章“线性模型”

博士笔记 | 周志华《机器学习》手推笔记第四章“决策树”

博士笔记 | 周志华《机器学习》手推笔记第五章“神经网络”

博士笔记 | 周志华《机器学习》手推笔记第六章支持向量机(上)

博士笔记 | 周志华《机器学习》手推笔记第六章支持向量机(下)

博士笔记 | 周志华《机器学习》手推笔记第七章贝叶斯分类(上)

博士笔记 | 周志华《机器学习》手推笔记第七章贝叶斯分类(下)

博士笔记 | 周志华《机器学习》手推笔记第八章集成学习(上)

博士笔记 | 周志华《机器学习》手推笔记第八章集成学习(下)

博士笔记 | 周志华《机器学习》手推笔记第九章聚类

博士笔记 | 周志华《机器学习》手推笔记第十章降维与度量学习

博士笔记 | 周志华《机器学习》手推笔记第十一章稀疏学习

博士笔记 | 周志华《机器学习》手推笔记第十二章计算学习理论

博士笔记 | 周志华《机器学习》手推笔记第十三章半监督学习

博士笔记 | 周志华《机器学习》手推笔记第十四章概率图模型

点分享

点收藏

点点赞

点在看

收藏 | 循环神经网络 RNN 详细图解!相关推荐

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

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

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

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

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

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

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

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

  5. [Python人工智能] 十二.循环神经网络RNN和LSTM原理详解及TensorFlow编写RNN分类案例

    从本专栏开始,作者正式开始研究Python深度学习.神经网络及人工智能相关知识.前一篇讲解了TensorFlow如何保存变量和神经网络参数,通过Saver保存神经网络,再通过Restore调用训练好的 ...

  6. Keras 中的循环神经网络 (RNN)

    简介 循环神经网络 (RNN) 是一类神经网络,它们在序列数据(如时间序列或自然语言)建模方面非常强大. 简单来说,RNN 层会使用 ​​for​​ 循环对序列的时间步骤进行迭代,同时维持一个内部状态 ...

  7. Python手撸机器学习系列(十六):循环神经网络RNN的实现

    目录 循环神经网络RNN 1.公式推导 2.代码实现 循环神经网络RNN 1.公式推导 对于该循环神经网络,以中间的RNN单元为例,推导前向传播: 对于Layer-1: z h = w i x + w ...

  8. dive into deep learning 循环神经网络 RNN 部分 学习

    dive into deep learning 循环神经网络 RNN 部分 学习 到目前为止,我们遇到过两种类型的数据:表格数据和图像数据. 对于图像数据,我们设计了专门的卷积神经网络架构来为这类特殊 ...

  9. 循环神经网络RNN、LSTM、GRU原理详解

    一.写在前面 这部分内容应该算是近几年发展中最基础的部分了,但是发现自己忘得差不多了,很多细节记得不是很清楚了,故写这篇博客,也希望能够用更简单清晰的思路来把这部分内容说清楚,以此能够帮助更多的朋友, ...

最新文章

  1. 阿里员工绩效只拿3.25!自我反省:平时假装努力!晚上没加班!去厕所时间太长!还老买彩票!...
  2. OpenAI解散机器人团队,曾试图造AGI机器人,创始人:最好的决定
  3. c#窗体程序生成错误_用C#语言做的窗体程序中出错恶劣怎么办?
  4. 我的工作日志 - 2020年9月29日 星期二 晴
  5. 2018 计蒜之道 复赛
  6. #define offsetof(TYPE, MEMBER) ((size_t) ((TYPE *)0)-MEMBER)
  7. 【elasticsearch】bulk api奇特的json格式的原因
  8. 核心频率个加速频率_AMD 32核心频率飞起!Intel
  9. 12864c语言程序,LCM12864 C语言驱动程序
  10. git diff 比较文件的工具 DiffMerge 安装配置使用
  11. 《穷查理宝典》读书摘要和思维导图
  12. android 打开默认浏览器,Android调用系统自带浏览器打开网页的实现方法
  13. edge播放视频HTML5黑屏,edge不能播放网页视频怎么办-修复edge浏览器播放视频黑屏的方法 - 河东软件园...
  14. 解决Docker下载镜像速度太慢
  15. xmind下载安装电脑版教程
  16. tomcat上部署的solr的移植以及数据的备份与恢复
  17. arcgis操作导入点线表
  18. 从USB数据采集板看技术造诣
  19. STM32工程添加模块、代码移植操作步骤
  20. Windows Api常用函数大全

热门文章

  1. css自动换行加前置_StudyNode -- CSS
  2. android 运动目标检测_MindSpore应用案例:AI对篮球运动员目标的检测
  3. python3.5安装scrapy_在Python3.5下安装和测试Scrapy爬网站
  4. python实现dos攻击_dos攻击原理及攻击实例
  5. java中session源码_Spring Session原理及源码分析
  6. android实现欢迎启动界面
  7. 8个成语接龙首尾相连_成语接龙(至少8个)
  8. gan 总结 数据增强_吴恩达Deeplearning.ai国庆上新:GAN专项课程
  9. xposed hook 静态函数_开源Hook框架-epic-实现浅析
  10. java font.getfont_java – 无法解析方法’getFont(?)’