1.关于理解RNN梯度消失
内容转载于:知乎-RNN梯度消失和爆炸的原因.
2.梯度消失,权值就无法更新了吗?
No.梯度消失不意味着没有梯度
我们先看任意时刻 t 对权重
w
x
w_x
wx求导公式:
请注意红圈这是一个求和符号,即使 t 是一个很大的数,但是第公式第t 项基本不受影响,仍然是一个比较大的数值。所以即使层数深,梯度也不小,网络参数仍然能够更新。
再联想RNN参数共享机制,即使层数再深网络权重仍然能够更新。
3.那为什么我们在训练是重要要避免梯度消失
这个问题题主目前仍然没有完全理解。但是题主有一个不太肯定的答案。
我们还是从公式说起:
注意红圈部分:
我们都知道不管层数多深,红圈中第一项的值一定是不受层数多少的影响,但是除第一项以外所有层都或多或少受到影响.
我们考虑比较极端的情况公式中除了第一项之外全为0。那意味着RNN网络中前面部分的输入没有对网络参数更新产生影响,之后最后一次输入才会影响网络参数更新。所以梯度消失不是不能更新参数,而是导致RNN前面的输入无法有效的影响网络参数。
所以我们在使用网络时要要避免梯度消失。
最近又看到一个很nice的解释
解释了RNN梯度消失以及LSTM为什么可以解决梯度消失
https://spaces.ac.cn/archives/7888