神经网络与深度学习课程总结四
第七部分:视觉大模型基础与 ViT (Vision Transformer)
随着大语言模型(LLM)的巨大成功,基于 Transformer 的架构开始强势“破圈”进入计算机视觉领域。本章探讨了如何利用 Transformer 处理视觉任务,以及视觉大模型的发展演进(多模态、自监督学习等)。
一、 大模型与多模态技术概述
视觉大模型的演进:传统的视觉任务多由 CNN(如 ResNet)主导,但 CNN 感受野受限。近年来,视觉领域开始吸收 Transformer 的长距离依赖建模能力,模型规模(参数量)和预训练数据规模(如 JFT-300M)大幅增长。
多模态融合(Multimodal):现代大模型不仅局限于单一的文本或图像,而是朝着“统一(Unified)”的方向发展,实现图像、文本、音频的跨模态理解与生成(如大语言视觉模型)。
二、 核心破局者:Vision Transformer (ViT) 详解
ViT 是将 Transformer 架构直接、无修改地应用于图像分类任务的开山之作,证明了在拥有海量数据的前提下,完全摒弃卷积操作也能取得超越 CNN 的表现。
1. 嵌入层(Embedding Layer):将图像变成“句子”
既然 Transformer 只能处理一维序列(Word Tokens),ViT 的首要任务就是对二维图像进行序列化:
图像切片(Patching):将固定尺寸的输入图像(如
)切分为不重叠的小图块(Patch,如
)。这样一张图就被分成了
个图块。
线性投影(Linear Projection):将每个图块展平(Flatten)后,通过一个线性层映射成指定维度的向量。此时,图像图块就变成了等价的“词向量(Token)”。
2. 两个关键的附加参数
Class Token(类别通配符):借鉴了 NLP 中的 BERT 模型,ViT 在序列开头人工添加了一个可学习的嵌入向量
[class]。经过多层编码器后,这个 Token 汇总了整张图像的全局信息,专门用于最终的分类任务。Positional Encoding(位置编码):由于 Transformer 自注意力机制是位置无关的(打乱顺序不影响计算),必须在输入的图块特征中相加一个一维的可学习位置编码,以此来保留图像原本的空间位置结构。
3. Transformer 编码器(Encoder)
与标准 Transformer 的编码器结构完全一致,由多个 Block 堆叠而成,主要包含:
多头自注意力机制(Multi-Head Self-Attention):计算图块与图块之间的全局依赖关系。
前馈神经网络(MLP):进行特征的非线性映射。
层归一化(Layer Norm)与残差连接(Skip Connection)。
4. MLP头(MLP Head)
取编码器最后一层输出序列中的第一个 Token(即之前的
[class]Token)作为整幅图像的特征表示。接入一个 MLP 层(全连接层)进行最终的类别预测。
三、 模型的预训练、结果与微调(Fine-Tuning)
1. “大力出奇迹”的预训练结果
数据饥渴:当在中等规模数据集(如 ImageNet)上训练时,ViT 的表现略逊于同等规模的 ResNet(因为 CNN 拥有平移不变性和局部性等归纳偏置)。
超越 CNN:但在超大规模数据集(如 ImageNet-21k 或 JFT-300M)上进行预训练时,ViT 打破了这一限制,展现出了极强的性能上限,并在多个图像识别基准上达到了 SOTA(State of the Art)。
2. 微调机制与输入长度问题
预训练+微调范式:实际应用中,通常保留预训练好的 ViT 整体参数作为强大的特征提取器,只将后面的 MLP 头替换为适应下游任务(如新的分类、目标检测)的新网络。
分辨率提升与位置编码插值:在微调阶段,通常会输入比预训练时更高分辨率的图像以获取更好性能。这会导致切分出的 Patch 数量增加,进而导致原先预训练好的位置编码长度不够。
解决方案:保持图块大小(如
)不变,对预训练的 2D 位置编码进行二维插值(2D Interpolation),以适应新的序列长度。
第七部分(下):视觉大模型拓展展望(CLIP & DINO 详解)
随着 Vision Transformer (ViT) 的成功,深度学习视觉领域开始向两个重要方向演进:一是打破单一模态壁垒的多模态学习,二是摆脱对人工标注依赖的自监督学习。本部分详细总结了这两个方向的代表性里程碑模型:CLIP 与 DINO。
一、 CLIP (Contrastive Language-Image Pretraining)
传统的图像分类模型受限于预先定义好的固定类别字典(如 ImageNet 的 1000 类),泛化到新类别时必须重新收集数据并微调。OpenAI 提出的 CLIP 彻底打破了这一“闭集(Closed-set)”限制。
1. 核心思想与架构
CLIP 的核心目标是将图像特征与自然语言文本的语义特征对齐。模型由两个独立的编码器组成:
Image Encoder(图像编码器):可以是 ResNet 或 ViT,用于提取图像的视觉特征向量。
Text Encoder(文本编码器):通常是 Transformer,用于提取自然语言句子的语义特征向量。
2. 对比学习训练机制(Contrastive Learning)
CLIP 摒弃了传统的交叉熵分类损失,转而使用包含 4 亿对海量图文对(Image-Text Pairs)进行无监督对比预训练。
构造矩阵:在一个 Batch 包含
个图文对时,模型将生成
个图像特征和
个文本特征。通过两两计算余弦相似度(Cosine Similarity),会形成一个
的相似度矩阵。
优化目标:矩阵对角线上的
个元素是正确匹配的图文对(正样本),模型会最大化它们的相似度;而矩阵中非对角线上的
个元素是不匹配的(负样本),模型会最小化它们的相似度。
通过这种极其庞大的对比任务,CLIP 学会了非常丰富的通用视觉概念。
3. 零样本推理(Zero-shot Inference)的全过程
在完全不经过微调的情况下,CLIP 即可完成分类任务,其流程被称为Prompt Engineering(提示工程):
构建文本库:将你想分类的类别标签(比如“猫”、“狗”、“车”)填入一个提示模板中,如构造句子:“A photo of a [猫]”、“A photo of a [狗]”。
提取文本特征:将这些句子送入 Text Encoder,得到一组文本特征向量。
特征匹配:将待分类的图像送入 Image Encoder 得到图像特征向量,计算该图像向量与所有文本向量的相似度。
输出结果:相似度最高(Softmax 概率最大)的那个句子所对应的标签,即为分类结果。
4. 巨大优势与影响
极强的鲁棒性:CLIP 学习到的是高维语义概念,对图像的风格迁移、草图、甚至是对抗样本都有着远超 ResNet 的鲁棒性。
AIGC 的基石:其强大的图文对齐能力,直接成为了后续 DALL-E、Stable Diffusion 等文生图大模型的指导基础。
二、 DINO (Self-Distillation with No Labels)
DINO 由 Meta(Facebook AI)提出,旨在探究:如果不提供任何文本或类别的监督信号,视觉 Transformer 能否“自学成才”?
1. 核心思想:自监督与无标签知识蒸馏
DINO 的本质是无标签知识蒸馏(Self-Distillation)。它构建了两个架构完全相同(如都是 ViT)但参数不同的网络:
Student(学生网络):负责主动学习并更新参数。
Teacher(教师网络):提供学习的目标(伪标签),其参数不通过反向传播更新,而是通过指数移动平均(EMA, Exponential Moving Average)平滑地吸收学生网络的参数。
2. Multi-crop(多视角裁剪)策略
DINO 让网络自己教自己的核心在于“不同视角”的信息传递:
从同一张原图中进行不同的数据增强和裁剪。
Global Views(全局视角):裁剪出两张较大、包含主体全貌的图像(如
),送入 Teacher 网络。
Local Views(局部视角):裁剪出多张较小、只包含局部细节的图像(如
),送入 Student 网络。
优化目标:强制 Student 通过局部细节去预测Teacher 看到的全局特征的分布。这种“管中窥豹”的训练迫使网络深刻理解图像的内在空间和语义结构。
3. 避免模型坍塌(Collapse)的关键机制
在自监督学习中,网络极易“偷懒”输出恒定值(即不论输入什么,Teacher 和 Student 都输出相同的全 0 向量,从而使损失降为 0)。DINO 通过以下两个技巧避免了坍塌:
Centering(中心化):将 Teacher 的输出减去其均值,这鼓励特征分布具有均等性,防止某一个维度处于统治地位。
Sharpening(锐化):对 Teacher 的 Softmax 输出应用极低的温度系数(Temperature),人为拉大不同维度之间的概率差距,迫使预测结果更加确定、尖锐(具有高置信度)。
4. 涌现的惊人成果
自然涌现的语义分割:这是 DINO 最令人惊叹的成果。在没有任何人工像素标签的训练下,ViT 的多头自注意力图(Self-Attention Maps)自然而然地学会了区分前景和背景。将注意力图提取出来,竟然可以直接作为高质量的图像实例掩膜(Mask),其轮廓描绘极其精准。
优异的 KNN 分类:DINO 提取的特征在特征空间中具有极强的聚类属性,即使只用最简单的 K-近邻(KNN)分类器,也能在 ImageNet 上达到非常出色的准确率。
