一、基本概念

前向传播示意图

1、什么是BERT?

BERT,全称 Bidirectional Encoder Representations from Transformers,是 Google 于 2018 年提出的一种预训练语言模型。它的核心思想是使用 Transformer 编码器结构,通过 双向上下文建模 学习文本的语义表示。
传统的语言模型往往是单向的,比如左到右(GPT)或右到左(ELMo),因此在预测一个词时只能看到部分上下文。而 BERT 通过 Masked Language Modeling (MLM),让模型在训练时可以同时利用左右上下文信息。
BERT 的另一个特点是采用了 预训练 + 微调 的范式:先在大规模无监督语料上通过 MLM 和 NSP 预训练得到通用语言表示,再在下游任务(分类、问答、NER、检索等)上进行微调。这个范式极大地提升了 NLP 的通用性和效果,也成为后续一系列预训练模型(RoBERTa、ALBERT、ELECTRA)的基础。

ELMo(Embeddings from Language Models)是基于双向LSTM(BiLSTM),在大规模语料上训练语言模型,使用前向LM和后向LM,得到两个方向的隐藏状态,再结合成上下文相关的词向量,并不是完全的单向的
NER:命名实体识别

2、BERT的核心创新点

可以从三个角度总结:
**双向性:**不同于 GPT 的单向自回归,BERT 通过 MLM 任务实现了双向上下文建模,使得每个 token 的表示同时依赖于前文和后文,这对理解类任务至关重要。

代码层面实现的双向:不使用因果掩码,让子注意力对整句全可见,GPT使用的是上三角因果掩码

**预训练任务设计:**引入了 MLM 和 NSP。MLM 让模型学习细粒度的词语语义;NSP 让模型具备句间关系判断能力。

统一框架: BERT 提出了“预训练一次,多任务通用”的理念。预训练好的 BERT 可以通过简单的微调,在情感分类、问答、自然语言推理、命名实体识别等任务上取得当时的 SOTA(state-of-the-art)效果。

这三个创新点共同推动了 NLP 进入“预训练时代”,BERT 之后几乎所有主流模型都是在它的框架上演化的。

二、架构和机制

3、Bert的输入是怎样的

BERT输入构成

CLS(Classification token) 用作全局语义表示,因为在训练过程中,反向传播会不断把任务的监督信号传递到CLS的向量,被迫学会“压缩”整个输入序列的信息。
SEP(Separator token)是一个分隔符,用于标记句子之间和句子结束

BERT 的输入向量由三部分构成:

  1. Token Embedding:词向量,基于 WordPiece 分词。

    • 优点:减少词表规模,解决未登录词问题。
    • 中文:每个汉字是最小单元,后来有 Whole Word Masking 改进。

    WordPiece 是一种 基于统计的子词分割算法。核心是:在训练语料上,从单字符开始构建词表;
    不断合并最常见的子词对(pair),直到达到预设的词表大小(比如 BERT 的 vocab 是 30k 左右);
    新词如果不在词表里,就继续拆分,直到能用词表表示。
    基于词典和规则的分词:jieba、HanLP

  2. Segment Embedding:区分句子 A 和句子 B。

    • 在 NSP 任务中,BERT 会输入两个句子,Segment Embedding = 0/1 表示 A 或 B。
    • 如果是单句任务,所有 token 的 Segment Embedding = 0。
  3. Position Embedding:表示 token 在句子中的位置。

    • BERT 使用的是 可学习的绝对位置向量,不同于 Transformer 原始的正弦位置编码。
      最终输入是三者的逐元素相加,然后送入 Transformer 编码器层。

4、BERT使用的是什么位置编码

BERT 使用 可学习的绝对位置编码。
在 Transformer 原始论文中,位置编码是固定的正弦/余弦函数,能捕捉一定的相对位置信息,但无法微调。
BERT 改用可学习的 embedding,使得模型可以更灵活地学习不同位置的分布特征。
不过,这种方法也有局限:模型只能处理最大长度范围内的序列,超长文本需要特殊处理(滑窗/分块/改用相对位置编码)。这也是后续 Transformer-XL、DeBERTa 引入相对位置编码的重要原因。

5、BERT-Base 和 BERT-Large 有什么区别?

BERT-Base:12 层 Transformer encoder,隐藏维度 768,12 个注意力头,总参数量约 1.1 亿。

BERT-Large:24 层,隐藏维度 1024,16 个注意力头,总参数量约 3.4 亿。
区别在于层数更深、表示能力更强,但同时对算力需求显著增加。
实际使用中,BERT-Base 更常用,因为在很多任务上已经能取得足够好的效果,而 BERT-Large 微调时容易过拟合,并且推理成本过高。

三、预训练任务

6、什么是 MLM?为什么要用 80/10/10 策略?

MLM(Masked Language Modeling)是 BERT 的核心预训练任务。训练时,随机选择 15% 的 token 进行预测:
80% 替换为 [MASK];10% 替换为一个随机词;10% 保持原词不变。
这样做有两个原因:
如果始终用 [MASK],模型学到的分布与推理阶段不同(因为推理时不会有 [MASK]),会导致 训练-推理分布不一致。
保持 10% 不变,可以让模型学会区分“该词是否应该被预测”,增强鲁棒性。
随机替换 10%,让模型学到更强的上下文判断能力。
所以 80/10/10 是一个权衡,既保证模型能学到语义表示,又避免过度依赖 [MASK]。

7、什么是 NSP?为什么后来很多模型去掉 NSP?

NSP(Next Sentence Prediction)任务的目标是判断句 B 是否是句 A 的下一句。训练时,50% 的情况句 B 是 A 的真实后续句,50% 是从语料中随机采样的句子。
NSP 的设计初衷是让模型学习句间关系,比如自然语言推理、问答中的跨句推理。
但是后续研究(RoBERTa 等)发现,NSP 对性能提升有限,甚至会带来噪声。原因有两点:

  1. 随机采样的负样本过于简单,模型容易取巧,不是真正学到语篇结构。
  2. 更大语料、动态 mask 等方法效果更显著,抵消了 NSP 的作用。

因此 RoBERTa 直接去掉 NSP,而 ALBERT 引入 SOP(Sentence Order Prediction) 作为替代,更注重学习句子顺序关系,而非简单的相关性。

四、下游任务应用

8、BERT 如何用于文本分类?

输入文本时,BERT 会在开头加上 [CLS] 标记。BERT 输出时,[CLS] 的隐藏向量被认为是整个序列的聚合表示。将 [CLS] 的向量送入一个全连接层 + softmax,就能做文本分类。
例如:情感分析、主题分类、新闻分类等任务,都可以直接使用这种方法。
注意:虽然 [CLS] 是常用做法,但在句向量任务上直接用 [CLS] 效果并不好,需要额外的对比学习方法(如 SimCSE)。

9、BERT 如何做序列标注(NER/分词)

序列标注任务需要对每个 token 进行预测。
方法:对 BERT 的每个输出隐藏向量加一个分类层,预测该 token 的标签(如人名、地名、O)。
有时会在输出层加 CRF(条件随机场),保证预测结果在序列层面合法,比如 BIO 标注格式中不出现非法组合。

10、BERT 如何做问答(SQuAD)?

输入格式:[CLS] Question [SEP] Paragraph [SEP]。
BERT 的输出用于预测答案的起始位置和结束位置:
每个 token 的向量经过一个全连接层,得到两个分数:start logit 和 end logit。
通过 softmax 得到概率分布,选择概率最大的 span 作为答案。
这种方法简单高效,使得 BERT 在 SQuAD1.1 上超过了人类基线。

11、BERT 如何用于句子相似度/检索?

两种方式:
Cross-Encoder:将两个句子拼接后输入 BERT,利用 [CLS] 表示做相似度预测。优点是精度高,缺点是推理慢,适合小规模任务或重排阶段。
Bi-Encoder:分别编码两个句子,得到独立的句向量,使用余弦相似度或内积作为相似度。优点是检索速度快,可以在向量库中高效搜索,但交互信息少。
因此工业界常用 “Bi-Encoder 召回 + Cross-Encoder 重排” 的两阶段架构。
进一步改进如 SBERT、SimCSE 通过对比学习优化句向量,使得 bi-encoder 效果大幅提升。

五、工程与优化

12、BERT 模型如何微调?常见超参数?

BERT 微调的基本流程:
加上简单的任务头(分类层、CRF、span 层等);
采用小学习率训练 2-4 epoch;
使用 AdamW 优化器,配合 warmup + linear decay。
常见超参:
学习率:1e-5 ~ 5e-5
Batch size:16–64
Warmup steps:5%–10%
Dropout:0.1
这些超参需要结合任务规模和数据量调优。

13、如何加速和压缩 BERT?

  1. 蒸馏:DistilBERT、TinyBERT。
  2. 量化:FP16/INT8,减少存储和计算。
  3. 剪枝:去掉不重要的权重或 attentionhead。
  4. ONNX/TensorRT:图优化和推理引擎加速。
  5. 轻量化微调:LoRA、Adapter、Prefix Tuning,仅训练部分参数。
    这些方法可以在几乎不损失精度的情况下,将时延降低 50% 以上。

14、BERT 处理长文本的办法?

BERT 的最大长度是 512 tokens,超长文本需要特殊方法:

  1. 滑窗/分块:把长文拆成多个片段,分别编码,再聚合。
  2. 层次编码:先句子级,再文档级。
  3. 改进模型:Longformer、BigBird、DeBERTaV3-XL,利用稀疏注意力机制处理更长文本。
    在工业界,常见做法是滑窗分块结合检索式 QA。

六、对比与扩展

15、BERT 与 GPT 的区别?

  1. 架构:BERT 用 Transformer encoder,GPT 用 decoder。
  2. 训练目标:BERT 用 MLM(双向),GPT 用自回归 LM(单向)。
  3. 应用:BERT 擅长理解类任务(分类、问答、抽取),GPT 擅长生成类任务(写作、对话、代码生成)。

16、BERT 与 T5 的区别?

  1. BERT 是 encoder-only,只能做理解。
  2. T5 是 encoder-decoder,把所有任务统一为 text-to-text 形式。
  3. T5 可以既做理解(分类、QA)也做生成(翻译、摘要),灵活性更强,但复杂度也更高。

17、为什么 [CLS] 可以作为句子表示?

因为在预训练和微调过程中,所有下游任务的 supervision 都通过 [CLS] 向量传递,模型学会了将全局信息压缩到 [CLS]。但由于 MLM 的训练目标并未直接优化 [CLS],所以 [CLS] 用作句向量效果并不好,需要额外的对比学习优化。

18、为什么 Whole Word Masking 对中文更好?

中文的最小单元通常是汉字,一个词可能由多个字组成。如果逐字 mask,会破坏词级语义。Whole Word Masking 保证整词被 mask,让模型更好地学习词的整体语义,对中文效果显著提升。

19、为什么 MLM 比自回归更适合预训练表征?

自回归语言模型只能利用单向上下文,对理解类任务效果有限。而 MLM 能双向建模,更适合捕捉完整语义信息。
不过 MLM 也有缺点,比如 [MASK] 符号在推理时不存在,导致训练-推理不一致问题。这就是后续模型(ELECTRA、MacBERT)尝试改进的地方。

Logo

「智能机器人开发者大赛」官方平台,致力于为开发者和参赛选手提供赛事技术指导、行业标准解读及团队实战案例解析;聚焦智能机器人开发全栈技术闭环,助力开发者攻克技术瓶颈,促进软硬件集成、场景应用及商业化落地的深度研讨。 加入智能机器人开发者社区iRobot Developer,与全球极客并肩突破技术边界,定义机器人开发的未来范式!

更多推荐