RNN 循环/递归神经网络入门

目录

RNN 循环/递归神经网络

RNN概述

RNN模型

LSTM长短记忆网络

LSTM结构

细胞状态:

决定丢弃信息

确定更新的信息

更新细胞状态

输出信息

GRU算法

值得学习的博客记录



 


RNN 循环/递归神经网络

RNN概述

为什么有RNN

传统的神经网络,CNN(卷积神经网络), 他们的输出都是只考虑前一个输入的影响而不考虑其它时刻输入的影响, 比如简单的猫,狗,手写数字等单个物体的识别具有较好的效果. 但是, 对于一些与时间先后有关的, 比如视频的下一时刻的预测,文档前后文内容的预测等, 这些算法的表现就不尽如人意了.

并且传统的网络结构是采用固定大小的输入并产生固定大小的输出 RNN 它专注于处理文本,其输入和输出的长度是可变的,比如,一对一,一对多,多对一,多对多。

什么是RNN

RNN是一种特殊的神经网络结构, 它是根据"人的认知是基于过往的经验和记忆"这一观点提出的. 它与DNN,CNN不同的是: 它不仅考虑前一时刻的输入,而且赋予了网络对前面的内容的一种'记忆'功能.

RNN之所以称为循环神经网路,即一个序列当前的输出与前面的输出也有关。具体的表现形式为网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出。

应用:

情感分析,机器翻译、自然语言处理(NLP): 主要有视频处理, 文本生成, 语言模型, 图像处理
机器写小说、语音识别图像描述生成、文本相似度计算
音乐推荐、网易考拉商品推荐、Youtube视频推荐等新的应用领域.

RNN模型

 

 

 

缺点:当序列过长的时候,

https://github.com/hzy46/Char-RNN-TensorFlow

参考:https://blog.csdn.net/qq_32241189/article/details/80461635

LSTM长短记忆网络

它处理时间序列的问题的效果很好, 但是仍然存在着一些问题, 其中较为严重的是容易出现梯度消失或者梯度爆炸的问题(*BP算法长时间依赖*造成的). 注意: 这里的梯度消失和BP的不一样,这里主要指由于时间过长而造成记忆值较小的现象. 因此, 就出现了一系列的改进的算法, 这里介绍主要的两种算法: LSTMGRU.LSTM 和 GRU对于梯度消失或者梯度爆炸的问题处理方法主要是:

对于梯度消失: 由于它们都有特殊的方式存储”记忆”,那么以前梯度比较大的”记忆”不会像简单的RNN一样马上被抹除,因此可以一定程度上克服梯度消失问题。
​
对于梯度爆炸:用来克服梯度爆炸的问题就是gradient clipping,也就是当你计算的梯度超过阈值c或者小于阈值-c的时候,便把此时的梯度设置成c或-c。 

 

有选择保留有选择忘记

和RNN不同的是: RNN中,就是个简单的线性求和的过程. 而LSTM可以通过“门”结构来去除或者增加“细胞状态”的信息,实现了对重要内容的保留和对不重要内容的去除(信息选择通过). 通过Sigmoid层输出一个0到1之间的概率值,描述每个部分有多少量可以通过,0表示“不允许任务变量通过”,1表示“运行所有变量通过 ”.

LSTM结构

细胞状态:


细胞状态指的是从前一个时刻的记忆Ct-1到这一个时刻Ct的传送带,与之前普通的RNN中的链接一样。与之前的RNN不同的时,并不是将记忆直接通过这条线一路传过去,在传送的过程中会有一些线性的运算,这些线性的交互,是为了截掉无用的信息,增加有用的信息,使得记忆在不断的循环中仍然不会衰减。c控制参数 决定什么样的信息会保留或者忘记,

决定丢弃信息

忘记层的计算是这样的,首先输入来自两个因素,一个是ht-1,是上一时刻的输出,一个是xt,是这一时刻的输入。计算过程是这样的:他们一起乘以一个权重Wf后加上一个常数项bf(这是一个线性的过程),然后进入sigmoid函数。sigmoid函数输出的函数表明保留信息的多少

确定更新的信息

这里又包含2层:一个tanh层用来产生更新值的候选项,tanh的输出在[-1,1]上,说明细胞状态在某些维度上需要加强,在某些维度上需要减弱;还有一个sigmoid层(输入门层),它的输出值要乘到tanh层的输出上,起到一个缩放的作用,极端情况下sigmoid输出0说明相应维度上的细胞状态不需要更新。

更新细胞状态

首先运行一个sigmoid层来确定细胞状态的那个部分将输出,概率大的则输出量也大。
接着用tanh处理细胞状态,得到一个在[-1,1]之间的值,再将它和sigmoid的输出相乘,输出我们确定的输出部分

输出信息

首先运行一个sigmoid层来确定细胞状态的那个部分将输出,概率大的则输出量也大。
接着用tanh处理细胞状态,得到一个在[-1,1]之间的值,再将它和sigmoid的输出相乘,输出我们确定的输出部分

GRU算法

 

GRU是2014年提出的一种LSTM改进算法. 它将忘记门和输入门合并成为一个单一的更新门, 同时合并了数据单元状态和隐藏状态, 使得模型结构比之于LSTM更为简单.

 

词向量模型 词嵌入模型 Word2vector

值得学习的博客记录

https://blog.csdn.net/sinat_33761963/article/details/53521185 LSTM结构讲解很详细

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值