lstm之所以可以解决rnn梯度消失的问题的原因

RNN

在这里插入图片描述

RNN:产生梯度消失或者爆炸的原因:

跟随时间序列连续相乘,当w>1时,造成w变化很小,但时间序列后面的y值会变化较大,这样也就是偏导数较大,也就是梯度爆炸了。
当w<1,时,即使w从0.01变化到0.99,时间序列后面的y也不会有多大变化,也就是偏导数很小,也就是梯度消失了。
实质就是因为rnn增加了时间序列,导致连乘更多。

在这里插入图片描述

LSTM:

下图所示,从左往右是时间序列,从下往上是lstm的堆叠,从左往右的时间序列相当于cnn中在输入x,x有多个特征,就有多少个神经元,在rnn表现为有多少次循环,也就是一个样本有多少次时间点,深度叠加cnn和rnn是一致的,后面神经元与前面神经元连接即可,所以在rnn实际堆叠的形状如下图手绘。一般来说是这种堆叠方式,其他的堆叠方式暂时没看到,就是竖着堆叠。在这里插入图片描述
如下图所示:
拿处理句子来说,xt代表一个单词,一个单词外加上一时间序列处理后的ht-1和ct-1值分出四个向量,z,zo,zi,zf分别控制lstm的四个门,xt当经过lstm的第一层输出xt1,xt1外加上一次分解的ht1-1和ct1-1进行分解为四个向量,执行相同操作,知道经过所有竖着叠加的lstm神经元,最后输出一个yt值,当下一个单词xt+1到来时,执行上述步骤得到yt+1值
在这里插入图片描述

LSTM可以解决RNN梯度消失问题的原因

在这里插入图片描述

在这里插入图片描述
rnn S 与St-1:

在这里插入图片描述
lstm S与St-1:

在这里插入图片描述
rnn在偏导数连乘由于tan’在0-1,之间,所以梯度消失,而lstm虽然偏导连乘也在在0~1之间,但是在实际参数更新中,可以通过控制bf较大,使得偏导值接近于1;在这种情况下,即使通过很多次连乘的操作,梯度也不会消失,即总可以通过选择合适的参数,在不发生梯度爆炸的情况下,找到合理的梯度方向来更新参数。本质原因时因为更新memory系数的构成方式不同,一个是只有W,一个是W+b。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值