社区计算机视觉课程文档
迁移学习
并获取增强的文档体验
开始使用
迁移学习
在我们深入探讨迁移学习和微调对于神经网络的意义之前,让我们以乐器为例。特雷门琴是一种电子乐器,发出一种怪异的声音,通常与惊悚片和恐怖电影联系在一起。它非常难演奏,因为它需要你移动双手在两个天线之间来控制音高和音量。太难了,以至于有人发明了一种名为 Tannerin 的乐器(也称为滑管特雷门琴或电子特雷门琴),它发出类似的声音,但更容易演奏。演奏者移动盒子侧面的滑块到所需的频率以产生音高。演奏它仍然有一个学习曲线……好吧,除非你演奏长号。当你演奏长号时,你已经知道如何使用 tannerin 滑块,因为它与长号上的伸缩滑块机制相同。下面,你从左到右看到:特雷门琴、tannerin 和长号。
在这种情况下,长号演奏者有效地利用了他通过演奏长号所学到的知识来演奏 tannerin。他将从一种乐器中学到的东西转移到另一种乐器上。我们也可以在神经网络中使用这个概念。神经网络在对狗或猫进行分类时学到的知识可以用来识别其他动物。这种方法有效的原因在于网络在模型中学习特征的方式。也就是说,用于对狗进行分类的学习特征也用于对马进行分类。我们利用模型已经知道的知识来完成不同的任务。
迁移学习要求先前的知识对其他任务“有用”。因此,我们试图探索的特征需要足够通用,以适用于新的应用。如果我们回到我们的乐器示例,演奏萨克斯管而不是长号对于学习如何演奏 tannerin 并没有那么大的帮助。长号演奏者领先一步的主要技能是对滑块应该在何处的直观理解。
然而,萨克斯管演奏者并非从零开始。他熟悉音乐理论、节奏和节拍等知识。这些通用技能使他们比从未演奏过任何乐器的人更具优势。演奏乐器的行为赋予所有演奏者一套通用的技能,这些技能在各种乐器中都很有用。这种跨领域(在我们的例子中是乐器)的泛化使得模型学习速度更快,而不是从零开始训练。
迁移学习和微调
让我们区分一下我们正在讨论的概念。长号演奏者不需要任何训练就可以演奏 tannerin。他已经知道如何做到这一点,只是他自己不知道。萨克斯管演奏者需要一些训练来微调他的技能以演奏 tannerin。用深度学习术语来说,长号演奏者使用的是现成的模型。这称为迁移学习。像我们的萨克斯管演奏者一样,需要更多时间学习的模型的训练称为微调。
当微调模型时,我们不需要训练所有部分。我们可以只训练表现不佳的部分。让我们以一个包含三个部分的计算机视觉模型为例:特征提取、特征增强和最终任务。在这种情况下,你可以使用相同的特征提取和特征增强,而无需任何重新训练。因此,我们专注于仅重新训练最终任务。
如果在微调最终任务后的结果不令人满意,我们仍然不需要重新训练整个特征提取部分。一个好的折衷方案是仅重新训练顶层的权重。在卷积网络中,层级越高,其特征就越能代表任务和数据集。换句话说,第一个卷积层中的特征更通用,而最后一层更具体。用我们的演奏者示例来说,这相当于不浪费时间向经验丰富的萨克斯管演奏者解释音乐理论,而是只教他如何在 tannerin 中改变音高。
关于迁移学习的考量
我们的例子也给了我们一个有趣的细微差别。特雷门琴太难演奏了,所以他们发明了一种更容易演奏但产生相同声音的乐器。输出几乎相同,但需要的训练时间少得多。对于计算机视觉,我们可能会首先进行对象检测以查看图像中狗的位置,然后构建一个分类器来告诉我们狗的品种,而不是尝试立即构建一个分类器。
最后,迁移学习并非通用的性能增强器。在我们的例子中,演奏一种乐器可能有助于我们学习另一种乐器,但也可能阻碍进步。一种乐器的模式和坏习惯可能会减慢另一种乐器的进步。如果这些坏习惯在演奏者内心根深蒂固,那么新手演奏者可能会在相同训练量的情况下超越新的演奏者。如果你的演奏者陷入了他们的坏习惯,那么可能是时候雇用新的演奏者了。
迁移学习和自训练
当没有足够的标记数据从头开始重新训练模型时,迁移学习尤其有效。使用我们的示例,我们可以认为,如果有足够的时间,一个只参加几节课的演奏者可以通过自己演奏乐器来学习,而无需教授的持续监督。在深度学习中,部分或全部自主学习称为自训练。它允许我们使用标记数据(课程)和未标记数据(演奏者自己练习)来训练模型以学习任务。
虽然我们不会在本节中讨论自训练的概念,但我们在此处提及它作为您的资源,因为当迁移学习不起作用且标记数据稀缺时,自训练可能会非常有帮助。这些概念也不是互斥的,一位经验丰富的演奏者可能只需要几节课就可以在一个新的乐器训练中变得自主,而无需监督,事实证明,我们的深度学习模型也是如此。
资源
要了解为什么迁移学习更便宜、更快且更环保,你可以查看 NLP 课程的第一部分。