迁移学习介绍

1. 什么是迁移学习

【个人理解】:迁移学习是一种从源领域学习知识并迁移用于目标领域,来提升目标领域任务效果的机器学习技术。
【百度百科】:迁移学习是一种机器学习方法,就是把为任务 A 开发的模型作为初始点,重新使用在为任务 B 开发模型过程中的方法。
数学表示如下图:

借用牛顿的话,迁移学习就是站在巨人的肩膀上

2. 传统机器学习 VS 迁移学习

传统机器学习都隐含2个基本假设: 数据有相同的特征空间,且数据有相同的分布。这在现实场景中往往难以满足,原因是满足上述两种假设的大量数据难以获取,尤其是带标注的数据。
顺带一提:传统机器学习根据训练数据是否带标签可分为:监督学习、无监督学习、(或有:半监督学习, 是个小众领域,偏向于学术界)。
监督学习需要大量的标注数据,而这部分数据在现实场景中是十分难得的,尤其是在一些特别的业务领域更是成本高昂,难以获取大量。无监督学习的算法目前交少,关键是当带标注样本和不带标注样本数量一样时,监督学习建模效果更好。
而迁移学习的提出最初是建立于用源领域大量的标注数据训练模型,并将知识模型学习到的知识迁移应用于目标领域,来帮助目标领域在数据量有限的情况下提升任务效果。学习过程可参考下图:

  • 举个栗子
  • 场景A: 一个人从直接学习骑摩托车,为传统机器学习
  • 场景B: 该人先学习骑自行车,再学习骑摩托车,为迁移学习。 因为任务A中的骑摩托车和任务B中的骑自行车在掌握平衡时用到的知识是相似的。

3. 迁移学习的分类

  • 根据场景和任务的相关性分
    微众银行的杨强教授,早在2007年的一篇关于Transfer Learning的综述中就详细介绍了机器学习领域迁移学习的分类,根据学习环境不同,分为归纳迁移学习(Inductive TL)、无监督迁移学习和直推式迁移学习(Transductive TL),具体如下图:

    其中归纳迁移学习(Inductive TL) 根据源领域和目标领域不同可继续分为:多任务学习和自学习,如下图所示:

    Transfer Learning 分类全局概览如下图:

  • 根据迁移方法分
    若用不同的迁移方法可将迁移学习分为:基于实例的迁移、基于特征表示的迁移、基于参数的迁移和基于知识的迁移:

  • 不同场景下的不同迁移方法比较:

  • Fine-tine(微调 或作 精调)

  1. 近几年深度学习大火,但由于子领域的数据量受限,任务性能有待进一步提高等因素,依然有必要把传统机器学习中的迁移学习应用于深度学习领域,因此Fine-tune诞生了。
  2. Fine-tune是用大量的训练数据训练一个通用的基准模型,再将其应用于自己的子任务中,使用子任务数据集再在已经训练好的模型的情况下继续训练,训练时通常会先改动模型的输出,以达到在子任务领域训练加速和性能提升。
  3. Fine-tune时可以对全模型参数训练,也可以训练输出层参数,也可以冻结模型指定部分,对其余部分进行训练。
  • 多任务学习(multi-task learning)

多任务学习无论是在机器学习领域还是在深度学习领域都有较广阔的实际落地经验,如无人驾驶训练、语音识别、文本分类、机器翻译等都有工业级应用,其过程如下图:

  • 零样本学习(Zero-shot learning)
    零样本学习是在训练集上使用有标签数据进行训练,在测试集上使用无标签数据测试的学习过程。由于测试时的数据是没有见过的,所以在模型训练时,会对带标签数据进行特征拆分,而测试时会根据测试集数据的特征来进行分类匹配并根据特征匹配结果到已建立的数据库中查询来输出对未见过样本的分类。(会额外维护一个数据库来记录不属于训练集样本的特征矩阵)

4. 近几年其他学习方法

从传统机器学习中的迁移学习到深度学习的Fine-tune,以及在BERT中将迁移学习成功的应用,使得Transfer Learning已经走上了巅峰,但是依然暴露一些问题亟待解决,
因此后面有出现了Zero shot Learning(零样本学习)、小样本学习、域对抗学习(Domain-adversarial training), 有机会再进一步详细描述。

参考资料

posted @ 2020-08-12 13:14  Joshua王子  阅读(1928)  评论(0编辑  收藏  举报