发布时间:2023-07-15 11:30
Batch Normalization可谓深度学习的一大利器,可以大大提高训练速度,并带有正则化的效果。其能加速训练的原因是因为消除了每层输出结果中的特征偏移,例如我们在训练一个猫的检测器,如果当前batch中的猫均为白色,那么可能会导致训练过程中某一层的权重分布倾向于“颜色为白色”。然而猫有各种颜色,如果网络只拘泥于白色,会大大降低了训练速度。因此,对Batch Normalization的一个直观印象就是消除上述的特征偏移。
前向传播很简单,即对该层每个神经元的所有输出(共batch_size个)求均值和方差,再进行均值归零、方差为1的操作。
反向传播最主要的还是利用了复合函数求导,法则如下:
若y = f(x), z = g(x, y), u = h(x, y, z),则du/dx = dh/dx + du/dy * dy/dx + du/dz * dz/dx
时间有限,手撕了一遍推导过程,如有不对之处,烦请告知!