通常,我们会在卷积层之间插入最大池化层。其主要目的是“总结”卷积层的特征。但决定何时插入池化层却是一个难题。我对此有一些疑问:
-
如何决定在插入最大池化层之前需要多少个卷积层?以及卷积层太多或太少会有什么影响?
-
由于最大池化会减小尺寸,如果我们想使用非常深的网络,就不能进行太多的最大池化操作,否则尺寸会变得太小。例如,MNIST数据集的输入尺寸仅为28×28,但我确实看到有些人用非常深的网络来进行实验,这样可能会导致尺寸变得非常小?实际上,当尺寸太小时(极端情况,1×1),它就像一个全连接层,在这种情况下进行卷积似乎没有意义。
我知道没有黄金法则,但我只是想弄清楚背后的基本直觉,以便在实现网络时做出合理的选择
回答:
-
你说的对,没有一种最佳的方法,就像没有一种最佳的滤波器尺寸或最佳的神经网络架构一样。
VGG-16在池化层之间使用2-3个卷积层(如下图),VGG-19最多使用4层,…
…而GoogleNet应用了大量的卷积(如下图),在池化层之间,有时甚至与池化层并行进行。
显然,每增加一层都会增加网络的灵活性,使其能够逼近更复杂的目标函数。另一方面,这也需要更多的计算量来进行训练,但通常可以使用1×1卷积技巧来节省计算量。你的网络需要多少灵活性?这在很大程度上取决于数据,但通常2-3层对于大多数应用来说已经足够灵活,增加更多的层不会影响性能。没有比交叉验证不同深度的模型更好的策略了。(图片来自这篇博文)
-
这是一个已知的问题,我想在这里提到一种特别的技术来处理过于激进的下采样:分数池化。其思想是为层中的不同神经元应用不同尺寸的感受野,以任何比例(90%、75%、66%等)减小图像尺寸。
这是在小图像(如MNIST数字)上构建更深层网络的一种方法,展示了非常好的准确率(0.32%的测试误差)。