本文主要是介绍关于迁移学习与fine-tune的关系(借鉴引用参考),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
——————————————————————————————————————
引用:https://www.zhihu.com/question/49534423
——————————————————————————————————————
假设有个新的数据集,需要做一下图片分类,这个数据集是关于Flowers的。问题是,数据集中flower的类别很少,数据集中的数据也不多,你发现从零训练开始训练CNN的效果很差,很容易过拟合。
怎么办呢?于是你想到了使用Transfer Learning,用别人已经训练好的Imagenet的模型来做。
做的方法有很多:
1.把Alexnet里卷积层最后一层输出的特征拿出来,然后直接用SVM分类。这是Transfer Learning,因为你用到了Alexnet中已经学到了的“知识”。
2.把Vggnet卷积层最后的输出拿出来,用贝叶斯分类器分类。思想基本同上。
3.甚至你可以把Alexnet、Vggnet的输出拿出来进行组合,自己设计一个分类器分类。这个过程中你不仅用了Alexnet的“知识”,也用了Vggnet的“知识”。
4.最后,你也可以直接使用fine-tune这种方法,在Alexnet的基础上,重新加上全连接层,再去训练网络。
Transfer Learning关心的问题是:什么是“知识”以及如何更好地运用之前得到的“知识”。
这可以有很多方法和手段。
而fine-tune只是其中的一种手段。
因此,fine-tune属于迁移学习;
Transfer learning可以看成是一套完整的体系,是一种处理流程目的;
是为了不抛弃从之前数据里得到的有用信息,也是为了应对新进来的大量数据的缺少标签或者由于数据更新而导致的标签变异情况;
至于说Fine-tune,在深度学习里面,这仅仅是一个处理手段,之所以现在大量采用fine-tune,是因为有很多人用实验证实了:单纯从自己的训练样本训练的model,效果没有fine-tune的好学术界的风气本就如此,一个被大家证实的行之有效的方法会在短时间内大量被采用。
所以很多人在大数据下面先按照标准参数训练一个模型,比如在imagenet下面训练好一个这个模型中,那些卷积层的滤波器,其实已经具备了一些初始的形状信息了,有很强的泛用性,比起你自己单独训练,随机初始化一大堆滤波器效果更好。然后在那些基于imagenet的滤波器的基础上,你再进行自己的一些梯度下降的优化,收敛的方向以及准确性理论上就会更靠谱一些。
这篇关于关于迁移学习与fine-tune的关系(借鉴引用参考)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!