人工智能【第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、人工智能

相关推荐
renhongxia19 天前
世界模型作为AGI落地底层底座的作用
人工智能·深度学习·生成对抗网络·自然语言处理·知识图谱·agi
大模型最新论文速读9 天前
06-16 · LLM 最新论文速览
论文阅读·人工智能·深度学习·机器学习·自然语言处理
宝贝儿好9 天前
【LLM】第二章:HuggingFace入门学习
人工智能·深度学习·神经网络·学习·算法·自然语言处理
小小工匠9 天前
拆解大语言模型:从词向量到注意力机制的内部运行原理
人工智能·语言模型·自然语言处理
星川皆无恙9 天前
大数据k-means聚类算法:基于k-means聚类算法+NLP微博舆情数据爬虫可视化分析推荐系统(新版)
大数据·人工智能·爬虫·算法·机器学习·自然语言处理·kmeans
财经资讯数据_灵砚智能9 天前
基于全球经济类多源新闻的NLP情感分析与数据可视化(夜间-次晨)2026年6月15日
大数据·人工智能·python·ai·信息可视化·自然语言处理·灵砚智能
暮云星影9 天前
瑞芯微rk3588利用Rockchip NPU运行大语言模型(LLM)
arm开发·人工智能·语言模型·自然语言处理
ujainu小9 天前
CANN ops-transformer:编译和运行 FlashAttention 示例
人工智能·深度学习·transformer
宝贝儿好9 天前
【LLM】第一章:知识体系框架概览
人工智能·深度学习·机器学习·自然语言处理