跳到主要内容

两条分支 — 为什么「大模型」指的是两种完全不同的东西

这一章讲三件事: 为什么文本对计算机来说是「死的」,这五十年里人们用了哪四种办法把它救活; 2018 年那次分叉之后为什么会有两种长得完全不一样的「大模型」; 以及这本书自己规定的一套用词——后面八章全部建立在这套用词上。 不需要任何基础,遇到的生词都在当场解释。

1. 先看现象:你说的「大模型」和别人说的可能不是一个东西

你大概见过这两句话同时出现:

  • 「我们用大模型做了个客服问答机器人。」
  • 「我们用大模型给十万条工单做了自动分类,模型只有 1 亿参数(参数就是模型内部那一大堆可以调的数,调对了它就「会」了),跑在 CPU 上。」

第二句听起来不对劲——一亿参数也能叫大模型?而且不用显卡?

答案是:能,而且这本书专门为此写了一节。 书直接把话挑明了: 「大」是任意的,今天被认为是大的模型明天可能就小了, 所以本书里的「大语言模型」也包括那些不生成文本、可以在消费级硬件上运行的模型, 甚至包括参数少于 10 亿1

这不是文字游戏,是这个领域真实存在的两条分支。

要看清这两条分支从哪儿分出来的,得先回到一个更早的问题上。

2. 顶层全景:一条主干,一次分叉

这张图有意不用任何专业名词。 每一格的正式叫法,都留到 3.x 节第一次讲到它时再给。

文字本身对计算机是「死的」:给「猫」编个号,那个号和「狗」的号之差什么也不代表

├── ① 词袋(1950 年代提出 / 2000 年代流行) 数每个词各出现了几次
│ └ 终于有数可算了,但完全不管意思
├── ② word2vec(2013) 让意思相近的词,配到的数也相近
│ └ 意思变成了距离,但一个词从头到尾只配一组固定的数
├── ③ 排队式的网络 + 让它自己挑该看前文哪几处(2014)
│ └ 同一个词终于能随上下文变了,但必须一个词一个词排队算,训不快
└── ④ Transformer(2017) 把排队整个扔掉,只留「自己挑该看哪几处」
│ └ 可以同时算一大堆,训练速度大增

┌────────┴────────┐
▼ ▼
只留「读进去」的那一半 只留「写出来」的那一半
能同时往左右两边看 只能往回看自己已经写出的
BERT(2018) GPT-1(2018)
│ │
产出「这段话是什么意思」 产出「下一小段字该是什么」
书里叫 书里叫
**表示模型** **生成模型**

图说:主干上的每一步,都是被上一步的缺陷逼出来的;分叉之后的两支共用同一批零件, 只是最后接的那一小截不一样。这一章剩下的篇幅,就是把这张图上的每一格讲透。

为了让四代办法可比,下面每一格都拿同一句话走一遍:

「那只猫没过马路,因为它太累了」

按词切开是 8 段:那只 马路 因为 太累了每一代办法拿到的都是这 8 段,区别只在「它把这 8 段变成了什么数」。

提醒一次,后面不再重复:这条走查上出现的所有数值(那几串数、距离、注意力分) 都是为演示编的,不是真实数值。 它们的作用是让你看见中间结果的形状和大小关系, 而不是让你去记具体的数。

3. 核心原理

3.1 起点:文本对计算机是死的

这一节回答:为什么不能把文字直接喂给程序。

先讲一个词:非结构化就是「没有固定的行列格式,程序不知道该拿哪一块做什么」。

书给的判断只有一句,但它是整本书的地基: 文本本质上是非结构化的,当用 0 和 1(单个字符)表示时会失去其意义2

拆开看这句话:

  • 「非结构化」的意思是它没有固定的行列格式。一张表格里「年龄」这一列永远是数字, 程序知道该拿它做什么;而一段话里的第三个字可能是任何东西;
  • 「用 0 和 1 表示会失去意义」的意思是:你当然可以把「猫」编码成某个数字, 但那个数字和「狗」的数字之间的差值毫无含义。编号是任意的。

所以整个语言 AI 的历史,就是在回答同一个问题:怎么给文字一组「差值有含义」的数。

顺带把书对上位概念的界定也交代一下,因为后面会一直用: 人工智能指的是让计算机做接近人类智能的任务; 语言 AI 是它的一个子领域,专管理解、处理和生成人类语言, 这个词书里和「自然语言处理(简称 NLP——就是让计算机读、写、理解人话这门学问)」当同义词用3

书还顺手泼了一盆冷水:因为 AI 这个词在不断演化,它被用来描述五花八门的系统, 其中一些可能并未真正体现智能行为——比如电脑游戏里的 NPC,常被叫 AI, 但很多不过是一堆 if-else 语句3

3.2 第一代:词袋——先让文字有个数

它解决什么问题: 给一段文字一个数值表示,任何数值表示都行。

它怎么做: 三步4

  1. 词元化——把句子拆成一小段一小段。最常见的做法是按空格切。 切出来的每一小段,书里叫「词元」(英文 token,有的中文书把它译作标记——说的是同一样东西); 它可能是一个完整的词,也可能只是词的一截。这个词后面每一章都会用到。 而干这件事的那个部件,书叫词元化器;

  2. 建词表——把所有句子里出现过的不重复的词收集起来。 这份清单书里叫「词表」,它是固定的,模型只认识清单上有的东西;

  3. 数数——统计每个词在这句话里出现了几次。

结果就是一个数字向量:词表里第 k 个词出现了几次,向量第 k 位就是几。 这个向量书里叫向量表示,而产生这种表示的模型,书统一叫表示模型4

走查第一步:把那句话真的数一遍。

假设手上只有两句话,收集出来的词表一共 8 格,顺序就按第一次出现:

第几格12345678
那只马路因为太累了

「那只猫没过马路,因为它太累了」这 8 个词每个各出现一次,于是它的向量是:

「那只猫没过马路,因为它太累了」 → [1, 1, 1, 1, 1, 1, 1, 1]
「马路没过那只猫,因为它太累了」 → [1, 1, 1, 1, 1, 1, 1, 1]

图说:**两句话意思完全相反,数出来的向量一模一样。**
因为「数每个词出现几次」这个动作,把顺序整个扔了。

为什么这么做有效: 它把一句话变成了一个固定长度的数字列表—— 上面那 8 个格子,不管句子多长多短,永远是 8 个。 从这一刻起,所有「只吃数、不吃字」的程序都能用上了: 判断这段话属于哪一类、把相似的自动归成一堆、算两段话有多像,全都成了可能。

边界在哪: 先讲一个词——语义就是「意思」;这一行凡是提到语义,都可以直接读成「意思」。 上面那两个一模一样的向量,丢掉的正是语义。

书说得很直白:它认为语言不过是一个几乎字面意义上的「词袋」, 忽略了文本的语义性质或含义5

但请不要把它当成历史。 书特意留了一句:词袋绝非完全过时, 原书第 5 章还会用它来补充更新的语言模型5—— 原书那一章的内容,在我们这里是第 04 章,具体怎么补看那一章。

顺带把一条读法定死: 本组文档里,「原书第 N 章」指的是这本书自己的章号, 「第 0N 章」(带前导零)指的是我们这九章。 两者对不上是正常的——我们重新切过章。

3.3 第二代:word2vec——让意义变成距离

它解决什么问题: 词袋不管意义。有没有办法让意义相近的词,数值也相近?

它怎么做: 2013 年发布的 word2vec 是第一批成功的尝试之一6

先说清楚一个词,后面每一章都要用:

嵌入(embedding)= 一个东西的数值向量表示,而且这个表示是为了捕捉它的「含义」而设计的。

神经网络:一堆按层排列、互相连接的节点,信息从一层流到下一层。 它是这一行后面所有东西的共同底座——3.4 节那种排队式的网络、3.5 节那种把排队扔掉的新结构, 都是它的变体,区别只在「节点之间怎么连」。

word2vec 的做法是:先给词表里每个词随机分配一组数(比如 50 个), 然后拿海量文本(比如整个维基百科)反复训练一个神经网络, 让它去回答一个极简单的问题:这两个词,在句子里可能是邻居吗?6

权重:神经网络里每条连接上带的一个数,决定这条连接把信号放大还是缩小。 训练所做的全部事情,就是一点点改这些数。 书直接点明——这些权重通常被称为模型的参数7

所以「参数 = 权重」,同一样东西的两个名字。 你以后看到「70 亿参数」, 说的就是这个网络里有 70 亿个这样的数。

训练过程中会不断调整那些数。训完之后:

如果两个词经常有相同的邻居,它们的嵌入就会更接近,反之亦然。

走查第二步:训完之后,马路的数长什么样。

书说初始时每个词随机分到约 50 个数。为了摆得下,下面把长度缩到 5 个:

训完之后的那一串数
[0.71, 0.15, 0.62, 0.09, 0.30]
(不在这句话里,拿来当参照)[0.68, 0.18, 0.59, 0.11, 0.28]
马路[0.05, 0.80, 0.12, 0.74, 0.66]

「离得近」怎么算? 逐位相减、各自平方、加起来、再开方——就是两点之间的直线距离:

  • :0.06
  • 马路:1.29

后者是前者的二十倍以上。 这就是「意思接近 = 数值接近」落到数上的样子: 常出现在同类句子里(喂、养、叫),所以被摆到了一起; 马路很少和它们同处,所以被推得很远。

回头对比 3.2 节: 在词袋那 8 个格子里,是第 2 格、马路是第 5 格, 而**「第 2 格」和「第 5 格」之间的差什么也不代表**。 到这一步,两串数之间的差第一次有了含义——这就是这五十年真正的进展。

注意这个词还有一种日常用法,指「你自己能设的那些选项」—— 比如让它答得稳一点还是野一点、把文字切多细、训练时同一份数据过几遍。 本组文档在自己说话时,一律把那类东西叫「设定」,不叫参数; 引用书里原话时才保留它的用词。 「参数」在本文里只指上面这种模型内部的数。

为什么这么做有效: 这里有一个很妙的绕道。 我们真正想要的是「哪些词意思接近」,但这件事没有现成的标注数据。 于是换成一个有无限数据的任务——判断两个词是不是邻居, 任何一段文本都能自动生成这种训练样例。模型为了答对这道题,内部不得不隐含地把意思相近的词摆到一起。

边界在哪(这条很重要): 先讲一个词——维度指的是那一串数里的第几个位置, 「第 37 维」就是「第 37 个数」。

书讲得非常克制,值得原样记住:嵌入里的那些数 通常相当晦涩,很少与单一实体或人类可识别的概念相关

书里那张「baby 在『新生儿』这一维得分高」的示意图, 它自己标注说我们可能过度简化地想象维度代表概念,实际上并非如此8

判断(我们的,不是书里的): 这句自我拆台值得放在心上。 网上大量「嵌入的第 37 维代表性别」这类说法,属于讲课用的比喻,不是事实。 正确的说法是:这些数合起来对计算机是有意义的,单独拎出一个来解释通常是编的。 如果错,会错在: 如果某个模型确实被训练成让特定维度对应特定属性 (可解释性研究里有这类工作),那对那个模型来说单维解释成立—— 但对通用嵌入模型不成立。判据是:这个维度是被设计出来的,还是被事后解读出来的。

还有一个层级问题必须现在说清:嵌入不只有词这一级。 书列了两级—— 词嵌入(就是「一个词对应的那一串数」)和句子嵌入,分别表示不同层次的抽象9。 词袋其实是在文档级别做嵌入,而 word2vec 只做级。 这条区分在第 04 章和第 06 章会反复用到。

3.4 第三代:循环网络 + 注意力——让同一个词随上下文变

它解决什么问题: word2vec 训出来的是静态的、可下载的单词表示—— 单词 bank 不管在什么上下文里,永远是同一个嵌入。 可 bank 既可以是银行,也可以是河岸,它的含义应该随上下文变10

先讲一个后面每一章都要用的词:序列就是「有先后顺序的一串东西」。 一句话里依次出现的那些词,就是一个序列;顺序换了,意思就变了。

它怎么做:循环神经网络(常写作 RNN)——神经网络的一种变体, 它能把一整个序列当成额外的输入来处理11

书用「I love llamas」翻译成荷兰语的例子讲了这个结构,它由两半组成。

前一半叫编码器——「编码」就是把一样东西转成另一种表示。 编码器把输入句子从头读一遍,压缩成一个向量,这个向量代表整句话的意思。

后一半叫解码器——反过来,把那种表示还原成文字。 解码器拿着上面那个向量,一个词一个词地把译文吐出来。

这个结构有个致命瓶颈: 整句话被压成一个向量交给解码器, 句子一长就装不下了12

2014 年的补丁叫注意力机制。 它的作用是: 让模型能关注输入序列中彼此相关的部分,并放大它们的信号12。 具体做法是不再只传一个上下文向量,而是把所有输入词的中间状态都传给解码器, 解码器每生成一个词,就自己去挑该看哪些输入词13

书给的例子很直观:生成荷兰语 lama's(羊驼)时,它对英文 llamas 的注意力很高, 对 I 的注意力很低12

走查第三步:把「注意力很高」写成数。 假设我们把那句中文译成英文,解码器已经吐出 The cat didn't cross the road because it was, 现在要吐下一个词。它对输入那 8 个位置的注意力占比是:

输入位置那只马路因为太累了
注意力占比0.020.050.010.010.020.060.090.74

这一行加起来正好是 1.00。 七成多落在太累了上,所以它接下来吐的是 tired而且换一个位置要吐,这一行数就整个重新算一遍—— 「让解码器自己去挑该看哪几处」,实际发生的就是这件事。

边界在哪: 循环网络必须一个词接一个词地顺序处理, 而这种序列性质阻碍了模型训练期间的并行化14。显卡擅长同时算一大堆, 可你没法同时算第 5 个词和第 3 个词——因为第 5 个要等第 3 个的结果。

落到我们那句话上:太累了那一步之前,那只 马路 因为 这 7 步必须一步一步先算完;8 个词就是 8 拍,一拍都不能并。

这个瓶颈直接催生了下一步。

3.5 第四代:Transformer——把循环整个扔掉

它解决什么问题: 训练太慢。并行就是「同时算很多份」, 它的反面是「一件一件排队算」——而循环网络只会后一种,上一节末尾那 8 拍就是这个意思。

它怎么做: 2017 年那篇论文的做法极其激进—— 提出一种完全基于注意力机制的网络架构,并去除了循环网络15

为什么这么做有效: 书给的理由只有一句,但这一句是整个时代的原因: 与循环网络相比,Transformer 可以并行训练,极大地加速了训练过程15

补充(不在书里): 书没有给出这篇论文的完整出处。它是 《Attention Is All You Need》,Vaswani 等八人,2017 年 6 月 12 日提交,arXiv 编号 1706.03762。 摘要里的自我定位是:这套结构完全建立在注意力之上,把循环和卷积(当时处理图像的主流做法:拿一个小窗口在图上滑,每次只看窗口里那一小片; 这里只需要知道它是「另一种老办法」,后面不再出现)都彻底扔掉了。 来源:《Attention Is All You Need》https://arxiv.org/abs/1706.03762(查阅于 2026-08-25)

Transformer 内部有两种块,这是理解后面分叉的关键。

自注意力:「注意力」原本是解码器回头去看编码器的输入; 而自注意力是同一句话内部,每个位置回头去看这句话的其他位置——「自」就是「看自己这一串」。 拿我们那句话说:处理到时,回头看的是那只太累了这同一句里的其他位置, 而不是另一句话。

「前馈」就是「只往前送,不绕回来」:信号进去,一层层往前流,不回头。 所以前馈神经网络就是一叠最普通的、信号不回头的网络层——它在这里负责存放模型学到的东西。

里面有什么特点
编码器块自注意力 + 前馈神经网络16自注意力可以关注单个序列内的不同位置,一次性看整个序列,能往前看也能往后看16
解码器块自注意力 + 前馈网络,再加一层关注编码器输出的注意力17自注意力层会掩蔽未来的位置,只能看更早的位置,防止生成时「窥视未来」17

走查第四步:同一句话,两种块各能看见什么。 处理到第 7 个位置的时候——

编码器块: 那只 猫 没 过 马路 因为 [它] 太累了
✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ← 8 个全看得见
解码器块: 那只 猫 没 过 马路 因为 [它] 太累了
✓ ✓ ✓ ✓ ✓ ✓ ✓ 被掩蔽 ← 只看得见 7 个

图说:**差别只有最后那一格。** 而 2018 年那次分叉,就分在这一格上。

「掩蔽未来」这四个字是整个分叉的技术原因,记住它。 往前看得见的那一支,天然适合「读懂这句话」;看不见的那一支,天然适合「往下接」。

3.6 分叉之一:只留编码器,专管读懂

原始 Transformer 是编码器 + 解码器,适合翻译,但不好用在别的任务上,比如文本分类18。 于是 2018 年出现了两个方向相反的裁剪。这一节讲第一个方向,下一节讲第二个。

方向一:只留编码器。 这条路上的代表是 BERT(全称「来自 Transformer 的双向编码器表示」), 它只使用编码器,完全移除了解码器18

预训练:先在海量无标注文本上通读一遍,不针对任何具体任务,只学通用的语言规律。 它是全书最贵的一步,贵在两头都大:要读的文本以万亿计,要调的数以十亿计—— 所以真做得起的只有少数几家公司(具体多贵,3.10 节有一笔账)。

微调:拿一个已经预训练好的模型,再用少量有标注的数据针对具体任务训一小会儿。 它之所以便宜,正是因为预训练那一步别人已经替你付过账了。

「先预训练、再微调」这一整套,书里叫迁移学习19—— 「迁移」指的就是把前一步学到的通用能力,搬到后一步那个具体任务上去。

BERT 有三个特点:

  1. 输入前面加一个 [CLS] 词元(分类词元),用它的输出当作整段输入的表示20;
  2. 训练方式叫掩码语言建模——把输入的一部分遮住,让模型去预测被遮的是什么。 书说这个任务很难,但正因为难,BERT 才能造出更准确的中间表示21;
  3. 架构里几乎每一步都产生嵌入,所以它天生就是一台**「把文字变成可以直接喂给下游程序的那组数值」的机器**, 不微调也能直接用22

预训练模型的好处书说得很实在:大部分训练已经为我们完成了, 在特定任务上微调通常计算量较小、所需数据也更少23

3.7 分叉之二:只留解码器,专管往下写

先讲一个词:「生成式」就是「会自己往外写字」。 上一节那一支只读不写;这一支反过来,给它一个开头它就自己往下接,所以它是生成式的。

同一年走这条路的是 GPT(生成式预训练 Transformer),它堆叠解码器块, 移除了关注编码器输出的那一层24。GPT-1 在 7000 本书和一个大型网页数据集上训练, 有 1.17 亿个参数24

然后就是那条著名的曲线:GPT-2 十五亿参数,GPT-3 一千七百五十亿25

书对参数量(就是那些可调的数一共有多少个)的表述值得注意,它加了一个前提: 如果其他条件不变,我们预计更多的参数将极大地影响语言模型的能力和性能25。 「如果其他条件不变」这半句是有分量的——见第 5 节。

3.8 这本书自己规定的用词(全书通用)

这一节是这一章的落点。 书在第 187 段给出了它自己的一套命名,后面十一章都用它26:

书里的叫法架构主业典型模型书里的配色
表示模型仅编码器表示语言(产出嵌入),通常不生成文本BERT 及其变体青色 + 向量图标
生成模型仅解码器生成文本,通常不训练来产出嵌入GPT 系列粉色 + 聊天图标

书特意补了一句,这句比表格本身更重要: 主要区别不在于底层架构和这些模型的工作方式26

换句话说:两者是同一套零件的不同接法,不是两种技术。

3.9 生成模型的两个附加概念

补全模型。 生成式大语言模型本质上是接收一些文本并尝试自动补全它, 所以它们常被称为补全模型27。真正能「回答问题」是微调出来的—— 通过微调可以得到能遵循指令的指令模型聊天模型28

上下文长度。 书的定义是:模型可以处理的最大词元数量29

这里要先补一个词,因为下一句话就要用到它:

自回归:生成下一个词时,必须先把前面已经生成的词全部读进去。 书的原话是「在生成下一个词时,该架构需要消耗所有先前生成的词」30

书提醒了一件容易忽略的事:由于自回归的性质,随着新词元被生成,当前的上下文长度会增加29

你的提示词和它的回答共用同一条预算。 这是很多人第一次遇到上下文报错时想不通的地方。

3.10 两步训练范式

这一节是第 09 章的伏笔,先在这里埋下。

传统机器学习是一步:为一个特定任务(比如分类)训一个模型31。 而创建大语言模型至少两步32:

名字用什么数据产物
预训练(书:占据绝大部分计算和训练时间)海量互联网文本,无需标注基座模型(也叫基础模型)。它通常不遵循指令
微调少量、更窄的有标注数据会分类、或会听指令的模型

书给的成本感很有用:Llama 2 在包含 2 万亿词元的数据集上训练; 按 A100-80GB 每小时 1.5 美元租,总共要租 331 万个「显卡小时」(一张显卡跑满一小时算一个), 创建这些模型的总成本将超过 500 万美元33

但这三个数单看都只是「很多」。各配一个可比的量,它们才有分量:

书给的数拿什么比
训练读了 2 万亿词元上一代的 GPT-3 读了 3000 亿词元——Llama 2 是它的六倍多
331 万个显卡小时一张显卡不停地跑要跑 378 年;所以只能几千张一起上,把年摊成月
超过 500 万美元而这本书全部例子的硬件预算是一张免费显卡,零成本

补充(不在书里,来自通用知识): 上面右边那一列书里都没有,是我们补的。 GPT-3 读 3000 亿词元出自它自己那篇论文;378 年是这么来的:331 万 ÷ 每年 8,760 小时。

这笔账解释了为什么整本书讲的都是「怎么用别人预训练好的模型」,而不是「怎么预训练」。 最后那一行尤其要看:书里那些模型的作者手上是五百万美元,而这本书假定你手上是一张免费显卡。

3.11 开源还是专有:一道成本与控制权的题

书用了整整一节讲这个选择,因为它会决定你后面所有章能不能照做。

API(应用程序编程接口):别人把服务开一个口子给你,你按约定格式发请求、收结果, 中间那台机器长什么样你不用管、也管不着。 「也管不着」这四个字是下面那张表好几行的根源——改不了、看不见、数据也留不住。

GPU(图形处理器,俗称显卡):原本是给游戏画画面的芯片, 它最擅长的正是「同时算一大堆数」——3.4 节说循环网络训不快,卡住的就是它这个长处。 它自带的内存叫显存,一个模型装不装得下,看的就是这个数。

专有(模型内部的数和代码都不公开)开放权重
怎么用通过 API 调用,不需要强大的 GPU34下载到本地跑,需要够强的显卡35
谁承担托管风险提供商,所以通常收费34你自己
能不能微调不能——无法直接访问模型34能,而且对整个过程完全透明35
数据去哪会与提供商共享——书点名了医疗数据这类场景34留在本地
性能因投入巨大,通常比开源对应物更好34追赶中

书自己的立场很明确:我们通常更倾向于尽可能使用开源模型36

它还就「开源」这个词的用法加了一个注,这个注比正文诚实: 关于什么才是真正的开源模型存在持续的讨论—— 有些公开共享的模型带有限制商业用途的许可,而且模型训练所用的数据及其源代码也很少被共享37

判断(我们的,不是书里的): 这本书里的「开源模型」,准确的叫法应该是开放权重模型。 权重能下载,不等于训练数据、训练代码、数据配比可复现。 在写文档、做合规说明时用「开放权重」,不要用「开源」。 如果错,会错在: 如果某个模型确实把数据、代码、配方全部公开 (确实有这类项目),那对它用「开源」是准确的——判据是能不能从零复现,而不是能不能下载。

最后是一条很实在的硬件常识。 书造了一个词叫 GPU 贫困者—— 指那些没有强大 GPU、在为算力发愁的人,并且宣布本书是为 GPU 贫困者而写的38

它给的选型经验是:显存(VRAM)越大越好,因为有些模型显存不足根本无法使用; 而且没有单一规则可以精确确定某个模型需要多少显存—— 它取决于架构、大小、压缩技术、上下文大小、后端38

书全程的主力生成模型因此是 Phi-3-mini:38 亿参数, 8 GB 显存以下就能跑,做一道叫量化的压缩之后甚至低于 6 GB,而且许可宽松、可商用39

量化在这里先记一句话就够:把每个参数存得粗一点(比如原本用 16 位数字记,改成用 4 位), 占的内存就少一大截,代价是精度(数值记得有多准)掉一点点。 它具体怎么做到「粗了却还准」,第 09 章讲。

4. 作者的判断与证据

这一节把「书里给了证据的」和「书里只是断言的」分开。

说法属于哪一类说明
Transformer 比循环网络快,因为可以并行有机制解释循环的依赖链被去掉了,这是结构性的
词袋忽略语义有机制解释它只数频次,顺序和搭配全丢
嵌入的单个维度通常不对应人类概念作者主动坦白书在配图下自己标注了「实际上并非如此」8
「更多参数将极大地影响能力和性能」断言,而且带了逃生舱原文前面有「如果其他条件不变」25。而**「模型多大、数据多少、算力多少,效果会到哪儿」之间那套固定关系,书一条数据、一篇引用都没给**——第 5 节接着说
表示模型与生成模型的分野「主要区别不在于底层架构」定义性主张这是书为自己立的用词规矩,不是实验结论26
「本书是为 GPU 贫困者而写的」写作立场它决定了全书的模型选型,读的时候要意识到这一点38

书在这一章还列了一份伦理清单,五条:偏见与公平、透明度与问责、生成有害内容、 知识产权、监管(点名了欧洲人工智能法案)40

值得单独摘一句的是它对偏见的表述,因为它指出了一个结构性困难: 由于大语言模型的训练数据很少被共享,除非你亲自尝试,否则它们可能包含的潜在偏见仍然不清楚40

这句话把「偏见检测」从一个技术问题变成了一个信息可得性问题。

5. 边界与局限

这一章有三处必须自己补上,书里没有。

第一,那四篇奠基论文,书只给了脚注编号,没有讲。 我们补齐并核对如下—— 这四个日期本身就是一条时间线:

书里提到的东西论文时间关键数字
word2vec《Efficient Estimation of Word Representations in Vector Space》(Mikolov 等)2013-01-16摘要称「16 亿词的数据集上不到一天就能学出高质量词向量」——词向量就是 3.3 节说的词嵌入,一个词对应的那一串数41
Transformer《Attention Is All You Need》(Vaswani 等)2017-06-12英译德得分 28.4——用的是一把叫 BLEU 的机器尺子,拿机器译文和人工译文比重合的片段,分数越高越像41
BERT《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》(Devlin 等)2018-10-11GLUE(一套九项的英语理解公共考卷)的总分推到 80.5%,比前人高 7.7 个点41
GPT-3《Language Models are Few-Shot Learners》(Brown 等)2020-05-281750 亿参数;所有任务都不改动模型里的任何一个数,只在提问时顺手给几个示范41

最后一行值得停一下:GPT-3 那篇论文的核心主张就是「不训练也能干活」—— 而这正好是这本书整本的方法论。书没有点破这个渊源。

第二,「参数越多越好」这句话,书留了一个逃生舱,而逃生舱恰恰是问题所在。 原文是「如果其他条件不变,我们预计更多的参数将极大地影响能力和性能」25—— 可其他条件从来没有不变过:数据量、数据质量、训练时长一直在同步涨。

「多大的模型该配多少数据、配多少算力」这件事,是有专门研究的。 这一行给这类研究起了个名字,叫缩放律—— 它研究的就是「模型多大、数据多少、算力多少」和「效果最后能到哪儿」之间那套固定关系。 书没有引用任何一条这方面的结论,这是它这一章最大的空白。

第三,书完全没讲预训练本身。 数据怎么配比、算力怎么规划、什么时候该停, 一个字没有。这不是缺陷,是定位——它是给用模型的人写的,不是给造模型的人写的。

还有一处小的。 书在讲新架构时提了 Mamba 和 RWKV,给的理由用了两个词,先各自说清。

上下文窗口就是 3.9 节说的上下文长度 —— 一次最多能看多少字。

推理在这里指拿训好的模型跑一遍有多快,和第 05 章说的「推理」 (一步步把答案想出来)不是一回事。业内这个词就是两个意思,原书两种都用。 本文的区分办法:带「速度 / 成本」的是前者,单说「推理」的是后者。

书的原话是,它们「试图达到 Transformer 级别的性能, 同时具有额外的优势,如更大的上下文窗口或更快的推理速度」42

到今天为止,这句「试图」仍然准确——Transformer 仍是绝对主流。

6. 可带走的

  1. 文本的根本问题是「差值没有含义」——给「猫」编个号,那个号和「狗」的号之差什么也不代表;
  2. 语言 AI 四步走:词袋 → word2vec → 循环网络+注意力 → Transformer,每一步都是被上一步的缺陷逼出来的;
  3. word2vec 的巧妙不在于网络,在于绕道——用「这两个词是不是邻居」这个有无限数据的任务,换出「哪些词意思接近」;
  4. 嵌入的单个维度通常没法解释,书自己承认了。看到「第 N 维代表某某」的说法,默认它是教学比喻;
  5. 循环网络的死因是不能并行,Transformer 的全部意义就是解决这一条;
  6. 2018 年的分叉决定了今天的一切:只留编码器 → 双向、擅长表示 → BERT;只留解码器 → 掩蔽未来、擅长生成 → GPT;
  7. 表示模型 vs 生成模型是这本书的用词,请沿用——它比「BERT 类 / GPT 类」更能指导选型:你要的是一段表示,还是一段文本?
  8. 「大」是任意的,一亿参数的模型也可以是这本书说的大语言模型;
  9. 参数 = 权重,同一样东西的两个名字;
  10. 两步训练:预训练(海量无标注,极贵)→ 微调(少量有标注,便宜),而这本书讲的全是第二步之后的事;
  11. 上下文长度是提示和回答共用的预算,不是只给输入的;
  12. 「开源模型」的准确说法是「开放权重模型」,书自己也承认这个词有争议。

7. 原文地图

主题原书章原文位置
作者所属机构、赞誉页动手学大语言模型text/02-fm.txt:232(搜「Cohere 的伙伴们」) · text/02-fm.txt:242(搜「IKNL」) · text/02-fm.txt:59(搜「sentence-transformers 创建者」)
直觉优先的写作立场、预设读者动手学大语言模型text/02-fm.txt:89(搜「视觉化语言」) · text/02-fm.txt:95(搜「本书假定你有一些 Python 编程经验」)
硬件门槛与 Colab动手学大语言模型text/02-fm.txt:125(搜「16 GB 的 VRAM」)
ChatGPT 的用户增长大语言模型简介text/03-fm.txt:5(搜「五天内达到一百万活跃用户」)
AI 与语言 AI 的界定、NPC 那句大语言模型简介text/03-fm.txt:31(搜「约翰·麦卡锡」) · text/03-fm.txt:33(搜「if-else语句」) · text/03-fm.txt:35(搜「语言AI是AI的一个子领域」)
文本非结构化大语言模型简介text/03-fm.txt:47(搜「非结构化」)
词袋三步、表示模型这个叫法大语言模型简介text/03-fm.txt:55(搜「词元化,即将句子拆分为单个词或子词」) · text/03-fm.txt:63(搜「字面意义上创建了一个词袋」)
词袋的缺陷、它没过时大语言模型简介text/03-fm.txt:71(搜「忽略了文本的语义性质」) · text/03-fm.txt:67(搜「绝非完全过时」)
word2vec、权重即参数大语言模型简介text/03-fm.txt:73(搜「2013年发布的word2vec」) · text/03-fm.txt:75(搜「这些权重通常被称为模型的参数」)
嵌入维度不可解释的坦白大语言模型简介text/03-fm.txt:89(搜「维度代表概念」) · text/03-fm.txt:91(搜「这些属性通常相当晦涩」)
嵌入的层级大语言模型简介text/03-fm.txt:99(搜「词嵌入和句子嵌入」)
静态嵌入的缺陷(bank)大语言模型简介text/03-fm.txt:109(搜「静态的、可下载的单词表示」)
RNN 编码器解码器、自回归大语言模型简介text/03-fm.txt:111(搜「循环神经网络(RNN)」) · text/03-fm.txt:113(搜「编码或表示输入句子」) · text/03-fm.txt:117(搜「自回归的」)
注意力机制的引入大语言模型简介text/03-fm.txt:125(搜「2014年,一种称为注意力机制的解决方案」) · text/03-fm.txt:131(搜「所有输入词的隐状态」)
循环网络不能并行大语言模型简介text/03-fm.txt:135(搜「这种序列性质阻碍了模型训练期间的并行化」)
Transformer 去掉循环、可并行大语言模型简介text/03-fm.txt:139(搜「Transformer可以并行训练」)
编码器块、自注意力大语言模型简介text/03-fm.txt:145(搜「自注意力和前馈神经网络」) · text/03-fm.txt:149(搜「自注意力可以关注单个序列内的不同位置」)
解码器多一层、掩蔽未来大语言模型简介text/03-fm.txt:153(搜「解码器有一个额外的层」) · text/03-fm.txt:157(搜「掩蔽未来的位置」)
BERT 仅编码器、[CLS]、掩码语言建模大语言模型简介text/03-fm.txt:169(搜「来自Transformer的双向编码器表示」) · text/03-fm.txt:173(搜「[CLS]或分类词元」) · text/03-fm.txt:175(搜「掩码语言建模」)
迁移学习、预训练的便宜大语言模型简介text/03-fm.txt:179(搜「迁移学习」) · text/03-fm.txt:183(搜「特征提取机器」)
表示模型 / 生成模型的定义大语言模型简介text/03-fm.txt:187(搜「我们将仅编码器模型称为表示模型」) · text/03-fm.txt:189(搜「青色」)
GPT-1、参数增长曲线大语言模型简介text/03-fm.txt:195(搜「1.17亿个参数」) · text/03-fm.txt:197(搜「GPT-2有15亿个参数」)
补全模型、指令模型大语言模型简介text/03-fm.txt:205(搜「指令模型或聊天模型」) · text/03-fm.txt:207(搜「补全模型」)
上下文长度大语言模型简介text/03-fm.txt:211(搜「上下文长度或上下文窗口」)
Mamba 与 RWKV大语言模型简介text/03-fm.txt:223(搜「Mamba」)
「大」是任意的大语言模型简介text/03-fm.txt:239(搜「是任意的,今天被认为是大模型」) · text/03-fm.txt:241(搜「参数少于10亿」)
两步训练范式、Llama 2 的成本大语言模型简介text/03-fm.txt:245(搜「一步式过程」) · text/03-fm.txt:251(搜「预训练,占据了绝大部分」) · text/03-fm.txt:275(搜「5,000,000」)
伦理清单五条大语言模型简介text/03-fm.txt:267(搜「偏见与公平」) · text/03-fm.txt:267(搜「欧洲人工智能法案」)
GPU 贫困者、显存没有公式大语言模型简介text/03-fm.txt:275(搜「GPU贫困者」) · text/03-fm.txt:277(搜「没有单一规则」)
专有 vs 开放权重大语言模型简介text/03-fm.txt:287(搜「闭源大语言模型是其权重和架构不向公众共享」) · text/03-fm.txt:295(搜「您的数据会与提供商共享」) · text/03-fm.txt:303(搜「持续的讨论」) · text/03-fm.txt:313(搜「我们通常更倾向于尽可能使用开源模型」)
Phi-3-mini 的选型理由大语言模型简介text/03-fm.txt:337(搜「MIT」)

Footnotes

  1. 出处:「大语言模型简介」第 239 段(text/03-fm.txt:239,搜「是任意的,今天被认为是大模型」)与第 241 段(text/03-fm.txt:241,搜「参数少于10亿」)。书给的理由是:这类定义的问题在于会排除一些有能力的模型,而「我们给一个模型或另一个模型起什么名字,并不会改变它的行为方式」。

  2. 出处:「大语言模型简介」第 47 段(text/03-fm.txt:47,搜「非结构化」)。

  3. 出处:「大语言模型简介」第 35 段(text/03-fm.txt:35,搜「语言AI是AI的一个子领域」)、第 31 段(text/03-fm.txt:31,搜「约翰·麦卡锡」)与第 33 段(text/03-fm.txt:33,搜「if-else语句」)。书引的是人工智能学科创始人之一麦卡锡 2007 年的定义:制造智能机器、特别是智能计算机程序的科学和工程。 2

  4. 出处:「大语言模型简介」第 55 段(text/03-fm.txt:55,搜「词元化,即将句子拆分为单个词或子词」)与第 63 段(text/03-fm.txt:63,搜「字面意义上创建了一个词袋」)。书说词袋最早在 20 世纪 50 年代被提及,但直到 21 世纪初才流行起来(第 53 段,text/03-fm.txt:53,搜「20世纪50年代」)。 2

  5. 出处:「大语言模型简介」第 71 段(text/03-fm.txt:71,搜「忽略了文本的语义性质」)与第 67 段(text/03-fm.txt:67,搜「绝非完全过时」)。 2

  6. 出处:「大语言模型简介」第 73 段(text/03-fm.txt:73,搜「2013年发布的word2vec」)与第 79 段(text/03-fm.txt:79,搜「是否可能是句子中的邻居」)。书还说明训练时每个词先分配约 50 个随机初始化的值。 2

  7. 出处:「大语言模型简介」第 75 段(text/03-fm.txt:75,搜「这些权重通常被称为模型的参数」)。

  8. 出处:「大语言模型简介」第 89 段(text/03-fm.txt:89,搜「维度代表概念」)与第 91 段(text/03-fm.txt:91,搜「这些属性通常相当晦涩」)。图 1-8 的图注原话是:「我们可能过度简化地想象维度代表概念(实际上并非如此),但这有助于表达这一思想。」 2

  9. 出处:「大语言模型简介」第 99 段(text/03-fm.txt:99,搜「词嵌入和句子嵌入」)与第 101 段(text/03-fm.txt:101,搜「词袋在文档级别创建嵌入」)。

  10. 出处:「大语言模型简介」第 109 段(text/03-fm.txt:109,搜「静态的、可下载的单词表示」)。

  11. 出处:「大语言模型简介」第 111 段(text/03-fm.txt:111,搜「循环神经网络(RNN)」)。

  12. 出处:「大语言模型简介」第 125 段(text/03-fm.txt:125,搜「2014年,一种称为注意力机制的解决方案」)与第 127 段(text/03-fm.txt:127,搜「是荷兰语中llamas的意思」)。书说这个上下文嵌入「仅仅是一个表示整个输入的单一嵌入」,所以长句难处理。 2 3

  13. 出处:「大语言模型简介」第 131 段(text/03-fm.txt:131,搜「所有输入词的隐状态」)。

  14. 出处:「大语言模型简介」第 135 段(text/03-fm.txt:135,搜「这种序列性质阻碍了模型训练期间的并行化」)。

  15. 出处:「大语言模型简介」第 139 段(text/03-fm.txt:139,搜「Transformer可以并行训练」)。原文:作者提出了一种称为 Transformer 的网络架构,「它完全基于注意力机制,并去除了我们之前看到的循环网络」。 2

  16. 出处:「大语言模型简介」第 145 段(text/03-fm.txt:145,搜「自注意力和前馈神经网络」)与第 149 段(text/03-fm.txt:149,搜「自注意力可以关注单个序列内的不同位置」)。 2

  17. 出处:「大语言模型简介」第 153 段(text/03-fm.txt:153,搜「解码器有一个额外的层」)与第 157 段(text/03-fm.txt:157,搜「掩蔽未来的位置」)。 2

  18. 出处:「大语言模型简介」第 167 段(text/03-fm.txt:167,搜「不易用于其他任务」)与第 169 段(text/03-fm.txt:169,搜「来自Transformer的双向编码器表示」)。 2

  19. 出处:「大语言模型简介」第 179 段(text/03-fm.txt:179,搜「迁移学习」)。

  20. 出处:「大语言模型简介」第 173 段(text/03-fm.txt:173,搜「[CLS]或分类词元」)。

  21. 出处:「大语言模型简介」第 175 段(text/03-fm.txt:175,搜「掩码语言建模」)。原文:「这个预测任务很困难,但允许BERT创建更准确的输入(中间)表示。」

  22. 出处:「大语言模型简介」第 183 段(text/03-fm.txt:183,搜「特征提取机器」)。

  23. 出处:「大语言模型简介」第 183 段(text/03-fm.txt:183,搜「计算量较小」)。

  24. 出处:「大语言模型简介」第 193 段(text/03-fm.txt:193,搜「仅解码器架构」)与第 195 段(text/03-fm.txt:195,搜「1.17亿个参数」)。 2

  25. 出处:「大语言模型简介」第 197 段(text/03-fm.txt:197,搜「GPT-2有15亿个参数」)。原文里带前提的那句是:「如果其他条件不变,我们预计更多的参数将极大地影响语言模型的能力和性能。」 2 3 4

  26. 出处:「大语言模型简介」第 187 段(text/03-fm.txt:187,搜「我们将仅编码器模型称为表示模型」)与第 189 段(text/03-fm.txt:189,搜「青色」)。书连插图配色都固定了:表示模型青色配向量图标,生成模型粉色配聊天图标。 2 3

  27. 出处:「大语言模型简介」第 207 段(text/03-fm.txt:207,搜「补全模型」)。

  28. 出处:「大语言模型简介」第 205 段(text/03-fm.txt:205,搜「指令模型或聊天模型」)。

  29. 出处:「大语言模型简介」第 211 段(text/03-fm.txt:211,搜「上下文长度或上下文窗口」)。原文的提醒:「由于这些模型的自回归性质,随着生成新的词元,当前的上下文长度会增加。」 2

  30. 出处:「大语言模型简介」第 117 段(text/03-fm.txt:117,搜「自回归的」)与第 113 段(text/03-fm.txt:113,搜「编码或表示输入句子」)。

  31. 出处:「大语言模型简介」第 245 段(text/03-fm.txt:245,搜「一步式过程」)。

  32. 出处:「大语言模型简介」第 251 段(text/03-fm.txt:251,搜「预训练,占据了绝大部分」)。原文还说,基座模型「通常不遵循指令」——这正是第 09 章要解决的问题。

  33. 出处:「大语言模型简介」第 251 段(text/03-fm.txt:251,搜「Llama 2 已经在包含2万亿词元」)与第 275 段(text/03-fm.txt:275,搜「5,000,000」)。500 万美元这个数是书按 331 万 GPU 小时、每小时 1.5 美元推算的,书自己标了这是「假设」。

  34. 出处:「大语言模型简介」第 287 段(text/03-fm.txt:287,搜「闭源大语言模型是其权重和架构不向公众共享」)、第 293 段(text/03-fm.txt:293,搜「不需要强大的GPU」)与第 295 段(text/03-fm.txt:295,搜「您的数据会与提供商共享」)。 2 3 4 5

  35. 出处:「大语言模型简介」第 305 段(text/03-fm.txt:305,搜「您可以下载这些模型」)与第 309 段(text/03-fm.txt:309,搜「完全的控制权」)。 2

  36. 出处:「大语言模型简介」第 313 段(text/03-fm.txt:313,搜「我们通常更倾向于尽可能使用开源模型」)。

  37. 出处:「大语言模型简介」第 303 段(text/03-fm.txt:303,搜「持续的讨论」)。这段在原书里是一条「注」,不是正文,但它比正文更准确。

  38. 出处:「大语言模型简介」第 275 段(text/03-fm.txt:275,搜「GPU贫困者」)、第 279 段(text/03-fm.txt:279,搜「本书是为GPU贫困者而写的」)与第 277 段(text/03-fm.txt:277,搜「没有单一规则」)。 2 3

  39. 出处:「大语言模型简介」第 337 段(text/03-fm.txt:337,搜「MIT」)。补充(不在书里):Phi-3-mini 的技术报告是《Phi-3 Technical Report: A Highly Capable Language Model Locally on Your Phone》(微软,2024-04-22),摘要给的数字是 38 亿参数、3.3 万亿训练词元、MMLU 69%、MT-bench 8.38。来源:https://arxiv.org/abs/2404.14219(查阅于 2026-08-25)

  40. 出处:「大语言模型简介」第 267 段(text/03-fm.txt:267,搜「偏见与公平」)与同段(text/03-fm.txt:267,搜「欧洲人工智能法案」)。五条依次是:偏见与公平、透明度与问责制、生成有害内容、知识产权、监管。 2

  41. 补充(不在书里):这四篇论文书里只给了尾注编号,没有讲。我们逐一打开原文页面核对了标题、作者、日期与摘要数字。来源:《Efficient Estimation of Word Representations in Vector Space》(Mikolov、Chen、Corrado、Dean,2013-01-16)https://arxiv.org/abs/1301.3781;《Attention Is All You Need》(Vaswani 等八人,2017-06-12)https://arxiv.org/abs/1706.03762;《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》(Devlin、Chang、Lee、Toutanova,2018-10-11)https://arxiv.org/abs/1810.04805;《Language Models are Few-Shot Learners》(Brown 等,2020-05-28)https://arxiv.org/abs/2005.14165(均查阅于 2026-08-25) 2 3 4

  42. 出处:「大语言模型简介」第 223 段(text/03-fm.txt:223,搜「Mamba」)。