更少的参数——通常在 ResNets 中

数据挖掘 深度学习 神经网络 美国有线电视新闻网 计算机视觉
2021-10-06 05:07:14

我的问题是关于 ResNet 的参数。

为什么网络的参数往往比 VGG 少?如果我从 Yannic Kilcher那里得到的论文和摘要是正确的,就会出现这种情况。

据我了解,您将输入 x 与残差块中另一层的输出 x_prime 连接起来。即使您更深入,这也使您能够训练更稳定的网络。

为什么这会导致参数比 VGG 少?我建议是这种情况,因为您在由于步幅而尺寸已经减小的层上执行成本更高的操作(更多过滤器)?这个对吗?

2个回答

VGG vs Resnet

在上述图像中,我们可以看到,即使 Resnet-34 有更多的卷积层,它的参数和 FLOP 仍然比 VGG-19 少 7-8 倍。

显然,卷积层没有错。但是全连接层是!!在 VGG-19 中,主干之后有 3 个大的全连接层。另一方面,Resnet 有一个全局平均池化层,它极大地减少了主干的输出大小(H 和 W 维度)。在它之后只有一个全连接层。全局平均池化技巧节省了很多参数,因此 VGG 中没有这一层会导致骨干网的输出非常大。因此,VGG 需要更宽的全连接层,而添加更多这样的层又会增加很多参数。

网络中有 2 个不同级别的复杂性:

  1. 参数数量
  2. 操作数 (FLOPs)

在使用 CNN 时区分尤为重要,因为卷积核应用于许多不同的像素,因此在不同的计算中将使用相同的权重。比例operations/parameters大约是1完全连接的网络中,但在 CNN 中更为重要。

关于参数个数

这篇文章很好的解释了每个CNN架构的参数数量,你应该看看。

如果你看一下 ResNet 和 VGG 的参数表,你会注意到大部分 VGG 参数都在最后的全连接层(架构的 1.4 亿个参数中大约有 1.2 亿个)这是由于卷积部分的输出层尺寸巨大。

输出大小为 512 个 7*7 的特征图,所以相当于一个 51277=25088全连接网络中的大小层。这就是为什么到下一层(有 4096 个神经元)的连接非常昂贵并且需要250884096=100M 参数。

这是 VGG 的一个特殊之处,这个架构有 70% 的参数用于一层。

现在如果和 ResNet 比较,ResNet 最后在每个特征图上使用一个 avg pool,所以卷积部分的输出数量是 512 个值,这导致网络的全连接部分有 1000512=512000 参数(如果我们忘记每个神经元的偏差)。

这就是为什么(至少在我的大脑中)VGG 有这么多参数而 ResNet 保持相当低的原因。

关于操作数(FLOPs)

正如我之前提到的,具有许多参数的层对于网络来说可能不是最难计算的,这取决于参数是只使用一次(全连接层)还是更多(卷积层),所以 VGG 的 100M 参数层可能不是其重要的操作数的原因。

我对我在这里的解释不太自信,但我认为 ResNet 的效率是由于 Resnet 迅速减小了特征图的大小(第一层也将其除以 2 和第二层),所以因为我们的工作量更少像素,我们要做的计算更少。

VGG 在其所有 3 层的所有 3 个图像的 224*224 像素的每个像素上应用 3x3 卷积核,这是效率不高且需要大量计算能力的方法。

这就是我将如何解释 ResNet 的计算复杂度低于 VGG

抱歉写了这么久,希望对你有帮助。