08 预训练语言模型:BERT 与 GPT
系列文章目录
01 NLP入门:什么是自然语言处理 ✅
02 文本预处理:从原始文本到干净语料 ✅
03 文本向量化:词袋模型与 TF-IDF ✅
04 词向量 Word2Vec:让词变成向量 ✅
05 循环神经网络 RNN 与 LSTM 详解 ✅
06 注意力机制与 Seq2Seq ✅
07 Transformer 架构详解 ✅
08 预训练语言模型:BERT 与 GPT ✅
09 大语言模型(LLM)演进与 Prompt 入门
10 NLP 实战:情感分析项目全流程
前言
上一篇我们学完了 Transformer——它只是一个大模型"地基",本身并不能直接用于具体任务。要让 Transformer 真正"懂"语言,还需要在大量语料上进行预训练(Pre-training),然后针对具体任务微调(Fine-tuning)。
2018 年,两条基于 Transformer 的技术路线几乎同时横空出世,奠定了之后所有大语言模型的发展方向:
BERT:Google 提出,主打"理解"
GPT:OpenAI 提出,主打"生成"
一句话结论:BERT 和 GPT 都采用"预训练 + 微调"范式,区别在于 BERT 双向编码擅长理解任务,GPT 单向生成擅长生成任务。
1. 什么是预训练语言模型
1.1 核心思想
传统的 NLP 是"为每个任务单独训练一个模型",数据少、效果差。预训练语言模型(Pre-trained Language Model, PLM)的做法是:
先用海量无标注文本(如维基百科、全网网页)训练一个"通用的语言理解模型",再用少量标注数据针对具体任务做"微调"。
这就像一位"通才"先在书海中广泛阅读,具备了强大的语言功底;再花少量时间专门训练某个具体技能(比如分类、问答)。
1.2 为什么是革命性的
| 对比维度 | 传统方法 | 预训练 + 微调 |
|---|---|---|
| 所需标注数据 | 大量 | 少量 |
| 通用语言知识 | 无 | 有(预训练获得) |
| 训练成本 | 每任务重新训练 | 预训练一次,微调很轻 |
| 效果 | 受限于小数据 | 显著提升 |
2. BERT:双向编码器
2.1 核心思想
BERT(Bidirectional Encoder Representations from Transformers)的核心特点是双向(Bidirectional):
BERT 在理解一个词时,同时看它左边和右边的上下文。
比如理解句子中的"苹果":
"昨天我买了一个苹果,非常甜" —— BERT 会同时结合左右文判断这是"水果" "我新买了一部苹果手机" —— BERT 会结合"手机"判断这是"品牌"
这正好解决了 Word2Vec 静态词向量无法处理一词多义的问题——BERT 输出的词向量是上下文相关的动态向量。
2.2 两个预训练任务
BERT 的预训练包含两个自监督任务:
| 任务 | 名称 | 做法 | 学习内容 |
|---|---|---|---|
| 任务1 | 掩码语言模型(MLM) | 随机遮盖句中 15% 的词,让模型预测被遮盖的词 | 双向理解 |
| 任务2 | 下一句预测(NSP) | 判断两个句子是否相邻 | 句子间关系 |
MLM 示例:
输入:我 [MASK] 学习 自然语言处理 预测:喜欢
模型必须结合"我……学习自然语言处理"这个上下文,才能猜出被遮住的词是"喜欢"。
2.3 BERT 的应用方式
BERT 预训练完成后,通过"预训练 + 微调"适配各种理解任务:
文本分类: [CLS] 这句话很赞 → 输出:好评 命名实体识别:句子 → 逐词标注实体类型 问答: 问题 + 文章 → 输出答案片段
3. GPT:单向生成器
3.1 核心思想
GPT(Generative Pre-trained Transformer)的核心特点是单向(Unidirectional)和生成(Generative):
GPT 预测下一个词时,只看它左侧(前面)的上下文,一个词一个词地从左到右生成。
输入:"我喜欢学习" 预测下一个词:"自然语言"(根据前面的"我喜欢学习") 继续: 输入:"我喜欢学习自然语言" 预测下一个词:"处理"
GPT 的本质就是一个强大的"下一个词预测器"——而这恰好就是"生成"的本质:给定前文,续写后文。
3.2 预训练任务
GPT 的预训练任务只有一个,也是最朴素的:
语言建模(Language Modeling):给定前文,预测下一个词。
最大化 P(w1) × P(w2|w1) × P(w3|w1w2) × ... × P(wn|w1...w(n-1))
💡关键洞察:正是这个"朴素"的预测任务,让 GPT 不需要任何标注数据,只需海量文本就能训练,还能一路无限扩展——数据越多、参数越多,生成能力越强,最终演变为今天的大语言模型(LLM)。
3.3 GPT 的进化
| 版本 | 年份 | 参数量 | 特点 |
|---|---|---|---|
| GPT-1 | 2018 | 1.1 亿 | 提出预训练 + 微调范式 |
| GPT-2 | 2019 | 15 亿 | 展示强大的零样本生成能力 |
| GPT-3 | 2020 | 1750 亿 | 少样本学习(In-context Learning) |
| ChatGPT | 2022 | — | 加入人类反馈对齐(RLHF),对话能力爆发 |
4. BERT vs GPT 对比
| 对比维度 | BERT | GPT |
|---|---|---|
| 全称 | Bidirectional Encoder Rep. from Transformers | Generative Pre-trained Transformer |
| 架构 | 仅编码器(Encoder-only) | 仅解码器(Decoder-only) |
| 编码方式 | 双向(看左右) | 单向(只看左) |
| 预训练任务 | MLM + NSP | 语言建模(预测下一个词) |
| 擅长任务 | 理解:分类、抽取、问答 | 生成:写作、对话、翻译、代码 |
| 训练目标 | 预测被遮盖的词 | 预测下一个词 |
| 代表演进 | BERT → RoBERTa → ERNIE | GPT → GPT-2/3/4 → LLM |
💡记忆口诀:BERT 是"填空小能手"(理解),GPT 是"续写狂魔"(生成)。
5. 使用 Hugging Face 实战
如今,使用预训练模型最方便的方式是Hugging Face Transformers库。下面演示加载 BERT 做文本分类,以及用 GPT 做生成。
5.1 用 BERT 做情感分类
from transformers import pipeline # 一行代码加载预训练情感分析模型 classifier = pipeline("sentiment-analysis", model="uer/roberta-base-finetuned-jd-binary-chinese") result = classifier("这个手机很好用,我很喜欢!") print(result) # 输出示例:[{'label': 'positive', 'score': 0.99...}]5.2 用 GPT 做文本生成
from transformers import pipeline # 加载中文生成模型 generator = pipeline("text-generation", model="uer/gpt2-chinese-cluecorpussmall") result = generator("深度学习是一种", max_length=30, num_return_sequences=1) print(result[0]["generated_text"])5.3 为什么不推荐直接造轮子
预训练需要几十万到上百万美元的算力成本
开源社区提供了大量现成的预训练权重
用
pipeline几行代码即可调用,重点是理解"如何微调"和"如何应用"
⚠️提示:上面示例中的模型名请以 Hugging Face 实际可用的模型为准,国内可优先选择中文模型(如
bert-base-chinese、mengzi等)。
6. 从 BERT/GPT 到大语言模型(LLM)
BERT 和 GPT 之后,NLP 进入了"军备竞赛"时代:
BERT 系(理解向):RoBERTa、ALBERT、ERNIE、DeBERTa……
GPT 系(生成向):GPT-3、GPT-4、以及开源生态的 LLaMA、ChatGLM、DeepSeek、Qwen……
当 GPT 系模型参数规模达到千亿级、配合人类反馈对齐(RLHF)后,就变成了我们今天所熟知的大语言模型(LLM)——不仅会生成文本,还涌现出推理、翻译、写代码、多轮对话等强大能力。
这是下一篇的内容。
总结
这一篇我们掌握了:
预训练 + 微调:先在海量语料上预训练通用语言能力,再针对任务微调
BERT:双向编码器,通过 MLM 理解上下文,擅长理解任务,解决一词多义
GPT:单向解码器,通过预测下一个词实现生成,擅长生成任务
BERT vs GPT:理解 vs 生成、双向 vs 单向
Hugging Face 实战:几行代码调用强大的预训练模型
下一篇,我们将站上时代浪尖,看看从 GPT-3 到 ChatGPT,大语言模型(LLM)是如何诞生,以及如何用Prompt驾驭它。
📌下篇预告:09 大语言模型(LLM)演进与 Prompt 入门
参考资料
Devlin et al.BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding, 2018
Radford et al.Improving Language Understanding by Generative Pre-Training, 2018
Hugging Face Transformers 官方文档:https://huggingface.co/docs/transformers/