迁移学习和微调的区别
- 什么是迁移学习?
即一种学习对另一种学习的影响,它广泛地存在于知识、技能、态度和行为规范的学习中。任何一种学习都要受到学习者已有知识经验、技能、态度等的影响,只要有学习,就有迁移。迁移是学习的继续和巩固,又是提高和深化学习的条件,学习与迁移不可分割。
换句话说,对于一个具体的深度学习训练任务,如:人脸识别,训练数据当然是用人脸库啦,你会觉得是废话,但是,呵呵,要是你的人脸库不够大怎么办?要是你没钱买数据怎么办?而且,你又没有足够的时间收集一个足够大的人脸库怎么办?这个时候,你可以试试迁移学习(transfer learning),用别人已经训练好的Imagenet的模型来做。
你可以将已经训练好了的Alexnet、googlenet、vggnet等网络中的某些层直接抽出来,化为己用。具体的来说,你可以将Alexnet中的最一层特征层抽出来,然后自己设计一个分类器或者直接用SVM分类器,分类。当然你也可以抽取多个网络中的网络层,然后进行融合。总而言之,就是将已经学到了的“知识”化为己用。在最后,你要用自己的数据集进行一下微调(fine-tune)。这就好比,使用“吸星大法”吸收了别人的功力之后,好歹也得打坐盘膝,调理一下不是? - 什么是微调(fine-tune)?
看到别人一个很好的模型,虽然针对的具体问题不一样,但是也想试试看,看能不能得到很好的效果,而且自己的数据也不多,怎么办?没关系,把别人现成的训练好了的模型拿过来,换成自己的数据,调整一下参数,在训练一遍,这就是微调(fine-tune)。 - 总结
迁移学习更像是“吸星大法”,将别人修炼的功力直接吸过来,但是因为原先针对的具体任务有所不同,有可能走火入魔?这时候,就需要盘膝打坐调理一番,疏通自己的经脉,努力使自己的功力更上一层楼(也有可能一点提升也没有,否则就不用研究迁移学习啦)。从某意义上来说,微调应该是迁移学习中的一部分。