文章目录
- 一、理论知识
一、理论知识
1.神经网络的梯度
 考虑如下有d层的神经网络
 
 计算损失l关于参数Wt的梯度(链式法则)
 
 2.数值稳定性常见的两个问题
 
 3.梯度爆炸
 
 4.梯度爆炸的问题
- 值超出阈值 - 对于16位浮点数尤为严重
 
- 对学习率敏感 - 如果学习率太大-> 大参数值 -> 更大的梯度
- 如果学习率太小->训练无进展
- 我们可能需要在训练过程中不断调整学习率
 5.梯度消失
 
- 使用sigmoid作为激活函数
  
 6.梯度消失的问题
- 梯度值变为0 - 对16位浮点数尤为严重
 
- 训练没有进展 - 不管如何选择学习率
 
- 对于底部层尤为严重 - 仅仅顶部层训练的较好
- 无法让神经网络更深
 7.让训练更加稳定
 
- 目标:让梯度值在合理的范围内,ex[1e-6,1e3]
- 将乘法变加法 - ResNet,LSTM
 
- 归一化 - 梯度归一化,梯度裁剪
 
- 合理的权重初始和激活函数
 8.让每层的方差是一个常数
  
 9.权重初始化
- 在合理值区间里随机初始化参数
- 训练开始的时候更容易有数值不稳定 - 远离最优解的地方损失函数表面可能很复杂
- 最优解附近表面会比较平
 使用 来初始化可能对小网络没问题,但不能保证深度神经网络 来初始化可能对小网络没问题,但不能保证深度神经网络