收藏 | 循环神经网络 RNN 详细图解!
点上方计算机视觉联盟获取更多干货
仅作学术分享,不代表本公众号立场,侵权联系删除
转载于:作者: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 详细图解!相关推荐
- DL之RNN:循环神经网络RNN的简介、应用、经典案例之详细攻略
DL之RNN:循环神经网络RNN的简介.应用.经典案例之详细攻略 目录 循环神经网络RNN的简介 1.RNN的分类 1.RNN的常见算法分类 2.RNN的三种分类
- 「NLP」 深度学习NLP开篇-循环神经网络(RNN)
https://www.toutiao.com/a6714260714988503564/ 从这篇文章开始,有三AI-NLP专栏就要进入深度学习了.本文会介绍自然语言处理早期标志性的特征提取工具-循环 ...
- 循环神经网络(RNN, Recurrent Neural Networks)介绍
循环神经网络(RNN, Recurrent Neural Networks)介绍 循环神经网络(Recurrent Neural Networks,RNNs)已经在众多自然语言处理(Natural ...
- 【NLP】 深度学习NLP开篇-循环神经网络(RNN)
从这篇文章开始,有三AI-NLP专栏就要进入深度学习了.本文会介绍自然语言处理早期标志性的特征提取工具-循环神经网络(RNN).首先,会介绍RNN提出的由来:然后,详细介绍RNN的模型结构,前向传播和 ...
- [Python人工智能] 十二.循环神经网络RNN和LSTM原理详解及TensorFlow编写RNN分类案例
从本专栏开始,作者正式开始研究Python深度学习.神经网络及人工智能相关知识.前一篇讲解了TensorFlow如何保存变量和神经网络参数,通过Saver保存神经网络,再通过Restore调用训练好的 ...
- Keras 中的循环神经网络 (RNN)
简介 循环神经网络 (RNN) 是一类神经网络,它们在序列数据(如时间序列或自然语言)建模方面非常强大. 简单来说,RNN 层会使用 for 循环对序列的时间步骤进行迭代,同时维持一个内部状态 ...
- Python手撸机器学习系列(十六):循环神经网络RNN的实现
目录 循环神经网络RNN 1.公式推导 2.代码实现 循环神经网络RNN 1.公式推导 对于该循环神经网络,以中间的RNN单元为例,推导前向传播: 对于Layer-1: z h = w i x + w ...
- dive into deep learning 循环神经网络 RNN 部分 学习
dive into deep learning 循环神经网络 RNN 部分 学习 到目前为止,我们遇到过两种类型的数据:表格数据和图像数据. 对于图像数据,我们设计了专门的卷积神经网络架构来为这类特殊 ...
- 循环神经网络RNN、LSTM、GRU原理详解
一.写在前面 这部分内容应该算是近几年发展中最基础的部分了,但是发现自己忘得差不多了,很多细节记得不是很清楚了,故写这篇博客,也希望能够用更简单清晰的思路来把这部分内容说清楚,以此能够帮助更多的朋友, ...
最新文章
- 阿里员工绩效只拿3.25!自我反省:平时假装努力!晚上没加班!去厕所时间太长!还老买彩票!...
- OpenAI解散机器人团队,曾试图造AGI机器人,创始人:最好的决定
- c#窗体程序生成错误_用C#语言做的窗体程序中出错恶劣怎么办?
- 我的工作日志 - 2020年9月29日 星期二 晴
- 2018 计蒜之道 复赛
- #define offsetof(TYPE, MEMBER) ((size_t) ((TYPE *)0)-MEMBER)
- 【elasticsearch】bulk api奇特的json格式的原因
- 核心频率个加速频率_AMD 32核心频率飞起!Intel
- 12864c语言程序,LCM12864 C语言驱动程序
- git diff 比较文件的工具 DiffMerge 安装配置使用
- 《穷查理宝典》读书摘要和思维导图
- android 打开默认浏览器,Android调用系统自带浏览器打开网页的实现方法
- edge播放视频HTML5黑屏,edge不能播放网页视频怎么办-修复edge浏览器播放视频黑屏的方法 - 河东软件园...
- 解决Docker下载镜像速度太慢
- xmind下载安装电脑版教程
- tomcat上部署的solr的移植以及数据的备份与恢复
- arcgis操作导入点线表
- 从USB数据采集板看技术造诣
- STM32工程添加模块、代码移植操作步骤
- Windows Api常用函数大全
热门文章
- css自动换行加前置_StudyNode -- CSS
- android 运动目标检测_MindSpore应用案例:AI对篮球运动员目标的检测
- python3.5安装scrapy_在Python3.5下安装和测试Scrapy爬网站
- python实现dos攻击_dos攻击原理及攻击实例
- java中session源码_Spring Session原理及源码分析
- android实现欢迎启动界面
- 8个成语接龙首尾相连_成语接龙(至少8个)
- gan 总结 数据增强_吴恩达Deeplearning.ai国庆上新:GAN专项课程
- xposed hook 静态函数_开源Hook框架-epic-实现浅析
- java font.getfont_java – 无法解析方法’getFont(?)’