用于下采样的池化与跨步

机器算法验证 深度学习
2022-02-11 01:57:29

池化和跨步都可用于对图像进行下采样。

假设我们有一个 4x4 的图像,如下图 在此处输入图像描述 和一个 2x2 的过滤器。那么我们如何决定是使用(2x2 pooling)还是使用(stride of 2)呢?

2个回答

卷积层的优势在于它可以学习某些你在添加池化层时可能不会想到的属性。池化是一种固定操作,可以学习卷积。另一方面,池化是比卷积更便宜的操作,无论是就您需要执行的计算量和您需要存储的参数数量而言(池化层没有参数)。

有一些例子表明其中一个比另一个更好。

步幅卷积优于池化的示例

ResNet 中的第一层使用带步幅的卷积。这是一个很好的例子,说明跨步会给你带来优势。该层本身显着减少了网络在后续层中必须完成的计算量。它将多个 3x3 卷积(确切地说是 3 个)压缩为一个 7x7 卷积,以确保它具有与 3 个卷积层完全相同的感受野(尽管它在学习方面的能力较弱)。同时,该层应用 stride=2 对图像进行下采样。由于 ResNet 中的第一层同时进行卷积和下采样,因此该操作的计算成本大大降低。如果您使用 stride=1 和 pooling 进行下采样,那么你最终会得到卷积,它为下一个池化层执行 4 倍的计算 + 额外的计算。在 SqueezeNet 和其他一些神经网络架构中使用了相同的技巧。

池化优于卷积的示例

在 NIPS 2018 中,提出了一种名为FishNet的新架构。他们尝试的一件事是解决 ResNet 中使用的残差连接的问题。在 ResNet 中,在少数地方,当对图像应用下采样时,他们将 1x1 卷积置于跳过连接中。这个卷积层使梯度传播变得更加困难。他们论文中的主要变化之一是他们摆脱了剩余连接中的卷积,并用池化和简单的升级/身份/连接代替了它们。该解决方案解决了非常深的网络中梯度传播的问题。

来自 FishNet 论文(第 3.2 节)

头部中的层由连接、带有恒等映射的卷积和最大池组成。因此,尾部的前一个骨干网络的梯度传播问题用 FishNet 解决了 1) 不包括头部的 I-conv;2)在身体和头部使用连接。

本质上,max-pooling(或任何一种池化)是一个固定的操作,用跨步卷积代替它也可以看作是学习池化操作,增加了模型的表达能力。不利的一面是它也增加了可训练参数的数量,但这在我们这个时代并不是一个真正的问题。

JT Springenberg 有一篇非常好的文章,他们用跨步卷积替换了网络中的所有最大池操作。该论文演示了如何这样做,提高了具有相同深度和宽度的模型的整体准确性:“当池化被一个步幅 r = 2 的附加卷积层取代时,性能稳定,甚至在基础模型上有所改进”

追求简单:全卷积网络

我鼓励你阅读这篇文章,这并不难读。