MAE:盖住 75% 的图,让 ViT 学会「脑补」
🎯 为什么重要:CV 自监督的「BERT 时刻」
NLP 早就在用 BERT/GPT 的「掩码预测」做自监督预训练,模型越大、效果越好,一路 scale 到百亿参数。但 CV 一直没跟上——直到 2021 年,自监督视觉的主流还是 对比学习(MoCo、SimCLR),靠的是「两个视角一致」,严重依赖数据增强,而且没有那种「越大越涨」的爽快曲线。
(ii) 图像信息冗余远高于语言——一句话去掉几个词,要真的懂语言才能填;但一张图去掉一块 patch,顺着相邻像素就能猜个八九不离十,模型不需要学语义;
(iii) 像素重建是低语义任务,所以 decoder 在 CV 里比在 NLP 里更重要(BERT 的 decoder 是个 MLP 就够)。
MAE 的答案是直接正面解决 (ii) 的冗余问题——把 mask 比例拉到 75%,让"顺着纹理外推"不再够用,逼模型理解整体结构和语义。
💡 核心思想:非对称 encoder-decoder + 极高 mask 比例
MAE 的结构极其简单(论文 Fig.1):encoder 是个大 ViT,只吃可见的 25% patch;decoder 是个轻量 ViT,吃「可见 patch + mask token」重建像素。预训练完后 decoder 丢掉,只留 encoder 接下游任务。
训练 loss 极简——只在 mask patch 上算 MSE,跟 BERT 一样「不计算可见部分」(论文 §3)。重建目标默认是每个 patch 的像素值(可选 per-patch 归一化,效果略好)。
🛠️ 4 个关键设计(消融全部验证过)
| 设计 | 做法 | 为什么必要(论文 Table 1 消融) |
|---|---|---|
| ① 高 mask 比例 75% | 随机均匀采样、无替换地移除 75% patch | linear probing 在 75% 达到峰值(73.5%),差距可达 ~20%(54.6% vs 73.5%)。关键洞察:图像冗余,必须遮狠一点。BERT 只遮 15% 是因为语言不冗余 |
| ② 非对称 encoder-decoder | encoder 不见 mask token,只看 25%;decoder 小(<10% FLOPs/token) | encoder 加 mask token → linear probing 掉 14 个点(73.5→59.6),且训练慢 3.3×。非对称是 scaling 的前提 |
| ③ 像素重建(不需 tokenizer) | 直接回归像素值,MSE loss | 不依赖 dVAE(BEiT 需要 250M 图像预训练 tokenizer)。per-patch 归一化像素 ≈ dVAE token(Table 7),但简单得多 |
| ④ 几乎不需数据增强 | 只用 random resized crop(可选翻转),不用 color jitter | 甚至不增强都能 work;contrastive 不增强直接崩。因为每次 mask 就是新样本,mask 本身即增强 |
论文 §1 (ii) 说:"Images are natural signals with heavy spatial redundancy—a missing patch can be recovered from neighboring patches with little high-level understanding." 如果只遮 30%,模型顺着相邻像素「外推」就完了,根本不需要理解「这是一只狗」。遮到 75%,相邻可见 patch 不够用,模型被迫建立"物体级"的整体理解——这正是 Fig.2-4 里那些"脑补出完整狗/船/人脸"的重建结果的来源。
📊 结果:vanilla ViT-H 87.8%(ImageNet-1K SOTA)
| 维度 | 数字(溯源论文) |
|---|---|
| ImageNet-1K 微调精度 | ViT-B/16: 83.6 · ViT-L/16: 85.9 · ViT-H/14: 86.9 · ViT-H/14@448: 87.8%(Table 3) |
| vs 从头训 | ViT-L 从头训 82.5%(我们的实现)→ MAE 微调 50 epoch 后 85.9%。微调 epoch 只有从头训的 1/4 |
| vs 其他自监督 | 全面超过 DINO / MoCo v3 / BEiT;比 BEiT 简单(无需 tokenizer)、快 3.5×/epoch |
| 训练加速 | 非对称设计下,整体 FLOPs ×1/3.3,wall-clock 2.8× ~ 4.1× 加速(Table 2) |
| 线性探测 vs 微调 | linear probing 不如 MoCo v3,但部分微调(只调 4 个 block)就反超(Fig.9)——说明 MAE 学的是非线性但更强的特征 |
| 迁移到 COCO 检测/分割 | ViT-L: APbox 53.3(+4.0 vs 监督预训练);ADE20K 语义分割 mIoU 53.6(+3.7)(Table 4, 5) |
| 迁移到 iNaturalist | ViT-H448: 83.4(2017)/ 86.8(2018)/ 88.3(2019),均超以往最佳(Table 6) |
| 训练时长不饱和 | linear probing 在 1600 epoch 仍未饱和(Fig.7)——可继续 scale |
🌐 在领域中的位置
MAE 是 CV 自监督的「BERT 时刻」——它证明了:「掩码预测 + 大 ViT」这条路在 CV 也走得通,而且不需要对比学习、不需要数据增强工程、不需要 tokenizer,简单到不可思议。它的思想后来被继承到 SAM(分割基础模型)、ViT-22B、以及各种多模态预训练(如 VideoMAE、MaskFeat)中。在机器人/具身智能里,MAE 也是视觉编码器预训练的事实标准之一(RP1、OpenVLA 等都以 MAE-style 或其衍生作为 backbone 预训练)。
❓ 常见误区
MAE 的"重建像素"听起来很底层,它真的能学到语义吗?
能,而且这是论文最反直觉的发现。Fig.4 用 75% mask 训出来的模型,给它 95% mask 它也能脑补出合理的物体——这说明它学到了"物体/场景"级别的整体理解,不是单纯的纹理外推。论文 §6:「we observe it has learned numerous visual concepts, i.e., semantics」。
为什么不像 BEiT 一样预测 token?
Table 7 直接对比了:用 per-patch 归一化的像素 vs dVAE token,在 ImageNet、COCO、ADE20K 上差异 statistically insignificant(< 0.2%)。但用像素不需要 250M 图像预训练 dVAE,简单太多。这是 MAE "simple is scalable" 哲学的体现。
那为什么 linear probing 反而不如 MoCo v3?
MAE 学的是强但非线性的特征。linear probing 强制用线性头,正好卡在它的短板上。但只要微调一个 Transformer block,精度就从 73.5% 跳到 81.0%;微调 4 个就接近全微调(Fig.9)。论文建议:linear probing 不是评估表征质量的唯一指标。
75% mask 在 BERT 里只用 15%,为什么差这么多?
正是因为语言不冗余、图像冗余。BERT 遮 15% 已经逼模型理解语法;MAE 遮 15% 模型顺着纹理就猜中了,啥也学不到。论文 §1 (ii) 的核心观察。
MAE 用在 RL / 机器人上意义是什么?
机器人策略网络里的视觉编码器,最忌讳过拟合到 ImageNet 标签。MAE 这种不依赖标签、不依赖增强的预训练,能提供更通用的视觉表征,被广泛用作具身智能系统的视觉 backbone(或在机器人数据上直接做 MAE-style 预训练,如 RPT、VC-1 等)。