machine-learning - 卷积神经网络:输出中的中枢神经元难道不是代表过多的吗?

标签 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种方式神经元可以投射其信息)。随着一层数的增加,一层势必会达到极限,在这种极限下,权重无法切实弥补这一影响。现在想象一下,我们会少量扰动所有神经元。与边缘神经元相比,中枢神经元将导致输出变化更大,幅度提高几个数量级。我相信对于一般应用程序和非常深的网络,应该找到解决我的问题的方法吗?

最佳答案

我将引用您的句子,并在下面写下我的答案。


我对吗,这种影响发生在深度卷积网络中


我认为您总体上是错的,但根据您的64 x 64大小的卷积滤波器示例,您是正确的。在构造卷积层滤镜大小时,它们的大小永远不会比您在图像中寻找的大小大。换句话说-如果您的图像是200by200,并且您忙于64by64补丁,那么您说这些64by64补丁将学习某些部分或确切地识别您类别的图像补丁。第一层的想法是学习边缘状的部分重要图像,而不是整个猫或汽车本身。

有没有关于这一点的理论,文献中是否曾提及过?有没有办法克服这种影响?


到目前为止,我从未在任何论文中看到它。而且我认为即使对于非常深的网络,这也不是问题。
没有这种效果。假设您的第一层学习了64by64修补程序,并且正在运行。如果在最左上角有一个补丁会被触发(变为活动状态),那么它将在最左上角的下一层显示为1,因此信息将通过网络传播。

(未引用)您不应该认为“当像素靠近中心时,它将在更多神经元中发挥作用”。考虑跨度为4的64x64过滤器:


如果您的64x64滤镜查找的模式位于图像的最左上角,则它将传播到下一层的最上角,否则下一层将没有任何内容。
这个想法是在保留图像中有意义的部分的同时,消除无意义的,沉闷的部分,并将这些有意义的部分合并到下一层。在学习“大写字母aA”的情况下,请仅查看福岛1980年的旧论文中的图像(http://www.cs.princeton.edu/courses/archive/spr08/cos598B/Readings/Fukushima1980.pdf)图7和5。因此,像素的重要性不重要,图像补丁的重要性不容小视。是卷积层的大小。

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


假设您正在寻找图片中的汽车,
并假设在第一个示例中,汽车肯定位于200by200图像的64by64最左上方,在第二个示例中,汽车绝对位于200by200图像的64by64最右下方
在第二层中,除了第一个图像的最左上角的像素以外,所有第二像素的像素值几乎都为0。
现在,图像的中心部分对于我的向前和向后传播将毫无意义,因为这些值已经为0。但是,边角值将永远不会被丢弃,并且会影响我的学习权重。

关于machine-learning - 卷积神经网络:输出中的中枢神经元难道不是代表过多的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26216082/

相关文章:

python - 用 mode() 填充 NAN 数据不起作用-Pandas

c++ - 为什么改变这个网络中隐藏神经元的数量对效率没有影响?

algorithm - 神经网络的层和神经元

java - vector 卷积 - 计算相邻元素的索引

machine-learning - 卷积中的2D步幅是什么意思?

machine-learning - 如何验证两个文本数据集是否来自不同的分布?

python - 这两种保存keras机器学习模型权重的方式有什么区别?

python - 如何提高查准率和查全率

machine-learning - RNN : Back-propagation through time when output is taken only at final timestep

c - 具有非中心起源的内核的 2D 卷积