Hi,大家好,我是半亩花海。在上节说明了迁移学习的第三类方法:子空间学习之后,本文主要将介绍深度迁移学习**------** 最简单的深度迁移--Finetune**(微调)**。Finetune利用预训练网络针对新任务进行调整,避免了从头训练网络的高成本。文章阐述了Finetune的必要性:预训练网络具有强大的泛化能力,但需要针对特定任务进行调整。Finetune通过固定网络前层参数、微调后层参数,显著提升训练效率和模型性能。此外,Finetune还可用于特征提取,替代传统手工特征方法。实验证明,基于深度网络的特征提取在图像分类等任务上具有显著优势。
目录
[二、为什么需要 finetune?--以猫狗分类为例(预训练-微调)](#二、为什么需要 finetune?--以猫狗分类为例(预训练-微调))
[三、Finetune 的优势](#三、Finetune 的优势)
[四、Finetune 的扩展](#四、Finetune 的扩展)
[DeCAF 特征提取](#DeCAF 特征提取)
深度网络的 finetune 也许是最简单的深度网络迁移方法。Finetune,也叫微调、finetuning,是深度学习中的一个重要概念。简而言之,finetune 就是利用别人已经训练好的网络,针对自己的任务再进行调整。从这个意思上看,我们不难理解 finetune 是迁移学习的一部分。
一、为什么需要已经训练好的网络?
在实际的应用中,我们通常不会针对一个新任务,就去从头开始训练一个神经网络。这样的操作显然是非常耗时的。尤其是,我们的训练数据不可能像 ImageNet 那么大,可以训练出泛化能力足够强的深度神经网络。即使有如此之多的训练数据,我们从头开始训练,其代价也是不可承受的。
那么怎么办呢?迁移学习告诉我们,利用之前已经训练好的模型,将它很好地迁移到自己的任务上即可。
二、为什么需要 finetune?--以猫狗分类为例 (预训练-微调)
因为别人训练好的模型,可能并不是完全适用于我们自己的任务。可能别人的训练数据和我们的数据之间不服从同一个分布;可能别人的网络能做比我们的任务更多的事情;可能别人的网络比较复杂,我们的任务比较简单。
++举一个例子来说,假如我们想训练一个猫狗图像二分类 的神经网络,那么很有参考价值的就是在 CIFAR-100 上训练好的神经网络++ (预训练-微调)。但是 CIFAR-100 有 100 个类别,我们只需要 2 个类别。此时,就需要针对我们自己的任务,固定原始网络的相关层,修改网络的输出层, 以使结果更符合我们的需要。
下图展示了一个简单的 finetune 过程。从图中我们可以看到,我们采用的预训练好的网络非常复杂,如果直接拿来从头开始训练,则时间成本会非常高昂。我们可以将此网络进行改造,固定前面若干层的参数,只针对我们的任务,微调后面若干层。这样,网络训练速度会极大地加快,而且对提高我们任务的表现也具有很大的促进作用。
一个简单的 finetune 示意图
三、Finetune 的优势
Finetune 的优势是显然的,包括:
- 不需要针对新任务从头开始训练网络,节省了时间成本;
- 预训练好的模型通常都是在大数据集上进行的,无形中扩充了我们的训练数据,使得模型更鲁棒、泛化能力更好;
- Finetune 实现简单,使得我们只关注自己的任务即可。
四、Finetune 的扩展
在实际应用中,通常几乎没有人会针对自己的新任务从头开始训练一个神经网络。Finetune 是一个理想的选择。
Finetune 并不只是针对深度神经网络有促进作用,对传统的非深度学习也有很好的效果。例如,Finetune 对传统的人工提取特征方法就进行了很好的替代。我们可以使用深度网络对原始数据进行训练,依赖网络提取出更丰富更有表现力的特征。然后,将这些特征作为传统机器学习方法的输入。这样的好处是显然的:既避免了繁复的手工特征提取,又能自动地提取出更有表现力的特征。
DeCAF 特征提取:
比如,++图像领域的研究,一直是以 SIFT、SURF 等传统特征为依据++ 的,直到 2014 年,伯克利的研究人员提出了DeCAF 特征提取方法 [Donahue et al., 2014],直接使用深度卷积神经网络 进行特征提取。实验结果表明,该特征提取方法对比传统的图像特征,在精度上有着无可匹敌的优势。另外,也有研究人员用卷积神经网络提取的特征作为 SVM 分类器的输入 [Razavian et al., 2014],显著提升了图像分类的精度。
DeCAF, Deep Convolutional Activation Feature,是一种基于预训练深度卷积神经网络(CNN)的图像特征提取方法,主要用于将图像块转换为高维特征向量,以供后续分类或检测任务使用。该方法的核心思想是利用在大规模图像数据集(如ImageNet)上预训练好的深度CNN模型(如Decaf模型),将其作为通用的特征提取器,迁移到其他特定领域的小数据集任务中,从而避免从头开始训练模型。
五、参考资料
1. 王晋东《迁移学习简明手册》(PDF版) https://www.labxing.com/files/lab_publications/615-1533737180-LiEa0mQe.pdf#page=82&zoom=100,120,392
2. 《迁移学习简明手册》发布啦! https://zhuanlan.zhihu.com/p/35352154