是否有任何称为递归迁移学习的方法?例如,让我们考虑一种情况,即我们在训练卷积神经网络 (CNN) 以从头开始进行对象检测时缺少数据。假设我们要训练 CNN 来识别(检测)比格犬骨品种的狗。我们还要求我们的模型在 0.9 IOU 阈值下获得超过 90% 的非常高的准确度结果。问题是我们的数据集非常小,只有 500 个不同品种狗的标记图像,每个狗品种只有 30-40 个图像。我们有兴趣检测只有比格犬骨品种的狗(但准确度非常高)。
我们想出了两种解决问题的方法,传统的迁移学习和递归的迁移学习。
在递归迁移学习中,迁移学习的多次迭代是在同一个模型上进行的。我们首先在广义数据集上训练模型,并在我们向更具体的数据集进行微调时对其进行微调。继续我们的示例以实现递归迁移学习,首先,我们使用在非常庞大的 Image-net COCO 数据集上训练的另一个 CNN 的权重配置来初始化我们的 CNN。这是我们第一次将迁移学习用于我们的模型。我们在包含 500 张图像的较小数据集上训练这个预训练的 CNN,以识别一般类别的狗。我们没有为狗品种设置单独的标签,而是将所有 500 张图像标记为一个通用的狗类并训练我们的模型。这个通用模型成功地检测到了狗,但不知道它的品种。然后我们再次对这个模型进行第二次微调,方法是在一个只有 30-40 张图像的较小且特定的数据集上对其进行训练,以仅识别比格犬骨狗。现在,这个最终模型在仅检测比格犬骨狗方面达到了非常高的准确度(如我们所愿)。我们可以通过从一般任务转移到更具体的任务来重复这一点。
另一方面,在传统方法中,我们训练模型一次检测所有类别或品种的狗。这仅涉及迁移学习的一次迭代,使用预训练的图像网络 coco 模型,并在 500 张图像的数据集上对其进行训练,以分别检测各种品种的狗。与递归迁移学习方法相比,该模型的准确性较低。
在我的实验中,递归迁移学习策略比传统策略表现更好。这个策略是否已经以不同的名字为人所知?在深度学习项目中使用这种策略是否常见?能否解决像 CNN 这样的深度学习模型缺乏数据的问题?它有效吗?