迁移学习(一) ——简述
迁移学习将会是引领下一次机器学习热潮的驱动力。 —吴恩达
一些相关资源:
计算机应用技术博士王晋东关于迁移学习的归纳整理:http://transferlearning.xyz
综述迁移学习 A Survey on Transfer Learning:https://www3.ntu.edu.sg/home/sinnopan/publications/TLsurvey_0822.pdf
迁移学习简明手册:http://jd92.wang/assets/files/transfer_learning_tutorial_wjd.pdf
起源
随着机器学习领域的发展,我们的神经网络设计变得越来越多,深度越来越深,训练越来越费时,导致了越来越大的工作量。但是我们如果能运用已有的资源,站在巨人的肩膀上,这将会大大提高我们学习的效率。
当我们在做一个CV的应用时,需要从头开始训练每个层的权重,或者说从随机初始化权重开始。但是如果我们下载其他计算机视觉研究者花费了很久做出来的开源的权重参数,把它当作一个很好的初始化用在你自己的神经网络上,我们就规避了许多不必要的优化过程,同时得到了更好的模型。
定义
- 迁移学习是什么
迁移学习是一种机器学习方法,就是把为任务A开发的模型作为初始点,重新使用在为任务B开发模型的过程中
- 迁移学习应用领域
迁移学习主要用于需要大量计算能力的计算机视觉和自然语言处理任务
- 迁移学习优势
迁移学习的主要优点是节省训练时间,在大多数情况下神经网络不需要大量数据就能得到更好的性能
- 迁移学习什么时候用
- 当前任务缺乏训练数据
- 已经存在近似领域内采用大量数据训练好的神经网络学习器
过程
因为迁移学习有很多细致的分支,将在后来一一尝试,在这里笔者只是简单介绍迁移学习的基础方式。
图中所述即为迁移学习的中心思想
迁移学习的两种策略:
- 微调(finetuning)——其中包括使用基础数据集上的预训练网络以及在目标数据集中训练所有层;
- 冻结与训练(freeze and train)——其中包括冻结除最后一层的所有层(权重不更新)并训练最后一层。也可以冻结前面几层,然后微调其余层;
使用场景:
-
小目标集,图像相似:当目标数据集与基础数据集相比较小,且图像相似时,建议采取冻结和训练,只训练最后一层。
-
大目标集,图像相似:建议使用微调。
-
小目标集,图像不同:建议采取冻结和训练,训练最后一层或最后几层。
-
大目标集,图像不同:建议使用微调。
例如上图,我们固定前面若干层的参数,只针对我们的任务微调后面若干层。这样,网络训练速度会极大地加快,而且对提高我们任务的表现也具有很大的促进作用。
在未来几周,笔者会更深入的研究迁移学习,以及尝试实操。