CNN中本地响应规范化的重要性


41

我发现Imagenet和其他大型CNN利用了本地响应规范化层。但是,我找不到关于它们的太多信息。它们有多重要,何时应使用?

来自http://caffe.berkeleyvision.org/tutorial/layers.html#data-layers

“局部响应归一化层通过对局部输入区域进行归一化来执行一种“横向抑制”。在ACROSS_CHANNELS模式下,局部区域跨越附近的通道延伸,但是没有空间范围(即,它们的形状为local_size x 1 x 1)在WITHIN_CHANNEL模式下,局部区域在空间上延伸,但位于单独的通道中(即,它们的形状为1 x local_size x local_size)每个输入值除以(1+(α/ n)∑ix2i)β,其中n是每个局部区域的大小,总和取自以该值为中心的区域(必要时添加零填充)。”

编辑:

这些种类的层似乎影响最小,不再使用。基本上,它们的作用已被其他正则化技术(例如,辍学和批处理归一化),更好的初始化和训练方法所取代。请参阅下面的我的答案以获取更多详细信息。

Answers:


20

这些种类的层似乎影响最小,不再使用。基本上,它们的作用已被其他正则化技术(例如,辍学和批处理归一化),更好的初始化和训练方法所取代。这就是在ConvNets上的斯坦福大学课程CS321n的讲义中所写的内容:

归一化层

已经提出了许多类型的归一化层用于ConvNet体系结构,有时其目的是实现在生物大脑中观察到的抑制方案。但是,这些层最近已不受欢迎,因为在实践中,它们的贡献已显示为最小(如果有的话)。有关各种类型的规范化,请参见Alex Krizhevsky的cuda-convnet库API中的讨论。


20

确实,似乎没有一个地方有很好的解释。最好的方法是从那里阅读文章:

AlexNet的原始文章在第3.3节中做了一些解释:

  • Krizhevsky,Sutskever,和韩丁,ImageNet分类与深卷积神经网络,NIPS 2012 PDF

提出了确切的方法(但此处没有太多额外信息):

  • 凯文·贾勒特,科瑞Kavukcuoglu,Marc'Aurelio Ranzato和亚·莱卡,什么是最好的多级架构的物体识别?ICCV 2009年PDF

它受到了计算神经科学的启发:

  • S. Lyu和E. Simoncelli。使用除法归一化的非线性图像表示。2008年CVPR PDF格式。本文深入研究了数学,并符合seanv507的答案。
  • [24] N. Pinto,DD Cox和JJ DiCarlo。为什么现实世界中的视觉物体识别很难?PLoS计算生物学,2008年。

15

这是我建议的答案,尽管我并不声称自己学识渊博。在线性模型上执行梯度下降时,误差曲面是二次曲面,其曲率由确定,其中是您的输入。现在,理想的误差下降曲面或梯度下降曲面在所有方向上都具有相同的曲率(否则步长在某些方向上太小而在其他方向上太大)。通过将输入重新缩放为均值零来对输入进行归一化,方差1既有效又快速:现在,每个维度上的方向都具有相同的曲率,从而将曲率限制在其他方向上。XXTX

最佳解决方案是将每个神经元的输入球化/变白,但是这在计算上过于昂贵。基于相邻像素(或通道)之间高度相关的假设,LCN可以被认为是近似的白化。因此,我认为这样做的好处是,误差表面对于SGD更为有益...单个学习率效果很好跨(每个神经元的)输入维度


2
批量归一化:通过减少内部协变量偏移来加速深层网络训练Sergey Ioffe,Christian Szegedy,arxiv.org / abs / 1502.03167进行了神经网络输入的(精心设计)重新缩放,并能够通过使用较大的学习率来实现实质性的加速。
seanv507 '16

您可以使用答案文本下方的编辑按钮将此信息编辑为答案。
恢复莫妮卡

10

有了这个答案,我想总结一下其他作者的贡献,并为那些只想了解它是什么以及它如何工作的人提供LRN(或对比归一化)技术的单一说明。

动机: ' 为神经元输出之中大的活动这类响应归一化(LRN)器具的由类型启发侧抑制的形式,实际的神经元中发现,创建竞争使用不同的内核来计算。AlexNet 3.3

换句话说,LRN可以减少对附近区域统一较大的响应,并使附近区域内的较大激活更为明显,即在激活图中创建更高的对比度。prateekvjoshi.com指出,对于无限制的激活功能(如RELU)特别有用。

原始公式:对于与单个“像素”输出相对应的每个特定位置(x,y)和核i,我们应用“过滤器”,该过滤器合并了有关应用于相同位置的其他n个核的输出的信息。在激活功能之前应用此正则化。实际上,这种正则化依赖于内核的顺序,据我所知,这只是一个不幸的巧合。

LRN

在实践中(请参阅Caffe),可以使用2种方法:

  1. WITHIN_CHANNEL。对单个通道的本地邻域进行归一化(对应于单个卷积滤波器)。换句话说,根据同一神经元对附近像素的输出值划分单个像素的单个通道的响应。
  2. ACROSS_CHANNELS。对于单个像素,根据同一像素所有通道的值归一化每个通道的值

实际用法 LRN在诸如LeNet-5之类的早期迷恋者中更经常使用。Caffe中GoogLeNet(Inception)的当前实现通常将LRN与池化技术结合使用,但是这样做似乎只是为了拥有它。原始的Inception / GoogLeNet(here)或以下任何版本均未以任何方式提及LRN。另外,Inception的TensorFlow实现(由原始作者团队提供和更新)网络虽然可用,但并未使用LRN。

结论只要超参数值合理,将LRN与池化层一起使用不会损害网络性能。尽管如此,我不知道最近在神经网络中应用LRN /对比度归一化的任何理由。


我还要补充一点,根据Aurélien的Géron第374页,LRN是一种“竞争性归一化” 使用Scikit-Learn和TensorFlow进行动手机器学习:构建智能系统的概念,工具和技术。“ O'Reilly Media,Inc。”,2017年。(我提到,因为只有韩丁称之为“竞争常态化”的演讲卷积网对物体识别他coursera课程。
奥伦米尔曼


0

对于每个通道以像素为单位完成本地响应归一化(LRN):i

xi=xi(k+(αjxj2))β

其中中的是常数。请注意,如果设置,,,则会得到L2归一化。k,α,βRκ=0α=1β=12

但是,有一种称为“批处理规范化”的新技术(请参阅论文),其工作原理非常相似,建议不再使用LRN。批处理规范化也可以逐像素进行:

y=xμσ2+ϵγ+β

其中是均值,是方差,是一个小常数,是可学习的参数,它们可以使网络消除归一化。μσ2ε>0γ,βR

因此答案是:本地响应规范化不再重要,因为我们有一些更好的方法代替了LRN:批处理规范化。

也可以看看


我认为这是不正确的。LRN应用于内核的输出,而不是输入(尽管Alexnet确实使用输入规范化,但这是单独的)。
Shital Shah
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.