据我所知,批量归一化通过将激活转向单位高斯分布来帮助加快训练速度,从而解决梯度消失问题。批量归一化行为在训练(使用每个批次的平均值/var)和测试时间(使用训练阶段的最终运行平均值/var)时应用不同。
另一方面,实例归一化充当本文提到的对比度归一化https://arxiv.org/abs/1607.08022 https://arxiv.org/abs/1607.08022。作者提到,输出风格化图像不应依赖于输入内容图像的对比度,因此实例归一化会有所帮助。
但是,我们是否也应该使用实例归一化进行图像分类,其中类标签不应依赖于输入图像的对比度。我还没有看到任何论文使用实例归一化代替批量归一化进行分类。这是什么原因呢?此外,批处理和实例规范化可以而且应该一起使用。我渴望对何时使用哪种标准化有直观和理论的理解。
定义
让我们从两者的严格定义开始:
Batch normalization
Instance normalization
正如您所注意到的,除了联合归一化的输入张量的数量之外,它们正在做相同的事情。批处理版本标准化所有图像跨批次和空间位置(在 CNN 案例中,在普通情况下这不一样 https://stackoverflow.com/q/38553927/712995);实例版本独立地标准化批次的每个元素,即跨空间位置 only.
换句话说,当批归一化计算一个均值和标准差(从而使整个层的分布呈高斯分布)时,实例归一化计算T
使每个单独的图像分布看起来呈高斯分布,但不是联合分布。
一个简单的类比:在数据预处理步骤中,可以按图像标准化数据或标准化整个数据集。
Credit: the formulas are from here https://github.com/aleju/papers/blob/master/neural-nets/Instance_Normalization_The_Missing_Ingredient_for_Fast_Stylization.md.
哪种标准化更好?
答案取决于网络架构,特别是所做的事情after标准化层。图像分类网络通常将特征图堆叠在一起并将它们连接到 FC 层,FC 层跨批次共享权重(现代的方法是使用 CONV 层而不是 FC,但该论点仍然适用)。
这就是分布细微差别开始变得重要的地方:同一个神经元将接收来自所有图像的输入。如果批次间的方差较高,则小激活的梯度将被高激活完全抑制,这正是批量归一化试图解决的问题。这就是为什么每个实例的规范化很可能根本无法改善网络收敛。
另一方面,批量归一化会给训练增加额外的噪声,因为特定实例的结果取决于邻居实例。事实证明,这种噪声对网络来说既可能是好事,也可能是坏事。这在“体重标准化” https://arxiv.org/pdf/1602.07868.pdfTim Salimans 等人的论文,将循环神经网络和强化学习 DQN 命名为噪声敏感应用。我不完全确定,但我认为同样的噪声敏感性是风格化任务中的主要问题,实例规范试图解决这个问题。检查权重标准对于这项特定任务是否表现更好会很有趣。
能否将批量标准化和实例标准化结合起来?
尽管它构成了一个有效的神经网络,但没有实际用途。批量归一化噪声要么有助于学习过程(在这种情况下最好),要么会损害它(在这种情况下最好忽略它)。在这两种情况下,让网络保留一种类型的标准化可能会提高性能。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)