BERT vs GPT:预训练任务与应用差异

副标题 / 摘要 BERT 通过 MLM/NSP 学习双向语义,GPT 通过 CLM 学习自回归生成。本文用 ACERS 框架对比两者预训练任务与应用场景,并提供最小 PyTorch 示例。 预计阅读时长:14~18 分钟 标签:bert、gpt、pretraining SEO 关键词:BERT, GPT, MLM, CLM 元描述:对比 BERT 与 GPT 的预训练目标与工程应用差异。 目标读者 想入门理解 BERT 与 GPT 核心差异的读者 需要做模型选型的工程实践者 关注 NLP 任务适配策略的开发者 背景 / 动机 BERT 和 GPT 经常被混用,但它们的预训练目标决定了“擅长什么”。 理解 MLM 与 CLM 的差异,能更快做出任务匹配与架构选型。 核心概念 MLM(Masked Language Modeling):随机遮蔽词,预测被遮蔽词。 NSP(Next Sentence Prediction):判断两句是否相邻(BERT 原版)。 CLM(Causal Language Modeling):预测下一个词(自回归)。 A — Algorithm(题目与算法) 用通俗语言说明主题内容 BERT 是“看全句补空词”的双向理解模型。 GPT 是“从左到右续写”的生成模型。 基础示例(1) 输入:“北京是[MASK]国首都” → BERT 预测“中”。 基础示例(2) 输入:“北京是中国” → GPT 预测下一个词“首都”。 实践指南 / 步骤 任务是理解/分类 → 首选 BERT 类模型。 任务是生成/续写 → 首选 GPT 类模型。 推理时注意:BERT 需要 [MASK],GPT 需要 prompt。 可运行示例(最小 PyTorch 逻辑) import torch import torch.nn.functional as F # MLM: 预测被遮蔽位置 vocab = 100 seq = torch.tensor([[1, 2, 3, 4]]) mask_pos = 2 logits = torch.randn(1, 4, vocab) mlm_loss = F.cross_entropy(logits[:, mask_pos], torch.tensor([3])) print("MLM loss:", mlm_loss.item()) # CLM: 预测下一个 token logits = torch.randn(1, 4, vocab) labels = torch.tensor([[2, 3, 4, 5]]) clm_loss = F.cross_entropy(logits[:, :-1].reshape(-1, vocab), labels[:, 1:].reshape(-1)) print("CLM loss:", clm_loss.item()) 解释与原理 MLM 学到双向上下文,因此更适合理解类任务。 CLM 强调顺序生成,因此更适合生成类任务。 GPT 不需要特殊 [MASK],推理更自然。 C — Concepts(核心思想) 方法类型 BERT 属于双向编码器预训练,GPT 属于自回归生成预训练。 ...

2026年1月24日 · 2 分钟 · map[name:Jeanphilo]