学习微调的时候有一个疑惑:为什么要修改最后几层神经网络权值,而不是中间几层,前几层呢?
因为神经网络每一层的作用不同,越靠前的层提取的是越低级越局部的特征。
在预训练模型中,前面的层通常是通用特征提取器,学习到了图像的低级特征,例如边缘和纹理。而最后几层则是针对原始任务的特定分类器,学习到了高级特征,例如物体形状和类别。在Fine-tuning时,我们希望保留预训练模型的通用特征提取能力,只修改最后几层的权值,以适应新的任务。
通过修改最后几层神经网络权值,我们可以使模型更适应新的任务。由于新的任务可能与预训练任务有所不同,例如类别数量和类别分布的差异,我们需要调整输出层的结构和参数,以适应新的任务需求。同时,冻结部分层的参数可以加快Fine-tuning的速度,并降低过拟合的风险。
参考:https://blog.51cto.com/u_16175479/6650990
上述博客中也有具体的微调代码操作步骤