CNN 迁移学习怎么做?
简化版
CNN 迁移学习是把大数据上学到的视觉表示迁到目标任务:替换任务 Head,先做固定特征基线,再按数据量和域差异逐层微调。成功的关键不只是加载权重,还包括输入预处理一致、BN 策略、分层学习率和无泄漏评估。
详细版
-
选择与目标图像和任务接近的预训练来源,不能只按模型榜单排名。
-
复用主干、替换分类或检测 Head,并匹配输入通道和类别数。
-
沿用预训练所需的颜色空间、归一化和分辨率,否则权重看到的分布会错位。
-
建立线性探测、部分微调和全量微调三档基线。
-
按来源分组划分数据,并比较目标域切片,确认提升不是数据重复造成。
完整版教学
一、迁移复用的是表示而非类别答案
大规模预训练让网络获得边缘、纹理、形状和组合模式。
目标数据无需重新发现全部视觉规律,只需调整如何组合这些模式以及如何映射到新标签。
迁移效果取决于源域与目标域的相似性,也取决于数据规模。
自然图像到宠物分类通常容易,RGB 自然图到三维医学扫描则需更谨慎的结构与预处理适配。
二、底层机制与关键公式
线性探测冻结主干,只训练线性 Head,用来衡量现成特征的可分性。
部分微调允许高层表征改变,全量微调则联合优化所有权重。
预处理是模型的一部分:ImageNet 权重若要求 RGB 和特定 mean/std,输入 BGR 或 0~255 未缩放会造成明显分布偏移。
加载成功并不代表推理链路正确。
target risk depends on:
- source-target representation distance
- target sample size
- number of trainable parameters
smaller data + closer domain -> freeze more
三、带数字的推演
目标集 5000 张、10 类。
只训 Head 得到 84%,解冻最后 stage 得到 89%,全量微调为 88% 且方差更大;此时部分微调是更好的选择,而不是默认全量更新。
四、方案对比与选择
| 方案/场景 | 机制或优势 | 主要代价 |
|---|---|---|
| 监督预训练 | 标签语义接近 | 成熟稳定,依赖标注 |
| 自监督预训练 | 大量无标注同域数据 | 领域迁移常更灵活 |
| 固定特征 | 快速基线/极小数据 | 适配能力有限 |
五、实际执行流程
选择源权重 -> 对齐输入预处理 -> 替换任务 Head
-> 线性探测 -> 部分微调 -> 必要时全量微调 -> 独立测试集确认
六、边界条件与工程代价
负迁移发生在源任务先验与目标任务冲突时,表现可能不如从零训练。
应保留随机初始化基线,而不是把预训练当作永远有效。
类别数变化只要求替换最后层,但任务从分类变检测/分割时还需 Neck、Head 和标注匹配;主干可复用不等于整个网络可直接使用。
记忆钩子:迁移链路可记为“选源—对输入—换头—探测—微调—独立验证”。
七、常见误区与追问
-
误区:加载预训练权重就完成了迁移学习。 还需替换 Head、对齐预处理并选择冻结或微调策略。
-
追问:如何判断源域是否合适? 比较图像统计、语义和任务结构,并以目标验证集消融确认。
-
误区:预训练模型一定优于随机初始化。 域冲突可能产生负迁移,所以必须保留从零基线。
-
追问:线性探测有什么价值? 它低成本衡量固定表示是否已能分开目标类别。
-
追问:为何要对齐 mean/std? 第一层接收到的数值尺度改变会破坏预训练滤波器的工作区间。
八、加强记忆
迁移链路可记为“选源—对输入—换头—探测—微调—独立验证”。
其中输入预处理和无泄漏划分常被忽略,却与学习率和解冻层数同样决定结果。