vision_notes
大模型(Large-scale Model)是指参数规模达到亿级甚至千亿级的深度学习模型。近年来,以 GPT 系列为代表的大语言模型(LLM)在自然语言处理领域取得了突破性进展,同时也推动了视觉领域大模型的发展。核心特点:海量参数:数十亿到数千亿参数,具备强大的表达能力和泛化能力大规模预训练:在海量无标注数据上进行自监督预训练涌现能力:当模型规模超过某个阈值后,会出现小模型不具备的能力(如思维链推
视觉大模型基础 & ViT 学习笔记
本文基于课程课件整理,涵盖大模型基础、ChatGPT核心技术、Vision Transformer (ViT)、CLIP、知识蒸馏与DINO等内容,适合作为视觉大模型入门的学习参考。
目录
一、大模型概述
大模型(Large-scale Model)是指参数规模达到亿级甚至千亿级的深度学习模型。近年来,以 GPT 系列为代表的大语言模型(LLM)在自然语言处理领域取得了突破性进展,同时也推动了视觉领域大模型的发展。
核心特点:
- 海量参数:数十亿到数千亿参数,具备强大的表达能力和泛化能力
- 大规模预训练:在海量无标注数据上进行自监督预训练
- 涌现能力:当模型规模超过某个阈值后,会出现小模型不具备的能力(如思维链推理、上下文学习等)
二、ChatGPT 核心技术
ChatGPT 的训练流程可以分为三个关键阶段:
2.1 无监督预训练(Unsupervised Pre-training)
无监督预训练技术分为两个阶段:
| 阶段 | 目标 | 方式 |
|---|---|---|
| 语言模型预训练 | 预测下一个单词的概率 | 自回归(Auto-Regressive) |
| 掩码语言模型预训练 | 预测被掩码位置的单词 | 自编码(Auto-Encoding) |
GPT 系列主要采用自回归的语言模型预训练方式,在大规模语料上学习语言的统计规律。
2.2 有监督微调(Supervised Fine-Tuning, SFT)
微调技术是 ChatGPT 实现对话生成的关键技术之一。通过在人工标注的高质量问答数据上进行有监督训练,使模型适应对话任务。
- 使用梯度下降优化算法,不断调整模型权重以最小化损失函数
- 让模型学会遵循指令、生成符合人类偏好的回答
2.3 奖励模型(Reward Model, RM)
奖励模型的目标是评估模型输出在人类看来是否表现良好:
- 输入:
[提示(prompt), 模型生成的文本] - 输出:一个标量分数,表示文本质量
训练数据来源:
- Anthropic:主要来自 Amazon Mechanical Turk 上的聊天工具
- OpenAI:主要来自调用 GPT API 的用户数据
2.4 PPO 强化学习(Proximal Policy Optimization)
通过强化学习进一步优化模型:
- 从预先收集的数据中采样 prompt
- 同时输入初始语言模型和当前训练中的语言模型(policy),得到输出
y1,y2 - 用奖励模型 RM 对
y1,y2打分,判断优劣 - 使用打分差值作为训练信号,通过 PPO 算法更新模型参数
这一阶段让模型能够生成更符合人类价值观和偏好的回答,即 RLHF(Reinforcement Learning from Human Feedback)。
三、多模态大模型
多模态大模型(Multimodal LLM)是指能够同时理解和生成多种模态数据(文本、图像、音频、视频等)的大模型。
代表模型:
- GPT-4V / GPT-4o:OpenAI 的多模态旗舰模型
- Gemini:Google 的原生多模态模型
- LLaVA:开源视觉语言模型,将视觉编码器与大语言模型结合
- Qwen-VL:阿里的通义千问视觉模型
核心思路:
将图像通过视觉编码器(如 ViT、CLIP 视觉分支)转化为特征向量,再通过投影层对齐到语言模型的嵌入空间,实现图文联合理解。
四、Vision Transformer (ViT) 详解
ViT 是将 Transformer 架构从 NLP 迁移到计算机视觉领域的开创性工作(论文:An Image is Worth 16x16 Words)。
4.1 整体架构
ViT 的核心思想:将图像视为一系列 Patch(图像块),类比 NLP 中的 Token 序列,直接送入 Transformer 编码器处理。
输入图像 -> 分块(Patch Partition) -> 线性投影(Linear Projection)
-> 拼接Class Token -> 位置编码(Position Embedding)
-> Transformer Encoder x L -> MLP Head -> 分类结果
4.2 Embedding 层(嵌入层)
这是 ViT 最关键的创新部分,将 2D 图像转换为 1D 序列。
图像分块(Patch Partition)
假设输入图像为 x ∈ R^(H×W×C)(高 H、宽 W、通道数 C),Patch 大小为 P × P:
- Patch 数量:
N = H×W / P² - 每个 Patch 展平后维度:
P² × C - 分割后的序列:
xp ∈ R^(N × P²C)
具体例子(ImageNet):
- 输入:
224 × 224 × 3 - Patch 大小:
16 × 16 × 3 - Patch 数量:
(224/16) × (224/16) = 14 × 14 = 196 - 每个 Patch 维度:
16 × 16 × 3 = 768 - 序列维度:
196 × 768
线性投影(Linear Projection / Patch Embedding)
将每个 Patch(维度 P² × C)通过一个可学习的线性变换映射到 D 维嵌入空间:
Patch Embedding = xp · E, 其中 E ∈ R^(P²C × D)
这一步类似于 NLP 中的词嵌入(Word Embedding)。
Class Token
在序列开头拼接一个可学习的 [class] token(维度 D):
- 最终序列长度:
N + 1 = 197 - 序列维度:
197 × 768
这个 Class Token 的最终输出用于分类任务。
位置编码(Position Embedding)
由于 Transformer 本身不具备位置感知能力,需要加入位置编码。ViT 使用可学习的 1D 位置编码:
PE(pos, 2i) = sin(pos / 10000^(2i/d_model))
PE(pos, 2i+1) = cos(pos / 10000^(2i/d_model))
- 位置编码维度:
(N+1) × D = 197 × 768 - 与 Patch Embedding 相加后送入 Transformer Encoder
4.3 ViT Encoder
ViT 的 Encoder 与标准 Transformer Encoder 完全一致,由 L 层堆叠而成,每层包含:
公式表达
输入构造:
z0 = [x_class; x_p^1 E; x_p^2 E; ...; x_p^N E] + E_pos
其中 E ∈ R^(P²·C × D),E_pos ∈ R^((N+1)×D)
第 l 层计算:
z'_l = MSA(LN(z_{l-1})) + z_{l-1}, l = 1...L
z_l = MLP(LN(z'_l)) + z'_l, l = 1...L
最终输出(取 Class Token):
y = LN(zL^0)
多头自注意力(Multi-Head Self-Attention, MSA)
注意力机制的计算流程:
- 生成 Q、K、V:通过三个不同的线性变换矩阵将输入映射为 Query、Key、Value
- 计算注意力分数:Q 与 K 做点积运算
- Softmax 归一化:对注意力分数进行 softmax,得到注意力权重
- 加权求和:用注意力权重对 V 进行加权求和
Attention(Q, K, V) = softmax(QK^T / √d_k) · V
其中 √d_k 是缩放因子,防止点积结果过大导致 softmax 梯度消失。
MLP 层
ViT 中的 MLP 由两个全连接层组成,中间使用 GELU 激活函数:
GELU(x) = x · Φ(x)
其中 Φ(x) 是标准正态分布的累积分布函数(CDF):
Φ(x) = 1/2 · [1 + erf(x/√2)]
GELU 相比 ReLU 更加平滑,在 Transformer 架构中表现更优。
Layer Normalization (LN)
在每个 MSA 和 MLP 之前应用 Layer Normalization(Pre-Norm 结构),稳定训练过程。
4.4 MLP Head(分类头)
Encoder 输出后,取 Class Token 对应的输出向量,通过 MLP Head 进行分类:
- 本质是一个全连接层(或浅层 MLP)
- 输出维度 = 类别数
- 类似于 BERT 中的
[CLS]token 用法
4.5 实验结果
ViT 在大规模数据集(如 JFT-300M)上预训练后,在多个图像分类基准上达到或超越了当时最先进的 CNN 模型:
- 相比 CNN(如 ResNet),ViT 在大数据量下具有更强的表示能力
- 在中小规模数据集上不如 CNN(缺少 CNN 的归纳偏置,如平移不变性和局部性)
4.6 微调(Fine-tuning)
ViT 在预训练后可以通过微调迁移到下游任务:
- 移除预训练的 MLP Head,换为新的分类头(或检测/分割头)
- 在目标数据集上进行端到端微调
- 可采用更高的分辨率进行微调(如从 224×224 提升到 384×384),此时只需对位置编码进行 2D 插值即可
五、CLIP:语言-图像联合预训练
CLIP(Contrastive Language-Image Pre-training)由 OpenAI 提出,是一个将图像和文本映射到同一嵌入空间的双塔模型。
核心思想
通过对比学习(Contrastive Learning),让配对的图文在嵌入空间中距离更近,不配对的图文距离更远。
图像 Image -> 图像编码器 Image Encoder -> 图像特征
文本 Text -> 文本编码器 Text Encoder -> 文本特征
↓
对比学习 Contrastive Learning
↓
相似度矩阵
训练方式
- 使用 4 亿图文对进行训练
- 采用对称的 InfoNCE 损失:同时最大化图像→文本和文本→图像的正确匹配概率
- 在 batch 内构造负样本
应用
- 零样本分类:用文本描述作为类别标签,无需微调即可分类
- 图文检索:图像搜文本、文本搜图像
- 作为视觉编码器:被广泛用于多模态大模型(如 LLaVA)的视觉 backbone
六、知识蒸馏与 DINO
6.1 知识蒸馏(Knowledge Distillation)
将大型"教师模型"的知识迁移到小型"学生模型":
- 软标签蒸馏:使用教师模型的输出概率分布(软标签)训练学生
- 特征蒸馏:让学生模型模仿教师模型的中间层特征
- 目标是让小模型在保持轻量的同时接近大模型的效果
6.2 DINO(Self-Distillation with No Labels)
DINO 是 Facebook AI 提出的自监督学习方法,核心创新是无标签的自蒸馏:
- Teacher-Student 架构:教师和学生网络结构相同
- 动量更新:教师网络的参数不通过梯度更新,而是由学生网络参数的指数移动平均(EMA)得到
- 中心化与锐化:使用 centering 和 sharpening 防止模型坍塌
- ViT + DINO 的注意力图能自动学习到语义分割级别的物体轮廓,这是 DINO 最令人惊叹的特性
七、总结
| 主题 | 核心要点 |
|---|---|
| ChatGPT 训练流程 | 无监督预训练 -> 有监督微调 -> 奖励模型 -> PPO 强化学习 |
| ViT | 图像分块 -> Patch Embedding -> Transformer Encoder -> MLP Head,去除了 CNN 的归纳偏置 |
| CLIP | 双塔对比学习,4亿图文对训练,实现零样本分类 |
| 知识蒸馏 | 大模型教小模型,DINO 实现了无标签自蒸馏 |
技术演进路线
CNN (ResNet) -> ViT (纯 Transformer) -> CLIP (图文联合) -> 多模态大模型 (GPT-4V, LLaVA...)
|
v
DINO (自监督)
参考来源
- An Image is Worth 16x16 Words (ViT, ICLR 2021)
- Learning Transferable Visual Models From Natural Language Supervision (CLIP, ICML 2021)
- Emerging Properties in Self-Supervised Vision Transformers (DINO, ICCV 2021)
- Training language models to follow instructions with human feedback (InstructGPT, NeurIPS 2022)
更多推荐




所有评论(0)