Why:
Internal Covariate Shift:网络中间层在训练过程中,输入数据分布的改变。训练过程中参数会不断的更新,前面层训练参数的更新将导致后面层输入数据分布的变化。
因此,模型参数要不断去适应这种随迭代变化的输入分布,这回导致模型参数学习很慢。如果能使每层的输入分布固定(如均值为0,方差为1的高斯分布),那么模型参数的学习将会更加容易。
What:
将每层输入的分布做归一化的操作,叫做Batch Normolization(批归一化)。
输入——>计算mini-batch的均值和方差——>归一化——>线性变换——>输出
Results:
- 输入数据样本空间中的分布将更加均匀和固定,模型参数的学习也会变得更加容易,显著加速模型训练的收敛速度。
- 限制了在前层的参数的更新,减少了输入值改变的问题,使输出值更加稳定,因此有轻微的正则化的效果。
- 给隐藏层增加了噪音,有一定的正则化效果。
How:
卷积神经网络经过卷积后得到的是一系列的特征图,如果min-batch sizes为m,那么网络某一层输入数据可以表示为四维矩阵(m,f,p,q),m为min-batch sizes,f为特征图个数&