ML 中的迁移学习简介

2025年06月20日 | 阅读 5 分钟

人类在将知识从一项任务转移到另一项任务方面非常熟练。这意味着当我们面临一个新问题或任务时,我们会立即识别它,并利用我们从过去的学习经验中获得的现有知识。这使我们能够快速高效地完成任务。如果一个人会骑自行车,然后被要求骑摩托车,这是一个很好的例子。他们骑自行车的经验在这种情况下会很有帮助。他们可以平衡自行车并操纵摩托车。这比完全的初学者更容易。这些经验在现实生活中非常有益,因为它们使我们变得更好,并使我们获得更多经验。

同样的方法也被引入机器学习中的迁移学习。这涉及到利用一项任务的知识来解决目标任务中的问题。尽管大多数机器学习算法都是为单个任务设计的,但开发迁移学习算法一直是一个持续的关注点。

为什么选择迁移学习?

许多基于图像的深度神经网络都有一个共同的特点,那就是能够检测边缘、颜色、强度变化以及早期层中的其他特征。这些特征对于任何特定的任务或数据集都不是唯一的。无论我们使用何种图像来检测狮子还是汽车,这些低级特征在两种情况下都必须被检测到。无论图像数据或成本函数是否精确,这些特征都存在。这些特征可以在一项任务中学习,例如检测狮子,也可以用于检测人类。迁移学习正是如此。如今,很少有人从头开始训练整个卷积神经网络。相反,通常使用已经使用各种图像针对类似任务(如ImageNet(120 万张图像,1000 个类别))进行了训练的预训练模型,然后利用这些特征来解决新任务。

框图

Introduction to Transfer Learning in ML

迁移学习的特点是冻结层。当一个层无法训练时,它就被称为“冻结层”。它可以是 CNN 层或隐藏层。未冻结的层将接受常规训练。训练不会更新冻结层的权重。

迁移学习是一种利用预训练模型的知识来解决问题的方法。有两种方式可以利用预训练模型的知识。第一种是冻结预训练模型中的一些层,然后使用我们的新数据集来训练层。第二种方式是创建一个新模型,但同时从预训练模型中的层移除一些特征。然后可以将这些特征用于新模型。这两种情况都涉及到移除一些之前学习到的特征,并尝试训练其余部分。这确保了每个任务只使用一个特征。然后可以训练模型的其余部分以适应新数据集。

冻结层和可训练层

Introduction to Transfer Learning in ML

人们可能会想知道哪层最适合冻结,哪层最适合训练。如果我们想继承预训练模型的特征,很容易看出哪些层需要冻结。如果检测某些花朵的模型不起作用,我们需要寻找新的物种。一个新的包含新物种的数据集将包含许多与模型相似的特征。因此,我们保留较少的层,以便最大限度地利用该模型的知识。考虑另一个例子:如果一个已经训练好用于检测图像中人物的模型,而我们想利用这个知识来检测图像中的汽车,那么冻结很多层不是一个好主意。这是因为鼻子、眼睛、嘴巴等高级特征将丢失,使其无法用于新数据集(汽车检测)。我们只使用基础网络的低级特征来训练网络,使用新数据集。

让我们看看目标任务的大小和数据集与基础网络不同的所有场景。

  • 目标数据集小于基础网络数据:由于目标数据集非常小,我们可以使用这个目标数据集来微调我们的预训练网络。这可能导致过拟合。目标任务的类别数量也可能发生变化。在这种情况下,我们可能需要移除末尾的一些全连接层,并添加一个新的全连接层。然后我们冻结模型的其余部分,只训练新添加的层。
  • 目标数据集大,与基础训练数据集相似:如果数据集足够大以容纳预训练模型,则不会有任何过拟合的风险。在这种情况下,我们会移除最后一个全连接层,并添加一个具有正确类别数量的新全连接层。然后,整个模型在新数据集上进行训练。这允许模型在新数据集上进行调整,同时保持架构不变。
  • 目标数据集小于基础网络数据,因此不同:目标数据集是独特的,因此具有高级特征的预训练模型将无法工作。我们可以移除预训练模型末尾的大部分层,并添加满足新数据集中类别数量的层。然后,我们可以使用预训练模型的低级特征来训练其余的层,以适应新数据集。有时,即使在末尾添加一个层后,训练整个网络也可能是有益的。
  • 目标数据集大于基础网络数据:由于目标网络复杂且多样,因此最好移除预训练网络中的层,并添加满足类别数量的层。然后,在不冻结任何层的情况下训练整个网络。

结论

迁移学习可以是一种快速有效的解决问题的方法。迁移学习为我们指明了方向。大多数最好的结果都可以通过这种方法来实现。