神经网络之循环神经网络及细节分析

以下内容是个人参考网上的学习资料以及自己的理解进行总结的

1、循环神经网络的介绍具体看

https://www.cnblogs.com/pinard/p/6509630.html

深度神经网络无法利用数据中时间序列信息,循环神经网络应势而生。循环神经网络的主要用途是处理和预测序列数据,它最擅长解决的问题是与时间序列相关的。它与CNN一样参数是共享的。

循环神经网络工作的关键点就是利用历史的信息来帮助当前的决策,因此而带来了更大的技术挑战--长期依赖(此外RNN的序列过长时会出现梯度消失现象)LSTM(长短时记忆)的出现正是为了解决这一问题。LSTM是对RNN细胞进行了改造,加入了“遗忘门”它的作用是让循环神经网络“忘记”没有用的信息,它会根据当前的输入Xt和上一时刻的输出Ht-1以及上一时刻的细胞状态共同决定应该从上一时刻的细胞状态记忆中遗忘什么。在循环神经网络‘忘记’了部分之前的状态后,它还需要从当前的输入补充最新的记忆,这个过程是由输入门完成的。“输入门”会根据当前的输入Xt和上一时刻的输出Ht-1以及当前产生的新的细胞状态决定哪些部分进入当前时刻的状态Ct。“输出门”它会根据更新后的状态Ct,上一时刻的输出Ht-1和当前的输入Xt来决定该时刻的输出Ht。

注意:LSTM相比于RNN具备长期的记忆功能是因为除了隐状态Ht,增加了一个新的细胞状态,通过对赋予LSTM长期记忆功能的细胞状态不断进行更新,一方面及时的遗忘无用的信息,另一方面及时的补充新的信息。

当前时刻的隐藏状态输出由当前输入数据,之前的隐藏状态和更新后的细胞状态一起共同决定。

RNN以及其变种的一系列网络最大的问题是,由于其循环的结构导致其无法并行计算,所以训练RNN需要花费大量的时间。同时LSTM的记忆能力也是有限的,有论文证明当序列长度大于200时仍然会出现遗忘现象。

2、LSTM以及其变种(GRU等)图解析

其中牵扯到的计算如下:

  (忘记门部分)

 (输入门部分)

 (当前时刻新细胞状态的产生)

  (细胞状态的更新,忘记门结合上一时刻的细胞状态决定需要遗忘的信息,输入门结合当前时刻产生的新的细胞状态决定应该添加什么信息,最终共同对包含长期记忆的细胞状态进行更新)

 (输出门部分)

 (输出门结合包含长期记忆的细胞状态共同决定当前时刻的输出)

根据以上的公式能够发现,细胞的状态无法对门控结构造成影响,可以加入窥视孔连接,使得细胞状态得以对门控结构造成影响。细胞单元结构图的改变:

相应计算公式的改变:

另一个变型GRU,它把LSTM中的遗忘门和输入门合并为了一个单一的更新门,同时还混合了细胞状态及隐藏状态以及其它一些改动。GRU的门控结构减少到了两个,分别为更新门和重置门,更新门用于控制前一时刻的状态信息被带入到当前状态中的程度,更新门的值越大说明前一时刻的状态信息带入越多。重置门用于控制忽略前一时刻的状态信息的程度,重置门的值越小说明忽略得越多。

细胞结构图以及计算公式如下:

3.LSTM为什么选用sigmoid和tanh两个激活函数是否可以改变

从LSTM的前向传播计算公式中能够得出,三个sigmoid激活函数用于门处,通过sigmoid转换为0-1之间的值能够得到对遗忘输入输出的更直观的表示(因为后来又和细胞状态相乘是否起到一个概率的作用),为什么不用其他sig函数因为sigmoid函数更容易达到饱和,其他的难以饱和,LSTM应该需要饱和的门来记住或忘记信息,不饱和的门会使得过去和现在的记忆一直在叠加,造成记忆错乱。sigmoid激活函数最好不要改变。

两个tanh用于细胞状态处,有论文指出这个可以替换。

原文地址:https://www.cnblogs.com/dyl222/p/10995298.html

时间: 2024-07-30 07:09:07

神经网络之循环神经网络及细节分析的相关文章

学习笔记TF057:TensorFlow MNIST,卷积神经网络、循环神经网络、无监督学习

MNIST 卷积神经网络.https://github.com/nlintz/TensorFlow-Tutorials/blob/master/05_convolutional_net.py .TensorFlow搭建卷积神经网络(CNN)模型,训练MNIST数据集. 构建模型. 定义输入数据,预处理数据.读取数据MNIST,得到训练集图片.标记矩阵,测试集图片标记矩阵.trX.trY.teX.teY 数据矩阵表现.trX.teX形状变为[-1,28,28,1],-1 不考虑输入图片数量,28x

循环神经网络(RNN)模型与前向反向传播算法

在前面我们讲到了DNN,以及DNN的特例CNN的模型和前向反向传播算法,这些算法都是前向反馈的,模型的输出和模型本身没有关联关系.今天我们就讨论另一类输出和模型间有反馈的神经网络:循环神经网络(Recurrent Neural Networks ,以下简称RNN),它广泛的用于自然语言处理中的语音识别,手写书别以及机器翻译等领域. 1. RNN概述 在前面讲到的DNN和CNN中,训练样本的输入和输出是比较的确定的.但是有一类问题DNN和CNN不好解决,就是训练样本输入是连续的序列,且序列的长短不

theano学习指南--词向量的循环神经网络(翻译)

欢迎fork我的github:https://github.com/zhaoyu611/DeepLearningTutorialForChinese 最近在学习Git,所以正好趁这个机会,把学习到的知识实践一下~ 看完DeepLearning的原理,有了大体的了解,但是对于theano的代码,还是自己撸一遍印象更深 所以照着deeplearning.net上的代码,重新写了一遍,注释部分是原文翻译和自己的理解. 感兴趣的小伙伴可以一起完成这个工作哦~ 有问题欢迎联系我 Email: [email

循环神经网络导读

循环神经网络导读 循环神经网络(Recurrent Neural Network)是一类以序列数据为输入,在序列的演进方向进行递归且所有节点(循环单元)按链式连接的递归神经网络.其中双向循环神经网络(Bidirectional RNN, Bi-RNN)和长短期记忆网络(Long Short-Term Memory networks,LSTM)是常见的的循环神经网络.今天,小编带你认识常见的几种循环神经网络模型,主要内容来自Colah的博客,外加一些自己的总结,一起来学习吧~ 循环神经网络 RNN

机器学习及其matlab实现竞争神经网络与SOM神经网络进阶与提高视频教程

38套大数据,云计算,架构,数据分析师,Hadoop,Spark,Storm,Kafka,人工智能,机器学习,深度学习,项目实战视频教程 视频课程包含: 38套大数据和人工智能精品高级课包含:大数据,云计算,架构,数据挖掘实战,实时推荐系统实战,电视收视率项目实战,实时流统计项目实战,离线电商分析项目实战,Spark大型项目实战用户分析,智能客户系统项目实战,Linux基础,Hadoop,Spark,Storm,Docker,Mapreduce,Kafka,Flume,OpenStack,Hiv

TensorFlow框架(6)之RNN循环神经网络详解

1. RNN循环神经网络 1.1 结构 循环神经网络(recurrent neural network,RNN)源自于1982年由Saratha Sathasivam 提出的霍普菲尔德网络.RNN的主要用途是处理和预测序列数据.全连接的前馈神经网络和卷积神经网络模型中,网络结构都是从输入层到隐藏层再到输出层,层与层之间是全连接或部分连接的,但每层之间的节点是无连接的. 图 11 RNN-rolled 如图 11所示是一个典型的循环神经网络.对于循环神经网络,一个非常重要的概念就是时刻.循环神经网

DeepEyes: 用于深度神经网络设计的递进式可视分析系统 (DeepEyes: Progressive Visual Analytics for Designing Deep Neural Networks)

深度神经网络,在模式识别问题上,取得非常不错的效果.但设计一个性能好的神经网络,需要反复尝试,是个非常耗时的过程.这个工作[1]实现了用于深度神经网络设计的可视分析系统,DeepEyes.该系统可以在DNNs训练过程中,提取数据,从网络整体效果,神经层和神经元角度,分析神经网络运行状态,进而协助用户更新DNNs. DeepEyes系统主要关注以下5种任务: 识别稳定层.在DNNs训练过程中,用户可以选择稳定的神经层,进行细节分析. 识别退化的神经元.当某个神经元对所有样本的反应都一样时,认为该神

第十四章——循环神经网络(Recurrent Neural Networks)(第二部分)

本章共两部分,这是第二部分: 第十四章--循环神经网络(Recurrent Neural Networks)(第一部分) 第十四章--循环神经网络(Recurrent Neural Networks)(第二部分) 14.4 深度RNN 堆叠多层cell是很常见的,如图14-12所示,这就是一个深度RNN. 图14-12 深度RNN(左),随时间展开(右) 在TensorFlow中实现深度RNN,需要创建多个cell并将它们堆叠到一个MultiRNNCell中.下面的代码创建了三个完全相同的cel

机器学习与Tensorflow(5)——循环神经网络、长短时记忆网络

1.循环神经网络的标准模型 前馈神经网络能够用来建立数据之间的映射关系,但是不能用来分析过去信号的时间依赖关系,而且要求输入样本的长度固定 循环神经网络是一种在前馈神经网络中增加了分亏链接的神经网络,能够产生对过去数据的记忆状态,所以可以用于对序列数据的处理,并建立不同时段数据之间的依赖关系 循环神经网络是一类允许节点连接成有向环的人工神经网络.如下图: 2.循环神经网络与递归神经网络 从广义上说,递归神经网络可以分为结构递归神经网络和时间递归神经网络 从狭义上说,递归神经网络可以通常就是指结构