Skip to content

第3章:掩码建模 — BERT 与 MAE

Chapter 3: Masked Modeling — BERT & MAE

"填空"是最优雅的自监督学习方式。BERT 通过 Masked Language Model(MLM)在 NLP 领域掀起革命,MAE(Masked Autoencoder(/ˈɔːtoʊənˈkoʊdər/))则将同样的思想推广到计算机视觉。两个方法的核(kernel /ˈkɜːrnl/)心理念高度一致:遮挡输入的一部分,让模型学会预测被遮挡的内容——这个简单的过程迫使模型学习到深层的语义理解。

时间线:

  • 2018: Devlin et al. 提出 BERT(Masked Language Model)
  • 2022: He et al. 提出 MAE(Masked Autoencoder)

"Fill in the blank" is arguably the most elegant form of self-supervised learning. BERT revolutionized NLP with the Masked Language Model (MLM), while MAE (Masked Autoencoder) brought the same idea to computer vision. Both share a core philosophy: occlude part of the input and let the model learn to predict what's missing — a simple process that forces deep semantic understanding.

前置知识 (Prerequisites): Transformer(/trænsˈfɔːrmər/) Encoder(/ɪnˈkoʊdər/) (第5章第2节)、自监督学习基本概念 (第6章第1节) Code companion: code/masked_modeling.py


1. BERT — 双向 Encoder 的掩码语言模型

BERT — Bidirectional Encoder's Masked Language Model

BERT(Bidirectional Encoder Representations from Transformers)由 Google 在 2018 年提出(Devlin et al., 2018),是 NLP 领域里程碑式的工作。它的核心创新在于用 Masked Language Model(MLM) 实现深度双向预训练。

1.1 输入表示

Input Representation

BERT 的输入由三个嵌入(embedding /ɪmˈbedɪŋ/)相加构成,每个 token 最终表示为:

inputi=TokenEmbedding(ti)+SegmentEmbedding(si)+PositionEmbedding(pi)

输入格式:

Input:  [CLS] The man went to [MASK] store [SEP] He bought milk [SEP]
Token:  [CLS]  the  man  went   to  [MASK] store [SEP]  he  bought  milk [SEP]
Seg:      0     0    0    0    0     0      0     0    1     1      1     1
  • [CLS]: 分类(classification /ˌklæsɪfɪˈkeɪʃən/)标记,其最后一层输出用作整个序列的表示(用于 NSP 和下游分类任务)
  • [SEP]: 分隔标记,分隔两个句子
  • Segment Embedding: 区分句子 A 和句子 B(0 和 1)
  • Position Embedding: 可学习的位置编码,最大 512 个位置

1.2 Masked Language Model (MLM)

Masked Language Model

MLM 的核心操作是随机(stochastic /stəˈkæstɪk/)遮挡 15% 的 token,然后让模型预测它们。但 BERT 使用了一种精心设计的掩码策略

对于被选中的 15% token:

  • 80% 替换为 [MASK]
  • 10% 替换为随机 token
  • 10% 保持不变

为什么不用 100% [MASK] 因为 [MASK] 在微调阶段不会出现,导致预训练-微调不一致。加入随机替换和保持不变迫使模型学习到每个 token 的上下文表示,而不是单纯记忆 [MASK] 模式。

训练目标: 交叉熵(entropy /ˈentrəpi/)损失,只计算被 mask 的位置:

LMLM=iMlogP(y^i=yicontext)

其中 M 是被 mask 的位置集合。

1.3 Next Sentence Prediction (NSP)

Next Sentence Prediction

除了 MLM,BERT 还使用 NSP 作为辅助训练任务:

  • 正样本: 连续的两个句子(50%)
  • 负样本: 随机拼接的两个句子(50%)
  • 输入: [CLS] 位置的输出经过一个分类头,判断是否为连续句子
  • 意义: 帮助模型理解句子间的关系,对 QA、NLI 等任务至关重要

后续研究(如 RoBERTa)发现去掉 NSP 不影响甚至提升性能,但原始的 BERT 设计中 NSP 是重要的组成部分。

1.4 架构细节

Architecture Details

配置BERT-BaseBERT-Large
Transformer 层数1224
隐藏维度 dmodel7681024
注意力(attention /əˈtenʃən/)头数1216
参数(parameter /pəˈræmɪtər/)量110M340M
训练数据BookCorpus + Wikipedia (3.3B tokens)同左

BERT 使用 Transformer Encoder——每个 block 包含 Multi-Head Self-Attention + Feed-Forward Network,每个子层后接残差连接和 Layer Normalization(/ˌnɔːrmələˈzeɪʃən/)。


2. 为什么"填空"能学到语义?

Why "Fill in the Blank" Learns Semantics

2.1 上下文聚合的要求

Context Aggregation Requirement

要准确预测被 mask 的 token,模型必须同时理解左右两侧的上下文:

Input: "The [MASK] is shining brightly in the sky."

要预测 [MASK] 是 "sun":

  • 左侧 "The"、"is" 提示这是一个单数名词
  • 右侧 "shining brightly"、"in the sky" 提示这是发光天体
  • 模型需要同时关注两侧才能准确预测

这与单向语言模型 (如 GPT) 有本质区别: 单向模型只能看到左侧上下文,看不到右侧信息。

2.2 双向理解的数学含义

Mathematical Meaning of Bidirectional Understanding

对于掩码位置 i,BERT 的条件概率为:

P(xicontext)=P(xix1,,xi1,xi+1,,xn)

而单向语言模型的条件概率为:

P(xicontext)=P(xix1,,xi1)

双向上下文的优势在于,模型在表示每个 token 时聚合了整个序列的信息,而不是仅前缀信息。

2.3 多层抽象的形成

Formation of Multi-layer Abstractions

Transformer Encoder 的层数堆叠使得 BERT 可以学到从浅层到深层的抽象:

层数学到的内容示例
浅层 (1-4)词法和句法特征词性、短语边界
中层 (5-8)语义特征语义角色、指代
深层 (9-12)上下文语义主题、情感、全局关系

掩码任务在每一层都提供监督信号——浅层需要理解"什么词性"才能预测,深层需要理解"什么语义"才能预测。这种多层级监督使得 BERT 学到丰富的分层表示。

2.4 降噪自编码视角

Denoising Autoencoder Perspective

MLM 本质上是一种降噪自编码器 (Denoising Autoencoder)

  1. 加噪:[MASK]、随机 token 或原 token 替换 15% 的输入 token
  2. 编码: Transformer Encoder 处理被破坏的序列
  3. 解码: 预测头(线性层 + softmax(/sɒftˈmæks/))恢复原始 token

这种"破坏-恢复"范式迫使模型学习数据的内在结构和分布,而不是简单的记忆。


3. MAE — Masked Autoencoder for Images

MAE — Masked Autoencoder for Images

MAE(He et al., 2021)由 FAIR(Facebook AI Research)提出,将掩码建模的思想推广到计算机视觉领域。

3.1 核心设计

Core Design

MAE 的核心设计极其简单且不对称:

  1. 掩码: 随机遮挡图像 75% 的 patches(如将 224×224 图像分割为 16×16 blocks,遮挡其中 75%)
  2. 编码: 只对可见的 25% patches 进行编码(Encoder 是 ViT)
  3. 解码: 用轻量级 Decoder(/diːˈkoʊdər/) 从编码特征和可学习的 mask tokens 中重建完整图像
  4. 损失: 仅计算被 mask 的 patches 的像素级 MSE 损失

为什么 75% 的掩码比例如此重要?

  • 这远高于 BERT 的 15% 掩码率
  • 图像有高度的空间冗余——相邻像素高度相关
  • 75% 的掩码几乎消除了所有"简单"线索(如颜色扩散(diffusion /dɪˈfjuːʒən/)、纹理延拓),迫使模型理解高阶语义
  • 如果一个模型能仅从 25% 的 patches 重建整张图像,它必然学会了物体的形状、结构和上下文关系

3.2 架构细节

Architecture Details

                                                       Pixel 1
                                                        ...
+------------+    Visible     +-----------+    +--->  Pixel N
| Input      |    Patches     |  ViT      |    |
| Image      |  ----------->  |  Encoder  |  ----   Decoder
| (224×224)  |    (25%)      |           |    |   (Transformer)
+------------+               +-----------+    +--->  [MASK] Token 1
      |                                               ...
  Patch Embed                                        [MASK] Token N
  (16×16)                                             (75%)

关键洞察:不对称设计

组件参数作用
EncoderViT-Large (304M)对可见 patches 做高维语义编码
Decoder轻量 Transformer (~1%)从语义特征重建像素
Mask ratio75%消除空间冗余,强制学习语义

为什么 Decoder 可以很轻? 因为重建像素是"低层次"任务,只需要从高层语义特征映射回像素空间。而 Encoder 需要学习"高的语义理解"才是困难的部分。

3.3 效率优势

Efficiency Advantage

MAE 的计算效率远高于标准 ViT 训练:

  • Encoder 只处理 25% 的 patches → $\sim4\times$ 加速
  • 不需要对比学习中的负样本对
  • 不需要复杂的数据增强(MAE 使用最简单的随机裁剪 + 水平翻转)

这使得 MAE 可以用 8× 更少的训练时间达到或超越对比学习方法(如 MoCo v3、CLIP)。

3.4 损失函数

Loss Function

MAE 对每个 mask 的 patch 计算像素空间的 MSE 损失:

LMAE=1|M|iM1p2x^ixi22

其中 p 是 patch 大小(如 16×16 图像块),M 是 mask 的 patch 集合,x^ixi 分别是重建和原始像素。


4. MLM vs Autoregressive — 双向 vs 单向

MLM vs Autoregressive — Bidirectional vs Unidirectional

4.1 核心对比

Core Comparison

特性BERT (MLM)GPT (Autoregressive)
方向双向 (Bidirectional)单向 (Unidirectional, Left-to-Right)
训练目标预测被 mask 的 token预测下一个 token
生成能力弱(需特殊处理)强(原生生成)
表征能力强(考虑全部上下文)较弱(仅左侧上下文)
下游任务分类、标注、QA 为主生成、对话、代码为主
损失计算仅 mask 位置所有位置
per-step 计算编码器模式(并行)解码器模式(顺序)

4.2 数学对比

Mathematical Comparison

BERT (MLM) — 联合概率建模:

BERT 建模的是条件分布——给定被破坏的序列 X~,预测被 mask 的位置:

P(X~mX~m;θ)=imP(xiX~m;θ)

被 mask 的位置在输出层相互独立(给定输入)。

GPT (Autoregressive) — 链式概率分解:

GPT 建模的是序列的联合概率通过链式法则:

P(X;θ)=t=1nP(xtx<t;θ)

每个位置的条件概率依赖于其左侧的所有 token。

4.3 各自的优势与劣势

Strengths and Weaknesses

BERT 的优势:

  • 每个 token 的表示包含完整的上下文信息 → 更好的理解能力
  • 编码端可并行计算 → 训练效率高
  • 在分类、推理(inference /ˈɪnfərəns/)、阅读理解等理解型任务上历来领先

BERT 的劣势:

  • 不能自然生成文本(需用 masked LM 逐步生成,效率低)
  • 训练中的 [MASK] 与微调/推理时不匹配(discrepancy)
  • 每个 token 的预测相互独立(忽略输出依赖)

GPT 的优势:

  • 原生支持生成任务
  • 训练和推理目标一致(都是预测下一个 token)
  • 可以扩展到超大规模(得益于因果掩码的高效实现)

GPT 的劣势:

  • 每个 token 只能看到左侧信息 → 理解任务上性能偏低
  • 推理时需顺序生成 → 延迟较高
  • 长距离依赖时可能丢失信息

4.4 融合趋势

现代 NLP 模型开始融合两者的优势:

  • T5 (Text-to-Text Transfer Transformer): 将一切任务都转化为 text-to-text 格式,使用 Encoder-Decoder 架构,Encoder 双向、Decoder 自回归(regression /rɪˈɡreʃən/)
  • XLNet: 使用排列语言模型(Permutation Language Model),在自回归框架下实现双向上下文
  • BART: 类似 T5,使用双向 Encoder + 自回归 Decoder
  • UniLM: 共享 Transformer,通过不同的 attention mask 实现单向/双向
  • Electra: 引入判别式预训练(替换 token 检测),更高效

5. 总结与展望

Summary and Outlook

5.1 掩码建模的统一视角

Unified View of Masked Modeling

BERT(文本)和 MAE(图像)的方法论高度一致:

步骤BERTMAE
输入单元TokenImage Patch
掩码比例15%75%
掩码方式[MASK]/随机/不变随机遮挡 patches
编码器Transformer EncoderViT Encoder
解码器MLP 分类头轻量 Transformer
损失Cross-EntropyMSE
重建目标Token IDPixel Values

5.2 关键洞察

Key Insights

  1. 掩码是通用的自监督信号:不管输入模态是什么,"遮挡-预测"都是一个有效的预训练任务
  2. 高掩码率强制语义学习:MAE 75% 的高掩码率证明,消除低级线索才能迫使模型理解高级语义
  3. 不对称编码器-解码器设计:编码器专注于语义理解(大而深),解码器专注于任务重建(小而轻)
  4. 双向 > 单向(理解任务):对需要深度理解的任务,双向上下文是更优的选择
  5. 生成任务需要单向:对需要生成的任务,自回归仍然是不可替代的范式

5.3 后续发展

Subsequent Developments

  • 掩码语言模型的方向演进: BERT → RoBERTa(更大、去掉 NSP)→ ALBERT(参数共享)→ DeBERTa(解耦注意力)
  • 图像方向的演进: MAE → ConvMAE(混合 CNN-ViT)→ MaskFeat(不使用 mask tokens)
  • 多模态掩码建模: MaskCLIP、BEiT-3、MaskVLM 等将掩码思想推广到多模态场景

进一步阅读 (Further Reading):