最近,有很多关于一次性学习的帖子。我试图通过阅读一些文章来弄清楚它是什么。对我来说,它看起来类似于迁移学习,我们可以使用预训练的模型权重来创建我们自己的模型。微调对我来说似乎也是一个类似的概念。
任何人都可以帮助我并解释他们三个之间的区别吗?
最近,有很多关于一次性学习的帖子。我试图通过阅读一些文章来弄清楚它是什么。对我来说,它看起来类似于迁移学习,我们可以使用预训练的模型权重来创建我们自己的模型。微调对我来说似乎也是一个类似的概念。
任何人都可以帮助我并解释他们三个之间的区别吗?
它们都是相关的术语。
从上到下:
一次性学习旨在通过一个或很少的示例获得结果。想象一个图像分类任务。您可以向人展示一个苹果和一把刀,并且不需要进一步的示例来继续分类。这将是理想的结果,但对于算法而言。
为了实现一次性学习(或接近),我们可以依靠知识转移,就像示例中的人类所做的一样(我们被训练在图像处理方面表现出色,但在这里我们还可以利用其他知识,例如抽象推理能力等等)。
这给我们带来了迁移学习。一般来说,迁移学习是一种机器学习范式,我们在一个问题上训练一个模型,然后尝试将其应用到另一个问题上(经过一些调整,我们稍后会看到)。
在上面的示例中,对苹果和刀具进行分类并非易事。但是,如果我们得到一个已经擅长图像分类的神经网络,在 1000 多个类别中具有超人的结果……也许很容易使这个模型适应我们特定的苹果与刀的情况。
这种“适应”,那些“调整”,本质上就是我们所说的微调。我们可以说微调是使已经训练好的模型适应新任务所需的训练。这通常比从头开始训练要少得多,并且保留了给定模型的许多特征。
微调通常涵盖更多步骤。计算机视觉深度学习的典型流程是:
请注意,我们模型的头部与我们的需求不匹配(每个类别可能只有一个输出,而我们现在只需要两个类别!)
交换模型的最后一层,使输出符合我们的需求,但保持架构的其余部分和已经训练的参数不变。
在特定于我们问题的图像上训练(微调!)我们的模型(在我们的愚蠢示例中只有几个苹果和小刀)。我们通常只允许最后一层开始学习,因此它们“赶上”模型的其余部分(在这种情况下,我们谈论冻结和解冻以及判别学习率,但这有点超出了问题的范围)。
请注意,有些人有时可能会使用微调作为迁移学习的同义词,所以要小心!