天岚量产机 2019-02-10
归一化一直是深度学习研究的一个活跃领域。归一化技术可以大大减少机器学习模型的训练时间。让我们看看归一化的一些好处。
从上面我们可以得出结论,正确归一化可能是让你的模型有效训练的关键因素,但这并不像听起来那么容易。让我先看一些问题。
为了回答这些问题,让我们逐一深入研究每种归一化技术的细节。
批归一化是一种归一化网络中确定大小的小批量激活的方法。对于每个特征,批归一化计算小批量中该特征的均值和方差。然后它减去均值并通过其小批量标准差来划分特征。
如果增加权重的大小能使网络表现得更好呢?
为了解决这个问题,我们可以分别添加γ和β作为scale和shift学习参数。这一切可以概括为:
ε是等式中的稳定常数
我们为什么不直接对激活进行归一化,而对层的权重进行归一化呢?权重归一化确实是这样。
权重归一化将权重(ω)重新参数化为:
它将权重向量与其方向分开,这与具有方差的批归一化具有类似的效果。唯一的区别在于变化而不是方向。
至于平均值,论文的作者巧妙地将仅平均批归一化和权重归一化结合起来,即使在small mini-batches中也能获得所需的输出。这意味着他们减去了minibatch 的平均值,但没有除以方差。最后,他们使用权重归一化而不是除以方差。
注:由于大数定律,与方差相比,均值的噪声较小(这使得均值优于方差)。
权重归一化与仅平均批归一化相结合,可在CIFAR-10上获得最佳结果。
层归一化对跨特征的输入进行归一化,而不是在批归一化中对跨batch维度的输入特征进行归一化。
mini-batch包含具有相同数量特征的多个示例。Mini-batches是矩阵(或张量),其中一个轴对应于批次,另一个轴(或多个轴)对应于特征尺寸。
i代表批次,j代表特征。xᵢ,ⱼ是输入数据的第i,第j个元素。
在RNN的情况下,层归一化比批归一化更好。
层归一化和实例归一化彼此非常相似,但它们之间的区别在于实例归一化在每个训练示例中的每个通道上归一化,而不是在训练示例中跨输入特征进行归一化。与批归一化不同,实例归一化层也在测试时应用(由于mini-batch的非依赖性)。
在这里,X ∈ℝT×C×W×H为输入包含批次Ť图像的张量。X ₜᵢⱼₖ表示第tijk个元素,其中k和j跨空间维度(图像的高度和宽度),i为特征的信道(如果输入是一个RGB颜色通道图像),t是batch中图像的索引。
该技术最初设计用于风格转移,实例归一化试图解决的问题是网络应该与原始图像的对比度无关。
顾名思义,组归一化针对每个训练样例对通道组进行标准化。我们可以说,Group Norm介于Instance Norm和Layer Norm之间。
当我们将所有通道放入一个组时,组归一化将成为层归一化。并且,当我们将每个通道放入不同的组时,它将成为实例归一化。
Sᵢ定义如下
这里,x是由层计算的特征,i是索引。在2D图像的情况下,i =(i N,i C,i H,i W)是以(N,C,H,W)顺序索引特征的4D向量,其中N是batch轴,C是通道轴,H和W是空间高度和宽度轴。G是组的数量,它是预定义的超参数。C / G是每组的通道数。⌊.⌋是floor操作,“ ⌊kC/(C / G)⌋=⌊iC/(C / G)⌋ ”表示索引i和k假设每组通道沿C轴按顺序存储,则它们位于同一组通道中。GN计算沿(H,W)轴和沿着一组C / G通道的μ和σ。
实例归一化的问题在于它完全删除了样式信息。虽然,这有其自身的优点(例如在风格转移中),但在对比度很重要的条件下(如天气分类,天空的亮度很重要)可能会出现问题。Batch-Instance归一化试图通过了解应该为每个通道(C)使用多少样式信息来处理这种情况。
Batch-Instance归一化只是批归一化和实例归一化之间的插值。
ρ的值在0和1之间
Batch-Instance归一化的有趣方面是通过梯度下降来学习平衡参数ρ。
从Batch-Instance归一化,我们可以得出结论,模型可以学习使用梯度下降自适应地使用不同的归一化方法。
答案是肯定的。
可切换归一化方法从批归一化、实例归一化和层归一化出发,采用不同均值和方差统计量的加权平均。
在图像分类和对象检测等任务中,切换归一化可能优于批归一化。
实例归一化在较早的层中更常使用,中间优选批归一化,最后更常使用层归一化。batch sizes越小,就越倾向于层归一化和实例归一化。