BERT 模型详解:结构、原理解析
四前言
在自然语言处理(NLP)领域,BERT(Bidirectional Encoder Representations from Transformers)已经成为理解类任务的标配模型。相比 GPT 更擅长文本生成,BERT 则在语言理解任务上展现出卓越的能力。本文将从结构到应用,全方位剖析 BERT 的核心思想与关键技术。
一、BERT 的技术背景
BERT 基于 Transformer 架构中的 Encoder 部分,其出现受到了 ELMo 和 GPT-1 的启发:
-
ELMo:采用双向 LSTM(能够双向上下文),能够捕捉上下文信息,但执行上较为缓慢。
-
GPT-1:基于 Transformer 的 Decoder 结构,仅使用单向上下文。
-
BERT:综合优势,采用 Transformer 的 Encoder,并实现了真正的双向建模,BERT 模型本质上就是一个强大的语义特征向量提取模型。
二、模型结构概览
1. 输入结构
BERT 的输入包括三类嵌入信息:
-
Token Embedding:词语嵌入,将输入文本的词转化为向量,通常为 768 维。
-
Segment Embedding:区分句子 A/B 的标记。
-
Position Embedding:加入位置信息,使模型有“顺序感”,比如标号为0、1、2,有别于transfomer 的positional encoding 通常使用三角函数进行位置编码。
注意:此时向量只有词面信息、位置信息、片段信息
例子:
[CLS] 我 爱 吃 饭 [SEP] 我 也 爱 吃 肉 [SEP]
-
[CLS]
表示分类任务的起始标记; -
[SEP]
表示句子分隔符。
2. Transformer 编码层
BERT-Base 模型包含 12 层 Encoder,每层内部包括:
-
多头自注意力机制(Multi-Head Attention)——简单来说它让模型同时从多个角度理解每个向量和上下文之间的关系。
-
前馈神经网络(Feed Forward Neural Network)——简单来说它是一个对每个经过自注意力机制的向量进行抽象提取(可理解为"概括")的过程。
每层都能提取更丰富的上下文语义,最终每个 Token 输出一个 768 维语义向量(具有上下文相关的特点)。
三、预训练任务解析
1. MLM(Masked Language Model)
训练时随机将全文 15% 的 Token 替换为 [MASK]
,要求模型根据上下文预测被遮蔽的词。(也被称为“完形填空”的形式)
举例:
输入:
“我 爱
[MASK]
饭”
预测:
[MASK]
→ “吃”
Mask 策略:
在刚才选取的全文15%的Token中进行以下操作:
-
80% 被替换为
[MASK]
-
10% 被随机词替换
-
10% 不变
缺点:训练阶段有 MASK,测试阶段无,引入训练-推理分布差异。
改进方案:
-
动态 Masking:每次训练时随机生成新 MASK;
-
Span Masking(n-gram Mask):遮蔽连续多个词,训练模型能够更好预测mask 所在位置的词,提升整体语言理解能力。
-
ERNIE / SpanBERT:利用更丰富语义信息改进 Mask 策略。
2. NSP(Next Sentence Prediction)
NSP 任务是判断两个句子之间是否为上下文顺序关系。
数据构造:
-
正样本:真实连续段落。
-
负样本:从不同文档中随机选取。
任务流程:
-
输入以
[CLS]
开头,接句子 A 和句子 B; -
模型输出
[CLS]
的向量,进行二分类判断(A句和B句是否为连续句); -
输出
[1, 0]
→ 是连续句子,[0, 1]
→ 非连续。
四、BERT总览:
总结
-
BERT 通过双向编码和 MLM+NSP 的预训练目标,极大提升了语言理解能力。
-
MLM 训练策略虽然有效,但也引入了训练-测试不一致问题,动态 Mask 和 Span Mask 是良好补充。
理解 BERT 是深入掌握自然语言处理的基石,合理使用和优化预训练模型,将为你的 NLP 项目带来巨大提升!如果你觉得文章对你有帮助的话,请点赞、收藏,+关注!