一、基本概念
迁移学习(Transfer Learning) 是一种机器学习方法,旨在将从一个任务中学到的/已有的知识应用到另一个相关任务中。与传统的机器学习方法不同,迁移学习不需要从头开始训练模型,而是利用(迁移)已有知识来加速新任务的学习过程。换句话说,迁移学习放宽了传统机器学习中的两个基本假设,即训练数据和测试数据必须同分布,以及必须有足够数量的标注数据来训练模型,这使得它在处理数据稀缺和计算资源有限等问题时,具有显著优势。
二、常见策略
这里,笔者列举几个日常工作中遇到的迁移学习策略。在此之前,我们需要先了解下几个基本概念:
- 源域(Source Domain):源域是指迁移学习中知识的来源域,它包含了用于训练模型的初始数据和任务,通常具有丰富的标注数据。
- 目标域(Target Domain):目标域是指迁移学习中知识的应用域,它包含了需要迁移学习模型进行预测或分类的数据和任务,通常数据量较少,标注数据稀缺。
在迁移学习中,源域和目标域是两个关键概念,它们分别代表了知识迁移的起点和终点。在迁移学习中,源域和目标域之间的关系可以有多种形式:
- 相同特征空间和标签空间:源域和目标域具有相同的特征空间和标签空间,但数据分布不同,这种情况常见于跨领域迁移学习(Domain Adaptation),又称域适应。例如,在不同的天气条件下拍摄的交通标志图像数据集,源域(例如是晴天)和目标域(例如是雨天和阴天)的特征空间和标签空间相同,但数据分布不同。
- 相同特征空间,不同标签空间:源域和目标域具有相同的特征空间,但标签空间不同,常见于多任务学习(Multi-Task Learning)。例如,在图像分类任务中,源域的任务是分类动物图像,而目标域的任务是分类植物图像,但两者采用了相同结构的特征提取器。
- 不同特征空间和标签空间:源域和目标域具有不同的特征空间和标签空间。例如,在自然语言处理任务中,源域的任务是情感分析,而目标域的任务是机器翻译。
1、基于样本的迁移学习
基于样本的迁移学习毫无疑问重心在样本中。这里,我们可以采取两种策略:
(1) 样本加权(Instance Reweighting)
样本加权方法通过为源任务的数据样本分配权重 ,使得源任务的数据分布更接近目标任务的数据分布。这种场景下,我们同时使用源域和目标域的数据训练/微调模型,期间为每个样本都赋予一个学习权重,对于跟目标域数据分布相近的源域样本则赋予更高的权重。这里,权重可以设置为可动态调整的。此外,数据分布相近程度的衡量过程可以使用简单的机器学习分类器或者聚类模型,也可以通过计算向量相似度来实现。
(2) 样本选择(Instance Selection)
考虑一个分类场景,我们在数据集A上训练了一个模型Amodel,现在我们希望把Amodel直接应用在另一个数据集B中。虽然我们可以直接在数据集B上面再训练一个模型Bmodel,可如果数据集B是一个没有标签信息的数据呢?这时候,我们就可以采用样本选择方法。
样本选择方法的主要思路是从源任务的数据集中选择与目标任务最相关的样本 ,减少不相关样本的干扰。同样地,我们可以通过计算源任务样本与目标任务样本的相似度,选择相似度较高的源域样本。此外,我们还可以训练一个分类器来区分源任务和目标任务的样本,选择分类器难以区分的样本。样本选择方法和样本重加权方法的主要区别在于,样本选择方法只选择跟目标域样本相似的源域样本参与模型的训练/微调,而样本加权方法会使用所有的源域样本。 如果我们当前的目标域样本是无标签的数据,那么样本选择方式是不二之选,我们通过选出目标域和源域中的相似样本对/样本簇,为目标域的数据打上对应的源域标签。
要注意的是,基于样本的迁移学习首先应当在源域和目标域上的任务相同的情况下应用,如果在源域上训练的是一个分类模型,而目标域上训练的是一个回归模型那必然无法使用同一个模型架构了。另外,源域和目标域的样本特征维度应当保持相同,否则无法计算样本相似程度。因此,基于样本的迁移学习方法有着较为严格的应用限制,稍不留意训练出来的模型效果就会很差。
2、基于特征的迁移学习
基于特征的迁移学习方法旨在通过特征变换的方式,来减少源域和目标域之间的差距。一般可以采用以下两种方法:
(1) 特征变换(Feature Transformation)
假设我们现在希望用同一个分类模型来对两个不同来源的数据集进行分类。如果这两个数据集上的分类任务是相同的(例如都是二分类或者都是回归),那么即便数据集之间的差异很大,甚至连特征维度都完全不同,我们也可以通过特征变换的方法来实现迁移学习。例如我们可以使用主成分分析(PCA)对源任务和目标任务的数据特征进行降维,在提取主要特征的同时将两个域的特征维度统一,这样一来就可以使用一个模型来训练了。
(2) 特征对齐(Feature Alignment)
特征对齐的目的是通过对齐源任务和目标任务的特征分布,使得它们在特征空间中更加一致。例如我们可以通过最小化源任务和目标任务特征分布的最大均值差异,使得它们的特征分布更加一致,这就是最大均值差异(MMD)方法。
3、基于模型的迁移学习
基于模型的迁移学习方法应该是最常见也是最有效的一种方式了。这里主要介绍两种最广为人知的方法:
(1) 微调
**微调的基本思想是利用在大规模数据集(如ImageNet、COCO等)上预训练的模型作为初始模型,然后在目标任务的数据集上进行进一步训练(这里的训练规格相比起预训练规格要小很多)。**不同的是,在微调训练的过程中,往往会保留预训练模型的前几层参数不变,从而使得预训练模型不会丢失学习到的通用特征,而后面的一到两层模型参数参与训练并更新梯度,从而让模型学习到特定任务的特征。
例如在自然语言处理领域,我们使用在包括维基百科在内的大量文本信息(相当于源域)预训练一个BERT模型,并解冻该模型的最后一层,结合下游的文本分类或者回归任务(相当于在目标域数据上训练)进行微调训练,往往能够取得比常规神经网络好得多的效果。这是由于BERT模型在基于源域数据的预训练过程中学习到了大量有用的自然语言知识,从而使得它所生成的文本表示蕴含丰富的语义信息,为下游任务提供了有效特征。
(2) 知识蒸馏
知识蒸馏旨在通过训练一个较小的学生模型(student model)来模仿较大的教师模型(teacher model)的行为,从而将教师模型的知识迁移到学生模型中。模型蒸馏的基本思想是通过训练一个较小的学生模型,使其输出与预训练的教师模型的输出尽可能一致(教师模型的输出概率分布即为学生模型的训练目标),这样一来可以使得在不过多牺牲指标的前提下实现任务模型的压缩。一般来说,知识蒸馏中学生模型和教师模型之间的规模差异往往较大,教师模型可能具有几百万个参数,而学生模型的参数仅仅是教师模型的三分之一。因此,知识蒸馏也是一种及其常见的模型压缩策略。
三**、**总结
迁移学习的概念在笔者看来是非常广泛的,但凡涉及到数据源融合、模型微调的方法都可以归入迁移学习的范畴。但不论方法如何创新,迁移学习的目的永远都是利用已有的知识提高建模效率。在数据稀缺、标签信息不足、模型性能有限等情况下,不妨利用迁移学习的思维看看是否有什么已有的知识能够帮助我们解决这些问题。