带你搞懂BERT(Bidirectional Encoder Representations from Transformers)模型:从输入到预训练

部署运行你感兴趣的模型镜像

🔍 前言:为什么要画这张图?

本文参考【小白也能听懂的 bert模型原理解读 预训练语言模型】https://www.bilibili.com/video/BV1Km41117VG?vd_source=e14fbfa32a7c9167af15da4f1666253ahttps://www.bilibili.com/video/BV1Km41117VG?vd_source=e14fbfa32a7c9167af15da4f1666253a

最近在复习 BERT 模型时,发现很多文章讲得过于抽象,公式一堆但看不懂“到底发生了什么”。于是我自己动手画了一张 BERT 手绘结构图,边画边理解,终于把它的核心机制彻底搞明白了!

今天我就用这张图,带你一步步拆解 BERT 到底是怎么工作的——不讲复杂公式,只讲本质逻辑,保证你看完能给别人讲清楚!

📌 本文适合人群

  • 想入门 NLP 的新手
  • 准备面试的同学
  • 对 Transformer 和 BERT 似懂非懂的开发者

🖼️ 第一步:先看手绘图(重点来了)

别看它潦草,但这张图包含了 BERT 的所有关键组件:

  • Bidirectional
  • Encoder
  • Token / Position / Segment Embedding
  • Masked Language Model (MLM)
  • Next Sentence Prediction (NSP)

下面我们一个一个来解读!


✅ 一、BERT 是什么?一句话说清楚

BERT = 双向 + Transformer 编码器 + 预训练语言模型

它是 Google 在 2018 年提出的革命性模型,让机器真正“看懂”上下文,而不是只看前后几个词。

🎯 应用场景:

  • 文本分类
  • 问答系统(如百度搜索)
  • 实体识别(NER)
  • 情感分析

🧩 二、输入层:三种嵌入融合,缺一不可!

BERT 的输入不是简单的单词向量,而是三种信息的叠加:

1. Token Embedding(词嵌入)

  • 使用 WordPiece 分词法,把句子切成 subword 单元。
  • 例如:“playing” → “play” + “##ing”
from transformers import BertTokenizer
tokenizer = BertTokenizer.from_pretrained('bert-base-chinese')
print(tokenizer.tokenize("我喜欢吃苹果")) 
# 输出: ['我', '喜欢', '吃', '苹果']

2. Position Embedding(位置嵌入)

  • 自注意力机制本身没有顺序概念,所以必须加上位置信息。
  • 每个位置都有一个固定的向量表示(可学习)。

3. Segment Embeding(句子类别嵌入)

  • 用于区分两个句子 A 和 B。
  • 比如 QA 任务中:问题是一个 segment,答案是另一个。

🔹 最终输入 = Token + Position + Segment

📌 图中 [CLS][SEP] 是什么?

  • [CLS]:分类标记,用于最终分类任务(如情感分析)
  • [SEP]:分隔符,表示一句结束

🔁 三、核心机制:双向上下文理解

传统模型(如 LSTM)只能从左到右或从右到左读取文本,而 BERT 是双向的

这意味着:

当你看到“银行”这个词时,BERT 能同时知道前面是“去”还是后面是“存款”,从而判断是“河边的 bank”还是“金融机构”。

实现方式:多层 Transformer Encoder

每一层都包含:

  1. Multi-Head Self-Attention:计算每个词与其他所有词的关系权重
  2. Feed-Forward Network:进一步提取特征

✅ 效果:每个词的输出向量都融合了整个句子的上下文信息!


🎯 四、预训练任务1:Masked Language Model(MLM)

这是 BERT 学会“猜词”的秘密武器!

📌 MLM 是怎么做的?

  1. 随机选择 15% 的 token 进行遮蔽
  2. 其中:
    • 80% 替换为 [MASK]
    • 10% 替换为随机词
    • 10% 保持不变

👉 目的是防止模型偷懒只依赖 [MASK] 标记。

💡 举个例子:

原句:我爱北京天安门

遮蔽后:我爱[MASK]京天安门

BERT 的任务就是预测 [MASK] 应该是“北”。

🎯 训练目标:交叉熵损失函数,最大化正确词汇的概率。


🔄 五、预训练任务2:Next Sentence Prediction(NSP)

除了猜词,BERT 还要学会判断两句话是不是连续的。

输入格式:

[CLS] 句子A [SEP] 句子B [SEP]

任务目标:

  • 判断 B 是否是 A 的下一句(Yes/No)

📌 举例说明:

句子A句子B是否连续
我今天很开心因为天气很好✅ 是
我今天很开心明天要考试了❌ 否

📌 这个任务对问答、句子匹配等非常有用!


⚙️ 六、模型结构总览(结合手绘图再看一遍)

让我们再回顾一下这张图的关键点:

区域功能
左上角 “Bidirectional”强调模型能同时利用前后文
中间 “Encoder”表示使用的是 Transformer 的编码器部分
下方三种 embedding输入由三部分相加而成
右侧 MLM & NSP两大预训练任务

🧠 总结一句话:

BERT 通过双向编码器 + 两种预训练任务,在海量文本上学到了通用的语言理解能力。


🚀 七、下游任务如何微调?

预训练完成后,BERT 就像一个“语言通识学霸”,只需要少量数据就能快速适应具体任务。

常见任务举例:

任务类型微调方法
文本分类取 [CLS] 的输出,接一个全连接层做分类
命名实体识别(NER)取每个 token 的输出,预测标签序列
问答系统(SQuAD)预测答案起始和结束位置
句子相似度输入两个句子,判断是否相关

代码示例(HuggingFace):

from transformers import BertForSequenceClassification, BertTokenizer
import torch

model = BertForSequenceClassification.from_pretrained('bert-base-chinese', num_labels=2)
tokenizer = BertTokenizer.from_pretrained('bert-base-chinese')

inputs = tokenizer("这部电影太好看了!", return_tensors="pt")
with torch.no_grad():
    logits = model(**inputs).logits
predicted_class = torch.argmax(logits, dim=-1)
print(predicted_class)  # 输出: 1 (正面情感)

❗ 八、BERT 的局限与后续发展

虽然 BERT 很强,但也有一些缺点:

问题改进方案
训练成本高DistilBERT、TinyBERT(轻量化版本)
不擅长生成GPT 系列更适合文本生成
NSP 效果一般RoBERTa 移除了 NSP,效果反而更好
上下文长度限制(512)Longformer、BigBird 支持更长文本

📌 所以后续出现了:

  • RoBERTa:优化训练策略
  • ALBERT:参数共享降低内存
  • DeBERTa:增强解码器设计
  • Chinese-BERT-wwm:中文全词掩码版

✅ 九、总结:一张图胜过千言万语

回到开头那张手绘图,你现在是不是已经完全看懂了?

📌 再送你一句口诀,方便记忆:

“双编三嵌,遮词判句,预训微调,通吃 NLP!”

解释:

  • 双编:双向编码器
  • 三嵌:Token + Position + Segment Embedding
  • 遮词:MLM
  • 判句:NSP
  • 预训微调:Pre-train + Fine-tune
  • 通吃 NLP:适用于几乎所有自然语言任务

您可能感兴趣的与本文相关的镜像

Qwen3-VL-8B

Qwen3-VL-8B

图文对话
Qwen3-VL

Qwen3-VL是迄今为止 Qwen 系列中最强大的视觉-语言模型,这一代在各个方面都进行了全面升级:更优秀的文本理解和生成、更深入的视觉感知和推理、扩展的上下文长度、增强的空间和视频动态理解能力,以及更强的代理交互能力

<think>嗯,用户想了解BERT技术的概念。首先,我需要回忆一下BERT的基本信息。根据引用[1],BERT是Google在2018年提出的,全称是基于Transformer的双向编码器表示。它由多个Transformer编码器堆叠而成,输入输出形状不变。然后,引用[2]提到,BERT强调双向编码,不同于GPT的单向。GPT用的是Transformer解码器,适合生成文本,但只能利用前序信息,而BERT用编码器,能利用所有上下文,增强了语义理解。 接下来要说明BERT的核心结构。Transformer编码器是关键,每个包含自注意力机制和前馈网络。引用[3]提到了encoder_inputs的结构,可能涉及到输入的处理,比如词嵌入、位置编码等。另外,BERT预训练任务有MLM和NSP,引用[2]里的掩码训练方法应该是指MLM,随机掩盖部分词让模型预测,这样模型可以学习双向上下文。NSP是判断句子关系,提升句子级别的理解。 然后,BERT的应用和影响。引用[4]指出,BERT启发了许多变体如RoBERTa、ALBERT等,这些改进适应不同需求。应用场景包括文本分类、问答系统、命名实体识别等,说明BERT的通用性。 还要注意用户可能混淆的地方,比如BERT和GPT的区别。需要明确两者在结构(编码器vs解码器)和训练目标上的不同。此外,用户可能想知道为什么双向编码有效,或者BERT如何处理长文本等问题,但用户的问题主要是概念介绍,所以先集中在核心点。 最后,生成相关问题要考虑用户可能的后续疑问,比如BERT的优缺点、训练细节、变体比较等。确保问题覆盖技术细节和应用场景,帮助用户深入理解。</think>### Bidirectional Encoder Representations from Transformers (BERT) 技术介绍 #### 1. **基本概念** BERTBidirectional Encoder Representations from Transformers)是Google于2018年提出的预训练语言模型,其核心是通过**双向Transformer编码器**对文本进行深度语义编码。与传统的单向语言模型(如GPT)不同,BERT在训练时能同时利用词汇的**前序和后序上下文信息**,从而更全面地捕捉语义关联[^1][^2]。 #### 2. **核心结构** - **Transformer编码器堆叠**:BERT由多个Transformer编码器层堆叠而成,每层包含**自注意力机制**(Multi-Head Attention)和**前馈神经网络**。输入输出的形状保持一致,便于逐层提取特征[^1][^3]。 - **输入表示**:输入文本通过**词嵌入**(Token Embedding)、**位置编码**(Position Embedding)和**段落编码**(Segment Embedding)组合而成,支持处理句子对任务(如问答)。 #### 3. **预训练任务** BERT通过以下两种任务进行预训练: - **掩码语言模型(MLM, Masked Language Model)**:随机掩盖输入文本中的部分词汇(如15%),要求模型预测被掩盖的词。这一任务迫使模型学习双向上下文依赖。 - **下一句预测(NSP, Next Sentence Prediction)**:判断两个句子是否为连续上下文,增强模型对句子间关系的理解。 #### 4. **关键优势** - **双向编码能力**:通过Transformer编码器的双向处理,BERT能同时利用词汇的左右上下文信息,显著提升语义理解效果。 - **通用性强**:预训练后的BERT可通过微调(Fine-tuning)适配多种下游任务(如文本分类、命名实体识别、问答系统等)[^4]。 #### 5. **应用与影响** - **应用场景**:BERT在自然语言处理(NLP)领域广泛应用,例如搜索引擎优化、情感分析、机器翻译等。 - **后续发展**:BERT的成功催生了多个改进模型,如**RoBERTa**(优化训练策略)、**ALBERT**(减少参数量)、**DistilBERT**(轻量化版本)等,形成庞大的“BERT家族”。 ```python # 示例:使用Hugging Face库调用BERT模型 from transformers import BertTokenizer, BertModel tokenizer = BertTokenizer.from_pretrained('bert-base-uncased') model = BertModel.from_pretrained('bert-base-uncased') inputs = tokenizer("Hello, BERT!", return_tensors="pt") outputs = model(**inputs) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值