D2L: Numerical Stability & Initialization
D2L: Numerical Stability & Initialization
Concept and Principle
- 数值的稳定性
- 神经网络的梯度
求某一层的参数的梯度,直接就对损失函数关于该层参数求导,然后通过链式法则,化成d-t次的矩阵乘法 - 梯度爆炸与梯度消失
上述连续的乘法运算会带来两个问题:梯度爆炸与梯度消失
梯度爆炸带来的问题:梯度值超过计算机可表示大小、对学习率敏感
梯度消失带来的问题:梯度值变为0(超出计算可表示精度的小浮点数)、无论如何选择学习率训练都没有进展、神经网络无法做到更深
- 神经网络的梯度
- 模型初始化
- 如何让训练更加稳定?(不产生梯度消失和梯度爆炸)
要让梯度值保持在合理的范围内,一般有如下方法:- 将乘法变为加法(ResNet、LSTM)
- 归一化(梯度归一化、梯度裁剪)
- 选定合适的激活函数
- 合理的初始参数
- 让每层的方差是一个常数
- 合理的权重初始化
- 需要在一个合理值区间里随机初始参数
- 远离最优解的地方损失函数很复杂(梯度很大)
- 最优解附近比较平缓
- 需要在一个合理值区间里随机初始参数
- Xavier初始化
使得输入空间的方差和输出空间的方差尽量相等
- 如何让训练更加稳定?(不产生梯度消失和梯度爆炸)
Comment