D2L: Numerical Stability & Initialization

Concept and Principle

  • 数值的稳定性
    • 神经网络的梯度
      求某一层的参数的梯度,直接就对损失函数关于该层参数求导,然后通过链式法则,化成d-t次的矩阵乘法
    • 梯度爆炸与梯度消失
      上述连续的乘法运算会带来两个问题:梯度爆炸与梯度消失

      梯度爆炸带来的问题:梯度值超过计算机可表示大小、对学习率敏感
      梯度消失带来的问题:梯度值变为0(超出计算可表示精度的小浮点数)、无论如何选择学习率训练都没有进展、神经网络无法做到更深
  • 模型初始化
    • 如何让训练更加稳定?(不产生梯度消失和梯度爆炸)
      要让梯度值保持在合理的范围内,一般有如下方法:
      • 将乘法变为加法(ResNet、LSTM)
      • 归一化(梯度归一化、梯度裁剪)
      • 选定合适的激活函数
      • 合理的初始参数
    • 让每层的方差是一个常数
    • 合理的权重初始化
      • 需要在一个合理值区间里随机初始参数
        • 远离最优解的地方损失函数很复杂(梯度很大)
        • 最优解附近比较平缓
    • Xavier初始化
      使得输入空间的方差和输出空间的方差尽量相等