循环神经网络(RNN)--学习笔记
一、基本概念
RNN针对的数据是时序数据。RNN它解决了前馈神经网络,无法体现数据时序关系的缺点。在RNN网络中,不仅同一个隐含层的节点可以相互连接,同时隐含层的输入不仅来源于输入层的输入还包括了上一个隐含层的输出。

RNN中主要有以下几个参数:
(1)Xt表示第t隐含层的输入层的输入, St表示第t隐含层的隐含状态,Yt表示第t隐含层的输出
(2)U表示Xt的参数,W表示St-1的参数,V表示St的参数
(3)St = f(UXt+WSt-1) Yt = VSt
RNN实现了参数共享,也就是不管哪一层它的U,W和V参数的值都是一样的,这样就大大减少了需要训练的参数个数。
二、RNN的作用
(1)主要运用于序列化数据
(2)在NLP领域中的词性标注,词向量表达以及语句合法性检查有了很好的应用
(3)典型应用场景:
1、语言模型与文本生成:可以通过输入词向量序列来预测下一个单词可能是什么,也可以判断一个语句正确的可能性。
2、机器翻译:将一种语言翻译成另一种语言:进而文本生成的区别在于它的输入需要完整的语句序列。
3、语言识别
4、图像描述生成
三、RNN的训练
(1)采用BP算法
(2)实现参数共享
(3)因为RNN的网络与与前面的若干步相关,所以它在实现BP算法的时候采用了BPTT算法。但是BPTT算法有一定的局限性,一般它不能解决依赖性超过十步的问题。并且还会存在梯度爆炸和梯度消失的问题。
四、RNN拓展和改进模型
(1)Simple RNN(SRNN)
1、这是一个三层的神经网络
2、有一层和隐含层对应每一个节点固定相连的上下文单元层。这个上下文单元层的权值也是固定。它记录了序列化数据前一步的状态
3、该神经网络采用了前向传播算法
(2)Deep(Bidirectional) RNN
1、和Bidirecrtional RNN的区别在于Deep(Bidirectional) RNN的每一步的输入由多层网络。
Bidirectional RNN:
deep(Bidirectional) RNN:

(3)Echo State Networks
1、它的网络有三部分组成:输入,存储池,输出。最大的特别之处就在于他用存储池代替了RNN中的隐含层
2、存储池里面是一些相互连接的节点单元
3、Echo State Network的关键是训练四个参数:输入权值参数Win,存储池中的节点的连接矩阵W,输出层到存储池的反馈Wback,输入层、存储池和输出层的相互连接Wout。
4、训练的过程用简单的线性回归
(4)GRU(Gated Recurent Unit RNN)
1、GRU的改进主要是两个方面:序列中的不同位置处的输入数据对于当前状态的影响是不一样的,所以需要对不同位置的输入数据赋予不同的权重;其次出现的错误的原因可能是某一个或某几个位置数据的影响,因此只需要更新相应位置的数据的权重。
2、GRU的图:

(5)LSTM
1、LSTM非常适合长序列依赖问题
2、它和RNN的主要区别在于隐含层的训练方式,它采用了独特的cell结构。
3、LSTM和GRU的比较

区别在于:
a、GRU有一个reset gate能够控制前一个的隐状态对当前状态的影响
b、LSTM有input gate和forget gate能够控制新状态的产生,而GRU只有update gate能够控制新状态的产生。
c、LSTM多了output gate能够调节输出的大小,而GRU则没有这个单元
(6)Clockwork RNN
1、有三层的神经网络
2、隐含层网络被分成若干个块,每个块内的节点数大小相等,每一个块内的节点实现了全连接。
3、每一个块都有一个时钟周期,然后按照节点排序,时钟周期大的块内的节点能够全连接时钟周期小的块内的节点。
4、每一次只有满足(t mod Ti) = 0的隐含层块才会执行,这样就大大降低了网络的训练难度,提高了效率。

循环神经网络(RNN)--学习笔记的更多相关文章
- 吴恩达deepLearning.ai循环神经网络RNN学习笔记_看图就懂了!!!(理论篇)
前言 目录: RNN提出的背景 - 一个问题 - 为什么不用标准神经网络 - RNN模型怎么解决这个问题 - RNN模型适用的数据特征 - RNN几种类型 RNN模型结构 - RNN block - ...
- 吴恩达deepLearning.ai循环神经网络RNN学习笔记_没有复杂数学公式,看图就懂了!!!(理论篇)
本篇文章被Google中国社区组织人转发,评价: 条理清晰,写的很详细! 被阿里算法工程师点在看! 所以很值得一看! 前言 目录: RNN提出的背景 - 一个问题 - 为什么不用标准神经网络 - RN ...
- 用纯Python实现循环神经网络RNN向前传播过程(吴恩达DeepLearning.ai作业)
Google TensorFlow程序员点赞的文章! 前言 目录: - 向量表示以及它的维度 - rnn cell - rnn 向前传播 重点关注: - 如何把数据向量化的,它们的维度是怎么来的 ...
- 深度学习之循环神经网络RNN概述,双向LSTM实现字符识别
深度学习之循环神经网络RNN概述,双向LSTM实现字符识别 2. RNN概述 Recurrent Neural Network - 循环神经网络,最早出现在20世纪80年代,主要是用于时序数据的预测和 ...
- 循环神经网络(RNN, Recurrent Neural Networks)介绍(转载)
循环神经网络(RNN, Recurrent Neural Networks)介绍 这篇文章很多内容是参考:http://www.wildml.com/2015/09/recurrent-neur ...
- 通过keras例子理解LSTM 循环神经网络(RNN)
博文的翻译和实践: Understanding Stateful LSTM Recurrent Neural Networks in Python with Keras 正文 一个强大而流行的循环神经 ...
- 循环神经网络RNN模型和长短时记忆系统LSTM
传统DNN或者CNN无法对时间序列上的变化进行建模,即当前的预测只跟当前的输入样本相关,无法建立在时间或者先后顺序上出现在当前样本之前或者之后的样本之间的联系.实际的很多场景中,样本出现的时间顺序非常 ...
- 从网络架构方面简析循环神经网络RNN
一.前言 1.1 诞生原因 在普通的前馈神经网络(如多层感知机MLP,卷积神经网络CNN)中,每次的输入都是独立的,即网络的输出依赖且仅依赖于当前输入,与过去一段时间内网络的输出无关.但是在现实生活中 ...
- 循环神经网络(RNN, Recurrent Neural Networks)介绍
原文地址: http://blog.csdn.net/heyongluoyao8/article/details/48636251# 循环神经网络(RNN, Recurrent Neural Netw ...
随机推荐
- ROS_Kinetic_05 ROS基础内容(二)
ROS_Kinetic_05 ROS基础内容(二) 1. ROS节点node 官网教程:http://wiki.ros.org/cn/ROS/Tutorials/UnderstandingNodes ...
- pig的cogroup详解
从实例出发 %default file test.txt A = load '$file' as (date, web, name, food); B = load '$file' as (date, ...
- 关于会话、进程、请求的几个常用SQL
1.检查自己的SID SELECT sid FROM v$session WHERE sid = (SELECT sid FROM v$mystat WHERE rownum = 1); 2. 几个I ...
- adformsctl.sh 与 adformsrvctl.sh, 10.1.2 及10.1.3
参考 http://blog.csdn.net/cai_xingyun/article/details/40393885 , adformsctl.sh 是开启forms oc4j , 根据之后的 ...
- 推荐大家在GitHub 上值得关注学习的 iOS 开源项目
GitHub上有很多不错的iOS开源项目,和大家特别推荐以下几个项目: 1. ReactiveCocoa GitHub链接:ReactiveCocoa/ReactiveCocoa GitHub自家的函 ...
- 【一天一道LeetCode】#8. String to Integer (atoi)
一天一道LeetCode系列 (一)题目 Implement atoi to convert a string to an integer. Hint: Carefully consider all ...
- Java-HttpServletRequest
//继承了ServletRequest接口,给servlet提供Request请求信息,servlet 容器会创建以后HttpServletRequest对象 //并把它作为一个参数给service函 ...
- FFMPEG类库打开流媒体的方法(需要传参数的时候)
使用ffmpeg类库进行开发的时候,打开流媒体(或本地文件)的函数是avformat_open_input(). 其中打开网络流的话,前面要加上函数avformat_network_init(). 一 ...
- Zeroc Ice开发环境搭建
搭建Ice环境 1. Linux(推荐,更接近真实生产环境) 2. Windows(方便学习开发) 下载安装包:https://zeroc.com/downloads (百度网盘链接:http ...
- 巨高兴,偶的文章 “如何在服务器上配置ODBC来访问本机DB2for Windows服务器”被推荐至CSDN博客首页
非常高兴,偶的文章 "如何在服务器上配置ODBC来访问本机DB2for Windows服务器"被推荐至CSDN博客首页,截图留念. 文章被推荐在C ...