本文是「零基础学大模型原理」系列的第 7 篇。这个系列记录一个没有任何机器学习背景的工程师,在 ChatGPT 发布之后从零补原理的过程。
上一篇结尾说要停一停,把这三个月学的东西盘一遍,这篇就是那次盘点。从 2022 年 12 月中旬在推特上得知 GPT-3.5 算起,到现在是三个月,写了六篇笔记。读这篇不需要前置知识;如果打算沿这条路线学习,建议从第 1 篇按顺序读。本篇按那六篇笔记盘点。
已掌握的内容和仍需补课的问题
先定一个盘点标准,不然「懂」没有可操作的含义。工程上的经验是:看懂一段代码不等于能写出来。对应到这里,我用两条标准判断:能否不查资料,把机制向同事复述清楚;核心步骤是否亲手算过一遍。两条都满足的部分算掌握,只满足第一条的部分仍是名词。
按这个标准过一遍六篇。已掌握的部分包括:第 1 篇的训练闭环,损失、梯度、反向传播每一步都用 numpy 手写过,XOR 上把 loss 从 0.25 降到 0.001 是亲手跑的;第 2 篇 Word2Vec 的机制,「语义相近是优化压力下的必然结果」这一点想通之后就没有再困惑;第 3 篇的注意力三步和第 4 篇的自注意力,两次手算走查的草稿还在;第 5 篇 GPT 三代演进的逻辑和 scaling law 的幂律,能复述,也能说明每一代扩大了什么;第 6 篇 RLHF 的前两段,SFT 和奖励模型,使用的是已有的训练工具和流程。
仍只停留在名词层的内容也照实列出:LayerNorm 的理论依据;位置编码为什么适合表示相对位置,推导没有走通;前馈网络升维到 2048 再降回来的设计考量;PPO 目标函数每一项为什么采用这种形式;深层网络为什么比浅层网络有效;第 5 篇结尾的问题,in-context learning 到底算不算「学会了」。这些环节在论文里都读过对应段落,能复述流程,但核心论证没有走通,按上面的标准仍是名词。
这个分层的作用是,名词层的每一项都标注了对应的篇章和小节。后面读到依赖它的内容时,可以回头补相应部分。
当时新接触的三个概念
学原理的同时,社区仍在发布论文和讨论。这里记录三个当时刚读到、影响我理解方式的概念。
第一个是涌现能力(emergent abilities)。2022 年 6 月 Wei 等人的论文 Emergent Abilities of Large Language Models 收集了一批任务:多位数加法、把打乱的字母重组成词、把英文音译成国际音标、波斯语问答之类,并画出任务准确率随模型规模变化的曲线。论文展示的曲线有一个共同现象:在某个规模之前,准确率接近随机水平;超过该规模后,准确率上升较快。这篇论文要和第 5 篇的 scaling law 一起看。测试损失随规模以幂律关系平滑下降,但具体任务的指标可能呈现阈值式变化。因此,「损失在降」和「能力在涨」对应不同指标,不能由前者直接推出后者。该论文提供了继续扩大模型规模的一项论据,但任务能力是否真正以突变方式出现,也受任务指标和评估方式影响。
第二个是思维链(chain-of-thought prompting)。2022 年 1 月,同样是 Wei 等人的论文提出:在 few-shot 示例中,除答案外加入人工编写的中间推理步骤。模型会在输出最终答案前生成类似的步骤,算术应用题、常识推理等任务的成绩会上升。两个细节值得记。第一,这个效果也呈现规模依赖,小模型加入推理链后的效果有限,有时还会下降;第二,它不改权重,只改变 prompt 的写法,就能改善一批原本效果不佳的任务。这加深了第 5 篇留下的疑问:模型可能具备支持分步计算的表征或计算过程,prompt 可能改变其输出路径,但这些过程在模型内部以什么形式实现,当时读到的文献没有给出结论。
第三个是幻觉(hallucination),即模型生成看似可信但不符合事实的内容。用 ChatGPT 的三个多月里遇到过很多次:让它推荐论文,会给出格式完美但实际不存在的标题和作者;问某个库的接口,会生成参数列表整齐但调用必然报错的方法。这个词在当时的讨论里出现得越来越多,下一节单独讨论。
幻觉的训练与工程限制
工程上遇到输出错误,通常会定位原因、改代码、发修复版。三个月前我对幻觉也有这个预期;现在的判断不同,原因来自训练目标和对齐过程。
第一,预训练目标不直接包含事实真实性。第 5 篇讲过,GPT 的预训练信号来自预测下一个词,损失函数奖励的是「像训练语料那样续写」。事实正确的陈述和编造但流畅的陈述,都可能在文本统计上形成高概率续写。预训练损失本身不直接提供区分两者的事实核验信号。
第二,笃定的语气是从语料中学到的,不能表示内容的置信度。互联网文本中,教科书的事实陈述和小说的虚构情节都可能采用笃定句式,模型会学习这种语气。因此,「听起来很确定」不构成内容真假的证据,不能据此判断回答是否可信。
第三,RLHF 可以改变回答偏好,但不能保证消除幻觉。第 6 篇的奖励模型来自标注员排序。标注员面对「确定的完整回答」和「老实说我不知道」时,未必总给后者更高的排序;排序信号也可能偏好流畅、完整的回答。对齐后,模型可能更倾向于给出看似合理的答案,仍需用外部方法核验事实。
所以当时的判断是:要把幻觉控制到工程可用的范围,需要模型外部的手段,例如在回答前提供可靠资料,而不能只等待下一个模型版本。这个判断决定了下一步计划的一半。
2023 年 3 月 14 日发布的 GPT-4
2023 年 3 月 14 日,OpenAI 发布了 GPT-4,离这篇笔记不到一周。我读过的只有发布博客和技术报告的粗略翻译,这里只记录时间线上的信息:GPT-4 支持图片输入;在一批人类考试上的成绩高于 GPT-3.5,博客给出了律师资格考试、SAT 等例子;技术报告明确说明不公开架构、训练算力和数据构造的细节,理由是竞争格局和安全。
从 GPT-1 到 GPT-3,论文公开了模型结构、训练数据的组成和训练规模等信息。GPT-4 技术报告未公开这些细节。对沿着公开论文学习原理的人来说,当时能读到的较完整材料集中在 GPT-3 和 InstructGPT 一带。图片输入如何接入 decoder-only 的结构,当时没有公开信息,不作猜测,先放入问题清单。
下一步的两个方向
应用侧。推特上这阵子反复出现 LangChain,它是把模型与外部工具、外部数据连接起来的框架。与它一起出现的关键词是 RAG(retrieval-augmented generation,检索增强生成):回答前先从外部资料库检索相关内容,将其放入上下文,再让模型基于这些资料回答。这与上一节的判断一致:模型内部的幻觉难以仅靠训练目标消除,可以为回答提供外部来源。接下来打算花几周理解这条路线,具体效果怎么样,看完再写。
复现侧。纸上懂了不等于手里会写,这是这次复盘中最明确的感受。karpathy 的 nanoGPT 仓库一直在我的书签里:几百行 PyTorch,一个能在小语料上从头训练的 GPT,结构包含第 4 篇讲的 embedding、block 堆叠、LayerNorm、输出头。他今年 1 月发布的两个小时 Let’s build GPT 视频我也跟着看过一遍。计划是自己写一遍最小 GPT:分词、模型骨架、训练循环、采样生成,每一步对照前六篇的概念核对。掩码位置错误、矩阵维度不匹配、loss 不下降都可能出现,亲手处理这些问题才能检验自己是否理解了完整训练过程。写完会作为这个系列的第 8 篇。
给同路线读者的资料清单
如果这三个月重走一遍,我会按下面的顺序读。这是实际走通的顺序,不按出版年份排列。
- 3Blue1Brown 神经网络系列前四集,配 Michael Nielsen 在线书的前两章。解决「训练到底在干什么」。
- Mikolov 的两篇 Word2Vec 论文,配 Jay Alammar 的 Illustrated Word2vec。解决「词怎么变成数字」。
- colah 的 Understanding LSTM Networks,配 Sutskever 和 Bahdanau 的 2014 年两篇。解决「句子怎么处理、注意力补了哪个洞」。
- Attention is All You Need,配 Illustrated Transformer 和 Annotated Transformer,三份一起读:论文给结构,图解给画面,代码给张量形状。
- GPT-1、GPT-2、GPT-3 三篇连读,配 Kaplan 的 scaling law 和 DeepMind 的 Chinchilla。
- InstructGPT 论文,配 Hugging Face 的 RLHF 图解。
- 补两篇新读到的:Emergent Abilities 和思维链那篇。
- 动手环节:nanoGPT 仓库,从头到尾读一遍,再自己写。
三个月前打开 GPT-3 论文,摘要之后就读不动了。现在那篇论文能从头读到尾,知道每一节在解决什么、实验在验证什么,这是这三个月最具体的进度。问题清单比三个月前更长了,但每个问题都有对应的位置,这也是进展。
本篇参考的资料
- Emergent Abilities of Large Language Models(Wei et al., 2022):涌现能力的任务曲线与规模阈值现象,本篇「当时新接触的三个概念」一节的出处。
- Chain-of-Thought Prompting Elicits Reasoning in Large Language Models(Wei et al., 2022):思维链提示,示范里写入中间推理步骤的做法与其规模依赖出自这里。
- GPT-4 发布博客(OpenAI, 2023-03-14):本篇仅作时间线记录,未展开。
- karpathy/nanoGPT:最小 GPT 的参考实现,下一步动手计划的对照物。

