数值稳定性
数值稳定性的两个问题
例子:MLP
梯度爆炸
梯度爆炸的问题
更大的梯度的话,由梯度更新会不断变大,最终还是会梯度爆炸
梯度消失
模型初始化和激活函数
解决:让训练更加稳定
让每层的方差是一个常数
权重初始化
例子:MLP
Xavier初始
正态分布N,均匀分布U
由上可见,激活函数最好是f(x)=x,检查常用的激活函数,一般的如relu就是在0点附近就是0
QA
- 底部:靠数据输入近的那些层
- nan,inf的产生:nan一般是除以0了,inf就是数值太大了,解决:合理初始化权重,激活函数选取,学习率往小选。
- 梯度爆炸常是由于数值太大引起的,而不是激活函数的原因,而sigmoid激活函数容易引起梯度消失。
- 大数定律,一切最后都可以正态分布来解释,正态分布万能
- 强制使得每一层的输出特征值均值为0,方差为1,并不会损失网络的表达能力,因为数据都是一个区间的值,放大与缩小都可以的。
- 权重更新都是在每个iteration进行的,一个epoch完成都更新了好多次了