本文共 507 字,大约阅读时间需要 1 分钟。
常用的激活函数(例如ReLu或者Sigmoid)输出和导数都是大于等于0的。如果神经网络输入样本被预处理在0-1之间,如果没有batchnorm,那么经过激活函数后,每一层结构的输入和输出都大于等于零,那么该层权重的各维的梯度也一定是同符号的,就导致梯度下降的方向只能在第一或者第三象限。
因此,如果局部极小相较初始值位于第二或者第四象限,梯度下降只能以ZigZag的方式靠近极小值,收敛速度就会非常的慢。如下图: 不过因为有了batchnorm之后,或者用LeakyReLu这种激活函数,无论样本预处理为均值为0还是0-1之间,顶多影响第一层的收敛速度,所以差距不大。样本的方差更无所谓,毕竟只是相当于在第一层权重上乘以一个系数。转载地址:http://oloen.baihongyu.com/