循环神经网络

简介: RNN是什么 循环神经网络即recurrent neural network,它的提出主要是为了处理序列数据,序列数据是什么?就是前面的输入和后面的输入是有关联的,比如一句话,前后的词都是有关系的,“我肚子饿了,准备去xx”,根据前面的输入判断“xx”很大可能就是“吃饭”。

RNN是什么

循环神经网络即recurrent neural network,它的提出主要是为了处理序列数据,序列数据是什么?就是前面的输入和后面的输入是有关联的,比如一句话,前后的词都是有关系的,“我肚子饿了,准备去xx”,根据前面的输入判断“xx”很大可能就是“吃饭”。这个就是序列数据。

循环神经网络有很多变种,比如LSTM、GRU等,这里搞清楚基础的循环神经网络的思想,对于理解其他变种就比较容易了。

与传统神经网络区别

下图是我们经典的全连接网络,从输入层到两个隐含层再到输出层,四层之间都是全连接的,而且层内之间的节点不相连。这种网络模型对于序列数据的预测就基本无能为力,比如某句话的下一个单词是什么就很难处理。

循环神经网络则擅长处理序列数据,它会对前面的信息进行记忆并且参与当前输出的计算,理论上循环神经网络能处理任意长度的序列数据。

RNN模型

RNN模型最抽象的画法就是下面这种了,但它不太好理解,因为它将时间维度挤压了。其中x是输入,U是输出层到隐含层的权重,s是隐含层值,W则是上个时刻隐含层作为这个时刻输入的权重,V是隐含层到输出层的权重,o是输出。

为方便理解,将上图展开,现在可以清楚看到输入x、隐层值s和输出o都有了下标t,这个t表示时刻,t-1是上一时刻,t+1则是下一时刻。不同时刻输入对应不同的输出,而且上一时刻的隐含层会影响当前时刻的输出。

那么反应到神经元是怎样的呢?如下图,这下就更清晰了,输入的3个神经元连接4个隐含层神经元,然后保留隐含层状态用于下一刻参与计算。

RNN的正向传播

db7506968627cb28f58ac7bf76f38a3cf73a5d7f


RNN的训练

3bf7328ff05f4dd573b7a449de9d34423cf38739

梯度消失或梯度爆炸

对于tanh和sigmoid激活函数的RNN,我们说它不能很好的处理较长的序列,这个是为什么呢?简单说就是因为RNN很容易会存在梯度消失或梯度爆炸问题,发生这种情况时RNN就捕捉不了很早之前的序列的影响。

为什么会这样?接着往下看,tanh和sigmoid的梯度大致如下图所示,两端的梯度值都基本接近0了,而从上面的求导公式可以看到


22b8b468e4c673d82d028ce269bce437ea537bd2


其中有个连乘操作,而向量函数对向量求导结果为一个Jacobian矩阵,元素为每个点的导数,离当前时刻越远则会乘越多激活函数的导数,指数型,本来就接近0的梯度再经过指数就更加小,基本忽略不计了,于是便接收不到远距离的影响,这就是RNN处理不了较长序列的原因。

而当矩阵中的值太大时,经过指数放大,则会产生梯度爆炸。

梯度爆炸会导致程序NaN,可以设置一个梯度阈值来处理。

梯度消失则可以用ReLU来替代tanh和sigmoid激活函数,或者用LSTM或GRU结构。

RNN简单应用例子

比如可以做字符级别的预测,如下图,假如这里只有四种字符,样本为”hello”单词,则输入h预测下个字符为e,e接着则输出l,l则输出l,最后输入l则输出o。



========广告时间========

鄙人的新书《Tomcat内核设计剖析》已经在京东销售了,有需要的朋友可以到 https://item.jd.com/12185360.html 进行预定。感谢各位朋友。

为什么写《Tomcat内核设计剖析》

=========================

欢迎关注:

这里写图片描述

目录
相关文章
|
13天前
|
机器学习/深度学习 自然语言处理 算法
|
16天前
|
机器学习/深度学习
深度学习第2天:RNN循环神经网络
深度学习第2天:RNN循环神经网络
25 0
|
1月前
|
机器学习/深度学习 自然语言处理 语音技术
循环神经网络
循环神经网络
17 1
|
1月前
|
机器学习/深度学习 自然语言处理 并行计算
神经网络结构——CNN、RNN、LSTM、Transformer !!
神经网络结构——CNN、RNN、LSTM、Transformer !!
131 0
|
4月前
|
机器学习/深度学习 自然语言处理 数据处理
一文带你了解RNN循环神经网络
一文带你了解RNN循环神经网络
116 1
|
11月前
|
机器学习/深度学习
从RNN、LSTM到GRU的介绍
从RNN、LSTM到GRU的介绍
|
7月前
|
机器学习/深度学习 存储 人工智能
循环神经网络(二)
循环神经网络(二)
68 0
|
7月前
|
机器学习/深度学习 人工智能 开发者
循环神经网络(一)
循环神经网络(一)
58 0
|
7月前
|
机器学习/深度学习 数据采集
将循环神经网络(RNN)
将循环神经网络(RNN)应用于现实世界数据进行时间序列预测,是一种常见的机器学习应用。时间序列预测是一种预测未来值的方法,它基于过去和现在的数据点。这种预测方法被广泛应用于金融、气象、工业生产等领域。以下是使用 RNN 进行时间序列预测的基本步骤:
44 3
|
10月前
|
机器学习/深度学习 自然语言处理 算法
RNN、CNN、RNN、LSTM、CTC算法原理,pytorch实现LSTM算法
RNN、CNN、RNN、LSTM、CTC算法原理,pytorch实现LSTM算法
198 0

热门文章

最新文章

相关实验场景

更多