[这个问题也是在堆栈溢出时提出的]
简短的问题
我正在研究卷积神经网络,我相信这些网络不会同等对待每个输入神经元(像素/参数)。想象一下,我们有一个深度网络(许多层),它在某些输入图像上应用卷积。图像“中间”的神经元有许多通往许多更深层神经元的独特通路,这意味着中间神经元的微小变化会对输出产生强烈影响。然而,图像边缘的神经元只有条路径(或者,取决于确切的实现,大约为)它们的信息流过图形的路径。这些似乎“代表性不足”。
我对此感到担忧,因为边缘神经元的这种区分随着网络的深度(层数)呈指数增长。即使添加最大池化层也不会阻止指数增长,只有完全连接才能使所有神经元处于平等地位。不过,我不相信我的推理是正确的,所以我的问题是:
- 这种效果发生在深度卷积网络中,我说得对吗?
- 有没有关于这个的任何理论,它是否曾经在文学中提到过?
- 有没有办法克服这种影响?
因为我不确定这是否提供了足够的信息,所以我将详细说明问题陈述,以及为什么我认为这是一个问题。
更详细的解释
想象一下,我们有一个将图像作为输入的深度神经网络。假设我们在图像上应用像素的卷积滤波器,每次这意味着输入中的每个神经元都将其激活发送到神经元。这些神经元中的每一个都可能将它们的激活发送到另一个,这样我们最顶层的神经元就会在输出神经元中表示,依此类推。
然而,对于边缘上的神经元,情况并非如此:这些可能仅在少量卷积窗口中表示,因此导致它们仅激活下一层中的使用沿边缘镜像之类的技巧无济于事:将被投影到的第二层神经元仍位于边缘,这意味着第二层神经元的代表性不足(从而限制了我们的边缘神经元也是如此)。可以看出,这种差异随着层数呈指数增长。
我创建了一个图像来可视化问题,可以在这里找到(我不允许在帖子本身中包含图像)。这个网络有一个大小为的卷积窗口。神经元旁边的数字表示通往最深神经元的通路数量。该图像让人想起帕斯卡三角。
https://www.dropbox.com/s/7rbwv7z14j4h0jr/deep_conv_problem_stackxchange.png?dl=0
为什么这是个问题?
乍一看,这种效果似乎不是问题:原则上,权重应该自动调整,以便网络完成它的工作。此外,图像的边缘在图像识别中并不重要。这种效果在日常图像识别测试中可能并不明显,但由于两个原因,它仍然让我感到担忧:1.泛化到其他应用程序,以及 2.在非常深的网络情况下出现的问题。
1.可能还有其他应用,例如语音或声音识别,其中最中间的神经元不是最重要的。应用卷积通常在这个领域进行,但我一直无法找到任何提到我关心的效果的论文。
2.非常深的网络会注意到边界神经元的区分会产生指数级的不良影响,这意味着中央神经元可能会被过度表示多个数量级(假设我们有层,因此上面的示例将给出种方式中枢神经元可以投射它们的信息)。随着层数的增加,必然会达到权重无法有效补偿这种影响的极限。
现在想象一下,我们对所有神经元进行了少量扰动。与边缘神经元相比,中央神经元将导致输出变化更强烈几个数量级。我相信对于一般应用程序和非常深的网络,应该找到解决我的问题的方法吗?