我的理解是,我们在进行卷积时使用填充,因为卷积操作会通过缩小输出尺寸来减少其维度,同时也会丢失输入矩阵边缘/角落的信息。然而,在多个卷积层之后,我们又使用池化层来对特征图进行下采样。这不是有些矛盾吗?我们使用填充是因为我们不想减少空间维度,但随后又使用池化来减少空间维度。能否有人提供这两种方法背后的直觉?
回答:
假设我们处理的是图像作为输入,填充的原因不仅是为了防止维度缩小,还为了确保输入图像的角落和边缘像素在影响输出时不会处于“劣势”。如果没有填充,图像角落的像素只与一个滤波器区域重叠,而图像中间的像素则与多个滤波器区域重叠。因此,中间的像素会影响下一层的更多单元,从而对输出有更大的影响。其次,你确实希望缩小输入的维度(记住,深度学习的核心是压缩,即寻找输入的低维表示,以分离数据中的变化因素)。没有填充的卷积所导致的缩小是不理想的,如果你有一个非常深的网络,你很快就会得到非常低维的表示,这些表示会丢失数据中的大部分相关信息。相反,你希望以一种智能的方式缩小维度,这就是通过池化实现的。特别是,Max Pooling被发现效果很好。这真的是一个经验结果,即没有很多理论来解释为什么会这样。你可以想象,通过对附近的激活值取最大值,你仍然保留了该区域中某个特定特征存在的信息,同时丢失了关于其确切位置的信息。这可能是好事也可能是坏事。好的一面是它为你提供了平移不变性,而坏的一面是确切位置可能对你的问题很重要。