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% 的准确率,显著优于非预训练模型。


相关推荐
孟健14 小时前
Karpathy 用 200 行纯 Python 从零实现 GPT:代码逐行解析
python
码路飞16 小时前
写了个 AI 聊天页面,被 5 种流式格式折腾了一整天 😭
javascript·python
曲幽18 小时前
FastAPI压力测试实战:Locust模拟真实用户并发及优化建议
python·fastapi·web·locust·asyncio·test·uvicorn·workers
敏编程1 天前
一天一个Python库:jsonschema - JSON 数据验证利器
python
前端付豪1 天前
LangChain记忆:通过Memory记住上次的对话细节
人工智能·python·langchain
databook1 天前
ManimCE v0.20.1 发布:LaTeX 渲染修复与动画稳定性提升
python·动效
花酒锄作田1 天前
使用 pkgutil 实现动态插件系统
python
前端付豪2 天前
LangChain链 写一篇完美推文?用SequencialChain链接不同的组件
人工智能·python·langchain
曲幽2 天前
FastAPI实战:打造本地文生图接口,ollama+diffusers让AI绘画更听话
python·fastapi·web·cors·diffusers·lcm·ollama·dreamshaper8·txt2img
老赵全栈实战2 天前
Pydantic配置管理最佳实践(一)
python