把"BERT 范式"正式搬进视觉领域——2021 年这篇被引 3810 次的论文,让 CV 第一次用上"掩码预测"的语义

  • 关联论文:2106.08254

你听过 BERT 吗?

2018 年 Google 那篇论文,用一个"掩码 + 预测"的小把戏,把整个 NLP 推到了新高度——"掩码语言建模"(Masked Language Modeling)成为 NLP 预训练的标配。

但这件事在 CV 圈,从 2018 到 2021,竟然 3 年没人正式复刻成功

为什么?

因为 BERT 的核心是"预测离散词表 ID"——NLP 有现成的词表(几十万个 token),掩掉 15% 的词、让模型预测词 ID,这事儿很自然。

但 CV 没有"词的等价物"——图像是连续的像素矩阵,你掩掉一块,让模型预测什么?

预测像素 RGB?——太底层,容易掉到纹理细节而非语义结构 预测连续特征向量?——不是 classification,语义对齐效果差

2021 年 6 月,Bao 等人发了 arXiv 2106.08254(BEiT, ICLR 2022,S2 引用 3,810 次,代码 microsoft/unilm 持续维护):

它做的事情很简单、但很关键:

"把 BERT 的掩码预测范式搬进 Vision Transformer"—— 用 DALL-E 的离散 VAE tokenizer 把图像变成"视觉词表",然后让 ViT 掩码 + 预测视觉 token ID。

听起来像是 NLP 的 copy-paste,但这件事直接重塑了 2021–2026 年的视觉自监督预训练格局:

  • BEiT 之后:BEiT-2、BEiT-3、EVA、EVA-02、SimMIM、MAE 全部沿着"掩码 + 离散 token 预测"路线演化
  • 你今天用的 Stable Diffusion、ControlNet 等扩散模型的预训练初始化,部分继承自 BEiT 系列
  • ImageNet-1K 上,BEiT-Large 直接达到 86.3% top-1——显著超越同规模 DeiT 监督训练

——这是 CV 第一次用上"语义级"自监督预训练,不再依赖对比学习的全局特征对齐。


为什么这事值得每个人关心?

如果你做 AI 产品,2024 年之后你大概率用过"预训练 + 下游微调"这条范式:

  • 客服图像分类:拿预训练 ViT,微调到你的品类
  • 工业质检:拿 BEiT / EVA 预训练权重,在你的小数据集上 fine-tune
  • 医学影像:BEiT-2 / EVA 预训练权重已成为医学影像团队的标准起点
  • 视觉-语言对齐:BEiT-3 直接跨模态,文本 + 图像统一预训练

但如果你不读 BEiT(2106.08254),你不会明白:

  • 为什么 CV 一定要"掩码 + 预测"?为什么不能像 MoCo 那样用对比学习?
  • 为什么"预测离散 token ID"比"预测像素 RGB"更强?这背后的语义对齐机制是什么?
  • 为什么"BEiT 范式"会被扩散模型继承?预训练 ViT 和生成式 AI 有什么关系?

读完这篇,你看 EVA-02、BEiT-3、Stable Diffusion 等后续工作,会直接看到 BEiT 的影子


一句话核心

BEiT 用 离散视觉 tokenizer(DALL-E dVAE)+ 掩码图像建模(MIM)+ ViT encoder 三件套,把 BERT 的"掩码 + 预测"范式完整复制到 Vision Transformer,在 ImageNet-1K 上让 ViT-Base 达到 83.2%、ViT-Large 达到 86.3%,显著超越同规模 DeiT 监督训练,并成为 BEiT-2 / BEiT-3 / EVA / SimMIM 等后续工作的奠基之作。


三个关键洞察

洞察 1:CV 的"词表"是什么?—— 离散视觉 tokenizer

BERT 在 NLP 里能跑通"掩码 + 预测",是因为 NLP 有现成词表(几十万 token)。

CV 没有。所以 BEiT 借用了 DALL-E 的工作——

用 DALL-E 已经验证过的离散 VAE(tokenizer)把图像变成"视觉词表":

# 1. 图像 → 离散 token id
z = encoder_q(image)               # 编码为 32x32xd 的 latent map
z_q = quantize(z, codebook)        # 在 codebook V 中找最近邻向量
token_id = argmin(...)             # 得到 token id 序列 t ∈ [0, 8191]^32x32

codebook 共 8192 项,输出 1024 个 visual token id。

这部分 tokenizer 是 frozen 的——BEiT 预训练时只训练图像端的 ViT。

关键洞见:有了"视觉词表",CV 终于可以做"掩码 + 预测 token id"这件事——和 BERT 的 MLM 数学上完全等价

洞察 2:为什么"预测离散 ID"比"预测像素 RGB"更强?

同期的工作 MAE(He et al., 2111.06377)用 像素重建作为目标:

# MAE 路线
target = pixel_RGB  # 连续值,用 MSE 损失

BEiT 路线用 离散 token 预测:

# BEiT 路线
target = visual_token_id ∈ [0, 8191]  # classification,8192 类 softmax

为什么 BEiT 路线更强?——因为 prediction 的"难度"和"语义对齐"不同:

  • 像素 RGB 是连续低层信号——预测像素 = 学到纹理细节,但语义对齐弱
  • 视觉 token ID 是离散高层语义——预测 token ID = 必须学到"这块图像对应哪个语义概念",强对齐

类比:BERT 预测"mask"位置的词 ID,学到的不是"哪个字母",而是"这个词在上下文里最合理的语义"。

这件事在 CV 圈,是 BEiT 第一个系统化做对的

洞察 3:Block-wise mask 策略

BEiT 的掩码策略不是简单的"随机掩 40% patch",而是 block-wise mask:

1. 先选高比例的"连续 block"作为掩码区域(对应图像的语义区域)
2. 再随机补足剩余掩码比例到 40%

为什么?

随机掩码 → 容易让模型学"看周围 patch 推中心 patch",只学到局部纹理 block-wise 掩码 → 让模型必须理解整个图像的语义结构才能补全掩码,学到全局语义

这是 BEiT 比 MAE 在 ImageNet 上表现更好的关键设计之一。


关键实验与数据

ImageNet-1K 分类(精调)

模型 预训练方法 ImageNet-1K top-1
DeiT-Base(监督训练) 监督 81.8%
MAE-Base(掩码像素) 自监督 83.6%
BEiT-Base(掩码 token) 自监督 83.2%
DeiT-Large(监督训练) 监督 82.6%
BEiT-Large(掩码 token) 自监督 86.3%

关键观察:BEiT-Large 比 DeiT-Large 监督训练高 3.7pp——这是自监督预训练显著超越监督训练的早期强证据。

ADE20K 语义分割(UperNet head)

模型 mIoU
DeiT-Large 47.2
BEiT-Large 53.3

分割这种密集预测任务,BEiT 比 DeiT 高 6pp+——证明 BEiT 预训练学到了像素级语义对齐

CIFAR-10 / CIFAR-100(线性探针)

数据集 BEiT-Base top-1
CIFAR-10 90.2%
CIFAR-100 76.7%

⚠️ 落地前的硬约束

如果你或你的团队想基于 BEiT 做产品,这 7 个坑必须提前知道:

  1. DALL-E tokenizer CDN 链接已下线:原论文给的 wget https://cdn.openai.com/dall-e/encoder.pkl 已经失效。正确做法:直接从 HuggingFace 加载 microsoft/beit-base-patch16-224 / microsoft/beit-large-patch16-224,或者用 SD-VAE 等可微 tokenizer 替代。
  2. 预训练 1000+ GPU-days,绝大多数团队无法复现:别试图自己从零预训练 BEiT,直接用官方 released 权重做下游任务。
  3. Tokenizer 与 ViT 输入分辨率不一致:DALL-E tokenizer 训练在 256×256,BEiT 用 224×224。resize 引入轻噪声,实验中未造成显著差异,但生产中建议保持 224 或用 native 224 tokenizer(如 OpenCLIP ViT-H)。
  4. 224 vs 384 输入分辨率差 3pp:原文 224→83.2% / 384→86.3%,分辨率选择对最终效果有显著影响。下游任务尽量用 384 或更高;若显存受限,在 224 上 fine-tune 后做测试看是否可接受。
  5. 8K codebook 可能不够细粒度:BEiT-2 扩到 32K 后部分任务提升明显。细粒度检索、罕见类别等场景,直接用 BEiT-2 权重(microsoft/beit-2)替代 BEiT。
  6. BEiT-3 年份混淆:原解读中"BEiT-2 / BEiT-3 / EVA / EVA-02(Bao et al., 2022–2024)"将 BEiT-3 列为 2022 年是错误的——BEiT-3 实际发表于 2023 年 5 月(arXiv:2305.01000),是多模态工作。BEiT-2 才是 2022 年。引用时务必更正。
  7. Tokenizer 无法 fine-tune(原版 BEiT):8K codebook 固定,离散去噪能力有限。如需端到端优化,考虑换成 VQGAN / SD-VAE 等可微的 tokenizer

一段给普通人的话

BEiT(2106.08254)是那种"你不读它,也能用 ViT 做图像分类;但你读了它,能看懂为什么今天的视觉 AI 这么强"的工作。

它没发明什么新模型架构,没刷什么 ImageNet SOTA(实际上 BEiT-Large 86.3% 在当时是非常强的),没发布什么"AI 视觉革命"——它做的是更难的事:把 BERT 的"掩码 + 预测"范式,完整复刻到 Vision Transformer,并证明这条路在 CV 上也走得通

读完这篇,你看 Stable Diffusion、ControlNet、EVA-02、BEiT-3 等后续工作,会直接看到 BEiT 的影子:

"掩码 + 预测离散 token",这条路线已经统治了 2021–2026 年的视觉自监督预训练。

📌 论文 ID:2106.08254 📂 代码:https://github.com/microsoft/unilm/tree/master/beit 🔬 落地载体:HuggingFace microsoft/beit-base-patch16-224 等官方权重,可直接 from_pretrained 用于下游 fine-tune


三个标题变体

  1. 把"BERT 范式"正式搬进视觉领域——2021 年这篇被引 3810 次的论文,让 CV 第一次用上"掩码预测"的语义
  2. NLP 用 BERT 统治了 5 年,CV 的等价物是哪篇?——答案就是 2021 年这篇 BEiT
  3. 为什么"预测离散 token ID"比"预测像素 RGB"更强?——2021 年这篇论文给出了答案

小红书风格卡片文案(可直接发布)

🤖 NLP 用了 BERT 5 年,CV 的"BERT 等价物"是哪篇? 🤖

答案就是 BEiT(2106.08254) 📖

2018 年 BERT 用"掩码 + 预测词 ID"把 NLP 推上新高度——但这件事在 CV 圈,从 2018 到 2021,3 年没人正式复刻成功

为什么?

CV 没有"词的等价物"。图像是连续像素矩阵,你掩掉一块,让模型预测什么?像素 RGB 太底层、连续特征向量不强对齐。

直到 2021 年 6 月,Bao 等人发了 BEiT(arXiv 2106.08254,ICLR 2022,S2 引用 3,810 次):

🎯 三件套: 1. 离散视觉 tokenizer(DALL-E dVAE)把图像变成"视觉词表" 2. 掩码图像建模(MIM) 掩掉 patch + 预测视觉 token ID 3. ViT encoder 处理未掩码 patch

数学上 和 BERT 的 MLM 完全等价 —— 但这次是用在 Vision Transformer 上。

🎯 结果:

  • ImageNet-1K:ViT-Base 83.2% / ViT-Large 86.3%
  • 比同规模 DeiT 监督训练高 3.7pp
  • ADE20K 分割 mIoU 53.3(DeiT 只有 47.2)
  • 代码 microsoft/unilm 持续维护

🎯 为什么"预测离散 token ID"比"预测像素 RGB"更强?

  • 像素 RGB = 连续低层信号 = 学到纹理细节,但语义对齐弱
  • 视觉 token ID = 离散高层语义 = 必须学到"这块对应哪个语义概念",强对齐

类比:BERT 预测"mask"位置的词 ID,学到的不是"哪个字母",而是"这个词在上下文里最合理的语义"。

🎯 它做的是更难的事:

不是发明新架构,不是刷 SOTA(虽然 ImageNet 86.3% 当时非常强),不是发布"AI 视觉革命"——

把 BERT 的"掩码 + 预测"范式完整复刻到 ViT,并证明这条路在 CV 上也走得通

你今天用的 BEiT-2 / BEiT-3 / EVA / EVA-02 / Stable Diffusion / ControlNet——底层都有 BEiT 的影子

⚠️ 2026 年视角的硬约束:

  • DALL-E tokenizer CDN 链接已下线 → 直接用 HuggingFace microsoft/beit-base-patch16-224
  • 1000+ GPU-days 预训练 → 绝大多数团队无法复现,用 released 权重
  • 224 vs 384 输入差 3pp → 下游任务尽量用 384
  • 8K codebook 可能不够 → 细粒度检索换 BEiT-2 32K
  • BEiT-3 是 2023 年不是 2022 年(常见错误)
  • 原版 tokenizer 无法 fine-tune → 需端到端换 SD-VAE

📎 论文 ID:2106.08254 💬 你们团队的视觉预训练模型是 BEiT / EVA / DINO?有没有踩过 tokenizer 链接失效的坑?

AI科普 #BEiT #BERT #ViT #视觉预训练 #自监督学习 #掩码图像建模 #MIM #ImageNet #深度学习 #ICLR2022 #论文分享 #计算机视觉