20. 数值稳定性--梯度爆炸和梯度消失

1. 神经网络的梯度

20. 数值稳定性--梯度爆炸和梯度消失_第1张图片
在这里,t表示层,y表示要优化的目标函数。

2. 数值稳定性的常见两个问题

3. 例子:MLP

20. 数值稳定性--梯度爆炸和梯度消失_第2张图片

对角矩阵只在对角线上含有非0元素,其它位置都为0。我门用d i a g ( v ) diag(v)diag(v)表示一个对角元素由向量v 组成的对角方阵。

对第二行公式解释如下,并且对于为什么得到对角矩阵,可以举例 [5x,4y,3z] 对 [x,y,z]求导:

ps:我认为Wt要不要转置,是取决于如何排布ht以及Wt的,理解意思即可。

对于第三行公式,是因为在上一张图片中,要进行d-t次矩阵乘法。

4. 会发生梯度爆炸的情况

20. 数值稳定性--梯度爆炸和梯度消失_第3张图片
因为使用ReLU函数,那么对角矩阵的对角线上的元素只有0和1,和后面的(Wi)T相乘,那么和1相乘得到的列会保留下来,和0相乘的则会没有,所以一些元素来自于没有被变成0的列的乘法。具体解释如下:


假设连乘的w元素都大于1,并且层数比较大,就会得到非常大的值,导致梯度爆炸。

或者说,即使有些列为0,但是只要是大于1的数字累乘,数字就会变得很大。

5. 梯度爆炸的问题

20. 数值稳定性--梯度爆炸和梯度消失_第4张图片

如果学习率太大,因为每一步走得远,对权重的更新比较大,会在局部最低点附近振荡,因此权重不会下降很多,而损失函数关于Wt的梯度就是权重的连乘,那么梯度会越来越大。

那因为学习率太小,训练无进展。

并且,在训练过程中,我们需要不断调整学习率,那么我们能调的范围比较小,比较微妙,不好训练。

6. 梯度消失

20. 数值稳定性--梯度爆炸和梯度消失_第5张图片

对于这个激活函数而言,当输入大一点的时候,导数就会变成0,那么就会产生梯度消失。如下:

20. 数值稳定性--梯度爆炸和梯度消失_第6张图片

如果输入的数稍微大一点,对角矩阵上的元素就会变得很小,和后面的(Wi)T相乘会使结果变小,因此会是d-t个小数值的乘积。

7. 梯度消失的问题

20. 数值稳定性--梯度爆炸和梯度消失_第7张图片

8. 总结

  • 当数值过大或者过小时都会导致数值问题
  • 常发生在深度模型中,因为其会对n个数累乘

你可能感兴趣的:(深度学习,深度学习,人工智能)