跟李沐学AI:数值稳定性、模型初始化和激活

avatar
作者
猴君
阅读量:0

数值稳定性的两个常见问题

1. 梯度爆炸

梯度爆炸的问题:

值超出值域, 对于16位浮点数尤为严重

对学习率敏感:如果学习率太大->大参数值->更大的梯度,如果学习率太小->训练无进展

2. 梯度消失

梯度消失的问题:

梯度值变成0,对16位浮点数尤为严重

不管如何选择,训练没有进展

对于底部层尤为严重,仅仅顶部层训练的效果好,无法让神经网络更深

数值稳定性总结

当数值过大或过小时会导致数值问题

问题常发生在深度模型中,因为其会对n个数值累乘

让训练更加稳定

目标:让梯度值在合理的范围内,如[1e-6,1e3]

方法:将乘法变为加法、归一化、梯度裁剪、合理的权重初始化和选择合适的激活函数

让每层的方差是一个常数

将每层的输出和梯度都看作随机变量,让他们的均值和方差都保持一致。

权重初始化

在合理值区间内随机初始参数。训练开始时更容易发生数值不稳定,如远离最优解的地方损失函数表面可能很复杂,最优解附近损失函数表面较为平缓。使用正态分布N(0, 0.01)来初始权重对于较小的神经网络没有问题,但不能保证深度神经网络的稳定性。

默认初始化

如果我们不指定初始化方法, 框架将使用默认的随机初始化方法,对于中等难度的问题,这种方法通常很有效。

Xavier初始化

Xavier初始化也是一种常用的初始化方法。Xavier初始化从均值为0,方差为2 / n_{in} + n_{out} 的高斯分布中采样权重。我们也可以将其改为选择从均匀分布中抽取权重,均匀分布服从U(-\sqrt{\frac{6}{n_{in} + n_{out}}},\sqrt{\frac{6}{n_{in} + n_{out}}}) 

目录

数值稳定性的两个常见问题

1. 梯度爆炸

2. 梯度消失

数值稳定性总结

让训练更加稳定

让每层的方差是一个常数

权重初始化

默认初始化

Xavier初始化

初始化总结


合理的权重初始值和激活函数可以提升数值稳定性

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!