云镜收藏

稍后阅读

清单保存在当前浏览器,方便下次回来继续阅读。

清单还是空的

在笔记卡片或正文页点击“加入稍后阅读”即可收藏。

卷1 · 深度学习与 CV 基础

1.5 自监督三巨头:MAE、CLIP、DINO

约 7 分钟阅读
全书目录

展开本章目录与同卷章节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 的完形填空:

  1. 把图像切成 patch(16×16),随机遮住 75%;
  2. 编码器(ViT)只处理可见的 25%(196 → 49 个 token,计算量省 3 倍多);
  3. 轻量解码器拿”可见 token + 可学习的 mask token”去重建被遮 patch 的像素;
  4. 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 对推低:

L=−1N∑i=1N[log⁡esim(Ii,Ti)/τ∑jesim(Ii,Tj)/τ+log⁡esim(Ii,Ti)/τ∑jesim(Ij,Ti)/τ]L = -\frac{1}{N}\sum_{i=1}^{N}\left[\log\frac{e^{\text{sim}(I_i,T_i)/\tau}}{\sum_j e^{\text{sim}(I_i,T_j)/\tau}} + \log\frac{e^{\text{sim}(I_i,T_i)/\tau}}{\sum_j e^{\text{sim}(I_j,T_i)/\tau}}\right]

(前半:每张图找它的文本;后半:每段文本找它的图。τ\tau 是可学习温度。)

几行就能实现的灵魂代码:

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):

  1. 同一张图做多尺度裁剪(global + local crops);
  2. 教师(学生权重的 EMA 副本,0.4 章 EMA 的思想)看 global view,学生看所有 crops;
  3. 学生最小化与教师输出分布的交叉熵;
  4. 防坍塌靠 centering(教师输出减去运行均值,防某类独大)+ sharpening(低温度锐化)——没有负样本,全靠这两招维持输出分布不退化。

成名点:训练完不微调直接看注意力图,物体的分割轮廓自己浮现(这是本章作业的彩蛋)。后续 DINOv2(2023)用数据策展 + 大规模训练把冻结特征推到”万能视觉特征”:分类、深度、分割、检索全线可用——并且成为机器人/具身智能的视觉底座(pi0 等 VLA 模型大量使用 DINOv2 特征,卷5.3 呼应)。

5. 三巨头对比(背下来)

MAECLIPDINO
信号构造遮住重建像素图文配对对齐增强一致性自蒸馏
数据需求纯图像图文对(不标注)纯图像
防坍塌手段重建目标本身防坍塌batch 内负样本centering + sharpening
学到什么低/中层补全能力跨模态对齐空间通用视觉特征、分割涌现
多模态角色预训练思想来源VLM 地基 + 检索 + 奖励模型VLA/机器人视觉底座

三条路线没有胜负:CLIP 赢在”文本锚点”打开了多模态大门;DINO 特征在无文本的具身场景称王;MAE 思想活在生成模型和统一架构里。你未来研究用到哪个,取决于你的题目需要”对齐空间”还是”通用特征”。

6. 自测题

  1. 自监督和监督学习的本质区别一句话?(监督信号是否由人工标注产生;自监督的”标签”从数据结构中构造)
  2. MAE 为什么遮 75% 而 BERT 只遮 15%?(图像像素冗余、语言信息密度高;遮罩率应匹配模态冗余度)
  3. MAE 的解码器为什么可以扔?(重建是训练脚手架,部署只要编码器特征——“训练目标 ≠ 部署需求”的经典案例)
  4. 对比学习的坍塌是什么?CLIP 和 DINO 各靠什么防?(输出全相同;负样本排斥 / centering+sharpening)
  5. InfoNCE 里温度 τ 小意味着什么?(分布更尖,难负样本主导梯度——训练后期常见动态调整的原因)
  6. 为什么 DINOv2 成了机器人底座而不是 CLIP?(具身场景没有文本查询,需要的是稠密、空间敏感的通用视觉特征,而非跨模态对齐)
  7. 假负样本问题是什么,什么场景更严重?(batch 内本为同类/同义的对被错误推远;细粒度数据集、概念密集的图文对)

7. 动手作业

  1. 手写 info_nce(第 3 节代码),用随机嵌入验证:完美对齐时 loss→0,全坍塌时 loss≈log(N)——亲手看见坍塌。
  2. 用 open_clip 加载 CLIP,对一张图做 75% 掩码”提问式”实验:遮住半张图问 CLIP”这是什么”,体会对齐空间对不完整输入的鲁棒与脆弱。
  3. 用 timm 加载 vit_base_patch16_224.dino,抓最后一层 CLS→patch 注意力画热力图,和 1.4 作业的监督 ViT 对比(DINO 的分割感通常明显更强)。
  4. 挑战:读 MAE 论文 §3,用三句话向别人解释”非对称设计”省了多少计算、为什么不影响学到的特征质量。

8. 延伸资源

  • MAE / CLIP / DINO 三篇原论文——配合李沐《论文精读》对应各期(他全讲过)
  • 《Understanding Self-Supervised Learning》类综述——按需查阅
  • DINOv2 repo——冻结特征跑深度估计 demo,十分钟见效