RNN神经网络

			RNN神经网络

一、 什么是RNN神经网络

RNN是一种特殊的神经网络结构, 它是根据"人的认知是基于过往的经验和记忆"这一观点提出的. 它与DNN,CNN不同的是: 它不仅考虑前一时刻的输入,而且赋予了网络对前面的内容的一种’记忆’功能.
RNN之所以称为循环神经网路,即一个序列当前的输出与前面的输出也有关。具体的表现形式为网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出
为什么会有RNN呢?
细想BP算法,CNN(卷积神经网络)我们会发现, 他们的输出都是只考虑前一个输入的影响而不考虑其它时刻输入的影响, 比如简单的猫,狗,手写数字等单个物体的识别具有较好的效果. 但是, 对于一些与时间先后有关的, 比如视频的下一时刻的预测,文档前后文内容的预测等, 这些算法的表现就不尽如人意了.因此, RNN就应运而生了
二、 经典的RNN神经网络
RNN神经网络_第1张图片

T1时刻,输入一个x1,通过h1隐含层,得到一个y1,通过y1计算出对应的损失,T2时刻,输出一个x2,通过隐含层h2,这个h2的隐含层受到之前h1的隐含层影响,所以h2会加上h1乘上对应的权值whh,在通通过h2隐含层输出y2,在计算出损失函数,以此类推。Whh是一个共享参数,整个RNN都使用同一个Whh,Wxh,why
RNN的隐含层h1除了第一个以外,其余的隐含层都受上一个隐含层的影响,所以当前隐含层的计算等于当前的隐含层加上上一个隐含层乘上对应的权重,再通过这样预测出y。
RNN的损失函数是累加所以预测Y后的损失函数。

通过语言文本来训练RNN模型:
RNN神经网络_第2张图片

知道我们要训练的句子,将句子转化成词向量用作输入,讲词向量I输入,通过H1,Why后,计算下一个单词的概率,而我们知道下一个单词应该是什么,在通过交叉熵计算损失,以此类推。
三、 RNN的反向 传播(bptt)
RNN神经网络_第3张图片

RNN的损失函数是累加所以预测Y后的损失函数。
Ht是由输入的x乘上权重Wxh,加上上一个ht-1乘上whh,得到ht
但我们的损失函数想对H1进行梯度求导时:
RNN神经网络_第4张图片

根据反向传播算法具有依赖性,得出当我们想对H1求到,则需要先对h1之前的h进行求导。
在这里插入图片描述

Ht是一个向量,ht-1也是一个向量,向量对向量求导得到的是一个矩阵,所以我们求导得出的是一个对角矩阵。
对h1反向传播的求导公式如下
RNN神经网络_第5张图片

因为我们的Whh是共享参数,所以每次求导都会对Whh进行梯度求导。
这样会面临一个问题,当RNN网络很深时,Whh的值在0

四、 RNN的梯度消亡与梯度爆炸
当对RNN进行求导时,发现对所以的ht进行求导,都会乘上一个Whh
这样会面临一个问题,当RNN网络很深时,Whh的值在0 在这里插入图片描述

	通过梯度下降法进行求导,出现梯度爆炸或者梯度消亡问题

在这里插入图片描述

那么该如何解决呢?
(1) 梯度爆炸
RNN神经网络_第6张图片

设置一个梯度阈值,当我们的梯度大于这个阈值时,则使用这个阈值作为这次的梯度
(2) 梯度消亡
通过LSTM来缓解这个现状,并不能解决,只能将原本深度到达10就会出现的消亡现象,延长到50
五、 LSTM
Long ShortTerm 网络——一般就叫做LSTM——是一种RNN特殊的类型,可以学习长期依赖信息。当然,LSTM和基线RNN并没有特别大的结构不同,但是它们用了不同的函数来计算隐隐含层。
LSTM的“记忆”我们叫做细胞/cells,你可以直接把它们想做黑盒,这个黑盒的输入为前状态和当前输入。这些“细胞”会决定哪些之前的信息和状态需要保留/记住,而哪些要被抹去。实际的应用中发现,这种方式可以有效地保存很长时间之前的关联信息。
RNN神经网络_第7张图片

LSTM与传统RNN不同就在与隐含层,LSTM在计算隐含层时,通过各种门进行计算,最终得到ht,而这些门就是用来缓解梯度消亡的。
下列我们来看看ht是如何计算的:
RNN神经网络_第8张图片

LSTM有三个门
Forget(遗忘门):忘记不重要的参数,保留重要的参数

Enput(输入门):决定我们应该更新哪一些参数。通过tanh激活函数创建我们的候选向量C(t)。
Output(输出门): 更新我们想要的Ht

当去更新新的参数时,要先通过遗忘门忘记上一层中不重要的参数,再将当前计算得到的C(t)输入层进行计算,相当于上一层的C(t-1)与这一层的C(t)进行融合,而遗忘门和输入门相当于权重参数。通过这种方式来缓解梯度消亡

六、 Bi-directional LSTM
在文本领域,我们想预测句子中的单词的上下文信息,那么就可以使用Bi-drectional LSTM,它是由两个LSTM组成,网络结构如下:
RNN神经网络_第9张图片

你可能感兴趣的:(神经网络,rnn,深度学习)