【问题标题】:Pooling Layer vs. Using Padding in Convolutional Layers池化层与在卷积层中使用填充
【发布时间】:2018-08-04 15:14:34
【问题描述】:
我的理解是,我们在进行卷积时使用填充,因为使用过滤器进行卷积会通过缩小输出的维度来减少输出的维度,并且会丢失输入矩阵的边缘/角落的信息。但是,我们还在多个 Conv 层之后使用池化层来对我们的特征图进行下采样。这看起来是不是有点矛盾?我们使用填充是因为我们不想减少空间维度,但我们稍后使用池化来减少空间维度。有人可以提供这两个背后的直觉吗?
【问题讨论】:
标签:
machine-learning
neural-network
computer-vision
conv-neural-network
【解决方案1】:
不失一般性,假设我们正在处理图像作为输入。 padding 背后的原因不仅是为了防止尺寸缩小,也是为了确保输入的角落和边缘上的输入像素在影响输出方面不会“不利”。如果没有填充,图像角落的像素仅与一个过滤区域重叠,而图像中间的像素与许多过滤区域重叠。因此,中间的像素影响下一层的更多单元,因此对输出的影响更大。其次,您实际上确实希望缩小输入的维度(请记住,深度学习完全是关于压缩,即找到输入的低维表示,以解开数据中的变化因素)。没有填充的卷积引起的收缩并不理想,如果你有一个非常深的网络,你很快就会得到非常低维的表示,这会丢失数据中的大部分相关信息。相反,您想以一种巧妙的方式缩小尺寸,这可以通过 Pooling 来实现。特别是,Max Pooling 被发现效果很好。这实际上是一个经验结果,即没有很多理论可以解释为什么会这样。您可以想象,通过对附近的激活取最大值,您仍然保留有关该区域中存在特定特征的信息,同时丢失有关其确切位置的信息。这可能是好是坏。好的是因为它可以为您带来翻译不变性,而不好的是因为确切的位置可能与您的问题相关。