BERT(Bidirectional Encoder Representations from Transformers)和 GPT(Generative Pre-trained Transformer)都是基于 Transformer 架构的预训练语言模型,但它们在架构设计、训练目标和应用场景上有显著差异。
架构差异
BERT
- 使用 Transformer 编码器
- 双向注意力机制:可以同时看到上下文
- 自编码(Auto-encoding)模型
- 适合理解类任务
GPT
- 使用 Transformer 解码器
- 单向注意力机制:只能看到上文(从左到右)
- 自回归(Autoregressive)模型
- 适合生成类任务
训练目标
BERT 的训练任务
1. 掩码语言模型(Masked Language Model, MLM)
- 随机遮蔽输入序列中 15% 的 token
- 预测被遮蔽的 token
- 例如:输入 "The [MASK] sat on the mat",预测 "cat"
2. 下一句预测(Next Sentence Prediction, NSP)
- 给定两个句子,判断第二个句子是否是第一个句子的下一句
- 帮助模型理解句子间的关系
GPT 的训练任务
1. 因果语言建模(Causal Language Modeling)
- 根据上文预测下一个 token
- 标准的自回归任务
- 例如:给定 "The cat",预测下一个词可能是 "sat"
应用场景
BERT 擅长的任务
- 文本分类(情感分析、主题分类)
- 命名实体识别(NER)
- 问答系统(抽取式)
- 自然语言推理
- 语义相似度计算
- 句子对分类
GPT 擅长的任务
- 文本生成(故事、文章、对话)
- 机器翻译
- 代码生成
- 创意写作
- 对话系统
- 文本续写
性能特点
BERT
- 在理解类任务上表现优异
- 双向上下文提供更丰富的语义信息
- 适合需要全局理解的任务
- 推理速度相对较快
GPT
- 在生成类任务上表现优异
- 大规模预训练后涌现能力(In-context Learning)
- 适合需要创造性和连贯性的任务
- 随着模型规模增大,性能提升显著
模型变体
BERT 系列
- BERT Base: 12 层,110M 参数
- BERT Large: 24 层,340M 参数
- RoBERTa: 优化的 BERT 训练策略
- ALBERT: 参数共享的轻量级 BERT
- DistilBERT: 蒸馏的轻量级 BERT
GPT 系列
- GPT-1: 12 层,117M 参数
- GPT-2: 48 层,1.5B 参数
- GPT-3: 96 层,175B 参数
- GPT-4: 多模态,参数规模未公开
- ChatGPT: 基于 GPT-3.5/4 的对话优化版本
选择建议
选择 BERT 的情况
- 任务是分类、标注、抽取等理解类任务
- 需要双向上下文信息
- 计算资源有限(可以使用轻量级变体)
- 对推理速度有要求
选择 GPT 的情况
- 任务是生成、创作等生成类任务
- 需要零样本或少样本学习
- 有充足的计算资源
- 需要模型具备广泛的知识
最新发展
统一架构
- T5: 将所有任务转换为文本到文本格式
- BART: 结合编码器和解码器的优势
- LLaMA: 开源的大规模语言模型
- ChatGLM: 中文优化的对话模型
多模态扩展
- CLIP: 图像-文本对齐
- DALL-E: 文本生成图像
- GPT-4V: 多模态理解与生成
实践建议
微调策略
- BERT: 通常需要任务特定的微调
- GPT: 可以通过提示工程(Prompt Engineering)或微调
数据准备
- BERT: 需要标注数据用于微调
- GPT: 可以利用少样本学习,减少标注需求
评估指标
- BERT: 准确率、F1 分数等
- GPT: BLEU、ROUGE、人工评估等