LSTM如何解决梯度消失或爆炸的?

本文探讨了RNN中的梯度消失和爆炸问题,以及LSTM如何通过门控机制有效缓解这些问题。梯度消失源于深层网络权重更新的困难,而LSTM的遗忘门、输入门和输出门设计允许梯度以非0即1的形式传递,避免了梯度消失,实现了长期依赖的学习。
摘要由CSDN通过智能技术生成

from:https://zhuanlan.zhihu.com/p/44163528

哪些问题?

  • 梯度消失会导致我们的神经网络中前面层的网络权重无法得到更新,也就停止了学习。
  • 梯度爆炸会使得学习不稳定, 参数变化太大导致无法获取最优参数。
  • 在深度多层感知机网络中,梯度爆炸会导致网络不稳定,最好的结果是无法从训练数据中学习,最坏的结果是由于权重值为NaN而无法更新权重。
  • 在循环神经网络(RNN)中,梯度爆炸会导致网络不稳定,使得网络无法从训练数据中得到很好的学习,最好的结果是网络不能在长输入数据序列上学习。

3. 原因何在?

让我们以一个很简单的例子分析一下,这样便于理解。

 

 

如上图,是一个每层只有一个神经元的神经网络,且每一层的激活函数为sigmoid,则有:

y_i = \sigma(z_i) = \sigma(w_ix_i + b_i) ( \sigma 是sigmoid函数)。

我们根据反向传播算法有:

\frac{\delta C}{\delta b_1} = \frac{\delta C}{ \delta y_4} \frac{\delta y_4}{\delta z_4} \frac{\delta z_4}{\delta x_4} \frac{ \delta x_4}{\delta z_3} \frac{\delta z_3}{ \delta x_3} \frac{ \delta x_3}{\delta z_2} \frac{\delta z_2}{ \delta x_2} \frac{ \delta x_2}{\delta z_1} \frac{\delta z_1}{\delta b_1} \\ = \frac{ \delta C}{\delta y_4} (\sigma '(z_4) w_4)( \sigma'(z_3) w_3)( \sigma ' (z_2) w_2)( \sigma ' (z_1))

而sigmoid函数的导数公式为: S'(x ) = \frac{e^{-x}}{(1+ e^{-x})^2} = S(x)(1- S(x)) 它的图形曲线为:

 

 

由上可见,sigmoid函数的导数 \sigma'(x) 的最大值为 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值