如果 Max Pooling 只是要对图像进行下采样,为什么要进行卷积呢?

数据挖掘 神经网络
2021-09-27 02:08:01

应用过滤器来做诸如识别边缘之类的事情的想法是一个非常酷的想法。

例如,您可以拍摄 7 的图像。使用一些过滤器,您最终可以得到强调原​​始图像不同特征的转换图像。原版7:

在此处输入图像描述

网络可以体验为:

在此处输入图像描述

注意每个图像如何提取原始 7 的不同边缘。

这一切都很好,但是,假设网络中的下一层是 Max Pooling 层。

我的问题是,一般来说,这看起来是不是有点矫枉过正?我们只是非常小心谨慎地使用过滤器识别边缘——现在,我们不再关心这些,因为我们已经把像素值炸飞了!如果我错了,请纠正我,但我们从 25 X 25 变成了 2 X 2!那么为什么不直接使用 Max Pooling,我们最终不会得到基本相同的东西吗?

作为我的问题的扩展,我不禁想知道如果巧合的是,4 个正方形中的每一个恰好都有一个具有相同最大值的像素,会发生什么。这肯定不是罕见的情况,对吧?突然间,你所有的训练图像看起来都一模一样。

3个回答

最大池化不会对图像进行下采样。它对您刚刚提取的特征(例如边缘)进行下采样。这意味着您可以更接近这些边缘或其他特征的位置。通常这正是网络泛化所需要的——为了分类它不需要知道有一个从 10,5 到 10,20 的垂直边,但是有一个大约 1/3 的垂直边左边缘大约是图像的 2/3 高度。

这些更粗略的特征类别本质上以很少的成本覆盖了输入图像中的更多变化,并且特征图尺寸的减小也是一个很好的副作用,使网络更快。

为了使其正常工作,您仍然需要从提取特征开始,而最大池不这样做,因此卷积层是必要的。您应该会发现您可以对原始图像进行下采样(到 14x14),而不是使用第一个最大池化层,并且您仍然可以获得相当合理的准确度。在构建深度神经网络时,要进行多少池化以及在何处添加这些层是另一个超参数问题。

由于介于两者之间,我们不能直接从输入层到最大池化convolution layer卷积的原因是为了提取特征。最大池化对已提取的特征进行下采样。如果您认为由于从大矩阵直接跳转到最大池化层而缺少某些特征,则可以在其间添加更多卷积层,直到您对大小感到满意,然后对其进行最大池化,以便它不是矫枉过正。

最大池化是一种下采样形式,用于识别最重要的特征。但也可以使用平均池化和各种其他技术。我通常使用文本而不是图像。对我来说,这些值通常并不完全相同。但如果它们也是,它不会有太大的不同,因为它只是选择了最大值。

来自wiki的一个很好的理解-

直觉是,一旦找到了一个特征,它的确切位置并不像它相对于其他特征的粗略位置那么重要。池化层的作用是逐步减小表示的空间大小,以减少网络中的参数量和计算量,从而控制过拟合。在 CNN 架构中的连续卷积层之间定期插入一个池化层是很常见的。池化操作提供了一种平移不变性。

卷积基本上是用较小的像素滤波器对图像进行过滤,以减小图像的大小而不丢失像素之间的关系(网络的参数),池化还通过提取像素的 Max、Avg 或 Sum 来减小空间大小然而,它可能会错过卷积通过不显着减小尺寸而重新实现的过程中的重要参数。