【动手学深度学习】(八)数值稳定和模型初始化

文章目录

  • 一、理论知识

一、理论知识

1.神经网络的梯度
考虑如下有d层的神经网络
在这里插入图片描述
计算损失l关于参数Wt的梯度(链式法则)
【动手学深度学习】(八)数值稳定和模型初始化_第1张图片
2.数值稳定性常见的两个问题
【动手学深度学习】(八)数值稳定和模型初始化_第2张图片
3.梯度爆炸
【动手学深度学习】(八)数值稳定和模型初始化_第3张图片
4.梯度爆炸的问题

  • 值超出阈值
    • 对于16位浮点数尤为严重
  • 对学习率敏感
    • 如果学习率太大-> 大参数值 -> 更大的梯度
    • 如果学习率太小->训练无进展
    • 我们可能需要在训练过程中不断调整学习率
      5.梯度消失
  • 使用sigmoid作为激活函数
    【动手学深度学习】(八)数值稳定和模型初始化_第4张图片
    6.梯度消失的问题
  • 梯度值变为0
    • 对16位浮点数尤为严重
  • 训练没有进展
    • 不管如何选择学习率
  • 对于底部层尤为严重
    • 仅仅顶部层训练的较好
    • 无法让神经网络更深
      7.让训练更加稳定
  • 目标:让梯度值在合理的范围内,ex[1e-6,1e3]
  • 将乘法变加法
    • ResNet,LSTM
  • 归一化
    • 梯度归一化,梯度裁剪
  • 合理的权重初始和激活函数
    8.让每层的方差是一个常数
    【动手学深度学习】(八)数值稳定和模型初始化_第5张图片
    9.权重初始化
  • 在合理值区间里随机初始化参数
  • 训练开始的时候更容易有数值不稳定
    • 远离最优解的地方损失函数表面可能很复杂
    • 最优解附近表面会比较平
      使用在这里插入图片描述来初始化可能对小网络没问题,但不能保证深度神经网络

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