DAY49 预训练模型

目录

[1. 预训练的概念 (Concept of Pre-training)](#1. 预训练的概念 (Concept of Pre-training))

[2. 常见的分类预训练模型 (Common Models)](#2. 常见的分类预训练模型 (Common Models))

[3. 图像预训练模型的发展史 (Evolution History)](#3. 图像预训练模型的发展史 (Evolution History))

[4. 预训练的策略 (Pre-training Strategies)](#4. 预训练的策略 (Pre-training Strategies))

[5. 代码实战:ResNet18 适配 CIFAR-10](#5. 代码实战:ResNet18 适配 CIFAR-10)



1. 预训练的概念 (Concept of Pre-training)

  • 核心定义 :预训练是指利用在类似任务或大规模数据集上训练好的模型参数来初始化自己的模型,而不是从零开始(随机初始化)。这种思想被称为迁移学习

  • 解决的问题

    1. 收敛速度:好的初始值能大幅减少训练轮数。

    2. 避免局部最优:防止模型在训练初期陷入较差的局部最优解。

  • 任务划分 :预训练的过程称为上游任务 ,而在特定数据集上调整参数的过程称为微调(Fine-tuning)下游任务

  • 数据要求:通常要求在大规模数据集(如 ImageNet)上训练,因为只有海量数据才能支撑模型学习到通用的视觉特征。

2. 常见的分类预训练模型 (Common Models)

根据 notebook 的整理,主流预训练模型分为三类:

  • CNN架构

    • VGGNet:结构简洁,由纯卷积堆叠而成,参数量巨大。

    • ResNet:引入残差连接解决深度网络中的梯度消失问题,是目前最常用的基准模型。

    • MobileNet:轻量级设计,采用深度可分离卷积,适合移动端部署。

    • EfficientNet:通过复合缩放自动寻找最优配置,准确率领先。

  • Transformer类 :如 ViTSwin Transformer,在处理大尺寸图像时表现优异,通常需要对图像进行上采样或调整 Patch 大小。

  • 自监督模型 :如 MoCo v3BEiT,无需人工标注,适合数据稀缺的场景。

3. 图像预训练模型的发展史 (Evolution History)

  • 早期探索(1990s) :以 LeNet-5 为代表,验证了 CNN 的可行性。

  • 深度学习复兴(2012-2015)AlexNet 开启了 GPU 训练时代;VGG 加深了网络;GoogLeNet 引入了 Inception 多分支结构。

  • 超深网络时代(2015年后)ResNet 解决了网络退化问题,使层数突破 100 层;后续模型转向效率优化 (MobileNet)、特征复用 (DenseNet)和自动化设计(EfficientNet)。

4. 预训练的策略 (Pre-training Strategies)

实现迁移学习通常需要遵循以下三个要点:

  1. 加载模型与权重:直接复用固定的模型结构及其训练好的参数。

  2. 适配输入与输出

    • Resize:调整图像尺寸以适配模型要求。

    • 修改 Head:将最后的全连接层(FC)修改为符合下游任务类别数(如 CIFAR-10 的 10 类)。

  3. 阶段式训练

    • 冻结阶段 :初期先锁住 Backbone(骨干网络),只训练新修改的 Head,防止随机初始化的权重破坏预训练的特征提取能力。

    • 解冻阶段:训练 5-10 个 epoch 后解冻所有层,进行全局微调。

5. 代码实战:ResNet18 适配 CIFAR-10

Notebook 通过 PyTorch 展示了完整的实战流程:

  • 模型构建 :使用 models.resnet18(pretrained=True) 加载权重,并将 model.fc 修改为输出 10 维。

  • 冻结控制 :通过遍历 model.named_parameters(),将除 'fc' 层外的参数 requires_grad 设为 False

  • 训练调度 :定义了 train_with_freeze_schedule 函数,实现在 freeze_epochs 之后自动解冻参数并降低学习率进行精细调优。

  • 最终效果 :通过预训练模型,在 CIFAR-10 上仅微调 40 轮即可达到约 86.30% 的准确率,显著优于非预训练模型。


相关推荐
荣码5 小时前
GraphRAG:普通RAG只能回答"点"的问题,我踩了4个坑才搞懂
java·python
金銀銅鐵16 小时前
[Python] 基于欧几里得算法,实现分数约分计算器
python·数学
Lyn_Li18 小时前
Kaggle Top 5 | 198只股票、200条数据的金融预测——BattleFin高分方案从零复现
python·kaggle·比赛复盘·金融预测
小九九的爸爸1 天前
前端想要入门Agent开发,要具备哪些Python基础?
python·agent·ai编程
阿耶同学1 天前
手把手教你用 LangGraph 搭建三层嵌套 Agent 架构
python·程序员
花酒锄作田2 天前
Pydantic校验配置文件
python
hboot2 天前
AI工程师第四课 - 深度学习入门
pytorch·python·神经网络
ZhengEnCi2 天前
P2M-Matplotlib折线图完全指南-从数据可视化到趋势分析的Python绘图利器
python·matlab·数据可视化
ZhengEnCi2 天前
P2L-Matplotlib饼图完全指南-从数据可视化到图表定制的Python绘图利器
python·matlab
曲幽2 天前
你的REST接口还在“过度投喂”数据吗?——FastAPI + GraphQL实战避坑指南
python·fastapi·web·graphql·route·cors·rest·strawberry