王东
Published on 2025-02-26 / 6 Visits

【AI100问(82)】什么是迁移学习?

人在学习做一件事情的时候,首先想到的是尽量借鉴既有的经验和方法,这样我们可以学的更快更好。这一思路对于计算机也是一样的,把以前学习过的模型、流程、方案拿过来,想办法迁移到新任务上,这一学习方法就是迁移学习。

图1:迁移学习示意图

迁移学习的基础假设是不同学习任务之间不是独立的,因此,如何分辨花草的知识会帮助我们分辨虫鱼,如何学习地理的经验也会帮助我们学习历史。那么,对机器学习来说,可以迁移哪些知识呢?

最常见的是模型迁移,在一个任务上训练好一个模型,然后用另一个任务的数据进行微调。如图2所示,在一个较大数据上训练好一个神经网络,将这一网络复用到一个相关任务中作为初始模型,并基于新任务上的数据进行微调。一般来说,基于这种模型复用方法,只要在目标任务上有较小的数据,就可以得到性能较好的模型。

图2:基于神经网络复用的迁移学习[1]

还有一种常用的迁移学习方法称为“知识蒸馏”。这一方法并不直接复用模型,而是将原有模型作为一个参考,使得新模型的“行为方式”向这一参考模型靠拢。这有点儿像学生向老师学习,显然不能复用老师的头脑来获得知识, 但可以通过模仿老师的言行,把老师的知识一点点学到。图3给出一个知识蒸馏的例子,训练数据首先训练一个教师网络,在训练学生网络时,将参考教师网络的输出,使得学生网络具有相似的输出。知识蒸馏广泛用于模型压缩和无监督学习。

图3:知识蒸馏示意图[2]

 

此外,当前广泛应用的预训练方法也可以认为是迁移学习的一种。这一方法首先利用超大规模数据集和通用训练准则得到一个基础模型,再对该基础模型通过微调来处理目标任务。由于基础模型中包含了大量知识,通过微调可以很容易构造出合理的目标模型。图4给出一个自然语言处理领域里常用的预训练模型。首先构造基于神经网络的掩码语言模型,称为BERT(Bidirectional Encoder Representations from Transformers),这一模型通过微调可构造问答、命名实体识别、归纳或推理等多种任务的模型和系统。

图4:自然语言处理中的预训练模型[3]

 

最后,迁移学习还包括对学习方法的学习,即学习“如何解决某一任务”。这种定义在具体学习任务之上的学习称为“元学习”。如图5所示,首先定义若干个任务,每个任务是对图片进行三分类,如第一个任务是区分猫、羊和野猪,第二个任务是区分狗、鲨鱼和狮子...元学习的目的是用这些任务来获得如何解决某一任务的技巧,有了这些技巧之后,再来个新的分类任务(例如区分海豚、鸭子和鸡),就可以用这些技巧快速对新任务进行学习。

图5:元学习的例子[4]

 

总而言之,迁移学习是一种重要的模型训练方法,其背后的逻辑基础是世界法则的共通性。对人而言,“一理通百理融”是一种境界,对机器而言,迁移学习正是到达这一境界需要遵循的学习法则。

参考文献:

[1]https://www.youtube.com/watch?v=J53A4pCvCkc

[2]https://deepai.org/publication/squeezed-deep-6dof-object-detection-using-knowledge-distillation

[3]https://laptrinhx.com/transfer-learning-hands-on-bert-1687469194/

[4]https://www.borealisai.com/en/blog/tutorial-2-few-shot-learning-and-meta-learning-i/

By清华大学  王东