假设你要处理一个新数据集,让你做图片分类,这个数据集是关于Flowers的,问题是,数据集中flower的类别很少,数据集中的数据也不多,你发现从零开始训练CNN的效果很差,很容易过拟合,怎么办呢,于是你想到了使用Transfer Learning,用别人已经训练好的Imagenet的模型来做。
做的方法有很多:
- 把Alexnet里卷积层最后一层输出的特征拿出来,然后直接用SVM分类。这是Transfer Learning,因为你用到了Alexnet中已经学到了的“知识”
- 把VGG net卷积层最后的输出拿出来,用贝叶斯分类器分类,思想基本同上。
- 甚至你可以把Alexnet,VGGnet的输出拿出来进行组合,自己设计一个分类器分类。这个过程中你不仅用了Alexnet的“知识”,也可以用VGGnet的“知识”
- 最后,你也可以使用fine-tune这种方法,在Alexnet的基础上,重新加上全连接层,再去训练网络。
综上,Transfer Learning关心的问题是:什么是“知识”以及如何更好的运用之前得到的“知识”。这可以有很多方法和手段,而fine-tune只是其中的一种手段。