批次标准化 batch normalization

在机器学习训练过程中,当不同维度的输入值数量级差别很大时,有可能导致不同方向上的坡度差距很大。标准化所做的事情是,让所有维度的输入归一化,使每个维度的数据均值为0,方差为1.

归一化方法:

①对于每个维度i,计算均值mi,方差σi\sigma_i

②计算归一化后的输入:a~ir=xirmiσi\widetilde{a}_i^r=\frac{x_i^r-m_i}{\sigma_i}

image-20220215162107949

对于深度学习,每通过一个layer产生的变量都需要进行一次标准化,计算量很大,因此标准化仅在每个batch进行,称作批量标准化。

批量标准化不仅仅是将

moving average

测试时,可能会出现数据集大小没有达到batch size 的情况,数据可能是一个一个输入的,测试时常采用moving average的方式进行计算,计算公式:

μ=pμ+(1p)μt\overline{\mu}=p\overline{\mu}+(1-p)\mu^t