数值稳定性
随着网络的层数的增加,数值可能变得不稳定
数值稳定性常见的两个问题:
1、梯度消失
2、梯度爆炸
梯度爆炸例子:MLP(多层感知机)
对角矩阵一个主对角线之外的元素皆为0的矩阵
是
假设我们使用relu函数作为激活函数,所以就是一些1和0的对角矩阵
梯度爆炸的问题就是:超出值域变infinity
学习率的调整问题:
梯度消失
梯度消失的问题:梯度值变成0,对16位浮点数尤为严重
训练更稳定方法
训练更稳定的方法就使梯度值在合理范围之内,可使用的方法有合理的权重初始化和激活函数
常用权重初始化的方法
假设权重是一些独立同分布,那么每一个元素的均值就是0,方差就是。那么,这当前层的的输入hi^t-1,就也是独立于我当前层的权重。假设没有激活函数,那,
做了这些假设之后,两个独立同分布可以写开,我们的计算就变成了下面这样:
对于正向方差,
对于反向均值和方差, 跟正向情况类似,
均值都是为0的,那么想要让两个方差一样,就需要满足两个条件,但是这两个条件很难同时满足,可以做一点权衡,取折中。-------Xavier初始