BERT:双向编码器与完形填空
本文基于模型知识整理(生成时未联网核对),预训练细节建议对照 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 检索层的现代岗位。
自测题
- BERT 的两个预训练任务是什么?后续哪个被削弱?
答:MLM(15% 掩码完形)与 NSP(下一句预测);RoBERTa 证明 NSP 贡献有限后废弃。
- 为什么 BERT 不能做自回归生成?
答:双向注意力与"只条件于前缀"的自回归分解矛盾——训练见全文的模型无法在只看左侧时工作。
- 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,句向量开山)。