视觉自监督学习:从对比学习到 MAE,再到通用视觉表征
1. 引言:自监督学习,真的能“看懂”图像吗?
在很长一段时间里,计算机视觉的进步,几乎完全依赖一种方式:监督学习。简单来说,就是给模型大量图片,再告诉它“这是什么”,让它不断做题、纠错、记答案。
ImageNet 分类、COCO 检测与分割,这些经典成果,都是在这种模式下取得的。只要数据够多、标签够准,模型的分数就能不断刷新。但随着模型越来越大、应用场景越来越真实,这条路开始遇到问题了:
- 标注图片成本很高
- 真实世界并不总是“有标准答案”
- 模型在新场景下,经常表现失常
于是,一个更根本的问题开始被反复追问:模型是真的“理解”了图像,还是只是学会了在考试里拿高分? 自监督学习,正是在这种质疑中走到舞台中央的。
1.1 监督学习很成功,但真的没问题吗?
1.1.1 图片多、标签多,不等于模型懂了
监督学习背后的直觉其实很简单:只要我告诉模型足够多的“正确答案”,它自然就能学会看世界。 在一些干净、封闭的数据集上,这确实成立。但在真实世界里,这个假设开始变得不那么可靠。
首先,标签本身是昂贵的。在医学影像、工业检测、遥感等场景中,一张图的标注可能需要专家花很长时间,而且不同人给出的标签还可能不一致。
其次,标签本身很“粗”。一张复杂的图片,可能只被简化成一个类别名,而大量有价值的信息——结构、关系、细节差异——在打标签的那一刻就被忽略了。
更重要的是:模型在“答对题”这件事上表现很好,并不代表它真的形成了稳固的视觉理解。
只要换一个数据分布,或者换一个任务,模型往往就需要重新大量标注、重新训练。这说明它学到的东西,很可能是“对某套标签有用的技巧”,而不是通用的视觉能力。
1.1.2 ImageNet 的成功,为何难以复制?
ImageNet 常被视为监督学习的巅峰案例,但它的成功,其实有很强的“历史和条件加成”。
- 类别定义清晰
- 图片质量较高
- 标注规则相对统一
在这种理想环境下,模型只要把“类别区分”这件事做好,性能就能稳步提升。但在现实应用中:
- 类别边界往往是模糊的
- 语义层级是连续的,而不是离散的
- 有些场景甚至根本不存在明确的标签体系
这时,单纯依赖固定标签训练的模型,往往会学到一些只在特定数据集上成立的“捷径”,而不是能迁移到新任务的视觉规律。这迫使研究者重新思考一个问题:模型真正该学的,是“完成某个任务”,还是“构建对世界更通用的表示”?
1.2 自监督学习想解决什么问题?
1.2.1 不用人工标签,模型怎么学?
自监督学习的核心想法其实并不神秘:既然图片本身就包含大量结构信息,能不能直接从这些信息中学习? 比如:
- 图像中相邻区域通常是相关的
- 同一张图在不同裁剪、旋转下,本质内容不变
- 被遮住的部分,可以从上下文推断出来
自监督方法正是通过这些“图像自带的规律”,人为构造训练任务,让模型在没有人工标签的情况下学习有用的表示。从这个角度看,自监督并不是“没有监督”,而是把监督来源,从“人给的标签”,变成了“数据自身的结构”。
这也很像人类的学习方式:我们并不是先被告知“这是猫、这是狗”,而是通过长期观察,逐渐形成对形状、结构和关系的理解。
1.2.2 自监督只是“更花哨的数据增强吗”?
当然,自监督并不是没有争议。一种常见的质疑是:自监督看起来厉害,是不是因为
- 用了更强的数据增强
- 训练得更久
- 模型更大
本质上还是监督学习那一套?这个问题并不是毫无根源。很多自监督方法对数据增强非常敏感,增强策略一变,学到的表示也会明显不同。
因此,如果只看下游任务的分数,很难判断提升到底来自:
- 学习机制本身
- 还是工程细节的叠加效果
这也是为什么,理解自监督学习,不能只盯着排行榜,而要看它学到的表示到底有什么不同。
1.3 本文打算怎么讨论这个问题?
1.3.1 两条主流路线:对比学习 vs 遮蔽重建
当前视觉自监督方法,大致可以分为两类:
- 对比学习
通过“同一张图的不同视角应该相似、不同图片应该区分开”这一原则,学习一个区分性很强的特征空间。 - 遮蔽重建方法
通过遮住图像的一部分,让模型根据上下文去“补全”,从而逼迫模型理解整体结构和空间关系。
它们的差异,并不只是性能高低,而是对“什么是好表示”的理解不同:
- 对比学习更强调“可分、好用、判别性强”
- 遮蔽重建更强调“整体结构、上下文一致性”
1.3.2 不追问“谁更强”,而关注“谁适合什么”
因此,本文并不试图给出一个简单答案,比如:哪种自监督方法最好?相反,我们更关心:
- 不同方法各自学到了什么样的表示
- 在什么任务和条件下更有优势
- 它们的局限在哪里
接下来的章节,将围绕这些问题展开,帮助建立一个可解释、可迁移的理解框架,而不仅是记住几种算法名字。
本章小结
监督学习在视觉领域取得了巨大成功,但它对人工标签的高度依赖,也限制了模型在真实、开放环境中的泛化能力。
自监督学习试图绕开这一限制,通过挖掘数据自身的结构,让模型在无标签条件下学习通用的视觉表示。但它究竟带来了怎样的本质变化,仍需要从表示结构和适用边界上加以分析。
本章明确了本文的核心立场:关注方法能学到什么,而不是只看分数高低。这为后续对对比学习与遮蔽重建方法的深入讨论,奠定了理解基础。
2. 用一个统一的眼光看自监督视觉学习
在前一章里,我们已经讨论了:为什么单靠监督学习不够,以及自监督学习想解决什么问题。
这一章要回答的是另一个关键问题:市面上这么多自监督方法,看起来差别很大,它们到底有没有一个共同的逻辑? 答案是:有的。 而且一旦站到这个“统一视角”上,很多方法之间的差异,会变得非常自然、也更容易理解。
2.1 自监督学习,其实并不是“没有人管”
2.1.1 模型并不是自由发挥,而是在做“指定练习题”
很多初学者第一次听到“自监督”,会产生一个误解:没有标签,是不是模型就自己随便学?实际上完全不是这样。
自监督学习几乎都会给模型设计一个明确的训练任务,只不过这个任务的“答案”不是人标出来的,而是从数据本身算出来的。这些任务通常被称为 预文本任务(pretext task),你可以把它理解成:为了学会看图像,先让模型做的一套“基础练习题”。 举几个直观的例子:
- 在对比学习中:
模型要判断——两张经过不同处理的图片,是不是来自同一张原图。 - 在遮蔽重建方法中:
模型会看到一张被遮住一部分的图片,需要根据周围内容,把缺失的地方“猜回来”。
虽然形式不同,但它们有一个共同点:模型被明确要求完成一件事,而且做得好不好,是可以计算分数的。 所以,自监督并不是“没有目标”,而是:不用人工标签,但依然有清晰的训练目标。
可以把它理解成:显式给任务,隐式学语义。
2.1.2 偏见没有消失,只是换了个地方
在监督学习中,模型的“学习方向”很大程度上是由标签决定的:
- 类别怎么分
- 一张图只能属于一个类,还是多个类
- 评价指标是什么
这些都会直接影响模型学到什么。而在自监督学习中,标签消失了,但 “人为假设”并没有消失,只是换了个位置。这些假设主要体现在两件事上:
- 预文本任务怎么设计
- 数据增强怎么做
举个例子,如果我们告诉模型:“同一张图片的不同裁剪,应该被当成同一个东西”,那其实是在假设:位置、尺度变化不重要;如果让模型去补全被遮住的区域,那是在假设:图像内部是有规律、有上下文结构的。这些选择看起来像“工程细节”,但实际上:它们决定了模型最终会关注什么、忽略什么。
这也是为什么自监督方法看起来很自由,但结果差异却可能很大——因为我们给模型设定的“练习题”,本身就在悄悄引导它形成不同的视觉理解方式。
2.2 两条主流路线,本质上在“教模型怎么学”
目前视觉自监督方法,大致可以分成两大类。理解它们最好的方式,不是记公式,而是问一句话:是通过“区分不同”,还是通过“补全整体”,来教模型看图?
2.2.1 对比学习:靠“分清楚”来学表示
对比学习的核心思想非常直观:同一个东西,在不同视角下应该看起来一样;不同的东西,应该尽量区分开。 于是,模型的主要任务就变成了:
- 把“同一张图的不同版本”拉近
- 把“不同图片”推远
长期训练下来,模型会学到一个区分性很强的特征空间。这种表示有一个明显优点:
- 在分类任务中非常好用
- 用简单的线性分类器就能取得不错效果
但它也有一个潜在代价:为了区分得足够清楚,模型可能会主动忽略一些不利于区分的细节,比如全局结构或生成性信息。
2.2.2 遮蔽重建:靠“补全缺失”来理解整体
遮蔽重建方法走的是另一条路。它不要求模型区分“你是谁”,而是不断问模型:在信息不完整的情况下,你能不能理解整体结构?
通过遮住图片的一部分,让模型根据上下文去预测或重建缺失内容,模型被迫学习:
- 哪些区域彼此相关
- 图像整体的空间和语义结构
- 局部与全局之间的关系
这类方法在大模型和大数据下,往往能学到更稳定、更通用的表示,在任务迁移时表现不错。不过,相比对比学习,它在一些强调“快速区分”的任务上,可能并不是最直接高效的选择。
2.3 不同方法,走的是同一条“训练—迁移”路线
尽管对比学习和遮蔽重建在“怎么学”上差异很大,但它们在整体流程上其实非常一致:
- 先在大量无标签图片上进行自监督预训练
- 用简单任务(比如线性分类)快速检查表示质量
- 再迁移到具体下游任务(分类、检测、分割等)
这说明了一点很重要的事实:自监督方法的价值,不在于预文本任务本身,而在于最终学到的表示能不能被反复使用。 不同方法的优劣,最终都要在“迁移表现”中接受检验。
flowchart LR
A[大规模无标签图像数据] --> B[共享阶段 自监督预训练]
%% Contrastive Learning Branch
B --> C1[对比学习路线]
C1 --> D1[预文本任务 实例区分与视角一致]
D1 --> E1[损失形式 对比目标]
E1 --> F1[表征特性
判别性强
几何结构清晰
线性可分性好]
%% Masked Reconstruction Branch
B --> C2[遮蔽重建路线]
C2 --> D2[预文本任务 遮蔽预测与内容重建]
D2 --> E2[损失形式 重建或离散预测目标]
E2 --> F2[表征特性
结构感强
全局语义丰富
迁移稳定性好]
%% Shared Transfer Stage
F1 --> G[共享阶段 表征迁移与评估]
F2 --> G
G --> H1[线性探针评估]
G --> H2[下游任务微调
分类 检测 分割]
用一张图来总结这一章,可以这样理解,所有方法都从同一堆无标签数据出发;中间分成两条主要学习路线;最后又在下游任务中“会合”。区别不在流程,而在于是通过“区分”学会看世界,还是通过“补全”理解世界
本章小结
本章从一个整体视角梳理了自监督视觉学习的基本逻辑。自监督并不是“没有监督”,而是通过精心设计的任务,让模型从数据自身的结构中获得学习信号。模型的学习偏好,并不会消失,而是从“标签怎么定义”,转移到了“任务和数据怎么设计”。
通过对比学习与遮蔽重建两条主流路线的对照,我们看到:前者强调区分性和可分性,后者强调整体结构和上下文理解。尽管方法不同,它们最终都要通过迁移能力来证明自身价值。
这一统一视角,有助于我们在后续章节中,不被具体算法细节淹没,而始终抓住“模型到底学到了什么”这一核心问题。
3. 对比学习:光靠“分清楚”,模型真的懂语义吗?
在所有视觉自监督方法中,对比学习几乎是最先被证明“真的有用” 的一条路线。它的想法非常直接,甚至有点“粗暴”:
只要我能把不同图片区分得足够清楚,那我学到的表示,应该就很有用了吧?
事实证明,在很多任务上,这个直觉是对的。对比学习在自监督早期,展现出了非常好的迁移能力,也很容易在工程上扩展。但与此同时,一个关键问题始终没有彻底解决:模型到底是在“理解图像的语义”,还是只是学会了一套高效的“区分技巧”?
理解这个问题,是判断对比学习适用边界的关键。
3.1 对比学习到底在干什么?
3.1.1 正样本、负样本,其实是在玩“认人游戏”
大多数对比学习方法,都会把训练过程设计成这样一种游戏:
- 同一张图片,经过不同的数据增强(裁剪、旋转、颜色变化等)→ 应该被当成“同一个东西”
- 不同图片→ 应该被区分开
于是,训练中会出现两种关系:
- 正样本对:来自同一张原图的不同版本
- 负样本对:来自不同图片的版本
模型要做的事很简单:
- 把正样本拉近
- 把负样本推远
如果你换一种更生活化的说法,其实就是:不管怎么拍、怎么变,这还是你;但你和别人,必须分清楚。 这个过程背后,隐含着一个非常重要的假设:同一张图片的不同视角,在语义上是等价的;不同图片,在统计意义上是可以区分的。
在数据量足够大、增强策略合理的情况下,这个假设通常成立,于是模型就会学到对光照、裁剪、尺度变化不敏感的特征。但这里已经埋下了一个伏笔:整个过程,并没有显式告诉模型“什么是猫、什么是狗”。 模型只是在学习:哪些变化要忽略,哪些差异要放大。
3.1.2 不变性:既是优点,也是代价
对比学习成功的一个核心原因,是它强迫模型学会“不变性”。也就是说:
- 不重要的变化(裁剪、颜色、噪声)要忽略
- 稳定的因素要保留下来
这让模型学到的表示更加稳定、好迁移。但问题在于:不是所有任务,都希望模型“忽略这么多东西”。 如果数据增强过强,比如:
- 裁剪掉关键局部
- 扰乱了颜色或纹理信息
那么模型可能会被迫丢掉一些对细粒度任务非常重要的线索。于是,不变性开始从“优势”,变成“限制”。
3.2 用信息论解释对比学习:有用,但不万能
3.2.1 一个常见说法:对比学习在“最大化共同信息”
为了从理论上理解对比学习,研究者常常借助信息论的语言。你可能会看到一种说法:对比学习通过 InfoNCE 损失,在最大化同一图片不同视角之间的“共同信息”。
直观理解就是:
- 两个视角都能看到的东西,往往是稳定、重要的
- 学到这些东西,就能得到好表示
这个解释在早期非常有帮助,它让人们第一次从理论角度理解:“为什么这种拉近 / 推远的训练方式能工作”。
3.2.2 为什么温度、负样本数量这么重要?
在实际训练中,人们发现一些现象:
- 负样本越多,效果往往越好
- 温度参数调小,表示空间更“紧凑”
- 线性分类性能会随之提升
这些经验现象,通常被解读为:区分压力越大,模型学到的表示越清晰。 但问题在于:这些细节,很难用“互信息最大化”一句话完全解释清楚。
3.2.3 信息论解释的局限在哪里?
随着研究深入,人们逐渐意识到:InfoNCE 只是一个很松的理论下界,实际训练效果,强烈依赖:
- 网络结构
- 归一化方式
- 优化动态
这说明信息论更像是一个“帮助理解的比喻”,而不是对比学习的完整理论基础。它有用,但不能当成最终答案。
3.3 三个经典方法,三种设计取向
3.3.1 SimCLR:资源够多,就把事情做简单
SimCLR 的核心思想非常“直接”:
- 用很强的数据增强
- 用很大的 batch,保证有足够多负样本
- 端到端训练,不引入复杂机制
它传达的一个重要信息是:很多时候,不是方法不行,而是资源不够。 SimCLR 让人们意识到:对比学习的效果,往往更多取决于训练规模和增强策略,而不是花哨的算法设计。
3.3.2 MoCo:工程设计能不能救方法?
MoCo 关注的是另一个现实问题:如果我没有那么大的 batch,对比学习还能不能稳定训练? 它通过:
- 动量编码器
- 负样本队列
在显存可控的前提下,维持了大量负样本。这说明了一点非常重要的工程事实:对比学习的成功,不只是目标函数的胜利,也是工程稳定性的胜利。
3.3.3 DINO:没有负样本,也能学到好表示?
DINO 走了一条更“反直觉”的路:
- 不显式使用负样本
- 用教师—学生结构
- 通过自蒸馏维持表示多样性
它的成功,直接挑战了一个长期默认的观点:对比学习 ≠ 必须有负样本。 这也进一步说明:表示是否塌缩;是否有足够结构,并不完全由“负样本数量”决定,优化动态和结构约束同样关键。
3.4 对比学习的局限:什么时候开始“不太好用”?
3.4.1 在细粒度任务中,问题会暴露
当任务需要关注:
- 微小局部差异
- 精细结构关系
实例级区分目标,反而可能成为负担。模型为了“区分实例”,会主动忽略一些对语义其实很重要的细节。
3.4.2 对增强策略的依赖,让方法不够“省心”
对比学习对数据增强非常敏感,而增强策略:
- 往往依赖经验
- 需要针对数据集反复调试
这使得它在一些场景下,不够“即插即用”。
本章小结
本章围绕对比学习这一经典自监督路线,分析了它为什么有效、又为什么不够完整。
通过实例区分和正负样本构造,对比学习成功地塑造了判别性很强的表示空间,使模型在许多下游任务中表现优秀。但这种成功,更多来自于“区分能力”的强化,而非对高层语义的显式建模。
信息论视角为理解对比学习提供了有益直觉,但无法解释所有经验现象。方法的实际效果,来自目标函数、模型结构、数据增强与优化动态的共同作用。
这些分析也自然引出了一个问题:如果我们不只想“分清楚”,而是想“看懂整体结构”,还能不能有更合适的自监督方式? 这正是下一章——遮蔽重建方法——要回答的问题。
4. 遮蔽重建与 MAE:让模型“补全图片”,能学到更稳的表示吗?
上一章的对比学习,核心是“把不同图片分清楚”。它确实很强,但也有明显特点:非常依赖数据增强,而且有时会把一些对任务重要的细节“当成噪声”丢掉。所以研究者开始想另一条路:
如果不要求模型拼命区分不同图片,而是让模型学会“理解一张图片内部的结构”,会不会得到更稳、更通用的视觉表示?
这就是遮蔽重建(masked reconstruction) 的思路。其中最典型的代表,就是 MAE(Masked Autoencoder)。我们可以把 MAE 理解成一句话:把图片遮住一大半,让模型把缺的部分猜回来。
4.1 为什么“遮蔽建模”在 NLP 很成功,但在视觉里很晚才火?
4.1.1 语言是“离散词块”,图像是“连续像素”
在 NLP 里,BERT 这类方法做的事是:遮住一句话里的某些词,让模型预测这些词是什么。这很自然,因为:
- 词是离散单位(一个词一个词地出现)
- 预测“被遮住的词”本身就有明确意义
但图像不一样。图像是连续像素组成的,如果你让模型去预测被遮住区域的每个像素值,模型很容易走捷径:
- 用局部纹理复制一下
- 用颜色插值糊一糊
- 甚至只学会“画得像”,不学“理解是什么”
结果就是:早期视觉遮蔽方法经常学到的是低级统计规律,而不是可迁移的语义表示。 这也是为什么遮蔽建模在视觉里很长时间都不如对比学习出彩。
4.1.2 关键转折:Vision Transformer 让“图像像句子一样”可建模
遮蔽重建真正强起来,很大程度上因为 Vision Transformer(ViT)。ViT 会先把图像切成一块块小方块(patch),然后把每一块当成一个 token。这样,图像输入在形式上就很像 NLP 的序列:
- 句子:token 序列
- 图片:patch token 序列
再加上 Transformer 的注意力机制很擅长抓全局关系,于是:即使遮掉很多局部信息,模型也能靠全局上下文推断缺失内容。 这才让视觉遮蔽建模真正变得“可行且有效”。
4.2 MAE 为什么能成功?三个关键设计
4.2.1 “遮住 75%”反而更好:逼模型别走捷径
MAE 最反直觉的一点是:它不是遮一点点,而是遮掉大部分,常见是 75% 甚至更多。直觉上我们会觉得:遮这么多,模型怎么猜得出来?但效果反而更好,原因是:
- 遮得少 → 模型容易靠局部纹理、插值复制完成任务
- 遮得多 → 模型没法只靠局部复制,必须依赖整体结构和语义线索
所以高遮蔽率的真实作用是:逼迫模型学“整体理解”,而不是学“局部糊弄”。
4.2.2 非对称结构:编码器很强,解码器很轻
MAE 还有一个非常工程友好的设计:
- 编码器(Encoder):只看没被遮住的那一小部分 patch
→ 可以做得很深很强(这部分最终会用于下游任务) - 解码器(Decoder):负责把缺的 patch 重建出来
→ 做得比较轻量就够了
这样做有两个好处:
- 训练更省算力:编码器只处理少量可见块
- 把能力集中在“真正要用的编码器”上
也体现了 MAE 的核心态度:重建不是目的,只是手段;真正要的是一个好用的视觉编码器。
4.2.3 为什么 CNN 很难复制 MAE 的效果?
可能有人会问:既然是遮住再补回来,那 CNN 做自编码器不也可以吗?理论上可以,但实践里 CNN 往往没 MAE 强,原因很直观:
- CNN 天然偏向局部模式(卷积看的是邻域)
- 在大量遮蔽时,很多邻域信息根本不存在
- 这时就需要强大的全局建模能力,而 Transformer 更擅长
所以 MAE 的成功不是“换个损失函数”就行,而是:任务设计(高遮蔽) + 结构优势(ViT 全局关系)一起起作用。
4.3 MAE 学到的表示有什么特点?哪里强、哪里不占优?
4.3.1 强项:更“懂整体”,迁移更稳
很多实验观察到,MAE 的表示在这些方面很有优势:
- 语义理解更强(更会用上下文)
- 迁移更稳(换任务、换分布时更靠谱)
- 小样本监督时往往更吃香(少量标注也能跑得不错)
直觉原因也很好理解:MAE 训练时就一直在做“缺信息情况下靠整体推断”,所以学到的表示更偏向整体结构。
4.3.2 可能的弱点:判别性不如对比学习那么“天生强”
但 MAE 并不意味着全方位吊打对比学习。在一些纯粹强调“快速区分”的任务里(比如只做分类并追求线性可分性),对比学习有时会更占优,因为它训练目标就是“拉开距离、分得更开”。所以可以把两者的偏好简单理解为:
- 对比学习:更擅长“分清楚”
- MAE:更擅长“补完整、看结构”
flowchart LR
A[输入图像] --> B[Patch 划分]
B --> C[随机高比例遮蔽]
C --> D[可见 Patch 子集]
%% Encoder
D --> E[编码器
高容量 Transformer]
%% Decoder
E --> F[轻量解码器]
F --> G[重建被遮蔽 Patch]
%% Pretraining Loss
G --> H[重建损失]
%% Transfer
E --> I[预训练完成的视觉编码器]
I --> J[下游任务迁移]
J --> K[分类 检测 分割]
MAE 的流程可以一句话概括:
- 把图片切成很多 patch
- 随机遮住其中绝大部分
- 用编码器只处理可见部分
- 用解码器把缺失部分重建出来
- 预训练结束后,只保留编码器去做分类/检测/分割等任务
重点不在“重建得多逼真”,而在:通过重建过程,逼编码器学到更通用的表示。
本章小结
本章介绍了遮蔽重建路线,并重点解释了 MAE 为什么能在视觉自监督中崛起。
遮蔽建模在视觉领域起步较晚,是因为图像像素是连续的,早期方法容易学到低级纹理捷径;而 ViT 把图像变成 patch token 序列,再加上注意力的全局建模能力,才让遮蔽预测真正有意义。
MAE 的成功来自三个关键点:高遮蔽率逼模型关注整体结构,非对称编码器–解码器降低训练成本并把能力集中在编码器上,以及 Transformer 在全局推断上的结构优势。
总体上,MAE 的表示往往更稳、更偏向全局语义,但在纯判别任务上不一定总胜过对比学习。这也为下一章的对照分析铺垫了结论:两条路线更可能是互补,而不是替代。
5. 对比学习与 MAE:不是谁取代谁,而是各干各的活
前两章我们分别看了两种自监督方法:
- 对比学习:通过把不同图片分清楚,学到好用的表示
- MAE(遮蔽重建):通过补全被遮住的图片,学到对整体结构的理解
如果只看结果,很容易掉进一个误区:到底是对比学习更强,还是 MAE 更先进?但更合理、也更有解释力的理解方式,其实是:它们不是在解决同一个问题,而是在做“不同分工”的表征学习。
5.1 它们学到的“表示”,本质上哪里不一样?
5.1.1 一个擅长“分清楚”,一个擅长“看整体”
我们可以这样直观地理解两者的区别:
- 对比学习
更像是在教模型:“哪些东西一定要区分开?” - MAE
更像是在教模型:“这张图整体上长什么样?各部分怎么关联?”
对比学习不断拉开不同图片在特征空间中的距离,于是得到的是:
- 结构清晰
- 很好分
- 用简单分类器就能用的表示
这也是为什么它在线性分类测试中经常表现很好。而 MAE 的训练目标根本不是“把图片分得越开越好”,而是:
- 在信息缺失的情况下
- 尽可能理解整体结构
- 把缺的部分补回来
所以它学到的表示,往往:
- 更偏向全局结构
- 不一定在几何上特别“好分”
- 但在复杂任务和迁移中更稳
两者都学到了语义,只是“语义被组织的方式不一样”。
5.1.2 一个在“主动丢信息”,一个在“尽量保信息”
这是一个非常关键、但经常被忽略的差别。对比学习的核心手段是“不变性”:
- 不重要的变化 → 忽略
- 重要的变化 → 保留
这种做法的好处是表示更紧凑,判别更高效。但代价是:
- 有些细节,可能在预训练阶段就被扔掉了
- 等下游任务想用时,已经找不回来了
MAE 的思路正好相反。因为要重建被遮住的大量内容,模型不得不:
- 尽量保留对结构有帮助的信息
- 哪怕暂时用不上,也先留着
结果是表示更“厚”,下游任务可以再用监督信号来“雕刻”判别边界。所以可以简单总结为:对比学习更像“提前做筛选”,MAE 更像“先尽量都记下来”。
5.2 实际用的时候,该选哪一个?
这其实是初学者最关心的问题。
5.2.1 看三件事:数据、任务、模型
- 数据规模
- 数据不算特别大 → 对比学习往往更省事
- 数据非常大 → MAE 更容易发挥优势
- 任务类型
- 目标很明确、偏分类 → 对比学习通常很好用
- 任务复杂、类型多、需要迁移 → MAE 更稳
- 模型结构
- CNN 或轻量模型 → 对比学习更现实
- Vision Transformer → MAE 非常适配
5.2.2 Few-shot 和密集预测任务的区别
在 Few-shot(样本很少) 的场景下:
- MAE 往往更稳,因为它学到的表示更完整
- 对比学习有时会因为“过早分得太死”而不稳定
在 检测、分割这类任务 中:
- 如果场景简单、类别边界清晰 → 对比学习仍然有优势
- 如果场景复杂、跨数据集 → MAE 的迁移一致性更好
这再次说明:不是方法好坏的问题,而是是否“对路”。
flowchart LR
%% Left: Contrastive Learning
subgraph CL[对比学习 Contrastive Learning]
CL1[数据规模
中等~大规模]
CL2[任务类型
判别型任务优先
分类 线性探针]
CL3[模型结构
CNN / ViT 均可]
CL4[学习偏好
不变性
实例区分]
CL5[表征特性
几何结构清晰
线性可分性强]
CL6[迁移需求
快速适配
低成本下游训练]
end
%% Right: MAE
subgraph MAE[遮蔽重建 MAE]
MAE1[数据规模
大规模更优]
MAE2[任务类型
结构与语义建模
检测 分割 多任务]
MAE3[模型结构
Vision Transformer 更适配]
MAE4[学习偏好
可预测性
上下文建模]
MAE5[表征特性
全局语义强
迁移稳定性高]
MAE6[迁移需求
通用基础表征
跨任务一致性]
end
%% Alignment lines
CL1 --- MAE1
CL2 --- MAE2
CL3 --- MAE3
CL4 --- MAE4
CL5 --- MAE5
CL6 --- MAE6
如上图可以概括为
- 对比学习:“我想要一个好分、好用、能快速上线的表示。”
- MAE:“我想要一个底子扎实、以后干啥都不容易翻车的表示。”
本章小结
本章的核心结论其实只有一句话:对比学习和 MAE 不是替代关系,而是功能分工。
对比学习通过强判别目标,构建了几何结构清晰、效率高的表示,非常适合快速迁移到判别型任务;MAE 通过生成式目标,学习了更完整、更稳健的结构表示,在复杂任务和跨场景迁移中更有优势。它们分别回答了两个不同的问题:
- 如何快速、有效地“分清楚”?
- 如何在信息不完整时“看懂整体”?
也正是因为这两个问题都很重要,后续研究才开始尝试把它们融合起来。下一章,我们将进一步讨论这些融合式方法,看看它们如何在实践中结合判别性与结构理解的优势。
6. 融合路线:当“分清楚”和“看整体”开始一起学
在前面的章节里,我们已经看到两条非常清晰的路线:
- 对比学习:靠区分不同图片,学到判别性很强的表示
- 遮蔽重建(MAE):靠补全缺失内容,学到对整体结构的理解
随着研究的深入,大家逐渐意识到一个事实:这两种方法都很有价值,但单独使用时,各自都有明显短板。于是,研究重心开始发生变化:不再纠结“哪条路线更正确”,而是开始思考:能不能把它们的优点结合起来? 这就是所谓的融合路线。
6.1 BEiT:把“补像素”升级成“猜语义标签”
6.1.1 一个关键想法:问题可能出在“预测目标太低级”
研究者回头一看早期遮蔽重建失败的原因,发现一个核心问题:让模型去预测每个像素值,太容易学成“纹理复制”,而不是语义理解。 于是 BEiT 提出了一个很巧妙的改动:
- 不直接预测像素
- 而是先把图像 patch 变成离散的视觉 token
- 再让模型去预测这些 token
如果用人话说,就是:不再让模型“画出来长什么样”,而是让模型“说出来这块像什么”。
6.1.2 为什么离散 token 本身就像一种“弱监督”?
这些视觉 token 并不是人工标签,但它们也不是纯随机的:
- tokenizer 本身是预训练过的
- 已经包含了一些“视觉原型”的信息
所以当模型去预测这些 token 时,实际上是在:用一种“已经带点语义味道的目标”来做遮蔽预测。 这就像给模型加了一点“提示”,而不是让它完全靠像素自己悟。
6.1.3 BEiT 的收获与代价
BEiT 在很多任务上确实效果不错,尤其是:
- 模型大
- 数据多
但它也引入了新的问题:
- tokenizer 好不好,直接决定效果
- tokenizer 本身训练也很复杂
- 整个系统不再“自洽”,而是依赖外部模块
所以 BEiT 的经验是:离散化很有用,但依赖外部先验,本身也是一种风险。
6.2 iBOT:不用离散标签,也能学到结构
6.2.1 把“对比”的思想,塞进“遮蔽重建”里
iBOT 的出发点是另一个问题:我能不能在遮蔽建模的框架里,加一点“判别约束”,但又不回到传统对比学习那套负样本机制?它的答案是:自蒸馏。具体来说:
- 用教师–学生模型
- 看同一张图的不同视角、不同遮蔽方式
- 要求它们的表示“保持一致”
这样做的效果是不用显式负样本,但表示也不会塌缩,同时还能保留生成式建模的好处。
6.2.2 为什么 iBOT 强调 patch 级别?
和很多只看整张图的方法不同,iBOT 把约束下放到了 patch 层面。结果是:
- 全局表示:学整体语义
- 局部表示:保留区域级结构
这在很多实际任务中非常有用,尤其是:
- 检测
- 分割
- 跨任务迁移
iBOT 传达的一个重要信息是:融合不是只能在“整张图”这个层面发生,在更细粒度的表示上,空间反而更大。
flowchart LR
%% Input
A[输入图像] --> B[Patch 划分]
B --> C[随机遮蔽]
%% BEiT Branch
subgraph BEiT[BEiT:离散化重建路线]
C --> D1[可见 Patch]
D1 --> E1[视觉编码器]
E1 --> F1[预测被遮蔽 Patch 的离散 Token]
F1 --> G1[监督信号
来自外部 Tokenizer
(如 dVAE)]
G1 --> H1[表征粒度
偏语义原型级]
end
%% iBOT Branch
subgraph iBOT[iBOT:判别一致性路线]
C --> D2[可见 Patch + 遮蔽 Patch]
D2 --> E2[学生编码器]
E2 --> F2[教师编码器
EMA 更新]
E2 --> G2[Patch / CLS 表征预测]
F2 --> G2
G2 --> H2[监督信号
自蒸馏一致性
无显式离散 Token]
H2 --> I2[表征粒度
实例级 + Patch 级]
end
%% Alignment notes
H1 --- I2
这张图想表达的核心对比,其实可以浓缩成一句话:
- BEiT:先想好“答案长什么样”,再照着这个答案去猜。
- iBOT:不给标准答案,但要求你在不同条件下“自己说话要前后一致”。
两条路,目标相同:同时要语义,又要结构。
本章小结
本章介绍了自监督学习中的融合路线,重点讨论了 BEiT 与 iBOT 两种代表性方法。
BEiT 通过引入离散视觉 token,把遮蔽建模从像素层面提升到更接近语义的层面,在一定程度上弥补了纯像素重建的不足;但这种做法也引入了对外部 tokenizer 的依赖。
iBOT 则在遮蔽建模框架中融入自蒸馏和一致性约束,在不显式使用负样本的情况下,引入了判别式结构,同时保留了生成式建模的优势。
这些方法共同说明了一点:对比与重建并不是非此即彼,融合设计正在成为新的常态。 但融合并不意味着问题已经解决,它往往带来更复杂的训练流程和更多设计选择。
下一章将把视角拉回工程实践,讨论这些自监督方法在真实训练和落地过程中,会遇到哪些现实挑战。
7. 训练一个“真的能迁移”的自监督视觉模型
前面的章节,我们已经讨论了很多“方法该怎么理解”的问题。但对大多数初学者来说,真正关心的往往是:
我照着做,能不能真的训练出一个有用的模型?
这一章我们就不再抽象讨论方法,而是假设一个非常真实的工程场景,完整走一遍:预训练 → 评估 → 迁移,看看哪些选择真的重要,哪些指标反而容易误导。
7.1 一个很现实的起点:资源有限、目标务实
先说清楚背景。我们想做的事是:训练一个通用视觉编码器,以后可以拿去做:
- 图像分类
- 目标检测
- 语义分割
但现实条件是:
- 有很多无标签图片(大约 5000 万张,来源杂)
- 有一点标注数据(ImageNet + 一个中等规模检测数据集)
- 算力不算差,但也不是无限大
目标也很清醒:不追 SOTA,只求在多任务迁移时稳定、不翻车。 在这个前提下,对比学习和 MAE 都是选项,但工程体验差异会非常明显。
7.2 预训练阶段:为什么最后选了 MAE?
7.2.1 方法选择不是看分数,而是看“省不省心”
最终我们选择的是:MAE + ViT-B。原因并不复杂:
- 对数据增强不那么敏感
- 不强依赖超大 batch
- 在不同下游任务中表现更稳定
一句话总结就是:在资源和调参精力有限的情况下,MAE 更“省心”。 一个很重要的经验是遮蔽比例:
- 遮蔽 75%:效果最好
- 遮蔽降到 50% 以下:
→ 模型更容易学到纹理细节
→ 迁移性能明显变差
7.2.2 训练时间比你想象的更重要
很多初学者会纠结:
- 模型要不要再大一点?
- 架构要不要再复杂一点?
但实践中,一个反复出现的结论是:训练不够久,比模型不够大更致命。 在多次实验中发现:
- 训练轮数太少 → 学到的表示很浅
- 后面再怎么微调,都补不回来
所以我们宁愿用 ViT-B,但训练得足够久(800+ epoch)
7.3 怎么评估“学得好不好”?别被一个指标骗了
7.3.1 线性探针:参考可以,但别迷信
预训练完成后,第一件事通常是跑 ImageNet 线性分类。结果是:MAE 的线性精度,明显不如对比学习。如果你只看这个数字,很容易得出结论:MAE 不行?
但在这个实践里,我们并没有因此否定 MAE。原因是:线性探针主要反映的是——“不用怎么调,直接拿来分,能分多清楚?” 而不是:“这个表示以后还能被塑造成什么样?”
7.3.2 真正拉开差距的,是下游微调
当我们把模型迁移到目标检测、语义分割。并且开始正常微调时,情况反而反过来了:
- MAE 收敛更稳定
- 最终性能更可靠
- 在标注样本少的时候优势更明显
这说明了一点:线性探针看的是“起步速度”,下游微调看的是“成长潜力”。
7.4 一些看似不起眼,但很关键的工程细节
7.4.1 batch 不够大怎么办?
现实中 batch size 往往受显存限制。我们的经验是:
- 不要硬拉 batch
- 学习率缩放保守一点
- 反而更稳定
稳定收敛,比“理论最优配置”更重要。
7.4.2 和融合方案的对照:不是越复杂越好
我们也试过一版 iBOT 风格 的模型作为对照:
- 引入 EMA
- 教师–学生结构
- 训练确实更稳定
但代价是:
- 工程复杂度明显上升
- 调参成本更高
在“稳健迁移优先”的目标下,MAE 的性价比更高。
7.5 别只看最终精度,要看“样本效率曲线”
最后,我们做了 Few-shot 实验:用 10%、20%、30% 的标注数据,观察性能如何随样本数变化。结果非常有启发性:MAE 的性能提升很平滑,对比学习模型波动更大,对初始化和增强策略更敏感。这类曲线往往比“最高精度是多少”,更能说明一个表示是不是好迁移。
本章小结
通过这一完整实践,我们得到一个非常朴素、但很重要的结论:一个好的自监督模型,不一定在某个榜单上最亮眼,但应该在不同任务、不同数据量下都不容易翻车。
在真实工程中,方法选择永远是折中的结果:算力、数据分布、调参成本、目标任务共同决定了“最合适”的方案,而不是“理论上最强”的方案。
这一章想传达的核心思想是:关注长期可迁移性,比追单点指标更重要。 这也自然引出了下一章:在视觉大模型和多模态体系中,自监督学习正在扮演怎样的新角色?
8. 自监督在视觉大模型中的角色变化:从“备选方案”到“默认配置”
在计算机视觉的早期阶段,模型通常是为某一个具体任务量身定做的:
- 一个模型做分类
- 另一个模型做检测
- 再一个模型做分割
但随着模型越来越大、任务越来越多,这种做法开始变得不现实。今天的视觉模型,更像是一个通用能力模块,要能被反复复用、不断扩展。在这个过程中,自监督学习的角色发生了一个非常重要的变化:它不再只是“没标签时的替代方案”,而是视觉大模型预训练阶段的默认选择。
8.1 为什么自监督成了视觉大模型的“底座”?
8.1.1 模型越大,标签反而越不够用
在模型规模比较小的时候,监督学习其实很好用:
- 给定明确任务
- 用足够多标签
- 直接把性能拉上去
但当模型规模和数据规模一起膨胀时,问题就来了:
- 标签永远追不上数据增长
- 标签定义本身很有限(只能标你事先想到的东西)
- 过于具体的监督目标,会把模型“训练死在某种任务思路里”
这时,自监督的优势开始显现。通过在海量无标签数据上训练,模型学到的是:
- 形状
- 结构
- 空间关系
- 稳定的视觉规律
而不是某一个具体任务的答案。于是,自监督的定位悄悄发生了变化:从“提升某个任务的技巧”,变成了“构建通用视觉能力的基础设施”。
8.1.2 自监督和监督,其实是分工合作
在现在的视觉大模型中,很少再是“全靠监督”或“完全不用监督”,更常见的流程是:
- 先用自监督学一个通用视觉编码器
- 再用少量标注数据微调或对齐到具体任务
可以把它理解成:
- 自监督:打地基
- 监督学习:装修房子
地基越稳,后面改成什么样的房子,都更容易。
8.2 自监督如何支撑多模态模型?
8.2.1 先“看懂世界”,再“和语言对齐”
视觉大模型的发展,已经不再局限于“只看图像”。现在很多模型都要:
- 看图
- 读文本
- 理解两者之间的关系
在这种多模态模型中,一个非常现实的问题是:如果视觉模型自己都没“看懂图像”,那让它和语言对齐会非常困难。 自监督视觉预训练,正好解决了这个问题。
在进入“图文对齐”之前,视觉编码器已经对视觉结构有稳定理解,不容易因为数据波动而崩,这就像一个人:
- 先学会观察世界
- 再学会用语言描述世界
8.2.2 好的视觉表示,让对齐变得更容易
多模态模型里的“对齐学习”,通常靠对比或匹配来完成。但如果视觉特征本身很混乱,对齐就会变成一件非常不稳定的事。自监督学习的作用在这里非常关键:它先在视觉内部,把表示空间整理好,再让不同模态去对齐这个空间。
这也是为什么,现在很多视觉—语言模型,都先做大规模视觉自监督预训练,而不是从零开始端到端对齐。
8.3 自监督成功了,但问题并没有结束
8.3.1 表示塌缩,为什么还能被避免?
我们可能已经注意到一个事实:
- 有的方法靠负样本
- 有的方法靠自蒸馏
- 有的方法靠优化技巧
都能在实践中防止模型“学成一团一样的东西”。但从理论角度看:为什么这些方法能奏效?有没有一个统一的解释? 这个问题在模型越来越大的今天,变得越来越重要。如果搞不清楚原理,我们就很难判断方法还能不能继续扩展。
8.3.2 数据增强:是在帮模型,还是在“偷偷教模型”?
另一个经常被忽略的问题是数据增强。很多自监督方法,非常依赖裁剪、翻转、颜色扰动,这些增强操作,本质上在告诉模型:
- 什么变化该忽略
- 什么变化很重要
这就引出了一个更深层的问题:自监督学习,到底是在“自己发现语义”,还是在“被我们用增强规则悄悄教语义”?这个问题没有简单答案,但它直接关系到:
- 方法的泛化能力
- 是否能减少人工经验依赖
本章小结
本章从视觉大模型的发展背景出发,讨论了自监督学习角色的变化。
随着模型和数据规模的增长,自监督已经从“没有标签时的备选方案”,转变为构建通用视觉能力的默认步骤。它为视觉大模型提供了稳定、可扩展的表示基础,并在多模态模型中承担着关键支撑作用。
与此同时,自监督学习仍然存在一些尚未彻底解决的问题,例如表示塌缩的理论解释,以及数据增强在多大程度上等同于人为注入先验。这些问题说明:自监督已经很强,但远没有“被完全理解”。
9. 总结:自监督真正改变了什么?它还没解决什么?
在前面的章节中,我们从多个角度看了自监督学习:
- 为什么它会出现
- 它有哪些代表性方法
- 在工程中怎么用
- 在大模型时代扮演什么角色
现在可以站远一点,回答两个最重要的问题:自监督学习,真正改变了什么?它又还有哪些问题没有解决?
9.1 自监督真正改变的,不是模型,而是“怎么学”
9.1.1 从“看标签”到“看数据本身”
在传统监督学习里,训练模型的核心逻辑是:人先想好标签体系 → 模型学习去复现这个体系。模型的注意力,被牢牢绑定在“答题”上。而自监督学习,做了一件非常关键的转变:不再把标签当成学习的起点,而是把数据本身当成信息来源。 模型开始关心:
- 哪些结构是稳定的
- 哪些变化是可以忽略的
- 哪些关系在不同视角下都成立
不管是对比学习,还是遮蔽重建,本质上都在做同一件事:在没有人告诉“答案”的情况下,找出值得长期记住的视觉规律。 这是自监督最根本、也是最深远的改变。
9.1.2 从“把一个任务做好”,到“学一个能反复用的表示”
监督学习通常是任务优先的:为分类而分类、为检测而检测。模型在某个任务上表现很好,但一换任务就要重来。自监督学习把顺序反了过来:
- 先学一个相对通用、稳定的视觉表示
- 再根据具体任务做少量调整
结果是:
- 用更少标注数据
- 适应更多任务
- 对分布变化更不容易翻车
这也是为什么现在越来越多工作,把“表征本身”当成核心资产,而不是某一个指标。
9.2 自监督也不是万能的
9.2.1 它不是“装上就能赢”的银弹
虽然自监督很强,但它并不适合所有情况:
- 数据不够多时,优势会被削弱
- 模型结构、训练细节选错,效果差异很大
- 在某些明确、简单的任务中,传统监督反而更省成本
所以,更现实的定位是:自监督是一个强力工具,但需要和监督、弱监督配合使用。
9.2.2 很多成功,靠的是经验而不是理论
一个必须承认的事实是:
- 为什么某些方法不会塌缩?
- 为什么某些增强策略特别有效?
- 为什么换个设置效果就差很多?
很多时候,我们知道怎么做有效,但并不完全知道为什么。这让方法设计:
- 很依赖经验
- 不够可预测
- 调参成本高
未来一个重要方向,就是把这些“经验规律”提炼成更清晰的理论和设计原则。
9.2.3 从“学表示”走向“学世界”
越来越多研究开始意识到:仅仅学一个“好特征”,可能还不够。下一步的目标,正在变成:
- 学时间上的一致性
- 学因果关系
- 学交互和动态
也就是所谓的 “世界模型”。在这个过程中,自监督学习很可能继续扮演关键角色——它天然适合在没有明确标签的情况下,从连续世界中提炼结构。
小结
- 自监督真正改变的,是“学习的重心”,从标签驱动 → 数据结构驱动
- 它让表征成为核心资产,而不是只服务于某一个任务
- 它很强,但不是万能,仍然需要和监督方法协作
- 很多成功经验,还没被完全理解,理论和设计原则仍在发展中
自监督学习不是终点,而是一个新的起点。随着模型规模、任务复杂度和研究目标的不断变化,它很可能会继续重塑我们理解“学习”和“智能”的方式。