预训练:BERT 与 GPT 的分野
约 14 分钟
架构只是骨架,真正让大模型成为可能的是「预训练」这个范式转变。
范式转变前后
| 传统做法 | 预训练范式 | |
|---|---|---|
| 每个任务 | 从零训练一个模型 | 复用同一个基座 |
| 需要的标注数据 | 每个任务几万条 | 几百条甚至零条 |
| 知识来源 | 只有本任务的标注 | 海量无标注文本 |
核心洞察:语言本身就是最好的监督信号。 不需要人标注,遮住一个词让模型猜,或者让它预测下一个词——互联网上的所有文本瞬间都变成了训练数据。
这叫自监督学习:监督信号来自数据自身。
BERT 路线:完形填空
训练任务:掩码语言建模(MLM)
随机遮住输入中约 15% 的词,让模型根据左右两边的上下文把它猜出来。
今天天气真 [MASK],我们去公园吧。 → 猜「好」
关键优势:双向。 猜「好」时,模型同时用到了左边的「天气真」和右边的「去公园」。
代价:不擅长生成。 因为它从没被训练过「一个词一个词往下写」。
适合的任务:文本分类、情感分析、命名实体识别、句子相似度、检索。
GPT 路线:接龙
训练任务:自回归语言建模
给定前面所有词,预测下一个词:
P(x_1, \dots, x_n) = \prod_{t=1}^{n} P(x_t \mid x_1, \dots, x_{t-1})\.
看起来比 BERT 的任务更「弱」(只能看左边),但它有一个决定性的优势:
训练和使用完全一致。 训练时预测下一个词,用的时候也是预测下一个词——不存在任何不匹配。
BERT 训练时见到的是带 [MASK] 的句子,实际使用时没有 [MASK],这个训练-推理不一致一直是它的问题。
为什么 GPT 路线最终胜出
三个层层递进的原因:
- 任务统一。所有 NLP 任务都能写成续写:
- 翻译 → 「把下面这句翻成英文:…… 英文:」
- 摘要 → 「…… 总结上文:」
- 问答 → 「问:…… 答:」
涌现能力。规模足够大之后,模型表现出训练时没有明确教过的能力——多步推理、代码生成、跨语言迁移。这在小模型上观察不到。
零样本/少样本。不用微调,在提示里给几个例子,模型就能照做。这彻底改变了应用方式——从「为每个任务训一个模型」变成「写一段提示」。
一个重要澄清:「预测下一个词」为什么能产生智能
这是最常被质疑的一点。它看起来只是统计接龙,为什么能做推理?
一个被广泛接受的解释是:要把下一个词预测得足够准,模型被迫学会大量隐含的东西。
「这道题的答案是 3 加 5 等于 ___」——要填对,模型必须真的会加法。
「凶手其实是那位 ___」——要填对,模型必须理解整个故事的逻辑。
预测下一个词是手段,压缩世界的规律是结果。 一个足够好的语言模型,必然内含了大量关于世界如何运作的知识。
但这不代表它「理解」了——这是第九节要讨论的问题。
今天的分工
BERT 路线并没有消失。在需要高效理解的场景里它仍是主力:
- 搜索引擎的语义匹配
- 向量数据库的文本嵌入(RAG 的基础)
- 大规模文本分类
原因很实际:这些场景要处理海量文本,BERT 类模型小、快、便宜,而且只需要「理解」不需要「生成」。
练习:把「判断这条评论是好评还是差评」这个任务,分别写成 BERT 的用法和 GPT 的提示形式,比较两者的差别。
BERT 和 GPT 的训练任务分别是什么?为什么说「预测下一个词」能产生远超接龙的能力?
登录 后可看答案