BERT(Bidirectional Encoder Representations from Transformers)和 GPT(Generative Pre-trained Transformer)都基于 Transformer 架构,但在设计目标、预训练任务和应用场景上有很大区别:
1. 架构方向性
-
BERT:双向编码器(Bidirectional)
- 在 Transformer 的 Encoder 部分堆叠多层,将句子中所有位置同时看作上下文,能够从左右两侧同时获取语义信息。
-
GPT:单向解码器(Unidirectional)
- 基于 Transformer 的 Decoder 部分,仅从左到右(或右到左,取决于实现)地顺序生成,对下一个 token 做预测,天然适合生成任务。
2. 预训练任务
模型 | 预训练任务 | 作用 | |
---|---|---|---|
BERT | Masked Language Model (MLM) | 随机 mask 输入中的若干 token,预测它们是什么; Next Sentence Prediction (NSP) | 判断两句话是否相邻,增强句间理解。 |
GPT | Autoregressive Language Modeling (ALM) | 给定前文,预测下一个 token。 |
3. 模型角色
-
BERT:常作"Encoder"
- 适合分类 、阅读理解 、序列标注等下游任务。
-
GPT:常作"Decoder"/纯语言生成
- 更擅长文本生成 、对话系统 、续写补全等方向。
4. 输入输出形式
-
BERT:
- 输入:整段文本(可含[CLS] + 文本A + [SEP] + 文本B + [SEP])
- 输出:每个位置的表示向量(也会用 [CLS] 作为整句表示)
-
GPT:
- 输入:前缀文本
- 输出:下一个 token 分布,用于逐步生成新文本
5. 应用场景对比
场景类别 | BERT 优势 | GPT 优势 |
---|---|---|
文本分类 | 直接用 [CLS] 向量 + 全连接层即可 | 需要在生成式接口上设计 prompt |
问答/阅读理解 | 自然做双句匹配与 span 抽取 | 以生成形式回答,灵活但验证难度高 |
文本生成 | 需额外加 Decoder 或 Seq2Seq 架构 | 直接顺序生成,效果流畅 |
对话系统 | 通常做理解+检索式回复 | 生成式对话,能自主创造回复内容 |
6. 生态与发展
- BERT 系列:RoBERTa、ALBERT、ELECTRA、DeBERTa......都在"Encoder"方向不断优化预训练策略和效率。
- GPT 系列:GPT-2、GPT-3、GPT-4......不断扩大模型规模和上下文长度,更强的生成能力和开放域对话能力。
小结
- BERT 强调"理解"(Understanding),以双向编码、Mask 预测为核心,擅长各类下游理解任务。
- GPT 强调"生成"(Generation),以单向自回归预测为核心,擅长写作、对话、续写等生成式应用。