实例规范化与批量规范化
Posted
技术标签:
【中文标题】实例规范化与批量规范化【英文标题】:Instance Normalisation vs Batch normalisation 【发布时间】:2018-01-09 20:27:56 【问题描述】:我知道批量归一化通过将激活转向单位高斯分布来帮助加快训练速度,从而解决梯度消失问题。 Batch norm 行为在训练(使用每个批次的均值/var)和测试时(使用训练阶段的最终运行均值/var)时应用不同。
另一方面,实例归一化充当本文https://arxiv.org/abs/1607.08022中提到的对比度归一化。作者提到输出的风格化图像不应该依赖于输入内容图像的对比度,因此实例归一化会有所帮助。
但是我们不应该也将实例归一化用于图像分类,其中类标签不应该依赖于输入图像的对比度。我还没有看到任何使用实例标准化代替批量标准化进行分类的论文。这是什么原因?此外,可以而且应该将批处理和实例规范化一起使用。我渴望对何时使用哪种规范化有一个直观的和理论上的理解。
【问题讨论】:
【参考方案1】:定义
让我们从两者的严格定义开始:
批量标准化
实例规范化
如您所见,除了联合归一化的输入张量数量外,它们在做同样的事情。批处理版本对所有图像跨批处理和空间位置进行归一化(在 CNN 情况下,在普通情况下 it's different);实例版本独立规范化批次的每个元素,即仅跨空间位置。
换句话说,批量范数计算一个均值和标准偏差(从而使整个层的分布呈高斯分布),实例范数计算它们中的T
,使每个单独的图像分布看起来是高斯分布,但不是联合分布。
一个简单的类比:在数据预处理步骤中,可以对每个图像的数据进行归一化或对整个数据集进行归一化。
学分:公式来自here。
哪种归一化更好?
答案取决于网络架构,特别是在规范化层之后做了什么。图像分类网络通常将特征图堆叠在一起并将它们连接到 FC 层,该层在批次之间共享权重(现代方法是使用 CONV 层而不是 FC,但该论点仍然适用) .
这是分布细微差别开始重要的地方:同一个神经元将接收来自所有图像的输入。如果整个批次的方差很大,来自小激活的梯度将被高激活完全抑制,这正是批次规范试图解决的问题。这就是为什么每个实例标准化很可能根本不会改善网络收敛性的原因。
另一方面,批量归一化为训练增加了额外的噪音,因为特定实例的结果取决于相邻实例。事实证明,这种噪声对网络可能是好是坏。这在 Tim Salimans 等人的 "Weight Normalization" 论文中得到了很好的解释,该论文将递归神经网络和强化学习 DQN 称为噪声敏感应用。我不完全确定,但我认为相同的噪声敏感性是程式化任务中的主要问题,实例规范试图与之抗争。检查权重规范是否在此特定任务中表现更好会很有趣。
可以将批处理和实例规范化结合起来吗?
虽然它是一个有效的神经网络,但它没有实际用途。批量归一化噪声要么有助于学习过程(在这种情况下更可取),要么会损害学习过程(在这种情况下最好忽略它)。在这两种情况下,为网络保留一种归一化可能会提高性能。
【讨论】:
您说“在 CNN 中有所不同”,但您在此处提供的公式是 CNN 的公式。在标准批次标准化中,元素仅在批次维度上进行标准化。在此处的 CNN 案例中,元素跨批次 和 空间维度进行归一化。您链接到的答案正确解释了它。 我想补充一点,最近发表的一篇论文提出了一个将不同归一化与可学习参数相结合的层。因此,要让网络“决定”,哪些归一化要考虑“通过可切换归一化的差分学习归一化” 另外,使用实例标准化,训练和推理的行为是相同的。在推理过程中,用于归一化的统计数据是根据输入图像计算的,而不是使用在训练集中计算的统计数据。 在论文 Batch-Instance Normalization (arxiv.org/pdf/1805.07925.pdf) 中,在域适应和样式迁移相关的问题中,对批处理和实例规范化的结合进行了探索。 也许很明显,也许不明显,对某些人来说肯定很有趣:对于T=1
,实例和批量标准化是相同的。【参考方案2】:
很好的问题,已经很好地回答了。补充一点:我发现来自 Kaiming He 的 Group Norm 论文的这个可视化很有帮助。
来源:link to article on Medium contrasting the Norms
【讨论】:
C = 频道; N = 批量大小; H,W = 通道中输出的一维表示 渠道规范呢?那是一回事吗? @Gulzar:可视化中的层范数不是“通道范数”吗? amaarora.github.io/2020/08/09/groupnorm.html【参考方案3】:我想为这个问题添加更多信息,因为这方面有一些最近的作品。你的直觉
使用实例归一化进行图像分类,其中类标签 不应该依赖于输入图像的对比度
部分正确。我会说,当图像在夜间或黎明时分拍摄时,光天化日之下的猪仍然是猪。但是,这并不意味着在整个网络中使用实例规范化会给您带来更好的结果。以下是一些原因:
-
颜色分布仍然起作用。如果它有很多红色,则它更可能是苹果而不是橙子。
在后面的层中,您无法再想象实例标准化充当对比度标准化。类的具体细节会出现在更深的层次中,通过实例对其进行归一化会极大地损害模型的性能。
IBN-Net 在他们的模型中同时使用批量标准化和实例标准化。他们只将实例归一化放在早期层中,并且在准确性和泛化能力上都取得了进步。他们有开源代码here。
【讨论】:
【参考方案4】:IN 提供视觉和外观不变性,BN 加速训练并保留判别特征。 浅层(CNN的起始层)首选IN,因此去除外观变化,深层(最后一个CNN层)首选BN以保持区分。
【讨论】:
如果您能为此陈述提供证据,那将非常有帮助。以上是关于实例规范化与批量规范化的主要内容,如果未能解决你的问题,请参考以下文章