社区计算机视觉课程文档

迁移学习

Hugging Face's logo
加入 Hugging Face 社区

并获得增强文档体验的访问权限

开始使用

迁移学习

在我们深入了解迁移学习和微调对神经网络的意义之前,让我们以乐器为例。电子琴是一种电子乐器,发出一种令人毛骨悚然的声音,通常与惊悚片和恐怖片相关联。它非常难以演奏,因为它要求您将双手在两个天线之间空中移动以控制音调和音量。太难了,以至于有人发明了一种名为 Tannerin 的乐器(也称为滑杆电子琴或电子琴),它发出类似的声音,但更容易演奏。演奏者将琴盒侧面的滑杆移动到所需的频率以创建音调。学习演奏它仍然需要一定的学习曲线……好吧,除非你演奏长号。当你演奏长号时,你已经知道如何使用 Tannerin 的滑杆,因为它与长号上的伸缩滑杆机制相同。下面,您可以从左到右看到:电子琴、Tannerin 和长号。

Theremin, Tannerin, and the Trombone

在这种情况下,长号演奏者有效地利用了演奏长号所学到的知识来演奏 Tannerin。他将从一种乐器中学到的知识转移到另一种乐器上。我们也可以在神经网络中使用这个概念。神经网络在对狗或猫进行分类时所学到的知识可以用于识别其他动物。这种方法有效的原因在于网络学习模型中特征的方式。也就是说,用于对狗进行分类的学习特征也可以用于对马进行分类。我们利用模型已知的知识来完成不同的任务。

迁移学习要求先前的知识对其他任务“有用”。因此,我们尝试探索的特征需要足够通用以适用于新的应用。如果我们回到乐器的例子,演奏萨克斯而不是长号对学习演奏 Tannerin 的帮助不大。让长号演奏者领先的主要技能是对滑杆应该位于何处的直观理解。

然而,萨克斯演奏者并非从零开始。他熟悉音乐理论、节奏和时间等方面。这些通用技能让他们比从未演奏过任何乐器的人更有优势。演奏乐器的行为赋予所有演奏者一套在不同乐器之间通用的技能。这种跨领域的泛化(在我们的例子中是乐器)使得模型学习速度比从零开始训练快得多。

迁移学习和微调

让我们区分一下我们正在讨论的概念。长号演奏者无需训练即可演奏 Tannerin。他早已知道如何演奏,只是他自己不知道。萨克斯演奏者需要一些训练来微调他的技能才能演奏 Tannerin。用深度学习的术语来说,长号演奏者使用现成的模型。这称为迁移学习。需要更多时间学习的模型的训练,就像我们的萨克斯演奏者一样,称为微调。

在微调模型时,我们不需要训练所有部分。我们只需训练那些表现不佳的部分即可。让我们以一个具有三个部分的计算机视觉模型为例:特征提取、特征增强和最终任务。在这种情况下,您可以使用相同的特征提取和特征增强而无需任何重新训练。因此,我们只专注于重新训练最终任务。

如果微调最终任务后的结果不令人满意,我们仍然不需要重新训练整个特征提取部分。一个好的折衷方案是仅重新训练顶层层的权重。在卷积网络中,层级越高,其特征对任务和数据集的特征就越明显。换句话说,第一层卷积层的特征更通用,而最后一层特征更具体。以我们的演奏者示例为例,这相当于不浪费时间向经验丰富的萨克斯演奏者解释音乐理论,而是只教他如何在 Tannerin 中改变音调。

迁移学习的注意事项

我们的示例也为我们提供了一个有趣的细微差别。电子琴太难演奏了,所以他们发明了一种更容易演奏的乐器,发出相同的声音。输出几乎相同,但所需的训练时间少得多。对于计算机视觉,我们可能会首先进行目标检测以查看图像中狗的位置,然后构建一个分类器来告诉我们狗的品种,而不是尝试立即构建一个分类器。

最后,迁移学习并非万能的性能增强器。在我们的示例中,演奏乐器可能有助于我们学习另一种乐器,但也可能阻碍进步。有一种乐器中的模式和缺点可能会减缓另一种乐器的进步。如果这些缺点深深地根植于演奏者之中,那么新手演奏者在相同的训练量下可能会超过新的演奏者。如果你的演奏者坚持他们的缺点,可能是时候聘用新人了。

迁移学习和自训练

当没有足够标记的数据来从头开始重新训练模型时,迁移学习尤其有效。使用我们的示例,我们可以认为,如果给定足够的时间,一个只参加了几节课的演奏者可以通过自己演奏乐器来学习,而无需教授的持续监督。在深度学习中,部分或完全依靠自己学习称为自训练。它允许我们使用标记数据(课程)和未标记数据(演奏者自己)来训练模型以学习任务。

尽管本节不会讨论自训练的概念,但我们在这里将其作为资源提供给您,因为当迁移学习不起作用且标记数据稀缺时,自训练可能非常有用。这些概念也不是相互排斥的,一位经验丰富的演奏者可能只需要几节课就能在没有监督的情况下掌握一种新乐器的演奏,事实证明,我们的深度学习模型也是如此。

资源

< > 更新 在 GitHub 上