RNN基本原理及梯度消失、梯度爆炸的问题原因及解决方法

一、RNN基本结构

在这里插入图片描述

1、隐层状态 s t s_t st

s t = σ ( U x t + W s t − 1 + b 1 ) s_t=\sigma(Ux_t+Ws_{t-1}+b_1) st=σ(Uxt+Wst1+b1) σ \sigma σ()是激活函数,通常选用Tanh、ReLU。

2、输出状态 o t o_t ot

o t = g ( V s t + b 2 ) o_t=g(Vs_t+b_2) ot=g(Vst+b2) g g g()是激活函数,对于分类任务通常选用 s i g m o i d sigmoid sigmoid()。

3、Loss计算

输出状态 o t o_t ot与目标输出 y t y_t yt计算Loss:
L = ∑ t L t = ∑ t L o s s ( o t , y t ) L=\sum_{t}L_t=\sum_{t}Loss(o_t,y_t) L=tLt=tLoss(ot,yt) L o s s Loss Loss是损失函数,对于分类任务通常选用交叉熵损失函数。

二、RNN参数更新方式

1、首先需要明确:上述的循环重复结构,都是共享参数的,也就是说不管在什么时刻,权重矩阵 U U U W W W V V V都是相同的。

好处:极大减少参数量+可以处理不定长序列

2、梯度下降、反向传播过程

假设 t = 3 t=3 t=3的时刻,计算它的损失函数:
s 3 = σ ( U x 3 + W s 2 + b 1 ) o 3 = g ( V s 3 + b 2 ) L 3 = 1 2 ( o 3 − y 3 ) 2 s_3=\sigma(Ux_3+Ws_{2}+b_1) \\ o_3=g(Vs_3+b_2) \\ L_3=\frac{1}{2}(o_3-y_3)^2 s3=σ(Ux3+Ws2+b1)o3=g(Vs3+b2)L3=21(o3y3)2那么求偏导的时候: ∂ L 3 ∂ V = ∂ L 3 ∂ o 3 ∂ o 3 ∂ V \frac{ \partial L_3 }{ \partial V}=\frac{ \partial L_3 }{ \partial o_3}\frac{ \partial o_3 }{ \partial V} VL3=o3L3Vo3 ∂ L 3 ∂ U = ∂ L 3 ∂ o 3 ∂ o 3 ∂ s 3 ∂ s 3 ∂ U + ∂ L 3 ∂ o 3 ∂ o 3 ∂ s 3 ∂ s 3 ∂ s 2 ∂ s 2 ∂ U + ∂ L 3 ∂ o 3 ∂ o 3 ∂ s 3 ∂ s 3 ∂ s 2 ∂ s 2 ∂ s 1 ∂ s 1 ∂ U \frac{ \partial L_3 }{ \partial U}=\frac{ \partial L_3 }{ \partial o_3}\frac{ \partial o_3 }{ \partial s_3} \frac{ \partial s_3 }{ \partial U}+\frac{ \partial L_3 }{ \partial o_3}\frac{ \partial o_3 }{ \partial s_3} \frac{ \partial s_3 }{ \partial s_2}\frac{ \partial s_2 }{ \partial U}+\frac{ \partial L_3 }{ \partial o_3}\frac{ \partial o_3 }{ \partial s_3} \frac{ \partial s_3 }{ \partial s_2}\frac{ \partial s_2 }{ \partial s_1}\frac{ \partial s_1 }{ \partial U} UL3=o3L3s3o3Us3+o3L3s3o3s2s3Us2+o3L3s3o3s2s3s1s2Us1 ∂ L 3 ∂ W = ∂ L 3 ∂ o 3 ∂ o 3 ∂ s 3 ∂ s 3 ∂ W + ∂ L 3 ∂ o 3 ∂ o 3 ∂ s 3 ∂ s 3 ∂ s 2 ∂ s 2 ∂ W + ∂ L 3 ∂ o 3 ∂ o 3 ∂ s 3 ∂ s 3 ∂ s 2 ∂ s 2 ∂ s 1 ∂ s 1 ∂ W \frac{ \partial L_3 }{ \partial W}=\frac{ \partial L_3 }{ \partial o_3}\frac{ \partial o_3 }{ \partial s_3} \frac{ \partial s_3 }{ \partial W}+\frac{ \partial L_3 }{ \partial o_3}\frac{ \partial o_3 }{ \partial s_3} \frac{ \partial s_3 }{ \partial s_2}\frac{ \partial s_2 }{ \partial W}+\frac{ \partial L_3 }{ \partial o_3}\frac{ \partial o_3 }{ \partial s_3} \frac{ \partial s_3 }{ \partial s_2}\frac{ \partial s_2 }{ \partial s_1}\frac{ \partial s_1 }{ \partial W} WL3=o3L3s3o3Ws3+o3L3s3o3s2s3Ws2+o3L3s3o3s2s3s1s2Ws1因为 s 3 s_3 s3是由前面的 s 1 s_1 s1 s 2 s_2 s2递推出来的,所以 L L L U U U W W W求偏导的公式需要把前面的 s 1 s_1 s1 s 2 s_2 s2带入进去: s 3 = σ ( U x 3 + W s 2 + b 1 ) = σ ( U x 3 + W ( σ ( U x 2 + W s 1 + b 1 ) ) + b 1 ) s_3=\sigma(Ux_3+Ws_{2}+b_1)\\ =\sigma(Ux_3+W(\sigma(Ux_2+Ws_{1}+b_1))+b_1) s3=σ(Ux3+Ws2+b1)=σ(Ux3+W(σ(Ux2+Ws1+b1))+b1)由此能知道,时间序列越长,出现连乘的部分会越集中在后面。也就是通过时间的反向传播。

三、RNN和普通神经网络梯度消失的本质区别

普通神经网络:它不是按时间步进行反向传播的,因此不会有一项一项相加的部分,只有一个总体的连乘求偏导过程。它的梯度消失是总的梯度会趋于0的
RNN:每一项一项进行相加,可以发现距离拉的越长,连乘的项就越多,远距离的梯度会趋于0的近距离的梯度不会消失RNN梯度消失的真正含义是总的梯度受近距离梯度的主导,远距离的梯度消失。

四、RNN梯度消失梯度爆炸及解决方式

梯度爆炸:采用梯度截断的方式
梯度消失:1、采用跨时域的残差连接 。 2、采用门控机制(LSTM、GRU)作为RNN基本单元,控制信息流入量

  • 10
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: RNN(递归神经网络)是一种常用的深度学习技术,它具有记忆功能,能够学习序列数据中的规律和模式。RNN基本原理是,它以一种“循环”的方式来处理序列数据,它可以从输入序列中抽取相应的特征,然后再根据这些特征输出预测结果。RNN的运行过程主要包括:输入层、隐藏层和输出层。输入层用于获取输入序列的特征,而隐藏层以某种形式学习从输入序列中获取的特征,并将它们组合成一个新的特征向量,这个特征向量称为“状态”。最后,输出层利用这个特征向量来获得最终的预测结果。RNN还可以通过多种方式来提升训练的准确度,其中最常用的方法是“长短期记忆”(LSTM)和“门控循环单元”(GRU)。这两种方法都可以用来解决训练中的梯度消失问题,从而提高训练的准确度。总之,RNN可以让深度学习模型更加准确,更加有效地处理序列数据。 ### 回答2: RNN(循环神经网络)是一种常用于处理序列数据的神经网络模型。相较于传统的前馈神经网络,RNN在处理序列数据时具有记忆功能,能够利用之前的信息来影响后续的预测。 RNN基本原理是通过引入循环结构来处理序列数据。它的每一个时间步都接收一个输入向量,同时还接收一个来自上一时间步的隐藏状态(hidden state)。隐藏状态可以理解为神经网络的记忆,它会持续地被更新和传递。 在RNN中,一个时间步的计算可以分为三个步骤:输入层到隐藏层的计算、隐藏层之间的传递、隐藏层到输出层的计算。 首先,输入向量和上一时间步的隐藏状态作为输入,通过一个权重矩阵进行线性变换,并经过激活函数得到隐藏层的输出。 其次,当前时间步的隐藏层输出会与一个新的隐藏状态相结合,用于传递到下一时间步。隐藏层之间的传递可以保证之前的信息在序列中传递。 最后,隐藏层的输出通过另一个权重矩阵进行线性变换,并再次经过激活函数得到最终的输出。 RNN的训练过程主要涉及到权重矩阵的更新。通常使用反向传播算法来计算损失函数对于参数的梯度,然后使用梯度下降算法来更新权重矩阵。 然而,传统的RNN在处理长序列时存在梯度消失梯度爆炸问题,即随着时间步的增加,梯度会呈指数级地增大或减小。为了解决这些问题,人们提出了改进的RNN模型,如LSTM(长短期记忆网络)和GRU(门控循环单元)。 LSTM和GRU通过引入门控机制来控制信息的流动,从而解决了长序列时的梯度问题。这些门控机制可以过滤掉不重要的信息,只保留对当前任务有用的信息。 总之,RNN是一种适用于处理序列数据的神经网络模型。它通过循环结构和隐藏状态的传递,能够利用之前的信息对后续的预测产生影响。然而,传统的RNN存在着梯度消失梯度爆炸问题,因此改进的RNN模型如LSTM和GRU被提出来以解决这些问题

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值