前言
尽管深度学习发展迅速,但并非每个人都拥有可以从头到尾训练一个模型的软硬件条件,包括数据以及软硬件资源。迁移学习(Transfer Learning)可以帮助我们解决这一问题。
一、什么是迁移学习
迁移学习就是利用数据、任务或模型之间的相似性,将在旧领域学习过或训练好的模型,应用于新领域的过程。迁移学习的关键点在于新的任务系统与旧的任务系统在数据、任务和模型之间相似性。
二、使用场景
当我们拥有海量的数据资源,机器学习系统可以很容易的从海量数据中学习到一个很稳健的模型,自然不需要迁移学习。但通常情况下,很少有人从头到尾训练一个深度卷积网络,一个是数据量问题;另一个是时间成本和计算资源的问题。
迁移学习的使用场景如下:假设有两个任务系统A和B,任务A拥有海量的数据资源且已经训练好,但任务B才是我们的目标任务,这种场景便是典型的额迁移学习的应用场景。
新的任务系统的旧的任务系统必须在数据、任务和模型等方面存在一定的相似性。
具备良好层次的深度卷积网络通常都是在最初的前几层学习到图像的统用特征(General Feature),但随着网络层次的加深,卷积网络便逐渐开始检测到图像的特定特征,两个任务系统的输入越相似,深度卷积网络检测到的通用特征就越多,迁移学习的效果就越好。
三、使用方法
迁移学习有两种使用方法。
第一种便是常说的Finetune,即微调,简单而言就是将别人训练好的网络拿来进行简单修改用于自己的学习任务中。在实际操作中,通常用预训练的网络权值对自己的网络权值进行初始化,以代替原先的随机初始化;
第二种是Fixed Feature Extractor,即将预训练的网络作为新任务的特征提取器,在实际操作中通常将网络的前几层进行冻结,只训练后面的全连接层,这是预训练网络便是一个特征提取器。