首页 / 第三部分 · 大语言模型是怎么长出来的 / 第 08 篇

第 08 篇 · 第三部分 · 大语言模型是怎么长出来的

从 Transformer 到 GPT:自回归与下一个词预测

GPT 拆开看其实不复杂:把 Transformer 的编码器拿掉,只留解码器,然后让它反复做同一道题——下一个词是什么。这篇就讲这道看似极简单的题为什么能撑起通用能力,以及自回归、因果掩码、尺度定律这些绕不开的概念究竟指什么。

一、GPT 就是"去掉编码器"的 Transformer

2018 年 OpenAI 放出 GPT-1,名字是 Generative Pre-trained Transformer 的缩写。结构上的改动归结起来就一句话:把编码器整段删掉,只留解码器堆叠。

为什么敢删?机器翻译要"读完整段再写整段",像同声传译前的笔译,两列结构各司其职,所以才要编码器配解码器。可如果任务只是"接着往下写",那就只需要一列——读到哪、写到哪,一条流水线走到底。

删掉编码器之后,每个位置的注意力都用因果掩码锁死,保证它只能看到左边。结构比原版还干净,参数量也不大,GPT-1 只有 1.17 亿参数。以今天的标准看规模很小,但它内部的骨架与后来的 GPT-3、GPT-4 基本一致。

换个角度看,砍掉编码器还省下一整套参数和一次完整的注意力开销,省下的预算可以统统拿去堆层数。同样一笔算力,投给一条更长的流水线,回报通常更高。

二、下一个词预测:目标这么简单,为什么有用

训练任务一句话讲完:给定前面几个词,预测下一个词是什么。

听上去十分简单,可它有两个其他任务难以相比的优势。一是自监督——答案不用人标,文本自己就是答案,整个互联网的网页、书籍、代码都能当作语料,成本低到几乎可以忽略。二是一个句子能变出很多道题:100 个词的句子,就在 100 个位置各考一次,数据利用率极高。

更要紧的是,想把这题做准,很多东西是被附带逼出来的。要填对"牛顿被苹果砸中后,他意识到了____",光靠语法套路不行,得真的知道点物理常识;要接上"尽管天气很差,他还是____",得懂"尽管"埋下的转折。完形填空做到极致,就附带学会了许多本来没打算教的东西。

这也是它比"人工标注任务"高明的地方:标注任务只能教会它做那一件事,而预测下一个词把学习目标拆碎,摊到语料的每个角落。

再补一个视角:这道题的正确答案分布,本身就是语言世界的缩影。现实文本里哪个词爱跟着哪个词出现,隐含了语法规律和常识;模型学的正是这种分布,而不是谁写死的一本规则手册。

三、自回归生成:逐个词输出

生成的时候,模型把上一步输出的词接到输入后面,再预测下一个,再拼回去,循环往复。因为这个"用自己前一步的输出当下一步的输入"的动作,它叫自回归。

代价是串行。训练时可以整句并行,但推理时得一个词一个词地生成,生成 1000 个字就是 1000 次前向计算。这是大模型推理慢、成本高、输出像打字机一样逐字出现的主要原因。

工程上为此发明了 KV Cache:每算一步只处理新加的那个词,前面所有位置的 K 和 V 都缓存起来直接复用,不必每步从头算一遍。这一方法把自回归的推理成本大幅降低——位置那篇里提过,RoPE 和这套缓存配合得很好。

串行还带来一笔显存开销:为了逐步生成,每一步都得把已经算出来的 K、V 存着备用,序列越长,占的空间越大。上下文一开大,推理显存跟着涨,这部分开销就在这里。

四、因果掩码:不许偷看未来

训练时为了提高效率,是一整句并行输入进去的。可如果每个位置都能看到右边的词,那预测"下一个词"就变成了直接抄答案——答案就摆在右边,学不到任何东西。

因果掩码就是堵这个漏洞的:把注意力分数矩阵的右上三角(也就是未来位置)全设成负无穷,过完 softmax 那些格子的权重就变成 0。位置 t 只能看到 1 到 t,无法多看一步。

于是解码器有了一个奇妙的两面性:训练时并行,推理时串行。训练靠掩码一次性把整句的未来都遮住,可以并行算;推理时下一个词还没生出来,只能老老实实串着走。

五、预训练目标:交叉熵和困惑度

训练时盯的指标是交叉熵损失:模型给真实下一个词分配的概率越大,损失越小。具体算法是把模型预测的那个概率取负对数——给对了 0.9,损失就小;给成 0.01,损失就大。学名叫负对数似然,效果就是把"猜对"变成"惩罚猜错"。

另一个常见的数是困惑度(perplexity),就是交叉熵取指数。它的意思可以通俗地理解为:模型每次相当于在多少个等可能的候选里犹豫。困惑度等于 10,约等于每步都在 10 个选项里猜测;等于 1,就是每次都猜中,那是理想状态,理论上做不到。

这两个指标在预训练过程中持续下降,看上去很理想。但它不是万能指标:困惑度低不保证下游任务就好——文本里大量重复的套话也能把困惑度压得很低。所以看模型别只看这一对数。

把交叉熵写开看,它就是在所有位置上,量"模型给的分布"和"真实分布"差多远,再取平均。真实的下一个词只有一个,模型给它的概率越高,惩罚越小;给得越不合理,惩罚越重。

六、尺度定律:为什么大家都在堆参数

2020 年 Kaplan 等做了件影响深远的事:把大量不同规模的模型拉齐比较,发现性能(用损失衡量)和参数量、数据量、算力之间,大致是幂律关系。画在双对数坐标上,几乎是一条直线。

这条线意味着什么?意味着投入算力带来的收益是可以预测的,不是盲目押注。在收益尚未明显放缓之前,就值得继续扩大规模。整个行业后来大规模扩充算力,权衡的正是这种收益。

不过 Kaplan 那版配比被后来者修正了。Chinchilla(Hoffmann 等,2022)指出,之前大家参数堆得太多、数据给得太少,是"营养不良"。他们算出来的最优配比大约是每 1 个参数配 20 个 token。照这个配比重做数据之后,小一些但数据充足的模型,反超了更大但数据不足的模型。这条结论直接改写了后续模型的训练配方。

尺度定律还有一处反直觉:它不太怕过拟合。通常模型越大、数据越多,性能反而越稳,这跟传统印象里"大模型更容易过拟合"正好相反。也正因为这样,大家才敢一路往大里堆,而不是早早踩刹车。

七、GPT 三代各自加了什么

三代模型的主线很清楚:训练目标从头到尾没变,一直在变的是规模,以及规模带来的新玩法。

  • GPT-1(2018,1.17 亿):论证了"大规模无监督预训练 + 下游微调"这套范式能跑通,把预训练当成万能底座。
  • GPT-2(2019,15 亿):规模放大了约一个数量级,发现即使不微调,只给一段提示让它接着写,它也能完成不少任务——zero-shot 能力就是这样显现的。
  • GPT-3(2020,1750 亿):再上一个量级,冒出了上下文学习。给几个例子放在提示里,它就能照着做新任务,参数一个不改。这也让"提示词工程"流行起来。

注意一个事实:三代之间,网络结构基本没大改,改的主要是层数、宽度和数据。这反而是最值得注意的一点:一套骨架支撑了三代模型,能力是从规模中逐渐生长出来的。

三代之间还藏着一条暗线:参数量在涨,输入模型的 token 数涨得更快。Chinchilla 那套配比被广泛采纳之后,"堆参数"的说法逐渐变成"把参数量和数据量按比例一起配足"。

八、涌现能力,以及关于它的争论

有种说法是,某些能力——多步算术、按指令推理、链式思考——在小模型上几乎为零,模型一大就突然冒出来,像水到零度结冰那样"相变",所以叫涌现。

但这个说法有争论。Schaeffer 等 2023 提出一种观点:所谓突然出现,可能是评测指标本身不连续造成的错觉。比如用"整题全对算分",小模型偶尔猜对一个也不得分;换成"逐字给分"这种平滑指标,曲线其实是缓慢爬升的,没有断崖。

我的态度是别急着站队。规模确实带来质变,能力确实上台阶,这一点没有疑问;但"突然"一词值得存疑,其中可能有一部分是测量方式造成的。把这两件事分开看,就不容易被夸张的标题带偏。

我更愿意把"涌现"当成一个待验证的描述,而不是一条定律。它可能在部分任务上真实存在,也可能只是评测尺子画出来的曲线台阶。要不要叫它涌现,不影响我们老老实实去测。

九、它其实不"理解",但也不只是鹦鹉学舌

这些能力到底是真理解,还是高级模仿?到现在也没人能给一锤定音。

说它只是鹦鹉学舌,不太公道。鹦鹉不会因为你说了句错话就纠正你,模型却会在上下文里做类比、改错、按你给的格式一步一步推下去,这些不是单纯重复能解释的。

说它真"懂",也过了。它优化的始终是"下一个词的概率",背后没有一个经过验证的内在世界模型做担保。它可以在某个问题上推理得滴水不漏,也可能在同一类问题的另一组数字上出错。

比较稳的说法是:它从海量文本的统计规律里,学到了大量可以迁移的结构,这些结构有时表现得像理解。至于这种"像"离真正的理解有多远,是个还没解决的问题。

回到开头那句话:GPT 的秘密不在某段精巧的结构,而在"把一道极简的题,用海量数据和算力做到极致"。这套打法有没有上限,是未来几年最值得盯着的问题。

下一篇回到最底层:模型眼里的文字到底是什么。答案不是字,也不是词,是一串叫 token 的整数。

参考资料

  1. Alec Radford 等, Improving Language Understanding by Generative Pre-Training (GPT-1), 2018. OpenAI 论文 PDF
  2. Alec Radford 等, Language Models are Unsupervised Multitask Learners (GPT-2), 2019. OpenAI 论文 PDF
  3. Tom B. Brown 等, Language Models are Few-Shot Learners (GPT-3), NeurIPS 2020. arXiv:2005.14165
  4. Jared Kaplan 等, Scaling Laws for Neural Language Models, 2020. arXiv:2001.08361(尺度定律)
  5. Jordan Hoffmann 等, Training Compute-Optimal Large Language Models (Chinchilla), 2022. arXiv:2203.15556(参数与数据的最优配比)