当前位置: 首页 > news >正文

BERT 原理解析:从 Transformer 到双向语义理解

BERT 原理全解析:从 Transformer 到双向语义理解

一、前言:BERT 的革命性突破

在 BERT 出现之前,NLP 主要依靠:

  • 词向量模型(Word2Vec、GloVe) —— 静态词向量;

  • RNN / LSTM 模型 —— 处理顺序信息但计算慢;

  • 单向语言模型(GPT、ELMo) —— 只能理解部分上下文。

BERT(Bidirectional Encoder Representations from Transformers) 的诞生改变了一切:

它首次让模型能在大规模语料上双向理解上下文语义,并通过预训练 + 微调(Pre-train & Fine-tune) 机制通吃各类 NLP 任务。


二、BERT 的技术核心:Transformer Encoder

1. Transformer 概览

BERT 基于 Transformer 编码器(Encoder) 堆叠而成。
Transformer 由 Vaswani 等人在 2017 年提出,核心是 Self-Attention 自注意力机制

Transformer 的优势:

  • 完全抛弃循环结构(RNN),支持并行训练;

  • 捕捉全局依赖;

  • 结构模块化,可扩展性强。


2. BERT 模型结构图(简化)

输入序列:[CLS] 我 喜欢 自然语言处理 [SEP]→ 词嵌入 + 位置编码 + 句段编码
→ 多层 Transformer Encoder
→ 输出上下文表示(每个词一个向量)[CLS] 向量 → 用于分类任务

BERT-base 模型包含:

  • 12 层 Transformer Encoder;

  • 每层有 12 个自注意力头;

  • 隐藏层维度为 768;

  • 参数量约 1.1 亿。


三、BERT 的输入表示机制

BERT 的输入不仅是词,而是三类嵌入向量的组合:

1. Token Embedding(词向量)

将每个 token(词或子词)映射为一个固定维度的向量。

2. Segment Embedding(句段向量)

用于区分句子 A 和句子 B(如在问答、句子对任务中)。

句子Segment ID
[CLS] 我喜欢学习 [SEP]0
因为知识能改变命运 [SEP]1

3. Position Embedding(位置向量)

Transformer 不具备顺序信息,因此要通过位置编码(Positional Encoding)提供位置信息。

位置编码可分为:

  • 固定编码(sin/cos):Transformer 原版;

  • 可学习编码(Learnable):BERT 采用的版本。


四、BERT 的自注意力机制(Self-Attention)

1. 自注意力的动机

传统的 RNN/LSTM 只能逐步处理序列,难以捕捉远距离依赖。
而 Self-Attention 能让每个词直接与句中所有词建立联系

例如:

句子:她说苹果很好吃。

在理解“她”时,模型可以直接关注“说”;理解“好吃”时可以关注“苹果”,无需逐步传递。


2. Attention 的数学原理

每个词的表示由三个向量组成:

  • Query(Q):当前词的查询向量;

  • Key(K):所有词的键向量;

  • Value(V):所有词的值向量。

注意力计算公式为:

其中:

  • :计算相似度;

  • :缩放因子防止梯度爆炸;

  • softmax:归一化得到注意力权重;

  • 结果是当前词对所有词的加权平均。


3. 多头注意力(Multi-Head Attention)

单个注意力头可能只学习到一种语义关系,为了让模型同时学习多种语义依赖,Transformer 使用了 多头注意力

每个头的 ( Q, K, V ) 都是通过不同的线性变换得到的。


五、BERT 的双向特性与 MLM 原理

1. 单向语言模型的局限

传统语言模型只能从左到右右到左预测下一个词。
比如:

我今天很 [MASK]

若模型只能看到“我今天很”,则无法利用右边“开心”这样的信息。

2. 双向训练的挑战

若模型同时看到左右上下文,它可能“作弊”直接记住词本身。
BERT 采用 Masked Language Model(MLM) 来避免这个问题。


3. Masked Language Model (MLM) 机制

BERT 训练时会随机遮盖 15% 的 token:

类型比例示例说明
[MASK] 替换80%我今天[MASK]好[MASK]
随机词替换10%我今天学习好替换成随机词
不变10%我今天很不替换,保持上下文一致

模型需要预测被遮盖的原始词,从而学会根据上下文推理


4. 下一句预测(Next Sentence Prediction, NSP)

为学习句子间关系,BERT 加入了 NSP 任务:

  • 输入:句子对 (A, B)

  • 输出:B 是否为 A 的下一句(二分类)

举例:

  • 正样本:“我喜欢机器学习。” → “因为它很有趣。”

  • 负样本:“我喜欢机器学习。” → “今天天气真好。”

通过 NSP,模型学习句间逻辑和语篇连贯性。


六、[CLS] 表示与梯度流向

在输入的首位添加 [CLS](classification)标记。
经过 Transformer 编码后,[CLS] 的输出向量会聚合整个句子的语义信息。

在分类任务中,梯度从输出层沿着 [CLS] 的通道反向传播,最终影响整句的编码权重,使 [CLS] 成为“句子级别表示向量”。


七、BERT 的训练流程(总体框架)

  1. 预训练阶段(Pre-training)

    • 使用海量语料(BooksCorpus + Wikipedia)

    • 任务:MLM + NSP

    • 输出:通用语言理解模型

  2. 微调阶段(Fine-tuning)

    • 将预训练模型加载到下游任务中

    • 添加少量任务特定层(如分类头)

    • 小规模任务数据训练即可

这种两阶段设计让 BERT 能在各类 NLP 任务中快速迁移,效果惊人。


八、从梯度传播角度理解 BERT 的强大

BERT 的优势在于:

  • Transformer 的多层非线性结构能捕捉不同层次语义;

  • 注意力层的梯度能在任意两个词之间直接传播;

  • MLM 训练强迫模型理解双向依赖;

  • NSP 训练促进跨句信息的建模。

梯度在整个 Transformer 中流动时,能够动态地学习“语义共现”关系,从而形成深层语义表征。


九、BERT 的改进与衍生模型

模型关键改进特点
RoBERTa去除 NSP、使用更大 batch、更长训练性能显著提升
ALBERT参数共享 + 因式分解嵌入矩阵参数量减少 80%
DistilBERT知识蒸馏压缩更轻量、更快
ERNIE(百度)融入知识图谱实体信息中文理解更强
MacBERTMLM 改进为“近义词替换”策略更贴近语义预测
SpanBERT随机 mask 整个短语 span改善句法理解

十、BERT 的局限性与未来方向

问题说明
训练成本高预训练需巨大算力(TPU 级别)
静态长度限制输入序列最大 512
推理慢多层 Transformer 堆叠导致延迟高
缺乏生成能力只能理解,不能生成文本

为此,后续模型如 T5、GPT、BART 采用 Encoder-Decoder 或 Decoder-only 架构,实现理解与生成的统一。


十一、总结

BERT 的革命性意义

  1. 首次实现了双向语义建模;

  2. 创造了“预训练 + 微调”范式;

  3. 极大推动了 NLP 的工业落地;

  4. 成为后续所有大模型(GPT、ChatGPT)的奠基。

一句话总结:

BERT 是 NLP 的“语言理解引擎”,
它让模型第一次真正学会了“读懂”句子。

 

http://www.dtcms.com/a/536600.html

相关文章:

  • 土地流转网站建设项目网站制作步骤是什么
  • 网站开发 教学大纲wordpress一键仿站
  • 网站打开乱码app如何做
  • 【LabelImg】
  • ios26创建Widget不支持灵动岛UI
  • day07 spark sql
  • 如何做网站维护做个什么样的网站比较好
  • 借用与引用实战
  • 涉密资质 网站建设整站seo策略实施
  • 【数据结构】链表补充——静态链表、循环链表、双向链表与双向循环链表
  • Python测试题1
  • 解锁仓颉语言:探索全场景智能编程新范式
  • 大模型-模型压缩:量化、剪枝、蒸馏、二值化 (3)
  • C++进阶:(二)多态的深度解析
  • 天汇大厦网站建设公司佳木斯做网站公司
  • Java 大视界 -- 基于 Java 的大数据可视化在城市交通拥堵溯源与治理策略展示中的应用
  • 从零实现一个完整的vector类:深入理解C++动态数组
  • JVM从操作系统层面的总体启动流程
  • C++list类的模拟实现
  • 深圳三站合一网站建设网站建设推广怎样找客户
  • 【多所高校主办】第七届机器人、智能控制与人工智能国际学术会议(RICAI 2025)
  • 做网站有虚拟服务器什么是网络营销产生的基础
  • 高配款浮标五参数—可以及时掌握水体的生态状况
  • 《Java 实用技巧:均匀取元素算法(支持不足补齐)》
  • 【Linux】nohup命令
  • 泰州网站建设案例昆明网站seo外包
  • 【成长纪实】星光不负 码向未来|我的 HarmonyOS 学习之路与社区成长故事
  • 网站服务器租用4t多少钱一年啊提供网站建设公司有哪些
  • 如何处理系统环境变量的字符长度超过了 Windows 对话框的限制(2047 个字符)
  • 快速上手大模型:深度学习1(初识、神经网络基础)