部分迁移学习是否需要大量的计算机能力?

数据挖掘 机器学习 Python 神经网络 深度学习 迁移学习
2022-02-25 03:35:39

我想确保我对问题的理解是正确的。我想做图像分类,我所在领域的最新技术是通过使用 VGG16 进行迁移学习来实现的。

由于该字段上的图像与 VGG16 训练图像使用的图像完全不同,我们应该解冻“很多”层。

原始 VGG16 模型有超过 130M 的参数。它最后有 13 个隐藏层和 3 个全连接层。如果我只解冻全连接层,我仍然需要训练超过 80M 的参数!!我可能需要解冻一些隐藏层以获得更好的性能,因为我的数据确实不同

所以看起来使用 VGG16 的迁移学习需要大量的计算能力

我对吗?是否可以在没有大量计算能力的情况下使用与训练数据完全不同的图像进行迁移学习?

2个回答

计算能力取决于 3 个因素 -

  1. 参数计数
  2. 数据集大小
  3. 时期数

在您的情况下,您正在解冻很多隐藏层,因此有很多参数。由于您正在对不同于训练数据集的图像进行迁移学习,因此您必须训练多个 epoch。所以一切都归结为数据集的大小。

您应该做的是找到在与您的新数据相似的数据集上训练的模型。在这种情况下,您将不得不为非常少的 epoch 训练非常少的参数。这将需要非常少的计算。

对于您的最后一个问题,是的,可以对不同于训练数据集的图像进行迁移学习,这确实有帮助,但您必须在迁移学习期间再次训练多个时期。

训练 VGG16 的数据集由来自不同领域的图像组成,其目的是通过提取图像的特征图和属性来对图像进行分类。解冻几个底部层将有助于训练它们以适应我们的特定图像使用,但是,与整个连接的网络相比,这些参数需要学习的很少,因为它已经学习了基本特征。

当你选择只训练几个底层的 VGG16 时,它肯定需要更少的计算。