卷1 · 深度学习与 CV 基础
1.5 自监督三巨头:MAE、CLIP、DINO
展开本章目录与同卷章节
1. 为什么需要自监督2. MAE:遮住 75%,重建像素3. 对比学习:CLIP 及其思想基础4. DINO:自己教自己,注意力里长出分割5. 三巨头对比(背下来)6. 自测题7. 动手作业8. 延伸资源同卷章节1.1 从 CNN 到 ResNet:卷积时代的遗产1.2 注意力机制:从加权检索到万物的基础操作1.3 Transformer 逐层拆解:从 Block 到小 GPT1.4 ViT 与视觉 Transformer 谱系:图像成为 token1.5 自监督三巨头:MAE、CLIP、DINO1.6 CLIP 精读与 zero-shot 评测实操(第一个完整项目)1.7 SAM 与分割基础模型:提示式视觉1.8 检测与分割极简史:知道即可的一章1.9 图像形成与相机模型:给 3D/具身留的几何底座本章目标:理解”没有标签,监督信号从哪来”——这是预训练范式的燃料学。三巨头对应三条路线:遮住重建(MAE)、图文对齐(CLIP)、自己教自己(DINO)。学完标准:能说清每种方法的信号构造方式和防坍塌机制,明白为什么 CLIP 成为多模态地基、DINO 成为机器人底座。CLIP 的实操放在 1.6。
1. 为什么需要自监督
监督学习的燃料是人工标注,两个天花板:标注贵(分割一个像素级标注几分钟)和标注偏(人标的分类体系 ≠ 模型需要的特征)。自监督(self-supervised learning)的思路:构造一个”答案就在数据里”的代理任务——遮住一部分让模型补全、把配对的图文拼起来、对同一张图做两次增强要求输出一致。预训练学到的通用特征再迁移到下游。这个”预训练 → 迁移”范式,就是后来 LLM”预训练 → 微调”的直系祖先。
2. MAE:遮住 75%,重建像素
《Masked Autoencoders Are Scalable Vision Learners》(2021),思路来自 BERT 的完形填空:
- 把图像切成 patch(16×16),随机遮住 75%;
- 编码器(ViT)只处理可见的 25%(196 → 49 个 token,计算量省 3 倍多);
- 轻量解码器拿”可见 token + 可学习的 mask token”去重建被遮 patch 的像素;
- loss 只在被遮位置算 MSE。
两个设计点是全文精华:
- 75% 这么高的遮罩率为什么行:自然图像冗余度极高(遮 15% 邻居一 interpolation 就补上了,学不到东西);75% 迫使模型利用全局语义推断(补全人脸必须懂人脸结构)。语言的信息密度高,BERT 只遮 15%——遮罩率跟着模态冗余度走,这个对比本身就是一道理解题;
- 非对称架构:重编码器 + 轻解码器。重建任务只是训练的”脚手架”,推理时解码器直接扔掉,只留编码器产特征。
遗产:MAE 证明了”生成式代理任务”在视觉成立,遮罩重建思想后来汇入多模态预训练和统一模型(卷3/4)。
3. 对比学习:CLIP 及其思想基础
在讲 CLIP 之前先给对比学习的最小内核(SimCLR/MoCo 一句话历史:同一张图两次增强互为正样本,batch 内其余为负样本,拉近正样本、推远负样本——难点在防坍塌)。
CLIP(Contrastive Language-Image Pre-training, 2021) 把”正样本”换成”配对的图文”:
- 数据:4 亿张互联网图文对(WIT-400M)——不标注,只利用”网页图片旁边通常有描述”这个天然结构;
- 模型:图像塔(ViT)+ 文本塔(Transformer),各自输出归一化嵌入;
- 目标(对称 InfoNCE):batch 内 N 对图文,对角线上的图文对相似度拉高,其余 N²−N 对推低:
(前半:每张图找它的文本;后半:每段文本找它的图。 是可学习温度。)
几行就能实现的灵魂代码:
def info_nce(img_emb, txt_emb, tau=0.07): # 两个嵌入都已 L2 归一化, (N, d)
logits = img_emb @ txt_emb.T / tau # (N, N) 相似度矩阵
labels = torch.arange(len(img_emb))
return (F.cross_entropy(logits, labels) + F.cross_entropy(logits.T, labels)) / 2
防坍塌机制:负样本(batch 内其他对)就是排斥力——如果所有嵌入坍到一点,loss 会是 log(N) 而降不下去。代价是需要大 batch(CLIP 用 32768),且假负样本(batch 里恰好有语义相同的图文对)会被错误排斥——已知缺陷,知道即可。
4. DINO:自己教自己,注意力里长出分割
《Self-Distillation with No Labels》(2021):
- 同一张图做多尺度裁剪(global + local crops);
- 教师(学生权重的 EMA 副本,0.4 章 EMA 的思想)看 global view,学生看所有 crops;
- 学生最小化与教师输出分布的交叉熵;
- 防坍塌靠 centering(教师输出减去运行均值,防某类独大)+ sharpening(低温度锐化)——没有负样本,全靠这两招维持输出分布不退化。
成名点:训练完不微调直接看注意力图,物体的分割轮廓自己浮现(这是本章作业的彩蛋)。后续 DINOv2(2023)用数据策展 + 大规模训练把冻结特征推到”万能视觉特征”:分类、深度、分割、检索全线可用——并且成为机器人/具身智能的视觉底座(pi0 等 VLA 模型大量使用 DINOv2 特征,卷5.3 呼应)。
5. 三巨头对比(背下来)
| MAE | CLIP | DINO | |
|---|---|---|---|
| 信号构造 | 遮住重建像素 | 图文配对对齐 | 增强一致性自蒸馏 |
| 数据需求 | 纯图像 | 图文对(不标注) | 纯图像 |
| 防坍塌手段 | 重建目标本身防坍塌 | batch 内负样本 | centering + sharpening |
| 学到什么 | 低/中层补全能力 | 跨模态对齐空间 | 通用视觉特征、分割涌现 |
| 多模态角色 | 预训练思想来源 | VLM 地基 + 检索 + 奖励模型 | VLA/机器人视觉底座 |
三条路线没有胜负:CLIP 赢在”文本锚点”打开了多模态大门;DINO 特征在无文本的具身场景称王;MAE 思想活在生成模型和统一架构里。你未来研究用到哪个,取决于你的题目需要”对齐空间”还是”通用特征”。
6. 自测题
- 自监督和监督学习的本质区别一句话?(监督信号是否由人工标注产生;自监督的”标签”从数据结构中构造)
- MAE 为什么遮 75% 而 BERT 只遮 15%?(图像像素冗余、语言信息密度高;遮罩率应匹配模态冗余度)
- MAE 的解码器为什么可以扔?(重建是训练脚手架,部署只要编码器特征——“训练目标 ≠ 部署需求”的经典案例)
- 对比学习的坍塌是什么?CLIP 和 DINO 各靠什么防?(输出全相同;负样本排斥 / centering+sharpening)
- InfoNCE 里温度 τ 小意味着什么?(分布更尖,难负样本主导梯度——训练后期常见动态调整的原因)
- 为什么 DINOv2 成了机器人底座而不是 CLIP?(具身场景没有文本查询,需要的是稠密、空间敏感的通用视觉特征,而非跨模态对齐)
- 假负样本问题是什么,什么场景更严重?(batch 内本为同类/同义的对被错误推远;细粒度数据集、概念密集的图文对)
7. 动手作业
- 手写
info_nce(第 3 节代码),用随机嵌入验证:完美对齐时 loss→0,全坍塌时 loss≈log(N)——亲手看见坍塌。 - 用 open_clip 加载 CLIP,对一张图做 75% 掩码”提问式”实验:遮住半张图问 CLIP”这是什么”,体会对齐空间对不完整输入的鲁棒与脆弱。
- 用 timm 加载
vit_base_patch16_224.dino,抓最后一层 CLS→patch 注意力画热力图,和 1.4 作业的监督 ViT 对比(DINO 的分割感通常明显更强)。 - 挑战:读 MAE 论文 §3,用三句话向别人解释”非对称设计”省了多少计算、为什么不影响学到的特征质量。
8. 延伸资源
- MAE / CLIP / DINO 三篇原论文——配合李沐《论文精读》对应各期(他全讲过)
- 《Understanding Self-Supervised Learning》类综述——按需查阅
- DINOv2 repo——冻结特征跑深度估计 demo,十分钟见效
