1. 基本概念

Fine Tuning(微调) 是迁移学习中的一种常用技术,通过调整预训练模型参数使其适应新任务。核心思想是复用在大规模数据集(如ImageNet)上训练得到的通用特征,并针对特定任务进行优化。

2. 为什么需要Fine Tuning

  • 数据不足:目标领域数据量较少时,直接训练模型容易过拟合。

  • 训练成本高:避免从头训练大型模型(如ResNet、BERT)。

  • 特征复用:底层特征(边缘/纹理)具有通用性,仅需调整高层语义特征。

3. 常见方法

3.1 全网络微调

# PyTorch示例:加载预训练模型后全参数训练
model = torchvision.models.resnet18(pretrained=True)
optimizer = torch.optim.Adam(model.parameters(), lr=1e-4)

3.2 冻结部分层

# 冻结卷积层,仅训练全连接层
for param in model.parameters():
    param.requires_grad = False
model.fc = nn.Linear(512, num_classes)  # 替换最后一层

3.3 分层学习率

  • 底层(靠近输入层):较小学习率(如1e-5)

  • 顶层(靠近输出层):较大学习率(如1e-3)

4. 实施步骤

  1. 选择预训练模型:与目标任务领域相关(CV/NLP)

  2. 数据预处理:保持与原始模型相同的归一化方式

  3. 修改模型结构:替换最后的分类/回归层

  4. 设置训练策略

  • 初始阶段可先训练新添加的层

    • 逐步解冻部分底层进行微调
  1. 评估与迭代:通过验证集监控过拟合

5. 优缺点分析

优点缺点
训练效率高需要谨慎调整学习率
小数据表现优异可能破坏原有良好特征
适用于多种任务计算资源消耗仍较大

6. 典型应用场景

  • 计算机视觉:医学影像分类(使用ImageNet预训练模型)

  • 自然语言处理:领域特定文本分类(基于BERT微调)

  • 数据量 < 1k 的小样本学习任务

7. 注意事项

  • 学习率选择:通常比原始训练时小1-2个数量级。

  • 数据增强:尤其在小数据集场景下必需。

  • 早停法:密切关注验证集损失变化。

  • 正则化:适当使用Dropout/L2正则化。

8. 扩展技巧

  • 渐进式解冻:按层从顶到底逐步解冻参数。

  • 差分学习率:不同层组使用不同学习率。

  • SWA(随机权重平均):提升模型鲁棒性。