卷积神经网络:Aren中心神经元在输出中过度表现?

时间:2014-10-06 12:18:14

标签: machine-learning neural-network convolution

[此问题现在也出现在Cross Validated]

简而言之的问题

我正在研究卷积神经网络,我相信这些网络不会等效地处理每个输入神经元(像素/参数)。想象一下,我们有一个深度网络(许多层),在某些输入图像上应用卷积。 "中间的神经元"图像的许多更深层神经元具有许多独特的通路,这意味着中间神经元的微小变化对输出有很大影响。然而,图像边缘的神经元只有1种方式(或者,取决于确切的实施方式,1种顺序)其信息流过图形的途径。似乎这些"代表不足"。

我对此感到担心,因为边缘神经元的这种区分与网络的深度(层数)成比例地指数。即使添加最大池层也不会停止指数增加,只有完整的连接才能使所有神经元处于平等的基础上。我不相信我的推理是正确的,所以我的问题是:

  • 我认为这种效果是在深度卷积网络中发生的吗?
  • 有没有关于此的理论,是否曾在文献中提及过?
  • 有办法克服这种影响吗?

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

更详细的解释

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

我创建了一个可视化问题的图像,可在此处找到(我不允许在帖子中包含图像)。该网络具有大小为3的卷积窗口。神经元旁边的数字表示直到最深神经元的通路数。该图像让人联想到Pascal's Triangle

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

为什么这是一个问题?

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

1 个答案:

答案 0 :(得分:0)

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

  • 我认为这种效果发生在深度卷积网络中

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

    • 到目前为止,我从未在任何论文中看过它。而且即使对于非常深的网络,我也不认为这会是一个问题。

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

  • (未引用)你不应该认为'当一个像素越来越接近中心时,它就会在更多的神经元中发挥作用'。想想64x64过滤器,步幅为4:

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

    • 这个想法是保留图像的有意义部分,同时抑制无意义的无聊部分,并在后续层中组合这些有意义的部分。在学习“大写字母aA”的情况下,请仅查看福岛1980年(http://www.cs.princeton.edu/courses/archive/spr08/cos598B/Readings/Fukushima1980.pdf)图7和图5的旧论文中的图像。因此没有像素的重要性,图像的重要性补丁,它是卷积层的大小。

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

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

    • 并且假设在你的第一个例子中,汽车绝对位于200by200图像的64by64左上角部分,在第二个例子中,汽车绝对位于你的200by200的64by64最右下角图像

    • 在第二层中,所有像素值几乎为0,第一张图像除了最左上角和第二张图像之外的一个,除了最右下角的一个

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