深度学习入门

预训练: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 路线最终胜出

三个层层递进的原因

  1. 任务统一。所有 NLP 任务都能写成续写:
  • 翻译 → 「把下面这句翻成英文:…… 英文:」
  • 摘要 → 「…… 总结上文:」
  • 问答 → 「问:…… 答:」
  1. 涌现能力。规模足够大之后,模型表现出训练时没有明确教过的能力——多步推理、代码生成、跨语言迁移。这在小模型上观察不到。

  2. 零样本/少样本。不用微调,在提示里给几个例子,模型就能照做。这彻底改变了应用方式——从「为每个任务训一个模型」变成「写一段提示」。


一个重要澄清:「预测下一个词」为什么能产生智能

这是最常被质疑的一点。它看起来只是统计接龙,为什么能做推理?

一个被广泛接受的解释是:要把下一个词预测得足够准,模型被迫学会大量隐含的东西。

「这道题的答案是 3 加 5 等于 ___」——要填对,模型必须真的会加法。
「凶手其实是那位 ___」——要填对,模型必须理解整个故事的逻辑。

预测下一个词是手段,压缩世界的规律是结果。 一个足够好的语言模型,必然内含了大量关于世界如何运作的知识。

但这不代表它「理解」了——这是第九节要讨论的问题。


今天的分工

BERT 路线并没有消失。在需要高效理解的场景里它仍是主力:

  • 搜索引擎的语义匹配
  • 向量数据库的文本嵌入(RAG 的基础)
  • 大规模文本分类

原因很实际:这些场景要处理海量文本,BERT 类模型小、快、便宜,而且只需要「理解」不需要「生成」。

练习:把「判断这条评论是好评还是差评」这个任务,分别写成 BERT 的用法和 GPT 的提示形式,比较两者的差别。

小纸条

BERT 和 GPT 的训练任务分别是什么?为什么说「预测下一个词」能产生远超接龙的能力?

登录 后可看答案