一
先理解预训练要解决的根本矛盾。深度学习吃数据,而最有用的那种数据——带标签的(这句话情感是正面、这个词是人名、这个问题的答案是 X)——恰恰最稀缺、最贵,每条都要人工标注。可与此同时,无标注的文本几乎免费且无穷:整个互联网、所有书籍、所有维基百科。
第 06 章的 word2vec 已经示范了破局思路:用自监督任务,从无标注文本里学有用的表示——它把“根据上下文猜词”当作免费的监督信号。预训练范式把这个思路推到极致:不只学词向量,而是预训练整个深层 Transformer,让它在海量文本上先学会语言的通用规律(语法、语义、常识、推理的雏形),形成一个强大的“语言理解/生成引擎”;然后针对具体任务,只需用少量标注数据做微调(fine-tuning),把这个通用引擎适配过去。
这套“先在大数据上自监督预训练、再在小数据上有监督微调”的范式,是 2018 年前后 NLP 的范式革命。它的两个代表,BERT 和 GPT,分歧只在一处:预训练时让模型做什么自监督任务。而这个看似技术性的选择,决定了两条截然不同的命运。
二
先看 GPT 这条路线,因为它更直接。GPT(Generative Pre-trained Transformer)由 OpenAI 在 2018 年推出,用的自监督任务是语言建模(language modeling)——也就是最古老、最朴素的那个任务:预测下一个词1。
给定前面的词 ,模型预测下一个词 的概率分布。整段文本的概率被自回归地分解成每一步条件概率的连乘:
训练目标是最大化这个对数似然,等价于在每个位置做一次“下一个词是什么”的多分类(softmax over 词表 + 交叉熵)。这个任务的监督信号完全免费——任何一段文本,本身就提供了“前文→下一个词”的无数训练对。
架构上,GPT 用的是 Transformer 的解码器部分,关键是第 08 章讲过的因果掩码(masked self-attention):预测第 个词时只能看 的词,不能偷看未来。这保证了“预测下一个词”是个真任务而非作弊。预训练完成后,GPT 是一个强大的文本生成器,给个开头就能续写。
GPT 这条路线一开始看起来“笨”——只会接话,怎么做问答、分类、翻译这些具体任务?早期需要针对每个任务微调。但 OpenAI 押注于一个信念:只要把这个“预测下一个词”的模型做得足够大、训练数据足够多,它会自己涌现出处理各种任务的能力。这个信念在 GPT-2(2019)初现端倪,在 GPT-3(2020,1750 亿参数)得到惊人验证——下一章详谈。
三
再看 BERT 这条路线。BERT(Bidirectional Encoder Representations from Transformers)由 Google 在 2018 年提出2,它的出发点是对 GPT 的一个“批评”:预测下一个词是单向的,模型理解一个词时只能看它左边的上下文。但人类理解语言是双向的——“他把行李放进了___,然后锁上”这个空,右边的“锁上”和左边一样重要。BERT 想让模型在理解每个词时同时看到左右两边。
可问题来了:如果允许双向,“预测下一个词”就崩溃了——模型能直接看到要预测的那个词(在它右边),等于看着答案抄。BERT 的解法是换一个自监督任务:掩码语言建模(Masked Language Model, MLM),俗称“完形填空”2。
做法是:随机遮住输入里约 15% 的词(替换成特殊的 [MASK] 标记),让模型根据双向的上下文去预测被遮住的词。因为要预测的词被遮住了,模型看左右两边都不算作弊。这让 BERT 用上了 Transformer 的编码器部分(不带因果掩码的双向自注意力),每个词的表示都融合了完整的左右上下文。BERT 还配了第二个任务“下一句预测”(判断两句话是否前后相邻),用来学句子间关系。
预训练后,BERT 微调到具体任务的方式很简单:在它输出的表示上接一个小的任务头(比如分类层),用该任务的标注数据微调整个模型。BERT 一经推出就在一系列语言理解基准(如 GLUE)上大幅刷新纪录,迅速成为 2018–2020 年理解类 NLP 任务的主导模型23。
四
把两条路线的分歧用一张表钉住,它们的每一处差异都互相咬合:
GPT (2018, OpenAI) BERT (2018, Google)
Transformer 部分 解码器(decoder) 编码器(encoder)
自注意力 带因果掩码(单向) 双向(无掩码)
自监督任务 预测下一个词(自回归LM) 完形填空(掩码语言建模 MLM)
看上下文 只看左边 同时看左右
天生擅长 生成(续写、对话) 理解(分类、抽取、问答打分)
微调 任务头 / 后来靠提示词 接任务头微调
放大后的命运 涌现通用能力 → LLM/ChatGPT 强基线,但难做开放生成
这张表里有一个深刻的对称:单向是生成的代价,也是生成的前提。GPT 只能看左边,所以做不了真正的双向理解,但也正因为它被训练成“根据前文预测下文”,它天生就是个生成器——而生成,恰恰是通向“做任意任务”的万能接口。BERT 看双向、理解更强,但它学的是“填空”,不会自回归地生成长文本,做开放式生成、对话很别扭。
2018 到 2020 年,如果只看基准分数,BERT 路线一度更风光——理解类任务它几乎通吃。但历史选择了 GPT 那条路。原因在下一节。
五
为什么是 GPT 而非 BERT 通向了今天的通用大模型?这是一个值得讲清的判断,它关乎“任务接口”的统一性。
GPT 的“预测下一个词”有一个 BERT 的“完形填空”不具备的性质:它是一个统一的、生成式的接口,几乎任何任务都能被表述成“续写”。翻译?输入“中文:你好 英文:”让它续写。问答?输入“问题:……答案:”让它续写。摘要、分类、写代码、解数学——全都能塞进“给定上文、生成下文”这一个框架。当模型大到一定程度,你甚至不需要为每个任务微调,只要在输入里给几个例子(few-shot)或一句指令,它就能照做。这种“一个模型、一个接口、用提示词适配万种任务”的能力,叫上下文学习(in-context learning),是 GPT-3 带来的震撼,也是下一章的主题。
BERT 的完形填空没有这种统一接口。它擅长“理解一段已给定的文本”,但它的输出是每个位置的表示,不是流畅的生成;要做不同任务,往往得为每个任务设计不同的输出头并微调。它是一个出色的“理解引擎”,却不是一个通用的“任务执行引擎”。
还有一层是规模的回报。后来的经验(scaling laws,下一章)显示,自回归语言建模这个目标随规模增长能持续、平滑地变好,并在足够大时涌现出推理、指令遵循等新能力。GPT 路线踩中了这条“越大越强且会涌现质变”的曲线,于是把全部赌注压在放大上,最终兑现。这不是说 BERT 路线错了——它在搜索、检索、文本分类等大量实际系统里至今仍在服役——而是说,在“通向通用智能”这个特定方向上,生成式、单向、可统一为续写接口的 GPT 路线,被证明是更对的那条。
六
用一张图把预训练范式与两条路线收束:
海量无标注文本 (互联网/书籍/维基)
│ 自监督预训练 (免费监督信号)
┌───────────┴────────────┐
▼ ▼
GPT: 预测下一个词 BERT: 完形填空(遮15%)
[x1 x2 x3]──►预测 x4 [x1 MASK x3 x4]──►预测 MASK
Transformer 解码器(因果掩码) Transformer 编码器(双向)
│ │
▼ 微调/提示词 ▼ 接任务头微调
生成、对话、few-shot 分类、抽取、句对打分
│ │
▼ 放大 → 涌现 (强基线,理解类主导 2018-20)
GPT-2/3 → ChatGPT → LLM
配套的 manim 动画 assets/manim/ch10_pretrain.py(MaskShapes Scene)把两条路线的分野演成两块注意力掩码矩阵:GPT 是下三角(因果掩码),每个位置只能看过去,因而只能自回归地逐 token 生成;BERT 是满矩阵(双向),每个位置能看全文,但部分输入位置被 [MASK] 替换、要靠双向上下文还原。两块掩码并排,就是“单向生成”与“双向理解”在数学上的全部分野——一切后续差异都从这块掩码的形状里长出来。
预训练范式把“语言能力”从“为每个任务从零训练”变成了“先学通用引擎、再轻量适配”,这是 NLP 效率的一次飞跃。而 GPT 路线在此基础上又押注于规模,把“预测下一个词”这个朴素目标推到了千亿参数、万亿词的尺度。当规模跨过某些临界点,发生的事情超出了所有人的预期——模型开始展现出未被显式训练的能力,性能随规模的增长还呈现出可被精确预测的数学规律。把“规模”本身变成一门可量化的科学,并解决“如何让这个庞然大物听话、有用、安全”——那是 scaling laws 与 RLHF 的故事,也是这部技术史目前的最前沿。
本质
预训练真正改变的是知识的获取方式:在 BERT 和 GPT 之前,模型为每个任务从零学起,能用的只有那点稀缺的标注数据;之后,模型先在海量无标注文本上用一个自监督目标(预测被遮住的词、或预测下一个词)学一个通用的语言引擎,再用少量数据轻量适配到具体任务。它把“语言能力”从一次性消耗品变成了可复用的基础设施。而 BERT 与 GPT 的全部分歧,最后都收敛到一个工程选择——注意力能不能看到未来:看不到(因果掩码)就只能生成,看得到(双向)就擅长理解。GPT 路线之所以最终主导,是因为“逐 token 预测下一个词”这个看似最朴素的目标,恰好既能生成、又能随规模无止境地放大;当它被推到足够大,理解能力作为副产品自己长了出来。
参考文献
-
Radford, A., et al. (2018/2019). Improving Language Understanding by Generative Pre-Training(GPT-1)/ Language Models are Unsupervised Multitask Learners(GPT-2)。自回归语言建模、Transformer 解码器、因果掩码。GPT 系列与 few-shot 范式综述见 GPT-3 论文:https://arxiv.org/abs/2005.14165
-
Devlin, J., Chang, M.-W., Lee, K., & Toutanova, K. (2018). BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. 掩码语言建模(MLM)、双向编码器、下一句预测、GLUE 刷新。arXiv:https://arxiv.org/abs/1810.04805
-
BERT 与 GPT 路线对比(双向掩码 vs 单向因果 LM、few-shot 能力差异)综述。见 “Language Models are Few-Shot Learners” 对 BERT/GPT 对比的讨论:https://papers.nips.cc/paper/2020/hash/1457c0d6bfcb4967418bfb8ac142f64a-Abstract.html