Fine-tuning vs. Transfer Learning

fine-tuning[1](微调)

pre-train后的网络,需要进一步训练(替换掉Input layer继续训练,可以选择fine-tune全部层还是部分层,通常只fine-tune后面的层,因为前面的提取的是通用特征generic features,如边缘检测,色彩检测,而后面的层提取的是与特定类别有关的特征)或者用来提feature(去掉最后的FC,剩下部分就可以用来提feature)
pre-train的模型可以去Model Zoo下载
不过一般fine-tune的lr更小,因为pre-train后的模型已经足够平滑,我们不希望太快扭曲distort它们(尤其是当随机初始化线性分类器来分类预训练模型提取的特征时。

新旧数据集是否相似 新数据集大小 结论
1 相似 因为数据量小,直接fine-tune容易过拟合。期待着高层特征相似,直接用pre-train网络用作特征提取器,train一个线性分类器
2 相似 fine-tune整个网络
3 不相似 最好不要fine-tune,既然不相似,高层特征也不能用。可以使用前面的层提出来的特征训练SVm分类器
4 不相似 可以重新训练,不过pre-train对收敛还是有好处的,因此也可以对整个网络进行fine-tune

Transfer Learning

摘自知乎回答
记得参考GMIS2017大会杨强的演讲:https://zhuanlan.zhihu.com/p/27175524

  1. 把Alexnet里卷积层最后一层输出的特征拿出来,然后直接用SVM分类。这是Transfer Learning,因为你用到了Alexnet中已经学到了的“知识”。
  2. 把Vggnet卷积层最后的输出拿出来,用贝叶斯分类器分类。思想基本同上。
  3. 甚至你可以把Alexnet、Vggnet的输出拿出来进行组合,自己设计一个分类器分类。这个过程中你不仅用了Alexnet的“知识”,也用了Vggnet的“知识”。
  4. 最后,你也可以直接使用fine-tune这种方法,在Alexnet的基础上,重新加上全连接层,再去训练网络。

Conclusion

综上,Transfer Learning关心的问题是:什么是“知识”以及如何更好地运用之前得到的“知识”。这可以有很多方法和手段。而fine-tune只是其中的一种手段。
也可以说,TransferLearning是个idea,而fine-tuning是一种trick


  1. csdn-fine-tune介绍(https://blog.csdn.net/weixin_42137700/article/details/82107208) ↩︎

posted @ 2021-12-13 22:32  小康要好好学习  阅读(201)  评论(0编辑  收藏  举报