CNN中局部响应归一化的重要性

机器算法验证 深度学习 卷积 卷积神经网络
2022-02-12 10:51:15

我发现 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是每个局部区域的大小,总和取自以该值为中心的区域(必要时添加零填充)。

编辑:

似乎这些类型的层影响很小,不再使用。基本上,它们的作用已经被其他正则化技术(例如 dropout 和批量标准化)、更好的初始化和训练方法所取代。有关更多详细信息,请参阅下面的答案。

4个回答

似乎这些类型的层影响很小,不再使用。基本上,它们的作用已经被其他正则化技术(例如 dropout 和批量标准化)、更好的初始化和训练方法所取代。这是在 ConvNets 上斯坦福课程CS321n的讲义中写的:

规范化层

已经提出了许多类型的归一化层用于 ConvNet 架构,有时是为了实现在生物大脑中观察到的抑制方案。然而,这些层最近已经失宠,因为在实践中它们的贡献已被证明是最小的,如果有的话。有关各种类型的规范化,请参阅 Alex Krizhevsky 的 cuda-convnet 库 API 中的讨论。

确实,在一个地方似乎没有很好的解释。最好的方法是阅读它来自的文章:

最初的 AlexNet 文章在第 3.3 节中解释了一点:

  • Krizhevsky、Sutskever 和 Hinton,使用深度卷积神经网络进行 ImageNet 分类,NIPS 2012。pdf

这样做的确切方法是在(但这里没有太多额外信息)中提出的:

  • Kevin Jarrett、Koray Kavukcuoglu、Marc'Aurelio Ranzato 和 Yann LeCun,什么是对象识别的最佳多阶段架构?,ICCV 2009.pdf

它的灵感来自计算神经科学:

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

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

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

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

动机: '这种响应归一化(LRN)实现了一种受真实神经元类型启发的侧向抑制形式,在使用不同内核计算的神经元输出之间创造了对大活动的竞争。'亚历克斯网 3.3

换句话说,LRN 允许减少对邻域来说一致大的响应,并使大激活在邻域内更加明显,即在激活图中创建更高的对比度。prateekvjoshi.com声明它对于 RELU 等无界激活函数特别有用。

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

LRN

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

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

实际使用LRN 在像 LeNet-5 这样的早期 convets 的日子里被更频繁地使用。目前在 Caffe 中实现的 GoogLeNet(Inception)经常使用 LRN 和池化技术,但似乎只是为了拥有它。原始 Inception/GoogLeNet(此处)和以下任何版本均未以任何方式提及 LRN。此外,尽管 LRN 可用,但 Inception(由原始作者团队提供和更新)网络的 TensorFlow 实现并不使用 LRN。

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