【BatchNorm 原理】
CNN 中,就是对每个卷积核的输入做归一化,或者说在 channel 之外的所有维度做归一化。BN 带来的好处有很多,这里简单列举几个:
(1)防止过拟合:单个样本的输出依赖于整个 mini-batch,防止对某个样本过拟合;
(2)加快收敛:梯度下降过程中,每一层的 和 都会不断变化,导致输出结果的分布在不断变化,后层网络就要不停地去适应这种分布变化。用 BN 后,可以使每一层输入的分布近似不变。
(3)防止梯度弥散:forward 过程中,逐渐往非线性函数的取值区间的上下限两端靠近,(以 Sigmoid 为例),此时后面层的梯度变得非常小,不利于训练。
网友评论