news 2026/6/24 23:19:15

【finetune】Full Fine-tuning vs Frozen Backbone:迁移学习中的参数调优实践

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【finetune】Full Fine-tuning vs Frozen Backbone:迁移学习中的参数调优实践

​ 在迁移学习(Transfer Learning)中,是否更新预训练模型的全部参数,往往直接决定了训练稳定性、收敛速度以及最终性能表现。

​ 实践中最常见的两种策略是Full Fine-tuning(全量微调)Frozen Backbone(冻结主干网络)

​ 本文将围绕参数配置与调优策略,系统对比这两种方法的核心差异,并给出可直接落地的工程实践建议。

一、两种策略概述

1.1 Full Fine-tuning(全量微调)

​ Full Fine-tuning 会对模型中的全部参数进行更新,包括预训练的特征提取层(Backbone)与任务相关的分类头(Head)。

# 所有参数都参与训练forparaminmodel.parameters():param.requires_grad=Trueoptimizer=torch.optim.SGD(model.parameters(),lr=0.01)
  • 核心特征:
    • 模型具有最大表达能力,可充分适配目标任务
    • 训练成本高(计算量、显存占用均较大)
    • 若参数设置不当,易出现预训练特征退化(catastrophic forgetting)
    • 更适合数据规模较大任务分布差异明显的场景

1.2 Frozen Backbone(冻结主干网络)

​ Frozen Backbone 仅更新分类头参数,预训练 Backbone 权重保持不变。

# 冻结 Backboneforparaminmodel.backbone.parameters():param.requires_grad=False# 只训练 Headforparaminmodel.head.parameters():param.requires_grad=True# 优化器只接收可训练参数optimizer=torch.optim.SGD(filter(lambdap:p.requires_grad,model.parameters()),lr=0.01)
  • 核心特征:
    • 训练速度快、显存占用低
    • 能最大程度保留预训练模型的泛化能力
    • 模型容量受限,性能上限依赖预训练特征质量
    • 适用于小数据集任务高度相似的场景

二、 核心参数对比

参数Full Fine-tuningFrozen Backbone原因分析
Learning Rate较小 (0.001 ∼ 0.01 0.001\sim0.010.0010.01)可稍大 (0.01 ∼ 0.1 0.01 \sim 0.10.010.1)Frozen 不用担心破坏预训练特征
Batch Size较小 (16 ∼ 32 16 \sim 321632)可较大 (32 ∼ 128 32 \sim 12832128)Frozen 显存占用低,可用更大 batch
Epochs较少 (5 ∼ 20 5 \sim 20520)较多 (10 ∼ 50 10 \sim 501050)Frozen 每轮更新参数少,需更多轮次
Weight Decay标准 (0.00005 ∼ 0.0001 0.00005 \sim 0.00010.000050.0001)较小 (0 ∼ 0.00005 0 \sim 0.0000500.00005)Frozen 参数少,过度正则会限制学习
Warmup推荐使用可选Full 需要 warmup 保护预训练特征

三、参数调优详解

3.1 Learning Rate(学习率)

​ 学习率是最关键的超参数,两种策略的设置逻辑完全不同。

(1) Full Fine-tuning:分层学习率是默认选择
# 推荐:分层学习率(Discriminative Learning Rates)optimizer=torch.optim.AdamW([{'params':model.backbone.parameters(),'lr':1e-5},# Backbone 用小学习率{'params':model.head.parameters(),'lr':1e-3}# Head 用大学习率],weight_decay=1e-4)
  • 要点:
    • Backbone 使用小学习率(1e-5 ~ 1e-4),避免破坏预训练特征
    • Head 使用较大学习率(1e-3 ~ 1e-2),快速适应新任务
    • 分层学习率是 Full Fine-tuning 的最佳实践
(2) Frozen Backbone:统一但相对更大的学习率
# 只训练 Head,可以使用相对较大的学习率optimizer=torch.optim.SGD(model.head.parameters(),lr=0.01,momentum=0.9)
  • 要点:
    • 学习率可以比 Full Fine-tuning 大 1~10 倍
    • 但不宜过大(如 0.1),否则会导致训练不稳定
    • 推荐范围:0.01 ~ 0.05
(3) 常见误区
# 错误示例:Frozen 时使用过大学习率optimizer=torch.optim.SGD(model.head.parameters(),lr=0.5)# 太大,容易震荡# 错误示例:Full Fine-tuning 全部用同一个大学习率optimizer=torch.optim.SGD(model.parameters(),lr=0.01)# 会破坏预训练特征

3.2 Batch Size(批次大小)效率与稳定性的权衡

(1) Full Fine-tuning
batch_size=32# 受显存限制,通常较小
  • 需要存储所有参数的梯度,显存占用大
  • 较小的 batch size 提供更多梯度更新,有助于模型适应新任务
  • 典型值:16 ~ 64
(2) Frozen Backbone
batch_size=64# 显存占用低,可以用更大 batch# 或者保持与 Full Fine-tuning 一致batch_size=32# 更多梯度更新次数,可能带来更好效果
  • 只计算 Head 梯度,显存占用大幅降低
  • 可以使用更大 batch size 加速训练
  • 但更小的 batch size 意味着更多更新次数,对只训练 Head 的场景可能更有利
  • 典型值:32 ~ 128
(3) 实践建议

​ 对于 Frozen Backbone,建议先与 Full Fine-tuning 保持一致的 batch size,确保对比公平,之后再根据需要调整。

3.3 训练轮数(Epochs)

  • Full Fine-tuning:每轮更新信息量大,通常较少轮次即可收敛

  • Frozen Backbone:参数更新受限,需要更长训练周期

  • 经验估计:
    Frozen Epochs ≈ Full Fine-tuning Epochs × ( 1.5 ∼ 3 ) \text{Frozen Epochs} \approx \text{Full Fine-tuning Epochs} \times (1.5 \sim 3)Frozen EpochsFull Fine-tuning Epochs×(1.53)

3.4 Weight Decay(权重衰减)

​ 正则化强度需区分策略。

(1) Full Fine-tuning
weight_decay=1e-4# 标准正则化强度
  • 数百万参数需要正则化防止过拟合
  • 1e-4 ~ 5e-4 是常用范围
  • AdamW 比 SGD + L2 正则化效果更好
(2) Frozen Backbone
weight_decay=5e-5# 较小的正则化强度# 或者weight_decay=0# 某些场景可以不用
  • Head 参数量少(通常只有几万到几十万)
  • 过强的正则化会限制 Head 的学习能力
  • 推荐使用较小值或不使用

3.5 Learning Rate Scheduler(学习率调度)

(1) Full Fine-tuning
# 推荐:带 Warmup 的 Cosine Annealingscheduler=torch.optim.lr_scheduler.CosineAnnealingWarmRestarts(optimizer,T_0=10,T_mult=2)# 或者使用 Warmup + Linear Decayfromtransformersimportget_linear_schedule_with_warmup scheduler=get_linear_schedule_with_warmup(optimizer,num_warmup_steps=100,num_training_steps=1000)
  • Warmup 的重要性:
    • 训练初期用小学习率,避免预训练特征被破坏
    • 逐渐增大到目标学习率
    • Full Fine-tuning 几乎必须使用 Warmup
(2) Frozen Backbone
# Cosine Annealing(可选 Warmup)scheduler=torch.optim.lr_scheduler.CosineAnnealingLR(optimizer,T_max=epochs)# 或者 Step Decayscheduler=torch.optim.lr_scheduler.StepLR(optimizer,step_size=5,gamma=0.5)
  • Warmup 不是必须的(不用担心破坏预训练特征)
  • 简单的调度策略通常就足够
  • 长训练周期建议使用 Cosine Annealing

四、 完整配置示例

4.1 Full Fine-tuning 配置

# ViT Full Fine-tuning on CIFAR-100config={"batch_size":32,"epochs":10,"optimizer":"AdamW","lr_backbone":1e-5,# Backbone 小学习率"lr_head":1e-3,# Head 大学习率"weight_decay":1e-4,"warmup_epochs":2,"scheduler":"cosine","label_smoothing":0.1,# 可选:标签平滑}# 分层学习率优化器optimizer=torch.optim.AdamW([{'params':model.patch_embed.parameters(),'lr':config['lr_backbone']},{'params':model.blocks.parameters(),'lr':config['lr_backbone']},{'params':model.norm.parameters(),'lr':config['lr_backbone']},{'params':model.head.parameters(),'lr':config['lr_head']}],weight_decay=config['weight_decay'])

4.2 Frozen Backbone 配置

# ViT Frozen Backbone on CIFAR-100config={"batch_size":32,"epochs":20,# 更多轮次"optimizer":"SGD","lr":0.01,# 统一学习率"momentum":0.9,"weight_decay":5e-5,# 较小的权重衰减"scheduler":"cosine",}# 冻结 Backboneforname,paraminmodel.named_parameters():if'head'notinname:param.requires_grad=False# 只优化 Headoptimizer=torch.optim.SGD(model.head.parameters(),lr=config['lr'],momentum=config['momentum'],weight_decay=config['weight_decay'])

五、策略选择决策树

​ 下图从数据规模任务相似度两个维度,总结了迁移学习中Full Fine-tuningFrozen Backbone的常见选择逻辑。

​ 在样本规模较小或目标任务与预训练任务高度相似的场景下,冻结 Backbone 通常能够在保留预训练特征泛化能力的同时,有效降低过拟合风险,并显著减少训练时间与显存开销。

​ 相反,当数据规模充足或任务分布与预训练数据存在明显差异时,全量微调可以释放模型的表达能力,使其学习到更具领域针对性的特征表示。

  • 实践提示:
    该决策树用于初始策略选择。在真实工程中,建议先采用 Frozen Backbone 作为基线方案,再根据验证集表现逐步解冻部分层或切换至 Full Fine-tuning。

六、常见问题与解决方案

Q1: Frozen Backbone 准确率比 Full Fine-tuning 低很多

  • 可能原因:

    1. 预训练特征与目标任务差异大
    2. 训练轮数不够
    3. 学习率设置不当
  • 解决方案:

    1. 尝试 Partial Fine-tuning:只冻结前几层,微调后几层
    2. 增加训练轮数
    3. 调整学习率(尝试 0.001 ~ 0.1 范围)

Q2: Full Fine-tuning 训练不稳定

  • 可能原因:

    1. 学习率过大
    2. 缺少 Warmup
    3. Batch size 过小导致梯度噪声大
  • 解决方案:

    • 降低学习率,使用分层学习率
    • 添加 Warmup 阶段
    • 使用梯度累积增大有效 batch size

Q3: 显存不足

  • 解决方案:
    • 使用 Frozen Backbone(显存占用降低约 60-70%)
    • 减小 batch size + 梯度累积
    • 使用混合精度训练(FP16)
    • 使用梯度检查点(Gradient Checkpointing)

七、总结

维度Full Fine-tuningFrozen Backbone
表达能力⭐⭐⭐⭐⭐⭐⭐⭐
稳定性要求
训练成本
适用数据规模中~大
调参难度
  • 黄金法则:
    1. 先用 Frozen Backbone 快速验证基线
    2. 效果不满意再尝试 Full Fine-tuning
    3. Full Fine-tuning 务必使用分层学习率 + Warmup
    4. Frozen Backbone 重点调整轮数和学习率

参考资料

  1. How transferable are features in deep neural networks? - Yosinski et al., 2014
  2. ULMFiT: Universal Language Model Fine-tuning - Howard & Ruder, 2018
  3. An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale - Dosovitskiy et al., 2020
  4. A ConvNet for the 2020s - Liu et al., 2022
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 17:45:23

Ollama躺赚实测:零门槛批量做电子书,每月稳入2.9万?真相藏不住了

一、全网都在卷AI搞钱,唯独没人注意这个“隐形金矿” 普通人搞被动收入,早已卷到白热化:有人熬夜剪短视频,月入几千熬垮身体;有人跟风做带货,囤货压钱血本无归;还有人钻研AI绘画,练了半个月连门槛都没摸到。但最近,国外一个匿名网友的分享,直接颠覆了很多人的认知—…

作者头像 李华
网站建设 2026/6/23 4:54:09

多功能智能客服系统源码,部署后即可实现7×24小时自动化客户服务

温馨提示:文末有资源获取方式在数字化转型浪潮中,客户服务的智能化与系统化是企业必须面对的关键课题。我们精心打造的这款智能客服系统源码,以其全面的功能矩阵与灵活的架构设计,为企业提供了一套从客户接触到内部管理的完整数字…

作者头像 李华
网站建设 2026/6/18 13:40:47

IBM AIX 关键漏洞CVE-2025-36250深度解析与应对指南

IBM AIX 关键漏洞CVE-2025-36250深度解析与应对指南 项目标题与描述 CVE-2025-36250:IBM AIX系统远程代码执行漏洞 本项目为CVE-2025-36250漏洞的技术分析文档,该漏洞影响IBM AIX操作系统,CVSS评分为10.0分(满分)&a…

作者头像 李华
网站建设 2026/6/23 19:22:41

从此告别拖延!抢手爆款的AI论文软件 —— 千笔·专业学术智能体

你是否曾为论文选题而烦恼?是否在深夜面对空白文档无从下笔?是否反复修改却总对表达不满意?论文写作不仅需要扎实的学术能力,更考验时间管理和写作效率。对于许多本科生来说,这是一段充满焦虑与挑战的旅程。而如今&…

作者头像 李华
网站建设 2026/6/17 1:29:36

AI大模型教程从零基础入门到精通!一文讲清,看这一篇就够了!

大语言模型技术主要包括: 模型预训练、适配微调、提示学习、知识增强和工具学习等。 1 预训练 高效预训练策略。其主要思路是采用不同的策略以更低成本实现对语言大模型的预训练。1)‌优化任务设计‌:在预训练阶段构建高效的优化目标,促使模型…

作者头像 李华
网站建设 2026/6/23 22:39:26

Linux 命令:dos2unix

概述 dos2unix 命令,它是跨平台文本换行符转换专用工具,核心作用是将Windows/DOS 格式的文本文件(换行符为 \r\n,即回车换行)转换为Linux/Unix 格式(换行符仅 \n)。 资料合集:https:…

作者头像 李华