微调

微调(Fine-Tuning)是迁移学习中最常用、最直接的方法。它从一个在大规模数据上预训练好的模型出发,在目标任务的小规模标注数据上继续训练,使模型适应目标任务的特性。

核心思想

预训练模型已经在通用任务上学习到了丰富的特征表示——例如图像分类中的边缘、纹理、形状特征,或自然语言处理中的语法、语义知识。微调的核心假设是这些通用知识对目标任务同样有用,只需要少量的针对性调整即可适配。

微调策略

根据目标任务与源任务的差异程度以及目标数据量的大小,可以采用不同的微调策略:

1. 全模型微调

将预训练模型的所有参数在目标数据上继续训练。这种方式适合目标数据量较大、或者目标任务与预训练任务差异较大的情况。全模型微调可以最大限度地适配目标任务,但计算成本较高,且在小数据集上容易过拟合。

2. 参数冻结微调

冻结预训练模型的部分层,只微调靠近输出层的少量层。通常底层(编码器层)捕获的是通用特征,这些特征在不同任务间共享度较高,因此可以冻结;高层(分类器层)则与具体任务高度相关,需要重新训练。

3. 逐层微调(Layer-wise Fine-Tuning)

自底向上逐层解冻模型参数,每解冻一层就在目标数据上训练若干个 epoch,直至所有层都被解冻或性能不再提升。这种方法在目标数据量有限时可以有效控制过拟合风险。

4. 线性探测 + 微调(Linear Probing then Fine-Tuning)

先冻结所有预训练参数,仅在顶层训练一个线性分类器(线性探测),待分类器收敛后再解冻所有参数进行全模型微调。这种方法可以避免在随机初始化的分类器反向传播时破坏预训练特征的稳定性。

典型应用

计算机视觉

在 ImageNet 上预训练的 CNN 模型(如 ResNet、VGG)被广泛用于各种下游视觉任务,如医学图像分析、目标检测、语义分割等。通常做法是保留预训练的卷积基,替换最后的全连接层以适应新任务的类别数。

自然语言处理

BERT、GPT 等预训练语言模型在大量无标注文本上预训练后,通过微调适配各类 NLP 任务(文本分类、命名实体识别、问答系统等)。在 NLP 领域,微调已成为标准范式。

微调的注意事项

  • 学习率选择:微调通常使用比从头训练更小的学习率(通常为 量级),以避免破坏预训练特征的稳定性。
  • 过拟合风险:当目标数据量远小于预训练数据量时,微调容易导致过拟合,需要配合正则化、早停、数据增强等手段。
  • 灾难性遗忘:微调过程中,模型可能逐渐遗忘预训练阶段学到的通用知识,在迁移学习的长期微调中需要特别关注。

链接到