循环神经网络(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 ...
随机推荐
- android studio2.0出现的gradle问题,instant Run即时运行不了.
android studio 2.0出现的gradle问题: instant Run即时运行不了.经历了几乎9个preView版本的AS2.0,终于迎来了正式版,然而晴天我的霹雳,好不容易装好的2.0 ...
- unity 实现流光效果
1.通过一些简单效果可以让我们更好的去理解shader,具体都在代码注释中: Shader "Unlit/MoveLightImage" { Properties { //主纹理 ...
- php 命令空间总结
本文移到:http://www.phpgay.com/Article/detail/classid/2/id/53.html 1.命名空间的语法: <?php namespace 名称; ?&g ...
- Html5学习之旅-html5的留言记事本开发(17)
web留言记事本的开发 !!!!!代码如下 index.html的代码 <!DOCTYPE html> <html lang="en"> <head& ...
- 【Qt编程】Qt学习之Window and Dialog Widgets
Qt Creator 提供的默认基类只要QMainWindow.QWidget和QDialog三种.其中,QMainWindow是带有菜单栏和工具栏的主窗口类,QDialog是各种对话框的基类,这两个 ...
- /dev/null 2>&1的意思(可以直接参考shell重定向那篇,/dev/null是空设备)
路还长 别太狂 以后指不定谁辉煌 2>&1 和 &> 的解释 Linux的IO输入输出有三类 Standard Input 代码 0 Standard Output 代码 ...
- 轻量级网络库libevent初探
本文是关于libevent库第一篇博文,主要由例子来说明如何利用该库.后续博文再深入研究该库原理. libevent库简介 就如libevent官网上所写的“libevent - an event n ...
- FFMPEG结构体分析:AVIOContext
注:写了一系列的结构体的分析的文章,在这里列一个列表: FFMPEG结构体分析:AVFrame FFMPEG结构体分析:AVFormatContext FFMPEG结构体分析:AVCodecConte ...
- UTL_HTTP Call a Web Service and Pass Parameters as Part of the URL
SET DEFINE OFF SET SERVEROUTPUT ON DECLARE req UTL_HTTP.REQ; resp UTL_HTTP.RESP; value VARCHAR2(3276 ...
- win7待机时间设置,睡眠时间设置
首先,单击"开始"找到"控制面板" 步骤阅读 2 打开"控制面板"以后,单击右侧的"硬件和声音" 步骤阅读 3 找到&q ...