卷积神经网络:中央神经元在输出中的比例是否过高?

Koe*_*oen 5 machine-learning convolution neural-network

[这个问题现在也在交叉验证 中提出]

问题简而言之

我正在研究卷积神经网络,我相信这些网络不会同等对待每个输入神经元(像素/参数)。想象一下,我们有一个深度网络(多层),对某些输入图像应用卷积。图像“中间”的神经元有许多独特的路径通往许多更深层的神经元,这意味着中间神经元的微小变化会对输出产生很大的影响。然而,图像边缘的神经元只有 1 种(或者,根据具体的实现,大约为 1)其信息流经图形的路径。看来这些人“代表性不足”。

我对此感到担忧,因为边缘神经元的这种区分随着网络的深度(层数)呈指数级增长。即使添加最大池层也不会阻止指数增长,只有完整的连接才能使所有神经元处于平等地位。不过,我不相信我的推理是正确的,所以我的问题是:

  • 这种效应发生在深度卷积网络中,我说得对吗?
  • 有没有关于这个的理论,文献中是否提到过?
  • 有办法克服这种影响吗?

因为我不确定这是否提供了足够的信息,所以我将详细说明问题陈述,以及为什么我认为这是一个问题。

更详细的解释

想象我们有一个以图像作为输入的深度神经网络。假设我们在图像上应用 64x64 像素的卷积滤波器,每次将卷积窗口移动 4 个像素。这意味着输入中的每个神经元都会将其激活发送到第 2 层中的 16x16 = 265 个神经元。这些神经元中的每一个都可能会将其激活发送到另一个 265 个神经元,这样我们最顶层的神经元就会在 265^2 个输出神经元中表示,依此类推。然而,对于边缘上的神经元来说,情况并非如此:这些神经元可能仅在少量卷积窗口中表示,从而导致它们仅激活下一层中的 1 个神经元(按顺序)。使用诸如沿边缘镜像之类的技巧无济于事:将被投影到的第二层神经元仍然位于边缘,这意味着第二层神经元的代表性将不足(从而限制了我们的边缘神经元也是如此)。可以看出,这种差异随着层数呈指数级增长。

我创建了一个图像来可视化问题,可以在此处找到该图像(不允许我在帖子本身中包含图像)。该网络的卷积窗口大小为 3。神经元旁边的数字表示向下到达最深神经元的路径数量。该图像让人想起帕斯卡三角形

https://www.dropbox.com/s/7rbwv7z14j4h0jr/deep_conv_problem_stackxchange.png?dl=0

为什么这是个问题?

乍一看,这种效果似乎不是问题:原则上,权重应该以网络完成其工作的方式自动调整。而且,图像的边缘在图像识别中并不那么重要。这种效果在日常图像识别测试中可能并不明显,但它仍然让我担心,因为有两个原因:1)推广到其他应用程序,2)在非常深的网络的情况下出现的问题。1)可能还有其他应用,例如语音或声音识别,其中最中间的神经元并不最重要。应用卷积经常在这个领域进行,但我还没有找到任何提到我关心的效果的论文。2)非常深的网络会注意到边界神经元的区分会产生指数级的不良影响,这意味着中央神经元可能会被多个数量级过度代表(想象我们有 10 层,这样上面的例子将给出 265^10 种中央神经元的方式)神经元可以投射它们的信息)。随着层数的增加,必然会达到权重无法补偿这一影响的极限。现在想象一下我们对所有神经元进行少量干扰。与边缘神经元相比,中央神经元将导致输出变化几个数量级。我相信对于一般应用程序和非常深的网络,应该找到解决我的问题的方法吗?

Dog*_*yli 0

我会引用你的句子,下面我会写下我的答案。

  • 这种效应发生在深度卷积网络中,我说得对吗?

    • 我认为您总体上是错误的,但根据您的 64 x 64 大小的卷积滤波器示例,您是正确的。当您构建卷积层滤波器大小时,它们永远不会大于您在图像中寻找的大小。换句话说 - 如果你的图像是 200×200 并且你对 64×64 补丁进行卷积,那么你说这些 64×64 补丁将学习一些部分或确切地识别识别你的类别的图像补丁。第一层的想法是学习边缘状的部分重要图像,而不是整个猫或汽车本身。
  • 有没有关于这个的理论,文献中是否提到过?有没有办法克服这种影响?

    • 到目前为止,我从未在我浏览过的任何论文中看到过它。我认为即使对于非常深的网络来说这也不会成为问题。

    • 没有这样的效果。假设学习了 64by64 补丁的第一层正在运行。如果左上角有一个补丁会被触发(变得活跃),那么它将在下一层左上角显示为 1,因此信息将通过网络传播。

  • (未引用)您不应该认为“当像素靠近中心时,它对更多神经元有用”。考虑步长为 4 的 64x64 过滤器:

    • 如果您的 64x64 过滤器查找的图案位于图像的最左上角,那么它将传播到下一层的最左上角,否则下一层中将没有任何内容。

    • 这个想法是让图像中有意义的部分保持活力,同时抑制无意义、乏味的部分,并将这些有意义的部分组合到后续的图层中。如果学习“大写字母 aA”,请仅查看福岛 1980 年非常旧的论文中的图像(http://www.cs.princeton.edu/courses/archive/spr08/cos598B/Readings/Fukushima1980.pdf)图 7 和 5。因此,像素并不重要,图像块很重要,它是卷积层的大小。

  • 与边缘神经元相比,中央神经元将导致输出变化几个数量级。我相信对于一般应用程序和非常深的网络,应该找到解决我的问题的方法吗?

    • 假设您正在寻找图像中的汽车,

    • 假设在第一个示例中,汽车肯定位于 200×200 图像的 64×64 最左上角部分,在第二个示例中,汽车肯定位于 200×200 图像的 64×64 最右下角部分

    • 在第二层中,所有像素值几乎都是 0,对于第一张图像(除了最左上角的图像)和第二图像(除了最右下角的图像)。

    • 现在,图像的中心部分对我的前向和后向传播没有任何意义,因为这些值已经是 0。但是角点值永远不会被丢弃,并且会影响我的学习权重。