大胆猜测一下作者的问题可能是以下二者之一。
问题一:一个去掉池化层的卷积神经网络与不带池化层的卷积神经网络差别大吗?
问题二:一个不带池化层的卷积神经网络与普通神经网络(全连网络)差别大吗?
看题主问题,更像第二个问题;看回答,大家更像回答第一个问题。
Anyway,我们至少首先得弄明白池化究竟干了嘛。
池化比较常见的作用有三个。
一是作为一种暴力的下采样方法将输入数据的尺寸大幅压缩,便于节约计算和存储开销。
二是对网络引入平移不变性。理解这个不变性比较重要。举个不是特别恰当当直观的例子,如果你的池化层的大小是n×n,并且是max pooling,那么它的输出是这n×n个数中的最大值。容易看出,只要最大值本身不变,不论它出现在这n×n个位置中的哪一个,池化层的输出都一样。一种最简单的情况是你略微将一张图片向某个方向移动一点点(比如2个像素),只要你的池化层大小大于2,那么你将这个图像送入你网络得到的结果与送入不移动的原始图像的结果有很大几率是一致的。这是因为你的池化层大小能够覆盖住这个移动量,所以很多池化结果可能会一致。进而可能导致整个网络的大部分位置的值都很像,所以结果也很像。(这个仅仅是一种直观的理解方式!!!当网络太深时究竟发生了什么我们到目前为止仍然不易理解)。
三是利用平均池化来代替全连层从而降低计算成本。
所以比较关键的是第二点。CNN为什么要去池化?上面说了,池化会引入平移不变性。那么如果我们的任务本身就要排斥这种平移不变性,那么我们当然不建议再使用池化层了。最典型的例子就是目标检测和语义分割任务。目标检测要求网络能准确画出对象的bounding box,那么当你平移了一只喵两个像素点后,模型对平移前和平移后的两张图片识别出的喵的bounding box不能一致!对语义分割这种精确的dense prediction任务也是类似的。
所以以上述直觉来看,分类任务需要平移不变性,所以需要加(最大)池化。而对位置敏感的任务,如目标检测和语义分割,则不应该加(最大)池化。但实际情况是(最大)池化仍然在很多目标检测和语义分割任务中的主干网络中频繁使用。可能的原因是我们常用的池化尺寸比较小,以致于它丢失掉的位置信息非常少,对下游任务影像并不大。
回到两个问题。对问题一,理论上的结论暂时不知。但从实际使用层面来看,大家还是有意识在区分使用。所以应该是有区别的。至于区别大不大,看你如何理解大不大了。但肯定区别不小。
对于问题二,看情况。比如你在CNN网络中全部使用1×1卷积,那么你的这个CNN就是一个全连网络,它们等价。如果是其它情况,区别就会比较大。简单掰一掰。
我们常说一个带xxx层的普通神经网络是通用近似器。按照此逻辑,一个xxx层的普通神经网络肯定是能表达一个CNN的。它都通用了,还有什么它不能表达的???
但是一定注意,这只是从它的表达能力来说的。其离现实的鸿沟在于我们的模型是从限定数据集中依靠某种优化算法优化得到的。所以虽然它理论上能表达某个复杂函数,但优化算法无法帮它找到一个异常优秀的解。
以图像分类任务为例,假设真正存在输入与输出之间的关系就是函数f。再假设网络A是一个普通全连网络,并且理论上它有绝对的表达能力。网络B是一个CNN,因为卷积层天然就有一些限制,所以它的表达能力不如A。总结起来,A是肯定能表示f的,但前提是要找到合适的参数。B不一定能完全地表示f。
但实践中的情况是,在限定数据集上使用现有的优化技术并不能找到一组参数,使得A表示的函数足够像f,反而差距还很大。反倒是对B而言,现有的优化技术更容易找到一组可接受的解。
一言以蔽之,它们的优化难度不同。