LSTM与梯度消失

编程入门 行业动态 更新时间:2024-10-19 18:22:44

LSTM与<a href=https://www.elefans.com/category/jswz/34/1767879.html style=梯度消失"/>

LSTM与梯度消失

1. 标准RNN中处理序列数据的方法是将上一个state的信息传到下一个state中,表示成数学公式为st=f(W*(st-1,xt)+b),其中f为激活函数。在反向传播中,根据求导的链式法则,这种形式求得的梯度为一个矩阵W与激活函数导数的乘积。如果进行n次反向传播,梯度变化将会变为(W*f”)的n次方累乘。

(1)如果乘积大于1,则梯度会随着反向传播层数n的增加而成指数增长,导致梯度爆炸;

(2)如果乘积小于1,经过多层传播后,小于1的数累乘后结果趋近于0,导致梯度消失。

2. 现在的lstm主要用来缓解梯度消失问题,其中,St主要由两部分组成,表示过去信息的St-1和表示现在信息St(~),数学公式为St = ft*St-1+it*f(St-1)

其中第二input部分与标准RNN类似,在反向传播中可能会逐渐消失,而第一forget部分经过多次传播之后,会出现ft*ft-1*ft-2……这样的累乘,ft的大小是可选的,可以有效减轻梯度消失。

3. 梯度爆炸一般靠裁剪后的优化算法即可解决,比如gradient clipping(如果梯度的范数大于某个给定值,将梯度同比收缩)。

4. 关于lstm中的forget gate的理解:

(1)原始的lstm是没有forget gate的,或者说相当于forget gate恒为1,所以不存在梯度消失问题

(2)现在的lstm被引入了forget gate,但是lstm的一个初始化技巧就是将forget gate的bias置为正数(例如1或5,这点可以查看各大框架代码),这样模型刚开始训练时forget gate的值接近于1,不回发生梯度消失

(3)随着训练过程的进行,forget gate就不再恒为1了。不过对于一个已经训练好的模型,需要选择性地记住或者遗忘某些信息,所以forget gate要么是1,要么是0,很少有类似0.5这样的中间值,相当于一个二元的开关。例如在某个序列里,forget gate全为1,那么梯度不会消失;否则,若某一个forget gate是0,这时候虽然会导致梯度消失,但是体现了模型的选择性,刻意遗忘某些信息。

综上,lstm可以缓解梯度消失问题,但不能彻底避免。

 

 

 

 

 

 

 

更多推荐

LSTM与梯度消失

本文发布于:2024-03-13 02:32:35,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1732985.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:梯度   LSTM

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!