我将从对这两者之间的字面区别的理解开始。首先,假设我们有一个层的输入张量,并且该张量具有维度, 在哪里是批次的大小,并且是对应于批次中单个实例的输入的维度。
- Batch norm 跨批次维度进行标准化
- 层范数进行标准化
这种选择的后果有什么不同?
我将从对这两者之间的字面区别的理解开始。首先,假设我们有一个层的输入张量,并且该张量具有维度, 在哪里是批次的大小,并且是对应于批次中单个实例的输入的维度。
这种选择的后果有什么不同?
我是这样理解的。
批量归一化用于通过使用整个小批量的统计数据对每个隐藏层的输入进行归一化来消除内部协变量偏移,该统计对每个单独的样本进行平均,因此每一层的输入总是在相同的范围内。这可以从BN方程中看出:
在哪里和是从数据中学习的仿射参数;和是平均值和标准偏差,针对每个特征通道独立计算批量大小和空间维度。首先,我们根据批量统计以 0 均值和 1 标准差对每个通道进行归一化。然后我们缩放和移动每个通道和.
如果您想从不同的视角和照明条件对图像上的平均对象进行分类,这很好。它的定义与 BN 类似:
但现在和为每个单独的样本在所有通道上计算。这是差异的说明:
因此,层归一化平均跨通道的输入(对于 2d 输入),它保留了单个样本的统计信息。在某些情况下,我们希望对单个样本而不是整个批次的权重规范进行惩罚,就像在 WGAN-GP 中所做的那样。
在图像的风格转换方面,保留样本的单个颜色统计数据也很重要。因此,StyleGAN 使用自适应实例归一化,它是原始实例归一化的扩展,其中每个通道都是单独归一化的。
此外,BN 有几个问题:批量大小必须足够大以捕获整体统计信息,如果您正在处理大图像,这有时是不可能的,因为模型不适合内存。批次的概念并不总是存在,或者它可能会不时改变。
我强烈建议您阅读原始BN 论文以及:
Adaptive instance normalization
Group Normalization