BN(Batch Normalization)是一种常用的神经网络的正则化方法,它通过对每个mini-batch数据进行规范化操作,从而加速网络的训练速度,提高网络的泛化能力。BN的步骤包括以下几个部分:
-
计算每个特征的均值和方差:对于每个mini-batch数据中的每个特征,计算其均值和方差。
-
标准化特征:对于每个特征,使用其均值和方差进行标准化操作,将其重新缩放为均值为0,标准差为1的分布。
-
缩放和平移:引入缩放因子(γ)和偏移因子(β)参数,它们分别用于缩放和平移标准化后的特征,使其恢复到接近原始输入分布的状态。
-
输出:将缩放和平移后的特征作为BN层的输出,传递给下一层进行进一步的计算。
缩放因子(γ)和偏移因子(β)的作用是为了恢复数据的原始分布。由于规范化操作会使数据分布发生改变,数据的均值和方差被调整为0和1,但这可能会使数据分布偏离原始分布。为了尽可能地接近原始输入分布,引入缩放因子和偏移因子,通过调整规范化后的数据,使其尽量接近原始输入的均值和方差。
缩放因子(γ)用于缩放标准化后的特征,可以根据网络的需要来调整特征的尺度,使其适合接下来的计算。偏移因子(β)用于平移标准化后的特征,可以根据网络的需要来调整特征的位置,使其能够恢复到原始输入的分布。
通过缩放因子和偏移因子的调整,BN层可以使规范化后的数据尽量接近原始输入的分布,从而减少数据分布偏移对网络的影响,提高网络的训练速度和泛化能力。