人工智能【第24篇】BERT模型详解:预训练语言模型的里程碑

作者的话 :在前面的文章中,我们学习了Transformer架构。2018年,Google发布了BERT(Bidirectional Encoder Representations from Transformers),开启了预训练语言模型的新时代。BERT通过双向编码器和创新的预训练任务,在多项NLP任务上取得了突破性进展。本文将深入讲解BERT的原理、预训练、微调和应用,帮助你理解这一里程碑式的模型!

一、BERT概述

1.1 什么是BERT?

BERT是Google在2018年10月提出的预训练语言模型,全称为Bidirectional Encoder Representations from Transformers

核心特点

特点 说明 优势
双向编码 同时考虑左右上下文 理解更全面
Transformer架构 使用多层Transformer Encoder 并行计算,长距离依赖
预训练+微调 先在大规模语料预训练,再针对任务微调 迁移学习能力强
无监督预训练 无需人工标注数据 可利用海量文本
上下文相关 同一词在不同上下文有不同表示 语义理解更准确

1.2 BERT的里程碑意义

时间线

时间 模型 核心贡献
2018年10月 BERT Base/Large发布 11项NLP任务SOTA,开启预训练时代
2019年 RoBERTa 优化训练策略,移除NSP任务
2019年 ALBERT 参数共享+矩阵分解,大幅减少参数量
2019年 DistilBERT 知识蒸馏,模型压缩40%
2019年 ELECTRA 判别式预训练,样本效率更高
2019年 SpanBERT span-level mask,问答任务提升
2020年 TinyBERT 更极致的蒸馏,6层BERT仅4%大小
2021年 DeBERTa 解耦注意力机制,SuperGLUE超越人类

1.3 模型对比

特性 Word2Vec ELMo GPT BERT
架构 浅层神经网络 双向LSTM Transformer Decoder Transformer Encoder
上下文 静态 动态但独立 单向(左到右) 双向(左右同时)
层数 1-2层 2层BiLSTM 12层 12/24层
参数量 数亿 9400万 1.17亿 1.1亿/3.4亿
主要应用 词嵌入 特征提取 文本生成 文本理解

二、BERT架构详解

2.1 模型规模

参数 BERT-Base BERT-Large
层数(L) 12 24
隐藏层维度(H) 768 1024
注意力头数(A) 12 16
参数量 1.1亿 3.4亿
词汇表大小 30,522 30,522
最大序列长度 512 512

2.2 输入表示

BERT的输入由三部分组成:Token Embeddings + Segment Embeddings + Position Embeddings

特殊标记 符号 作用
[CLS] 101 分类标记,用于句子级任务
[SEP] 102 分隔标记,分隔句子或标记结尾
[MASK] 103 掩码标记,用于MLM任务
[PAD] 0 填充标记,用于补齐序列

三、预训练任务

3.1 Masked Language Model(MLM)

随机mask输入序列中的部分token,让模型预测被mask的token。

策略 概率 目的
替换为[MASK] 80% 主要训练目标
替换为随机词 10% 防止模型只学习[MASK]
保持不变 10% 微调时保持一致

3.2 Next Sentence Prediction(NSP)

标签 概率 构造方式
IsNext 50% 真实的连续句子
NotNext 50% 随机采样句子

四、微调方法

4.1 不同任务的输入输出

任务类型 输入格式 输出 示例
文本分类 [CLS] 文本 [SEP] [CLS]的表示 情感分析
句子对分类 [CLS] A [SEP] B [SEP] [CLS]的表示 语义相似度
问答 [CLS] 问题 [SEP] 段落 [SEP] 开始/结束位置 SQuAD
序列标注 [CLS] 文本 [SEP] 每个token的标签 NER

五、BERT变体

模型 改进点 特点
RoBERTa 训练策略优化 动态mask,更大batch
ALBERT 参数共享 减少参数量
DistilBERT 知识蒸馏 保留97%性能,减少40%参数
ELECTRA 判别式预训练 替换token检测
SpanBERT span-level mask 更适合问答任务

六、代码实现

使用Hugging Face的transformers库可以快速加载和使用BERT。

复制代码
from transformers import BertTokenizer, BertModel

# 加载分词器和模型
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertModel.from_pretrained('bert-base-uncased')

# 输入文本
text = "Hello, how are you?"
inputs = tokenizer(text, return_tensors='pt')

# 前向传播
outputs = model(**inputs)

七、应用场景

任务 数据集 BERT效果
情感分析 SST-2 93.5%
自然语言推理 MNLI 86.7%
问答 SQuAD 1.1 F1: 93.2
命名实体识别 CoNLL-2003 F1: 92.8

八、总结与学习建议

8.1 核心要点

  • BERT使用双向Transformer Encoder
  • MLM和NSP两个预训练任务
  • 预训练+微调的范式
  • 在多项NLP任务上取得SOTA

8.2 学习路径

Transformer → BERT → RoBERTa → 领域专用模型


下一篇预告:【第25篇】GPT模型详解:生成式预训练的语言模型


本文为系列第24篇,详细讲解了BERT模型。有任何问题欢迎在评论区交流!

标签:BERT、预训练模型、Transformer、自然语言处理、深度学习、NLP、人工智能

相关推荐
金井PRATHAMA1 小时前
内容与形式(二)内容:基于系统科学与信息科学双重视角的层级化定义
大数据·人工智能·自然语言处理·知识图谱
kishu_iOS&AI2 小时前
NLP - Transformer原理解析
人工智能·自然语言处理·transformer
名字不好奇3 小时前
大模型如何理解上下文:Attention 机制详解
人工智能·llm·transformer
牧子川11 小时前
009-Transformer-Architecture
人工智能·深度学习·transformer
Jmayday15 小时前
NLP第三章:注意力机制
人工智能·自然语言处理·nlp
这张生成的图像能检测吗19 小时前
(论文速读)DSFormer:用于高光谱图像分类的双选择融合变压器网络
人工智能·深度学习·计算机视觉·transformer
2301_7800290420 小时前
A survey on large language model based autonomous agents —— 论文精读
人工智能·语言模型·自然语言处理
财经资讯数据_灵砚智能21 小时前
基于全球经济类多源新闻的NLP情感分析与数据可视化(夜间-次晨)2026年5月11日
大数据·人工智能·python·信息可视化·自然语言处理
dfsj660111 天前
第九章:Transformer 架构
深度学习·架构·transformer