举个例子,假设今天老板给你一个新的数据集,让你做一下图片分类,这个数据集是关于Flowers的。问题是,数据集中flower的类别很少,数据集中的数据也不多,你发现从零训练开始训练CNN的效果很差,很容易过拟合。怎么办呢,于是你想到了使用Transfer Learning,用别人已经训练好的Imagenet的模型来做。
做的方法有很多:- 把Alexnet里卷积层最后一层输出的特征拿出来,然后直接用SVM分类。这是Transfer Learning,因为你用到了Alexnet中已经学到了的“知识”。
- 把Vggnet卷积层最后的输出拿出来,用贝叶斯分类器分类。思想基本同上。
- 甚至你可以把Alexnet、Vggnet的输出拿出来进行组合,自己设计一个分类器分类。这个过程中你不仅用了Alexnet的“知识”,也用了Vggnet的“知识”。
- 最后,你也可以直接使用fine-tune这种方法,在Alexnet的基础上,重新加上全连接层,再去训练网络。
综上,Transfer Learning关心的问题是:什么是“知识”以及如何更好地运用之前得到的“知识”。这可以有很多方法和手段。而fine-tune只是其中的一种手段。
fine-tuning 是一个trick,在迁移学习中有所涉及,但不仅仅出现在迁移学习中,指对参数进行微调。
简单来说
Transfer learning可以看成是一套完整的体系,是一种处理流程
目的是为了不抛弃从之前数据里得到的有用信息,也是为了应对新进来的大量数据的缺少标签或者由于数据更新而导致的标签变异情况
至于说Fine-tune,在深度学习里面,这仅仅是一个处理手段
之所以现在大量采用fine-tune,是因为有很多人用实验证实了:单纯从自己的训练样本训练的model,效果没有fine-tune的好
学术界的风气本就如此,一个被大家证实的行之有效的方法会在短时间内大量被采用。
所以很多人在大数据下面先按照标准参数训练一个模型,比如在imagenet下面训练好一个
这个模型中,那些卷积层的滤波器,其实已经具备了一些初始的形状信息了,有很强的泛用性,比起你自己单独训练,随机初始化一大堆滤波器效果更好。
然后在那些基于imagenet的滤波器的基础上,你再进行自己的一些梯度下降的优化,收敛的方向以及准确性理论上就会更靠谱一些。
这个很难用理论去证明(因为如果你能理论证明了,那么相当于你就已经快要搞懂深度学习的本质了),但是有大量的实验来背书,所以主流学术界都是这么做
#####从范围上来说,Transfer learning是大于fine-tune的。
fine-tune只是实现手段,transfer learning却是一个很大的体系