Skip to content

BERT 与编码器家族

本页速览 BERT 用"掩码语言建模 + 双向编码器"重新定义了 NLP 的预训练范式。本文拆解 BERT 的 MLM/NSP 机制、与 GPT 的路线分歧、RoBERTa/ALBERT/DistilBERT 家族演进、T5 的 text-to-text 框架,以及 BERT 遗产在 LLM 时代的位置。

本页含时效性内容,数据截止于 2025-06;JD、榜单、产品功能等信息可能已变化,引用前请核对原始出处。

BERT 与编码器家族

BERT(Bidirectional Encoder Representations from Transformers)是 2018 年谷歌提出的基于 Transformer 编码器(encoder-only)、以"掩码语言建模(MLM)"为预训练任务的双向表示模型。它与 GPT 一同引爆了"预训练 + 微调"范式,但在架构选择上与 GPT 分道扬镳:GPT 走"解码器 + 生成",BERT 走"编码器 + 理解"。本页拆解 BERT 的原理、家族演进与在 LLM 时代的地位;架构底层机制见 Transformer 架构详解,与 GPT 路线的完整对照见 GPT 系列:从 GPT-1 到 GPT-4o

一、BERT 是什么:一句话定义

BERT = 双向编码器 + 掩码语言建模(MLM)预训练 + 下游微调。它用"随机挖掉句子中的词、让模型根据左右两侧上下文猜回来"的方式预训练,得到深度双向的文本表示;再在每个下游任务(分类、抽取、问答、相似度)上加一个轻量输出头微调。

预训练目标(MLM):
输入: 中国的[ MASK ]是北京,人口超过[ MASK ]千万。
预测: [ MASK ]₁ → "首都"    [ MASK ]₂ → "1"(依据左右双向上下文)

下游微调(如情感分类):
[CLS] 这部电影太好看了 [SEP] → 输出层 → 正面

BERT 论文《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》2018 年 10 月发布于 arXiv(2019 年获 NAACL 最佳长文)。它在 11 项 NLP 基准上刷新 SOTA,与 GPT-1 几乎同时出现,共同确立了"预训练 + 微调"时代。

二、原理拆解:BERT 的三个关键设计

1. 双向:与 GPT 的本质区别

GPT 用因果掩码,每个位置只能"看左边"(单向自回归);BERT 不做因果掩码,每个位置能看到全部上下文(双向)。直觉上,理解任务(判断情感、抽取实体)非常依赖下文——"这电影不怎么样"的"不"要结合后面才知道是负面的。双向是 BERT 在理解类任务上压倒同规模 GPT 的根本原因。

2. MLM:掩码语言建模

掩码策略的细节(论文原文):随机选 15% 的 token 做预测,其中 80% 替换为 [MASK]10% 替换为随机词10% 保持原词。这样做的动机:预训练与微调时模型都看不到 [MASK],强制模型学习上下文语义而非"看到 [MASK] 就猜词"。

80/10/10 的比例设计颇有深意:若 100% 都替换成 [MASK],模型只会学会"看见 [MASK] 就猜词",而微调阶段文本里并没有 [MASK],预训练与微调的输入分布就会不一致;若 100% 保持原词,模型又几乎没有预测压力。折中的 80/10/10 让模型既依赖上下文语义、又对"被随机替换的词"保持稳健。这一设计后来被动态掩码、整词掩码等方案沿用或修订,但"让预训练目标与下游分布对齐"的思想至今仍是预训练目标设计的核心考量(见 预训练:数据与目标)。

3. NSP:下一句预测

为了让模型理解"句子间关系"(对问答、蕴含任务重要),BERT 同时训练二分类任务:判断 B 句是否是 A 句的下一句(50% 真实 / 50% 随机)。后续研究表明 NSP 贡献有限(RoBERTa 去掉它反而更强),但它体现了那个时代对"句间结构"的探索。

4. 输入构造与规格

项目规格
输入格式[CLS] 句子A [SEP] 句子B [SEP] + 段嵌入 + 位置嵌入
输出头[CLS] 位向量用于分类;其余位置向量用于 token 级任务
BERT-base1.1 亿参数(12 层 / 768 维 / 12 头)
BERT-large3.4 亿参数(24 层 / 1024 维 / 16 头)
预训练数据BookCorpus + English Wikipedia(约 33 亿词)
最大输入长度512 token(位置嵌入上限)

5. 效果

BERT-large 发布时在 GLUE(79.6 → 82.1)、SQuAD 1.1(F1 93.2,超人类)、SQuAD 2.0 等 11 项基准上全部 SOTA。它的公开权重 + 开源实现让"任何人几小时内微调出一个世界级 NLP 模型"成为现实,直接催生了 Hugging Face 生态的爆发。

三、BERT vs GPT:两条路线的对照

这是 2018–2023 年间最重要的架构对比,值得反复咀嚼:

双向注意力的价值在不同任务上差异很大:凡是"答案依赖全文上下文"的任务(蕴含判断、指代消解、问答),双向有明显优势;凡是"顺序敏感"的任务(生成、翻译、时序推理),单向/自回归更自然。这就是为什么编码器模型在自然语言蕴含、抽取类任务上至今仍是强基线,而生成任务完全归了解码器。选架构时别问"哪个更好",要问"我的任务更依赖全局上下文还是顺序生成"。

维度BERTGPT
架构编码器(encoder-only)解码器(decoder-only)
注意力方向双向(无因果掩码)单向(因果掩码,只看左侧)
预训练目标掩码语言建模(MLM)自回归 next-token prediction
擅长任务理解:分类、抽取、排序、检索生成:续写、翻译、对话、代码
下游适配加输出头微调提示 / 上下文学习 / 微调
规模轨迹停滞在亿级(最多 ~百亿)一路到千亿级、万亿级
时代归宿LLM 时代的"工具件"LLM 时代的"主角"

为什么 GPT 最终赢了?

两种目标本质是互补的:MLM 让表示更"懂",自回归让模型更"会写"。但对话、编程、Agent 这些杀手级应用全部需要生成;而生成能力一旦配上规模与对齐(见 对齐:RLHF 与 DPO),就自然覆盖了大部分理解任务。BERT 的理解优势在绝对能力被拉开后不再显著。

四、编码器家族:BERT 的改进与压缩

BERT 发布后一年内涌现了一批改进,围绕四个方向:数据更多、训练更久、参数更省、推理更快

模型时间参数量关键改动效果
BERT-large2018.103.4 亿基线GLUE 82.1
RoBERTa2019.73.55 亿去掉 NSP、动态掩码、10 倍数据(160GB)、训练更久GLUE 88.5
XLNet2019.63.4 亿排列语言建模(自回归目标 + 双向上下文)当时多项 SOTA
ALBERT2019.9~1200 万(共享后)跨层参数共享 + 分解嵌入 + SOP 替换 NSP以极少参数逼近 RoBERTa
DistilBERT2019.106600 万知识蒸馏(教师 BERT-base)保留约 97% 能力,推理快约 60%
ELECTRA2020.33.3 亿替换 token 检测(判别式预训练)用 1/4 算力追平 RoBERTa

1. RoBERTa:数据与训练细节的胜利

RoBERTa 的结论极具启发性:BERT 还有大量"没训够"的余量——把数据从 16GB 提到 160GB、动态掩码、去掉 NSP、训练 4 倍步数后,GLUE 从 82.1 涨到 88.5。它证明在预训练时代,"数据量 + 训练时长"的重要性不亚于架构创新(这与 规模法则 的结论同构)。

2. ALBERT 与 DistilBERT:省参数与提速

  • ALBERT:三招降参——跨层共享参数、嵌入矩阵分解、用句子连贯性预测(SOP)替代 NSP。参数量从亿级降到千万级,能力只略降。
  • DistilBERT:知识蒸馏的典范——用教师 BERT 的软标签训练 6600 万参数的学生,保留 97% GLUE 能力,推理快约 60%。"大模型教小模型"后来成为 从零构建一个大模型 与蒸馏小模型的主流思路。

3. XLNet 与 ELECTRA:两个"哲学变体"

  • XLNet:想同时要"自回归 + 双向"——通过排列(permutation)让自回归模型在训练时也能看到全部上下文,但没有根本性胜出。
  • ELECTRA:把预训练从"生成式"改为"判别式"——让生成器挖词、判别器判断每个位置是否被替换,计算效率高,性能逼近 RoBERTa。

五、T5:把一切任务统一成"文本到文本"

1. 核心思想

T5(Text-to-Text Transfer Transformer,2019 年 10 月,Google)选择了第三条路线:编码器-解码器(encoder-decoder),并把所有任务(翻译、摘要、分类、问答)统一成"输入一段文本,输出一段文本":

输入: "翻译成英文: 我爱中国"  →  输出: "I love China"
输入: "情感分类: 这部电影太好看了"  →  输出: "正面"

2. 规格与贡献

项目规格
最大版本T5-11B(编码器-解码器,约 110 亿参数)
训练数据C4(Colossal Clean Crawled Corpus,约 750GB,Common Crawl 清洗版)
关键创新统一的 text-to-text 框架、任务前缀(task prefix)、C4 数据清洗方法论
效果发布时 GLUE / SuperGLUE / SQuAD 多项 SOTA

T5 的另一份方法论遗产是"任务前缀 + 统一输入输出"的设计,它让"用同一个模型处理上百个任务"成为可能。这一思想与后来的指令微调一脉相承(见 微调:SFT 与参数高效微调)——事实上,许多指令微调数据集就是把任务描述当作 T5 式前缀。理解 T5,就能理解为什么今天的模型能凭一句指令切换技能:任务本身就是输入的一部分,模型的"通用性"来自对"任务表述"的泛化

T5 的贡献在于方法论:它系统验证了"任务表述的统一性"——同一个预训练模型,靠不同的"文本前缀"切换任务,甚至不需要改输出头。这直接启发了两件事:一是后来的指令微调微调:SFT 与参数高效微调)中"任务描述进输入"的做法;二是"用一个模型做所有事"的通用性思想。

三种架构的记忆法

编码器管"懂"、解码器管"写"、编码器-解码器管"转换"。分类、检索、表示 → BERT 家族;生成、对话 → GPT 家族;翻译、摘要、多任务 → T5 家族。理解架构选型,就能预测模型家族的能力边界。

六、BERT 的遗产与局限

1. 遗产:在 LLM 时代仍活跃的四个方向

  1. 文本表示(Embedding)模型:BERT 类的双向模型至今是高质量 sentence/document embedding 的主力基座——E5、bge、GTE、text-embedding 系列等检索嵌入模型大多以编码器架构蒸馏/微调而来。
  2. 检索编码器:RAG 的密集检索依赖双塔/单塔编码器把 query 和 doc 映射到同一向量空间(如 DPR),这正是 RAG:检索增强生成 的"索引"阶段地基。
  3. 理解任务的性价比选择:分类、NER、垃圾过滤、排序等任务上,几百 MB 的编码器微调模型,成本与延迟远低于调用生成式大模型,仍是工业界的主流方案。
  4. 蒸馏与效率:编码器小模型(DistilBERT 等)与"教师-学生"蒸馏范式,被 LLM 时代的轻量化反复复用。

一个自然的问题是:既然解码器一路涨到万亿级,编码器为什么停在几亿到百亿?原因有三:其一,理解任务(分类、抽取)的能力饱和得早,再大边际收益低;其二,检索表示更看重"对齐"与"区分度"而非"容量",双塔模型太大反而难训练;其三,部署成本——十亿级编码器已能在 CPU 上实时服务,更大的编码器没有性价比。编码器"小而精"是工程选择而非能力天花板。

2. 局限:为什么不擅长生成

  • 没有自回归解码能力:BERT 不产出"下一个词",要生成必须外接 decoder 或改成 seq2seq,效果和架构都不如原生解码器。
  • 双向带来"暴露偏差":训练时看到全句,生成时只能看已生成部分,二者分布不一致。
  • 512 token 上限:早期编码器上下文极短,长文档能力弱(后来 Longformer 等有改进,但未改变格局)。
  • 掩码目标低效:MLM 只利用 15% 的 token 做预测,信息利用效率低于自回归目标(这也是 GPT 路线后来者居上的原因之一)。

3. 编码器与解码器如何协同

现实系统里编码器与解码器不是对立而是协作。一个典型的检索增强问答系统中(见 RAG:检索增强生成):编码器负责把千万级文档库压缩成可检索的向量索引(低成本、低延迟),解码器负责根据检索结果组织自然语言答案(高能力、高成本)。编码器的召回质量直接决定解码器能接触到的信息边界——检索错了,生成再强也无济于事。类似的分工也出现在评测链路:用编码器做向量相似度打分,用解码器做 LLM-as-a-judge 语义评审,两种手段互补。把"谁负责找、谁负责说"想清楚,系统设计就成功了一半。

编码器还承担着不少"隐藏角色":大规模数据去重(用 embedding 找近似重复文本)、分类路由(判断问题类型再分配给不同模型)、安全过滤(敏感内容识别)等环节,编码器都远快于生成式大模型。这意味着即使一个团队完全用闭源大模型做前端,其后端也几乎必然运行着一批编码器模型。编码器不会消失,只会退居到"幕后基础设施"的位置。

4. 幻觉与对齐的缺失

编码器模型本身不"说话",因此没有 幻觉:成因与缓解、对齐、安全这些"生成侧"问题;但当它作为 LLM 应用的一环(检索、分类、打分)时,错误会传导进上层,依然需要纳入 评测与基准 体系。

七、在 LLM 时代的地位:从"主角"到"工具件"

2018–2021 年,BERT 是 NLP 的事实主角;2022 年 ChatGPT 之后,生成式大模型接管了对话、Agent、创作等主流场景,编码器从"主角"退居为"工具件":

场景2020 年的答案2025 年的答案
情感分类 / 抽取微调 BERT小编码器微调 或 生成式模型
问答 / 对话微调 BERT / T5生成式大模型
语义检索向量BERT embedding编码器 embedding(仍主流)
零样本多任务不太可能生成式大模型 + 提示

一句话总结:BERT 定义了"预训练 + 微调"和"深度双向表示",这两样东西今天仍深埋在大模型应用的底层(检索、嵌入、蒸馏、理解子任务)里;只是聚光灯已经从它身上移开,交到了解码器家族手中。

未来几年编码器的研究重心有三个方向:其一是多语言与长文档 embedding,让检索覆盖更多语种与更长篇幅;其二是与多模态结合,把图像、表格、代码也纳入统一的向量空间(相关思路见 多模态大模型);其三是在线学习与持续更新,让表示模型能跟上知识库变化而不必频繁重训。这些方向共同指向一个判断:编码器作为"高效理解与检索件"的地位,将在 LLM 生态中长期存在。

对从业者的直接建议是:把编码器当作工程组件而非研究热点来对待。选一个成熟基座(bge / E5 / GTE 类),用你的数据微调或蒸馏,配好评测集,就能稳定吃到"低延迟、低成本理解"的红利;把省下的精力投入到检索策略与生成模型的应用层,收益通常更大。评估编码器的方法见 评测与基准评估实战

不要用 BERT 家族做生成

一个常见误区是"拿 BERT 微调去写文章/对话"。编码器没有自回归生成机制,硬凑输出既慢质量也差。生成任务请用解码器模型;BERT 的正确用法是表示、检索、分类与蒸馏。

八、编码器的现代应用:检索、分类与蒸馏落地

理解了原理与家族,还要知道编码器在今天具体怎么用。这一节给出四条主流落地路径与工程参数。

1. 检索编码器:双塔与交叉编码器

检索场景存在两类编码器,分工不同:

类型做法速度精度用途
双塔(bi-encoder)query 与 doc 分别编码、比较相似度快(可向量索引)召回(recall):百万级候选粗筛
交叉编码器(cross-encoder)query 与 doc 拼起来整体编码打分精排(rerank):对 top-k 重新排序

RAG 的标准检索链路是"双塔召回 + 交叉编码器重排"(见 RAG:检索增强生成)。代表性开源 embedding 模型有 bge、E5、GTE、text-embedding 系列,它们的通用评测基准是 MTEB(涵盖检索、分类、聚类、语义相似度等任务,见 数据集与基准档案)。

# 双塔召回流程示意(伪代码)
query_vec = embed_query(问题)
doc_vecs  = vector_db.search(query_vec, top_k=100)   # 向量检索粗筛
rerank    = cross_encoder(question, doc) for doc in doc_vecs  # 精排
final     = sort(rerank)[:5]                          # 取前 5 片段

2. 分类与抽取的微调落地

分类(情感、意图、垃圾过滤)、抽取(NER、关键词)是编码器微调的经典场景:

  • 分类:取 [CLS] 位向量 → 接线性层 → softmax;
  • 抽取:对每个 token 位置输出标签(BIO 序列标注);
  • 数据量:几百到几万条标注即可,远少于生成模型的指令数据;
  • 微调要点:低学习率、小 batch、早停,防止灾难性遗忘(方法见 微调:SFT 与参数高效微调)。

3. 蒸馏与压缩

编码器家族是知识蒸馏最成熟的应用领域:用大模型(BERT-large、甚至 GPT 类教师)的软标签训练小模型,可以在保留 95%+ 能力的同时把推理延迟降一个数量级。配合量化(INT8/INT4),编码器小模型可以在 CPU 上实时服务,部署要点见 部署与服务化

4. 落地选型速查

任务推荐方案规模参考
语义检索 embeddingbge / E5 / GTE(编码器蒸馏)0.1~1B 参数
问答精排交叉编码器(BGE-Reranker 等)几十~几百 M
情感分类 / NER微调 BERT/RoBERTa 小模型100~400 M
大规模聚类 / 去重embedding + 聚类算法任意编码器

5. 什么时候别用编码器

场景为什么不用编码器正确选择
对话 / 创作 / 摘要没有生成能力解码器大模型
开放域问答需要组织完整回答解码器 + RAG
需要零样本泛化编码器微调才有效果解码器 + 提示
复杂多步推理编码器不做推理解码器 + CoT/Agent

编码器的当代定位

编码器是"高速理解件",解码器是"通用大脑"。凡是"把文本变成向量或标签"的活儿,编码器又快又省;凡是"说人话、干活"的活儿,交给解码器。两者在 RAG、蒸馏、评测链路里大量协作。

九、编码器选型与实战 Q&A

1. 从任务出发的选型表

任务首选备选为什么
情感 / 意图分类微调 BERT/RoBERTa生成模型 + 提示分类又快又稳,成本低
NER / 关系抽取微调编码器生成模型 + 结构化输出序列标注天然适合编码器
语义检索bge / E5 / GTE闭源 embedding API编码器 embedding 质量高
语义相似度Sentence-BERT 类交叉编码器双塔可索引
文本去重 / 聚类embedding + 聚类大规模可行
问答 / 对话 / 创作解码器大模型需要生成能力

2. 微调编码器的数据与超参

超参经验值说明
学习率2e-5 ~ 5e-5比从头训练低一个量级
batch size16~64过小不稳、过大显存爆
训练轮数2~4编码器易过拟合,早停
数据量几百 ~ 几万条质量 >> 数量
对抗验证防止学到数据集噪声

数据准备与标注规范见 预训练:数据与目标 中关于后训练数据的部分;评测对比见 评测与基准

3. 编码器与生成模型的评测差异

维度编码器生成模型
输出形态向量 / 标签自由文本
评测方式准确率、F1、Recall@k自动指标 + 人类偏好 + LLM judge
可复现性高(确定性打分)中(采样波动)
回归测试便宜贵(每轮都要重新生成)

4. 编码器会被大模型取代吗

短期内不会,原因有四:

  1. 成本量级差异:编码器推理比生成模型便宜一到两个数量级;
  2. 延迟敏感场景:搜索、推荐、风控需要在毫秒级返回;
  3. 可解释与可控:分类结果可审计,适合合规场景;
  4. 蒸馏仍需要教师表示:生成模型的隐藏表示常被蒸馏成小编码器用于检索。

长期看,两者会更深地融合:生成模型提供能力上限,编码器承接高频低延迟任务——RAG、蒸馏、评估链路都是它们协作的舞台(见 RAG:检索增强生成)。

5. 高频问题速答

问题速答
编码器能生成吗?不能,生成请用解码器
中文检索用什么 embedding?bge / GTE / E5 中文版
多少数据够微调?分类几百条起步,抽取更少
微调会遗忘吗?会,用低学习率 + 混合原始语料
部署多大显存?400M 模型 FP16 约 0.8GB,量化后更小
和 LLM 怎么分工?编码器做理解/检索,LLM 做生成/决策

关于"编码器 vs 解码器"还有一个常见误解:很多人以为解码器大模型已经完全覆盖编码器能力。实际上,在需要"固定结构输出 + 高吞吐"的场景(排序、打分、聚类、大规模分类),解码器的生成式输出既慢又难保证格式,编码器仍是工程上更优的选择。这不是能力问题,而是形态匹配问题——两种模型各有所长,选型要看任务形态而非"谁更强"。

一句话记住编码器选型

把"要不要生成文本"作为分水岭:不需要生成 → 编码器(快、省、稳);需要生成 → 解码器。绝大多数系统两者都要,靠 RAG 与蒸馏把它们接起来。

十一、编码器评测基准深读

1. GLUE:理解能力的"原始体检表"

GLUE 由 9 个子任务组成,覆盖句子级与单句级理解:

任务类型考察
CoLA语法可接受性语言学能力
SST-2情感二分类情感理解
MRPC / QQP句子相似/重复语义匹配
STS-B语义相似度打分连续语义
MNLI / RTE蕴含推理逻辑推理
QNLI问答蕴含阅读与推理
WNLI指代消解世界知识

BERT-large 当年以 82.1 登顶 GLUE;RoBERTa 提到 88.5;随后模型突破 90,GLUE 被"测满",研究者转向更难的任务。

2. SuperGLUE:难度升级

SuperGLUE 是为击败 GLUE 的模型而设计:加入常识问答(COPA)、多选阅读(MultiRC)、抽象推理(ReCoRD)等,更强调知识与推理。T5、ELECTRA 等都曾在此登顶。

3. MTEB:检索/表示的现代尺度

随着编码器的主要用途从"分类"转向"检索与表示",MTEB(Massive Text Embedding Benchmark)成为新标尺——覆盖 8 类任务(检索、分类、聚类、重排、STS、摘要等)与数十个数据集,统一评测 embedding 质量。

类别代表性数据集说明
检索BEIR 系列密集检索质量
分类AmazonPolarity 等线性分类能力
聚类Arxiv 等无监督表示
重排各语料排序质量

4. 评测污染与正确用法

  • 污染:模型训练数据可能包含评测集,导致分数虚高;
  • 正确姿势:自建 golden set + 公开基准交叉验证,并记录模型版本与数据版本(方法见 评测与基准);
  • 趋势:编码器评测向"检索场景化"(企业知识库、多语言、长文档)演进。

另外要提醒:GLUE/SuperGLUE 上的历史分数不宜直接用于今天的模型对比——一是任务可能已被训练数据覆盖(污染),二是旧榜无法体现长文本与多语言能力。现代选型请以 MTEB 类新基准加自建集为准。

十二、经典资源与工具

资源用途
HF Transformers加载/微调 BERT 家族与 embedding 模型
HF sentence-transformers句向量、双塔训练与推理
MTEB 榜单embedding 模型横向对比
GLUE / SuperGLUE理解任务基准
Hugging Face Trainer / PEFT微调与 LoRA
bge / E5 / GTE 仓库中文与多语言 embedding 基座

编码器测评的现代建议

分类小任务看 GLUE 历史 + 自建集;检索任务直接看 MTEB + 你的数据实测。榜单只是起点,拿自己的数据跑一遍才是真验收。

关于蒸馏还有一个常被引用的比例:编码器蒸馏的典型结果是"约 40% 的参数保留约 90% 的能力"——DistilBERT 用 6600 万参数(约为 BERT-base 的 60%)保留 97% GLUE 能力是其中比较优秀的案例。蒸馏不仅省显存,还让模型更容易部署到边缘设备(手机、IoT),这与 部署与服务化 中的量化思路叠加后,是把大模型能力"下沉"到低成本硬件的主要路径。

十三、延伸阅读

参考资料