BERT:双向编码器与完形填空

04-代表变体 核心 约 20 分钟 #BERT#MLM#编码器#检索 更新 2026-10-02
当前状态:未学
本文基于模型知识整理(生成时未联网核对),预训练细节建议对照 Devlin et al. 2019 复核。

一句话定义

BERT(2018)是 Encoder-only 的双向 Transformer:用掩码语言建模(MLM)——随机遮 15% 的 token 让模型根据前后文完形填空——加下一句预测(NSP)预训练;一次预训练,微调即可通吃分类/NER/问答等理解类任务,创下 11 项 NLP 纪录。

为什么重要

BERT 开创了"预训练+微调"范式(NLP 的 ImageNet 时刻),并证明了双向上下文对理解任务的价值;它至今仍是检索(语义向量)、句向量、NER 等理解类任务的效率首选——Decoder-only 统治生成,BERT 系统治"把文本变成向量"。

前置知识

kp-010(架构分化)、kp-008 分词(WordPiece)。

核心概念

  • MLM 完形填空:随机选 15% 位置,其中 80% 换 [MASK]、10% 换随机词、10% 保留——防"只认 [MASK]"的分布偏移。双向注意力让被遮词看到全文(GPT 的因果掩码做不到)。
  • NSP 与其废弃:判断两句是否连续(Segment A/B embedding)——后续研究(RoBERTa)证明 NSP 贡献有限,改为整句连续 + 动态掩码。
  • 两代版本:BERT-base(12 层/768/12 头/110M)与 large(24 层/1024/16 头/340M);RoBERTa 的强化配方(去 NSP、动态掩码、更大 batch 与数据、更长训练)纯训练改进再涨一截。
  • 句子表示:[CLS] 位置的输出作为句向量(分类头接在此);现代句向量(SBERT/SimCSE/BGE)用对比学习大幅强化语义检索质量——BERT 系的现代主战场。
  • 微调范式:预训练一次、每个下游任务微调全模型——"预训练+微调"范式的开创(kp-016 谱系的起点),prompt 时代之前的统治形态。

原理与机制

MLM 为什么适合理解不适合生成:双向注意力看到全文——被遮词的预测利用左右两侧信息(理解的理想条件);但这与自回归生成的"只看左侧"矛盾(kp-010 的方向-目标绑定)——BERT 结构上无法做自回归生成。修复尝试(XLNet 排列语言建模)复杂度高未成主流。

15% 掩码的权衡:掩太少训练信号少;掩太多则各位置独立预测缺乏连贯(且 15% 是"小扰动假设"下 MLM 与真实分布差距的折衷)。MLM 的另一个代价:预训练-微调不一致(微调时没有 [MASK])——现实输入与预训练形态的错位。

为什么检索用双向编码器:语义检索需要"句子→向量"的双向完整理解(查询与文档各自独立编码再比对——双塔结构);Decoder-only 生成式做检索既贵又无必要——任务形态决定架构(kp-010 的分工原则在检索场景的落点)。

图示

MLM: 输入 [CLS] 我 爱 [MASK] 京 [SEP]
     目标: 预测 [MASK]=北 (双向上下文!)
     15%掩码: 80%[MASK] / 10%随机 / 10%保留
NSP: 两句连续? (RoBERTa 证实贡献有限→废弃)
输出: [CLS] → 分类头 ; token表示 → NER/抽取
现代: SBERT/BGE 对比学习 → 语义检索向量

直观类比

MLM 像"完形填空练习":把文章挖 15% 个空,靠前后文填回——填得准说明真读懂了上下文。BERT 是"只做阅读理解、不写作文"的学者:理解力满级,但让他写长文(自回归)就超出了训练范围。

实例或案例

  • 语义检索:BGE/E5 类 BERT 系模型把查询与文档编码成向量、余弦匹配——RAG(kp-030 姊妹篇)的召回层标配。
  • 医疗/法律 NER:领域 BERT(BioBERT/LegalBERT)继续微调——"领域预训练+微调"的持续生产力。
  • Google 搜索:2019 年起 BERT 用于查询理解——"史上最大规模的一次 AI 上线"(当时口径)。

常见误区

  • 误区一:"BERT 是过时模型"。在"文本→向量"的岗位上(检索/分类/聚类)它仍是效率与效果的首选家族——过时的是"用它做生成"的用法。
  • 误区二:"MLM 比自回归目标更差"。对理解任务双向上下文更优;两者是任务适配不是优劣(kp-010 的分工结论)。
  • 误区三:"用 BERT 生成文本"。架构不支持自回归(双向注意力矛盾 kp-010);强行做质量与效率双差。

与其他知识点的关系

  • kp-010:架构分化的 Enc-only 分支。
  • kp-012:MLM 与自回归的目标对照。
  • kp-016:微调范式的起点(LoRA 之前是全参微调 BERT)。
  • kp-030:RAG 检索层的现代岗位。

自测题

  1. BERT 的两个预训练任务是什么?后续哪个被削弱?

答:MLM(15% 掩码完形)与 NSP(下一句预测);RoBERTa 证明 NSP 贡献有限后废弃。

  1. 为什么 BERT 不能做自回归生成?

答:双向注意力与"只条件于前缀"的自回归分解矛盾——训练见全文的模型无法在只看左侧时工作。

  1. 80/10/10 的掩码策略各防什么?

答:80%[MASK] 保证目标强度;10% 随机防"只认 MASK 标记";10% 保留让模型在"无 MASK"时也输出合理表示(微调/推理时无 MASK)。

延伸阅读

  • Devlin 等, "BERT: Pre-training of Deep Bidirectional Transformers"(NAACL 2019)。
  • Liu 等, "RoBERTa: A Robustly Optimized BERT Pretraining Approach"(2019)。
  • Reimers & Gurevych, "Sentence-BERT"(2019,句向量开山)。