RNN学习不到长距离信息& LSTM学习到长距离信息

RNN推导参考:http://www.wildml.com/2015/10/recurrent-neural-networks-tutorial-part-3-backpropagation-through-time-and-vanishing-gradients/


说明:对于RNN为什么会学不到长距离信息,可以说是RNN会遇到梯度消失的问题,梯度消失的问题, 本质上还是使用BP算法导致的,也是激活函数的导数小于1导致的。正如上述所讲的,使用RNN时,在每次输入进行优化计算梯度的时候,会侧重于考虑最近的几次输入,以此让损失减小,而比较远的输入,其实对于计算当前输入的梯度已经不起作用了 RNN可以等价于去调整参数,拟合最近的一些序列,比如说输入的是t时刻,那么可能当前的参数就调整为拟合t到t-p时刻的序列,并且p会比较小 也即RNN的学习不会兼顾到很久以前的输入, 就学习不到长距离信息

说明:
1、 对于RNN这种递归模型的训练而言,其样本应该是一句话。而不是说是将所有的句子拼起来,形成一个长文本。
2、RNN对每次输入要计算一次梯度,需要用到链式法则,如果输入的序列非常长,会非常耗时。


说明:如果一个序列太长,那么每次输入的话,计算在该输入下的梯度的计算量非常大。所以,有时候就使用截断的BPTT,比如说20个词,使用的step越长,计算量就越大。
3、 对于RNN的一次权重迭代过程的描述,比如说文本的一句话。首先,对于每个词都输入网络,计算在该网络参数下计算得到的梯度。然后,等最后一个词输入完毕后,再将梯度进行平均,最后进行权重的更新。 只有在最后一个词进去之后,再进行权重的更新。而不是说每输入一个词,就进行一次权值的更新
4、 RNN梯度消失的原因,还是跟激活函数有关系,因为激活函数的导数小于1

解决方案:使用RELU激活函数来替代sigmoid函数。
5、 搞清楚RNN的输入是一个样本对应于一个序列。
6、LSTM 这个模型本身就不存在梯度消失的问题,也即它是可以对任意长度的序列进行建模的,对任意长的序列进行建模是LSTM的默认行为,跟CNN对图片建模其实是一样的,只是LSTM建模的对象是序列,序列是LSTM的一个样本
可以参考一下 http://blog.csdn.net/a635661820/article/details/45390671讲述的是LSTM的设计理念,本身就是来克服梯度消失问题的。也即当输入为T时刻时, 计算梯度也即优化的目标是在对t=0及到t =T的序列建模。而不是像RNN一样,在输入为T时刻时,只能对t=t-p到t=T的序列进行建模,因为t=0到t=t-p的输入已经对当前的梯度计算不起作用了。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值