6月1日 23:18

BERT 和 GPT 有什么区别?为什么一个擅长理解一个擅长生成?

BERT 用 Transformer 编码器,GPT 用 Transformer 解码器。这一个选择决定了它们的所有差异:BERT 双向看上下文(适合理解),GPT 只看上文(适合生成)。

架构选择:编码器 vs 解码器

Transformer 原论文有编码器和解码器两部分。编码器的自注意力是双向的——处理"苹果"这个词时,"苹果"前后所有词都能看到。解码器的自注意力是单向的(也叫因果注意力)——只能看到当前词和它之前的词,后面的词被遮住。

BERT 选了编码器,因为它要做的是"完形填空":遮住一些词,根据前后文预测。双向注意力让模型能同时利用左右两侧的上下文信息。

GPT 选了解码器,因为它要做的是"续写":给定前文,预测下一个词。单向注意力保证训练和推理的一致性——推理时确实只能看到已生成的前文。如果用双向注意力,训练时能看到"未来"但推理时看不到,就会产生不一致。

训练目标:MLM vs CLM

BERT 的掩码语言模型(MLM):随机遮住 15% 的 token,让模型预测被遮住的词。这就像做完形填空——"The [MASK] sat on the mat",模型要预测 [MASK] 是 "cat"。BERT 还加了一个下一句预测(NSP)任务,判断两个句子是否相邻,但后来的研究表明 NSP 其实没太大用,RoBERTa 去掉 NSP 反而效果更好。

GPT 的因果语言模型(CLM):给定前文,预测下一个 token。这天然就是一个生成任务——每个词都是基于前面所有词的概率分布选出来的。GPT 的训练目标简单粗暴,但规模大了之后涌现出了 BERT 做不到的能力:in-context learning(上下文学习)、chain-of-thought reasoning(链式推理)。

能力差异的本质

BERT 强在理解:文本分类、NER、问答(抽取式)、语义匹配。这些任务不需要生成新文本,只需要对已有文本做判断。双向注意力让 BERT 看到了完整的上下文,判断更准确。

GPT 强在生成:对话、翻译、代码生成、创意写作。这些任务需要一步步产出新内容,单向注意力的自回归方式和生成任务天然契合。而且 GPT 的生成能力随规模非线性增长——GPT-2 只能写连贯的短文,GPT-3 能做 few-shot learning,GPT-4 能做复杂推理。这种涌现能力是 BERT 架构做不到的。

一句话总结:BERT 是最好的阅读理解者,GPT 是最好的写作高手。

2024-2025 的格局

BERT 系列在工业界仍然广泛使用——分类、NER 这些任务用 BERT 微调又快又便宜,768 维的 BERT-base 推理一次只要几毫秒。但新项目越来越倾向直接用 LLM API(GPT-4/Claude)+ prompt engineering 替代 BERT 微调,因为省掉了标注数据和训练的成本。

GPT 阵营这边,开源模型(LLaMA、Mistral、Qwen、DeepSeek)已经可以在本地跑,7B 参数的模型在一台消费级 GPU 上就能推理。闭源模型(GPT-4o、Claude Sonnet、Gemini)在能力上仍然领先,但差距在缩小。

一个值得注意的趋势:编码器-解码器架构(T5、BART)正在被纯解码器架构取代。T5 最初证明了解码器也能做理解任务,后来大家发现直接用 GPT 架构加指令微调就能同时搞定理解和生成,何必用两个模块?

标签:NLP