RNN梯度消失问题

梯度消失

RNN循环神经网络:

长期依赖效应,RNN并不擅长处理。RNN中某一单元主要受它附近的单元的影响。

一个很深的神经网络进行反向传播时,梯度很难从后层nn传播回去。即它很难影响靠前层的权重。

RNN有同样的问题。后面层的输出误差很难影响前面层的计算。

基本的RNN模型会有很多局部影响,某一单元主要受它附近的单元的影响。

这意味着很难让一个神经网络能够意识到它看到的是单数名词还是复数名词,然后在序列后面,生成单复数依赖形式,正确使用was或were。并且一个英语句子中间部分可能很长,所以需要让RNN长时间记住一个单词是单数还是复数,前面的句子才能正确。

cat was full after ate food...

cats were full after ate food...

由cat变成cats时候,was也要变成were。

单数使用was,复数使用were,这是固定的规则,但是RNN不擅长处理长期依赖的问题。

梯度消失比梯度爆炸更需要去解决,梯度消失更难解决。

因为梯度爆炸更明显,梯度爆炸很容易发现(它使网络崩溃),如数值溢出。一般使用梯度修剪解决梯度爆炸问题。

说白了,梯度消失和爆炸是因为链式法则的多项连乘,多个大于1的数相乘或者多个小于1的数相乘就会出现梯度消失或爆炸的问题。RNN的这个缺点有处理方法:

1.换激活函数。使用relu激活函数而不是sigmoid。因为sigmoid激活函数的导数值太小了,最大导数值才是0.25,并且还是x在0点附近的情况下。反向传播的时候,多个小于1的数字相乘,梯度自然而然就趋于0了,对前面的nn层没有训练的效果。

2.梯度修剪:观察参数值,如果它大于阈值,就修改它;

3.使用LSTM替代RNN。LSTM独特的门结构可以解决梯度消失问题,LSTM可以长时间保留cell记忆,比RNN更擅长处理长序列问题。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值