一、什么是迁移学习?
复杂的深度学习模型有数百万个参数(权重),从头训练这些模型通常需要大量数据和计算资源。迁移学习会在新模型中重复使用已在相关任务上训练过的模型的一部分,可以显著降低这些需求。
深度学习中在计算机视觉任务和自然语言处理任务中将预训练的模型作为新模型的起点是一种常用的方法,通常这些预训练的模型在开发神经网络的时候已经消耗了巨大的时间资源和计算资源,迁移学习可以将已习得的强大技能迁移到相关的的问题上。
例如,本部分中的下一个教程将向您展示如何自行构建图像识别器来利用一个已训练的模型识别图像中的 1000 种不同类型的物体。您可以利用预训练模型中的已有知识来检测您自己的图像类,训练数据会比原始模型所需的数据少得多。
在快速开发新模型,以及在浏览器和移动设备等资源受限环境中自定义模型时,这样做非常有用。
进行迁移学习时,我们通常不调整原始模型的权重,而是移除最后一层,并基于截断模型的输出训练一个新的(通常相当浅的)模型。这就是您将在本部分的教程中看到的技术。
(来源:https://www.tensorflow.org/js/tutorials/transfer/what_is_transfer_learning)
【补充1】虽然大多数机器学习算法都是为了解决单个任务而设计的,但是促进迁移学习的算法的开发是机器学习社区持续关注的话题。 迁移学习对人类来说很常见,例如,我们可能会发现学习识别苹果可能有助于识别梨,或者学习弹奏电子琴可能有助于学习钢琴。
找到目标问题的相似性,迁移学习任务就是从相似性出发,将旧领域(domain)学习过的模型应用在新领域上。
【补充2】
【补充3】迁移学习提出的初衷不是为了模型训练,而是节省人工标注样本的时间,让模型可以通过已有的标记数据(source domain data)向未标记数据(target domain data)迁移,这样可以减低机器学习对 数据集样本量的需求
有两个概念,已有的知识叫做源域(source domain),要学习的知识叫做目标域(target domain),迁移学习就是建立源域到目标域的映射关系。
二、方法
开发模型的方法
- 选择源任务。你必须选择一个具有丰富数据的相关的预测建模问题,原任务和目标任务的输入数据、输出数据以及从输入数据和输出数据之间的映射中学到的概念之间有某种关系,
- 开发源模型。然后,你必须为第一个任务开发一个精巧的模型。这个模型一定要比普通的模型更好,以保证一些特征学习可以被执行。
- 重用模型。然后,适用于源任务的模型可以被作为目标任务的学习起点。这可能将会涉及到全部或者部分使用第一个模型,这依赖于所用的建模技术。
- 调整模型。模型可以在目标数据集中的输入-输出对上选择性地进行微调,以让它适应目标任务。
预训练模型方法
- 选择源模型。一个预训练的源模型是从可用模型中挑选出来的。很多研究机构都发布了基于超大数据集的模型,这些都可以作为源模型的备选者。
- 重用模型。选择的预训练模型可以作为用于第二个任务的模型的学习起点。这可能涉及到全部或者部分使用与训练模型,取决于所用的模型训练技术。
- 调整模型。模型可以在目标数据集中的输入-输出对上选择性地进行微调,以让它适应目标任务。
第二种类型的迁移学习在深度学习领域比较常用。
三、迁移学习的分类
按照学习方式可以分为四类:
- 基于样本:对不同的样本给予不同的权重,样本越相似,权重越高。高权重样本优先级更高,完成迁移。
- 基于特征:将目标域和源域映射到同一空间,最小化二者对应点的距离,完成迁移
- 基于模型:把模型和样本结合起来,通过调整模型参数完成迁移
- 基于关系:发掘相似场景的关系,两组中如果有一组源域和目标域的关系可确定,可以迁移到另一组上
这四类更多的是思想上的分类,不是很具体,具体的使用方法有两种:
1.微调(Finetune):将别人训练好的网络模型修改后用于自己的。用预训练的网络权值代替随机初始化权值
2.混合特征提取(Fixed Feature Extractor):将预训练网络作为新任务特征提取,也就是新模型的前几层用预训练网络做替换
四、迁移学习的应用场景
迁移学习没有具体的行业场景,满足条件就可以使用。这里的条件就是:源域和目标域要达到一定的相似度;并且,如果有两个任务A和B的话,希望用A迁移到B,那么A需要有海量的数据资源来训练好,才能给B提供保障。
目前为止,迁移学习应用到了其他领域,比如迁移学习+联邦学习=联邦迁移学习,迁移学习+强化学习=强化迁移学习,但具体的细节暂时还没有了解。
参考
https://www.tensorflow.org/js/tutorials/transfer/what_is_transfer_learning
https://blog.csdn.net/sikh_0529/article/details/126864397
https://baike.baidu.com/item/%E8%BF%81%E7%A7%BB%E5%AD%A6%E4%B9%A0/22768151?fr=aladdin
https://www.zhihu.com/question/41979241
https://blog.csdn.net/gls_nuaa/article/details/126423162