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

5
一般情况下,我们会在卷积层之间插入最大池化层。主要的想法是“总结”卷积层中的特征。但是很难确定何时插入。我有一些问题如下:
  1. 如何决定在插入最大池化之前有多少个卷积层?太多或太少的卷积层会产生什么影响?
  2. 由于最大池化会减小尺寸,所以如果我们想使用非常深的网络,则不能进行太多的最大池化,否则尺寸会变得太小。例如,MNIST只有28x28的输入,但我确实看到有些人使用非常深的网络进行实验,因此他们可能最终得到非常小的尺寸?实际上,当尺寸太小时(极端情况下,1x1),它就像一个全连接层,似乎对它们进行卷积没有任何意义。
我知道并没有通用的规则,但我想了解其中的基本原理,这样在实现网络时就可以做出合理的选择。

1
你可以使用步长为1来运行最大池化,这样大小就会被保留。 - asakryukin
1个回答

6
  1. 你说得对,就像没有一种最佳过滤器大小或一种最佳神经网络架构一样,没有一种最佳方法来做它。

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

    vgg-16

    ..而GoogleNet应用了惊人数量的卷积(如下图),在maxpooling层之间并行或交替使用

    google-net

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

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

    fmp

    这是制作深度网络的一种方法,特别适用于小图像,如MNIST数字,它们表现出非常好的准确性(0.32%的测试误差)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接