LN

我们知道 BN 是在针对特征的每个维度求当前 batch 的均值和方差,此时便会出现两个问题:

  • 当 batch 较小时不具备统计意义,而加大的 batch 又收到硬件的影响;
  • BN 适用于 DNN、CNN 之类固定深度的神经网络,而对于 RNN 这类 sequence 长度不一致的神经网络来说,会出现 sequence 长度不同的情况,如下图所示:
    • 解决的方法很简单,直接竖着来,针对样本进行规范化,如下图所示,

与Layer Norm,Instance Norm区别 - 图1与Layer Norm,Instance Norm区别 - 图2
值得注意的是:

  • LN不在会有 running_mean 和 running_var,因为不再需要通过统计信息获取均值和方差
  • 与Layer Norm,Instance Norm区别 - 图3 也由共享参数变为逐神经元的参数(RNN 有 n 个神经元,则有 2n 个参数)。

    IN

    在图像生成任务中,以风格迁移为例(如下图所示),不同的图像具有不同的模式,如果我们不能将 batch 的数据混为一谈去计算均值和方差。
    于是学者提出了逐 Instance(Channel) 计算均值和方差(图像中每个 Channel 数据一般都非常多,所以适合计算统计量)。
    IN 的计算方式是针对每一个通道去计算均值和方差,如下图红框:
    与Layer Norm,Instance Norm区别 - 图4