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

相关推荐
梦帮科技4 小时前
端侧编译原理:TVM / MLIR 计算图模式匹配、算子融合与显存生命周期复用
网络·人工智能·深度学习·神经网络·自然语言处理·cnn·mlir
黑妹天下第一乖5 小时前
小智改造实战解读-首 token 延迟去哪了:云端与端侧大模型的分段对照
开发语言·人工智能·python·嵌入式硬件·自然语言处理·iot
Omics Pro6 小时前
研究证实AI虚拟细胞可用于药物靶点发现
数据库·人工智能·算法·机器学习·自然语言处理
破壁者-燕8 小时前
MLE 基础学习 Transformer
深度学习·学习·transformer
高洁019 小时前
AI软件工程:大模型赋能软件研发全流程革新
人工智能·深度学习·机器学习·transformer·tornado
Omics Pro10 小时前
反式感知虚拟细胞!超越线性序列
数据库·人工智能·算法·机器学习·自然语言处理
一隅论数智1 天前
OWL(Web Ontology Language)介绍与使用举例(二)
大数据·经验分享·笔记·学习·自然语言处理·学习方法·政务
跟我学机器学习1 天前
Qwen3 Reranking原理与使用:重排模型在 RAG 中的作用
人工智能·深度学习·transformer
jeffsonfu1 天前
序列到序列(Seq2Seq)模型:机器翻译背后的核心技术
人工智能·自然语言处理·机器翻译
Martina_03211 天前
山谷地形下雨后湿痕总往坡上爬?用6步检查高度场、流向遮罩与分区加载
人工智能·游戏·数学建模·3d·自然语言处理·aigc·关卡设计