何时在卷积层之间插入池化层

Ziq*_*Liu 5 machine-learning neural-network deep-learning conv-neural-network

通常我们会在卷积层之间插入最大池化层。主要思想是“总结” conv 中的特征。层。但很难决定何时插入。这背后我有一些疑问:

  1. 如何决定有多少转化次数 层,直到我们插入最大池。转化次数太多/太少会产生什么影响?层数

  2. 因为最大池化会减小大小。所以如果我们想使用非常深的网络,我们不能做很多maxpooling,否则尺寸太小。例如,MNIST 只有 28x28 输入,但我确实看到有些人使用非常深的网络来实验它,所以他们最终可能会得到非常小的尺寸?实际上,当尺寸太小时(极端情况,1x1),它就像一个全连接层,并且似乎对它们进行卷积没有任何意义。

我知道没有黄金角色,但我只是想弄清楚这背后的基本直觉,以便我在实现网络时可以做出合理的选择

Max*_*xim 6

  1. 你是对的,没有一种最好的方法可以做到这一点,就像一般来说没有一种最佳的过滤器大小或一种最佳的神经网络架构一样。

    VGG-16 在池化层之间使用 2-3 个卷积层(下图),VGG-19 最多使用 4 个层,...

    VGG-16

    ..GoogleNet 在 maxpooling 层之间应用了令人难以置信的数量的卷积(下图),有时与 maxpooling 层并行

    谷歌网

    显然,每个新层都会增加网络的灵活性,使其能够逼近更复杂的目标函数。另一方面,它需要更多的计算来进行训练,但是使用1x1 卷积技巧来节省计算是很常见的。您的网络需要多大的灵活性?很大程度上取决于数据,但通常 2-3 层对于大多数应用程序来说已经足够灵活,并且额外的层不会影响性能。没有比交叉验证不同深度的模型更好的策略了。(图片来自这篇博文

  2. 这是一个已知问题,我想在这里提到一种处理过于激进的下采样的特殊技术:分数池。这个想法是对层中的不同神经元应用不同大小的感受野,以任意比例缩小图像:90%、75%、66% 等。

    FMMP

    这是构建更深网络的方法之一,特别是针对小图像(例如 MNIST 数字),它表现出了非常好的准确性(0.32% 测试误差)。