在少量图像上训练具有大量参数的 ConvNet 是如何工作的?

数据挖掘 神经网络 训练 卷积神经网络
2022-02-28 03:48:24

我有两个问题:

  1. 我想知道为什么像 VGG-16 这样具有大约 1.38 亿个参数(Source)的非常深的模型可以用作仅在 130 万张图像上进行训练的模型?尽管 VGG-16 的作者使用了 dropout 和正则化来避免过拟合(来源),但我只是觉得参数的数量仍然明显多于图像的数量。

  2. 当您使用时,是否也是如此N时代的数量,你“有效地”有KN训练数据集,其中K你有多少训练数据集?在上述情况下,K= 130 万。我个人认为情况并非如此,但我不确定。

我可能还没有进行研究或彻底阅读,所以如果答案已经在某个地方,我想道歉。谢谢你。

1个回答

首先,您忽略了问题的维度图像非常高维。假设图像的分辨率为256×256,这意味着每个图像都有65,536像素。ImageNet 图像是 RGB,所以每张图像有 3 个通道,导致196,608每个图像的像素。现在,整个数据集(1.3m 图像)有超过255十亿像素与其图像相关联。

因为过滤器在像素级工作,所以它从一张图像中获得的信息比常规 ML 算法从单个训练示例中获得的信息要多。

如您所见,内核(您要更新其权重,在本例中包含 9 个参数)比输入图像小得多。考虑单个图像(大约200,000正如我们之前所说的像素)只能更新一个参数。

其次,由于网络的顺序性,每一层的输入随着层的变化而变化。第二层看到第一层的输出,依此类推……这意味着第二层的过滤器不会看到与第一层相同的图像,事实上,随着训练的进行,它们的输入也会逐渐变化(因为第一层的过滤器将变得更加有效)。

当它到达时,让我们说Mth层,输入将与原始图像发生很大变化,因此认为原始图像正在更新网络中参数的整体是错误的。

第三,数据增强也是一回事。通过对每张图像进行简单的随机变换(翻转、移位、缩放、旋转、亮度/对比度调整等),网络被欺骗认为这是一张全新的图像。这可以成倍地增加数据集的大小。

最后,您应该看看网络中的参数在哪里。VGG19 架构确实有超过143万,但大约124其中 m 来自最后 3 个 FC 层。事实上,三层中的第一层大约有103米参数自己!这是一种非常低效的网络设计,研究界最近才偏离了方向。您应该查看的更具代表性的网络是 ResNet 架构。例如,一个 50 层的 ResNet(比 19 层的 VGG 深得多)由大约25m 个参数,同时实现类似的(如果不是更好的话)性能。