Lesson-14
数值稳定性
当我们计算损失函数的梯度的时候,会遇到下面这种情况:
\[\frac{\partial l }{\partial W^t} = \frac{\partial l }{\partial h^d}\frac{\partial h^d}{\partial h^{d-1}}...\frac{\partial h^t}{\partial W^t}\]
中间有很多梯度的连续相乘积,会遇到下面两种情况: 梯度爆炸会带来的问题:
- 值超出值域,这对于16位浮点数尤为严重
- 对学习率很敏感,需要在训练过程中不断调整学习率
梯度消失带来的问题:
- 梯度值变为0,训练没有进展
- 对于底部层更加严重
让训练更加稳定
- 目标:让梯度在合理的范围内
方法如下:
- 将乘法变成加法:ResNet、LSTM...
- 归一化,梯度剪裁
- 合理的权重初始化和激活函数
我们希望做到每层的输出和梯度都保持均值和方差一致 权重初始化:要在合适的区间内随机初始化参数
本页面最近更新:,更新历史
发现错误?想一起完善? 在 GitHub 上编辑此页!
本页面贡献者:OI-wiki
本页面的全部内容在 协议之条款下提供,附加条款亦可能应用