社区计算机视觉课程文档

迁移学习

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

迁移学习

在我们深入探讨迁移学习和微调对神经网络的意义之前,让我们以乐器为例。特雷门琴是一种电子乐器,发出一种怪异的声音,通常与惊悚片和恐怖电影相关联。它很难演奏,因为它需要你用双手在两个天线之间移动,以控制音高和音量。它太难了,以至于有人发明了一种名为 Tannerin(也称为滑奏特雷门琴或电子特雷门琴)的乐器,它发出类似的声音,但更容易演奏。演奏者将盒子侧面的滑块移动到所需的频率以产生音高。演奏它仍然有一个学习曲线……嗯,除非你会吹长号。当你吹长号时,你已经知道如何使用 Tannerin 滑块,因为它与长号上的伸缩滑块机制相同。下面,从左到右依次是:特雷门琴、Tannerin 和长号。

Theremin, Tannerin, and the Trombone

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

迁移学习要求先前的知识对于另一项任务是“有用”的。因此,我们试图探索的特征需要足够通用,以适用于新的应用。如果我们回到乐器示例,演奏萨克斯风而不是长号对学习如何演奏 Tannerin 并没有那么大的帮助。长号演奏者之所以能领先一步,主要在于对滑奏位置的直观理解。

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

迁移学习和微调

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

微调模型时,我们无需训练所有部分。我们可以只训练性能不佳的部分。以一个计算机视觉模型为例,它包含三个部分:特征提取、特征增强和最终任务。在这种情况下,您可以使用相同的特征提取和特征增强,而无需进行任何再训练。因此,我们只关注对最终任务进行再训练。

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

迁移学习的考量

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

最后,迁移学习并非万能的性能增强器。在我们的例子中,演奏一种乐器可能有助于我们学习另一种乐器,但也可能阻碍进步。一种乐器中的模式和坏习惯可能会减慢另一种乐器的进步。如果这些坏习惯根深蒂固在演奏者身上,一个新手玩家在相同的训练量下可能会超越这个新玩家。如果您的玩家固守他们的坏习惯,也许是时候雇佣新玩家了。

迁移学习与自训练

当没有足够的带标签数据从头开始重新训练模型时,迁移学习尤其能发挥作用。以我们的例子来说,我们可以想象,只要有足够的时间,一个只上过几节课的演奏者就可以在没有老师持续监督的情况下,通过演奏乐器自行学习。在深度学习中,部分或完全依靠自己学习被称为自训练。它允许我们使用带标签(课程)和无标签(演奏者自己)数据来训练模型以学习任务。

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

资源

< > 在 GitHub 上更新