Layer Normalization(层归一化)和 Batch Normalization(批归一化)是两种常用的归一化技术,用于加速神经网络的训练和提高模型的稳定性。它们的主要区别在于归一化的维度和使用场景。
Batch Normalization(批归一化)
Batch Normalization的归一化是在每个mini-batch内的每个特征维度上进行的。具体来说,对于输入形状为 ([b, c, h, w]) 的数据,Batch Normalization会对每个通道 ( c ) 独立进行归一化。
训练阶段: 在训练阶段,Batch Normalization计算每个mini-batch的均值和方差,并使用这些统计量进行归一化。
推理阶段: 在推理阶段,Batch Normalization使用整个训练集计算得到的全局均值和方差进行归一化,而不是使用当前mini-batch的统计量。
Layer Normalization(层归一化)
Layer Normalization的归一化是在每个样本的所有特征上进行的。对于形状为 ([b, c, h, w]) 的输入数据,Layer Normalization会对每个样本的所有通道、所有高度和宽度上的特征进行归一化。
训练阶段: 在训练阶段,Layer Normalization计算每个样本的均值和方差,并使用这些统计量进行归一化。
推理阶段: 在推理阶段,Layer Normalization与训练阶段一样,使用每个样本的均值和方差进行归一化。
总结
计算方式
Batch Normalization:
归一化是在每个mini-batch的每个通道上进行的。
计算的是每个通道在整个mini-batch上的均值和方差。
公式中涉及到每个通道的均值 (\mu_c) 和方差 (\sigma_c^2)。
Layer Normalization:
归一化是在每个样本的所有特征(即所有通道、所有高度和宽度)上进行的。
计算的是每个样本在所有特征上的均值和方差。
公式中涉及到每个样本的均值 (\mu_i) 和方差 (\sigma_i^2)。
训练与推理阶段
训练和推理阶段的区别:
Batch Normalization:训练阶段使用mini-batch的统计量,推理阶段使用全局统计量。
Layer Normalization:训练阶段和推理阶段都使用每个样本的统计量。