- 阶段一 · 地基:P01《Attention Is All You Need》 · P02 Bahdanau Attention · P03 seq2seq · P04 word2vec
- 阶段二 · 预训练范式:P05 BERT · P06 GPT-1 · 本篇 · P07 GPT-2 · P08 GPT-3 · P09 T5
- 阶段三 · 规模与效率:P10 Scaling Laws · P11 Chinchilla · P12 LoRA · P13 FlashAttention · P14 MoE
- 阶段四 · 对齐与推理:P15 InstructGPT(RLHF)· P16 思维链 CoT · P17 DPO · P18 Constitutional AI
- 阶段五 · 检索与 Agent:P19 RAG · P20 ReAct · P21 Toolformer
📩 回复「AI圣经06」,领取本篇论文 PDF。
太长不读上一篇 BERT,我们讲了「完形填空」式的双向理解。这一篇要倒回去几个月,看它的镜像兄弟 GPT——OpenAI 在 2018 年 6 月放出的第一代生成式预训练模型(比 BERT 还早四个月)。GPT 的做法和 BERT 几乎对称:它不做双向,老老实实从左往右、看着前文猜下一个词(这叫「自回归语言模型」,本质就是「文字接龙」)。它先在 7000 本小说上把这个接龙游戏玩到极致,学出一套通用的语言能力(这一步叫预训练);然后面对情感分类、问答、判断蕴含这些五花八门的任务时,它有一招特别聪明:几乎不改模型,只把每个任务的输入「翻译」成一段连续的文字塞进去(这叫「输入变换」)。就靠这套,一个 12 层、1.17 亿参数的模型在 12 项任务里拿下 9 项当时最好成绩。更重要的是,G、P、T 这三个字母从此定调——今天你用的所有会聊天、会写作的大模型,血脉都从这里来。
上篇回顾 · 先答一题上一篇结尾我们埋了个钩子:同样是那个 Transformer,BERT 拿走了它的编码器(encoder),GPT 拿走了解码器(decoder),于是分成了「读者」和「作者」两条路。先别往下看,试着答一题:BERT 凭什么能「同时看一个词的前后文」? ……答案是它改用了「完形填空」(MLM)——先把词遮住再让模型靠左右上下文猜回,词本身被遮掉,就不会「偷看到自己」,于是可以放心双向。那么这一篇的问题正好反过来:GPT 为什么偏偏不要这种双向,反而把自己绑在「只往左看」的单向上? 这不是它做不到双向,而是一个主动的选择——而这个选择,藏着今天大模型为什么「会写」的根。
01单向的赌注:GPT 为什么偏要「只往左看」?
先说 GPT 想解决的问题,其实和 BERT 是同一个:带标注的数据太少了。
让 AI 学一个具体任务(比如判断一句影评是好评还是差评),传统做法要喂大量「人工标好答案」的例子。可这种数据又贵又少。而与此同时,没标注的生文本——整个互联网、所有的书——多到无穷。论文开篇第一句话点的就是这个痛点:能不能让模型先从海量生文本里自己把语言学会,再用一点点标注数据去适配具体任务?(论文摘要)
BERT 的答案是「完形填空」,GPT 的答案是另一个更古老、更朴素的游戏:语言模型,也就是「看着前面的词,猜下一个词」。 「今天天气真」→ 猜「好」。这个游戏有个天生的方向——只能从左往右,因为你猜的永远是「还没出现的下一个词」,自然看不到它后面的内容。
这里就是 GPT 和 BERT 分道扬镳的那一步。BERT 嫌单向「只用半只眼睛」,费尽力气绕开它去做双向;GPT 却把这条单向路线当成了资产,而不是包袱。 为什么?因为「猜下一个词」这件事本身,就是生成——你把这个能力练到极致,模型就天然会写:给它一个开头,它能一个词一个词地把后面接出来。BERT 那种「挖空填词」练得再好,也不会自然地写文章。GPT 赌的就是:只要把「接龙」这一个游戏在足够大的数据上玩透,通用的语言能力会自己长出来——而且顺带白送一个生成能力。 这是一个在 2018 年还看不清输赢、但七年后被彻底证明押对了的赌注。
02先读完 7000 本小说:什么叫「生成式预训练」
GPT 这个名字,G 和 P 就是「生成式预训练」(Generative Pre-Training)。拆开看其实就一句话:让模型在海量文本上反复玩「猜下一个词」,把这一步当成所有后续任务的地基。
它读的是什么?BooksCorpus——七千多本没出版过的小说,涵盖冒险、奇幻、言情各种类型(论文 §4)。论文特意点明:选书而不是选零碎的网页,是因为书里有大段连续的文字,能逼模型学会处理长距离的上下文——读到第三页的伏笔,还记得第一页埋了什么。这一步就是预训练:又慢又贵,但只做一次,练出来的是一套「通用的语言直觉」。
那它的骨架是什么?正是两年前那篇《Attention Is All You Need》里 Transformer 的解码器(decoder)部分(论文 §3)。还记得上一篇说的吗——BERT 拿的是编码器,GPT 拿的是解码器。解码器有个关键特性叫掩码自注意力:它在算每个词的时候,会强行挡住这个词右边所有还没出现的内容,只让它看左边。换句话说,单向不是 GPT 的妥协,是它骨架自带的设定——解码器天生就是为「往下生成」造的。没有那篇 Transformer,就没有这个能一路往下写的 GPT,这是它站得最稳的那层肩膀。
(一个数字感受下当年的「大」:GPT-1 是 12 层解码器、768 维、1.17 亿参数,在 7000 本书上训练了 100 遍(论文 §4)。在 2018 年这已是相当大的模型;可放到今天动辄千亿参数的大模型面前,它小得像个玩具——而那个玩具,定下了之后所有人走的路。)
03一个底座,十二种考法:GPT 最聪明的一招
预训练练出了「语言直觉」,可问题来了:情感分类、问答、判断两句话矛不矛盾……这些任务的输入长得千差万别——有的是一句话,有的是两句话,有的是一段文章加一个问题加四个选项。BERT 之前的常规做法是给每个任务单独设计一套模型结构去接住它的特殊输入。GPT 却给了一个漂亮得多的答案。
它的招数叫 task-aware input transformation(任务相关的输入变换):模型本身几乎一个零件都不改,变的只是「怎么把输入喂进去」。 不管什么任务,都想办法拼接成一段连续的文字序列,再塞给同一个预训练好的 GPT(论文 §3、Figure 1):
- 判断「两句话是否矛盾」?把两句话用一个特殊分隔符接成一串:「句子A〔分隔〕句子B」,让模型读完整串,最后接一个轻量输出层给判断。
- 阅读理解选择题?把「文章 + 问题 + 某个选项」拼成一串,每个选项拼一次,看哪一串模型「觉得最通顺」。
你看,所有任务都被翻译成了模型最擅长的那件事——读一段连续的文字。 这样一来,从预训练到各种任务,用的是同一个模型、同一套参数,新增的零件少到几乎可以忽略(论文说,微调时多出来的参数只有一个输出层加几个分隔符的向量)。这正是论文标题里「task-agnostic(任务无关)」的底气:炼一个通用底座,靠改输入而不是改模型来适配一切。 这个「万物皆可拼成一段文字」的思路,后来被 GPT-2、GPT-3 一路放大,最终变成了今天我们熟悉的——所有任务都写成一句话提示词(prompt)丢给同一个模型。
(还有个提升泛化的小心思:微调时 GPT 不只学新任务,还顺手继续做着「猜下一个词」那道老题当辅助练习——论文发现这样模型收敛更稳、泛化更好,§3。底子不能丢。)
04成绩单:12 项任务,拿下 9 项第一
「通用底座」听着虚,论文用一张成绩单砸实了它。
GPT-1 在 12 个主流语言理解任务上做了测试,其中 9 个刷新了当时的最好成绩(论文摘要)。几个最有代表性的、已逐项核对的数字:
- 常识推理(Stories Cloze Test,给故事选一个合理结尾):绝对提升 8.9 个百分点——一个相当大的跨度(论文摘要)。
- 问答(RACE,中学英语阅读理解):绝对提升 5.7 个百分点(论文摘要)。
- 文本蕴含(MultiNLI,判断两句话是蕴含、矛盾还是无关):绝对提升 1.5 个百分点(论文摘要)。
这张成绩单的分量,不在某个数字多高,而在于它用一个统一的模型,打赢了一批「各自为任务量身定做」的专用模型。在 GPT 之前,刷某个榜的最好成绩,往往靠的是为那个任务精心设计的专门结构;而 GPT 证明了——一个先把语言「读厚」了的通用底座,再轻轻一调,就能在十几个完全不同的任务上全面占优。 这是「预训练 + 微调」这套范式第一次在生成式路线上拿出硬证据。
05GPT 与 BERT:同一年,两条对称的路
把 GPT 和 BERT 摆在一起看,是这个系列最值得停一下的地方——因为它们几乎是同一道题的两个镜像答案,而且就发生在 2018 年的同一年。
先把时间捋直(很多人记反):GPT-1 在前(2018 年 6 月),BERT 在后(2018 年 10 月)。所以真实的剧情是:GPT 先用单向解码器趟出了「生成式预训练 + 微调」这条路;几个月后 BERT 站出来说「你只看左边太亏了」,于是用「完形填空」做出了双向版本,并在理解类任务上反超。BERT 某种程度上,正是冲着 GPT 的单向去的一次回应。
它们的分叉,可以浓缩成一句话:
- GPT = 单向解码器:从左往右逐词生成,强在写——续写、对话、生成。像一个不停往下接龙的「作者」。
- BERT = 双向编码器:一次把整句看全,强在理解——分类、检索、判断关系。像一个做阅读理解的「读者」。
在 2018 那个当口,BERT 的双向在各种「理解」榜单上分数更亮眼,一时风头无两,很多人觉得「会理解」的这条路赢了。但故事的后半段我们都知道了:真正长成今天 ChatGPT、长成通用大模型的,是 GPT 这条「会生成」的单向路线。 因为「猜下一个词」这个看似笨拙的游戏里,藏着一个 BERT 没有的东西——只要会接龙,就会写;而「会写」一旦规模够大,就能把翻译、问答、推理、写代码……全都变成「接着往下写」的一种特例。这个伏笔,要到 GPT-2、GPT-3 才会彻底引爆。
06从 GPT-1 到今天:把「接龙」一路写成大模型
退一步看 GPT-1 在这条长河里的位置,它的身份很清楚:它是「生成式预训练」这条主线的第 0 公里碑。
它留下的,不是某个具体的模型,而是三件后来被反复验证的「赌注」——而这三件,恰好就是它名字里那三个字母(论文结论):
- G(生成式):用「猜下一个词」自学,让模型天生会写。这一条让 GPT 系最终能直接跟你对话,而不只是给文本打分。
- P(预训练):最贵的通用能力只在海量文本上炼一次,之后到处复用。这套「预训练 + 适配」的范式,今天是所有大模型的标准起手式。
- T(Transformer):站在两年前那篇论文的解码器肩膀上,才有了能一路往下生成的骨架。
而 GPT-1 里那个「把所有任务都拼成一段连续文字」的小聪明,更是埋下了今天最深的一颗种子:当你给 ChatGPT 写一句提示词、它接着往下答的时候,你用的就是 GPT-1 这套「万物皆可接龙」思路的直系后代——只不过模型从 1.17 亿参数长到了几千亿,从「读 7000 本书」长到了「读半个互联网」。GPT-2 把它推向「不微调、只靠提示就能干活」,GPT-3 把规模拉到让这件事真正成立——但那条路的方向,在 2018 年这十二页论文里就已经指死了。
整个「AI 圣经」系列读到这里,一个对称的格局成型了:同一个 Transformer,BERT 取编码器走通了「理解」,GPT 取解码器走通了「生成」。 而后来的故事,是「生成」这条路把「理解」也吃了进去。下一站,我们就去看 GPT-2 怎么把那个「万物皆可接龙」的念头,第一次喊成了一句口号。
✎读完自测:先别往下翻,试着答
主动回忆一遍才记得住(这点「小难度」是故意的)。三问,想好再看答案:
- 1. GPT 明明可以学双向,为什么主动选了「只往左看」的单向?这个选择给它带来了什么独有的能力?
- 2. 面对情感分类、问答、判断蕴含这些输入完全不同的任务,GPT 是怎么做到「几乎不改模型」就能全接住的?
- 3. GPT-1 和 BERT,谁先谁后?它们的本质区别是什么?
答案1. 因为「猜下一个词」这个单向游戏本身就是生成:练到极致,模型天然就会写(给开头能往下接),而双向的「完形填空」不会自然带来这个能力。GPT 赌的是「会接龙就会写」,七年后被证明押对了。2. 靠 task-aware 输入变换——模型本身几乎不改,而是把每个任务的输入都拼接成一段连续的文字喂给同一个预训练底座,最后接一个很轻的输出层。一套模型、一套参数,靠改输入适配一切。3. GPT-1 在前(2018.06),BERT 在后(2018.10)。本质区别:GPT = 单向解码器,从左往右生成,强在「写」;BERT = 双向编码器,一次看全句,强在「理解」。
→一句话带走,和下一步
只记一句:GPT-1 把「从左往右猜下一个词」这个朴素的接龙游戏,在 7000 本书上练成了通用的语言底座,再靠「把任何任务都拼成一段连续文字」去适配一切——它不追求一时的理解分数,而是赌「会生成」这条路能走得更远,并用 G、P、T 三个字母给之后所有大模型定了调。
阶段二的两块基石——BERT 的双向理解、GPT 的单向生成——到这里都立住了。从下一篇 P07 GPT-2 起,故事开始加速:当模型不再满足于「练好再微调」,而是想「读得够多、就什么都不用教、直接会」——规模,会变成新的主角。
想再深入一点荐读一个最优源:Jay Alammar 的图解博客《The Illustrated GPT-2》(jalammar.github.io),从 GPT-1 的解码器讲起,全程用图说清「单向生成」和掩码自注意力,比论文好读得多。/ 互动钩子:2018 年那个当口,你会押「会理解」的 BERT,还是「会生成」的 GPT?欢迎在评论区聊聊你的判断。