跳到主要内容

你要改的那些数长什么样 — 一句话进去之后发生了什么

这一章讲三件事: 模型内部那一大堆可调的数到底是什么、当初怎么被调出来的; 一句话喂进去之后,从切块到吐出第一个词,中间经过了哪几步; 以及模型的「层」为什么是分工的——这最后一条直接决定后面「只训哪几层」的策略。

它在全书链条里的位置: 这是一章补课。原书明说它假定读者已经懂这些, 一句都不解释1;而我们的读者不懂,所以这一章由我们来补。 只补后面十八章真正会用到的那几件,不多讲。

如果你已经清楚模型内部长什么样,可以跳过这一章。

1. 为什么必须有这一章

第 01 章说过一句话:微调就是改动模型内部那些数。

但「那些数」是什么、它们分布在哪儿、改哪一批和改另一批有什么区别—— 第 01 章一个字都没解释。而后面十八章几乎每一页都在用这些东西。

举三个后面躲不掉的例子:

后面会出现的说法不懂这一章,你会卡在哪儿
「只训最后四分之一的层就能拿到九成效果」(第 04 章)「层」是什么?为什么后面的层和前面的层不一样?
「它给正确那个词只打了 0.1」(第 05 章)「打分」是怎么回事?它不是直接输出一句话吗?
「专业术语被切得稀碎」(第 14 章)「切」是什么意思?它不是一个字一个字读的吗?

这一章就是把这三个问号提前拆掉。

2. 顶层全景:一句话进去,到第一个词出来

这一章的主走查从这里开始,一路走到最后一节。

那封拒付信要写的第一句是:「您申请的腰椎 MRI 未获批准」。 我们跟着模型走一遍,看它是怎么把「未获」这两个字算出来的。

输入的那段文字
「保单 P-4471,腰椎 MRI,拒付代码 CT-06。请写一封说明信。您申请的腰椎 MRI」

① 切成小块 ──────► [保单][ P][-][44][71][,][腰][椎][ MRI][,][拒][付]…
│ (共 38 块。这个数是为演示编的)
② 每块换成一串数 ─► [保单] → (0.21, −1.04, 0.88, … 共 4096 个数)

③ 一层层往上算 ───► 每一层里,每个位置都去看别的位置,按相关程度取信息
│ (共 80 层。这是 700 亿参数模型的典型层数)
│ 早期层:管眼前这几个字的搭配
│ 中间层:管这句话在说什么事
│ 后期层:管「下一个词该是什么」

④ 最后一层吐出 ──► 一张覆盖全部 12.8 万个候选块的概率表:
│ 「未获」0.31 ·「不予」0.22 ·「已」0.04 ·「被」0.03 · …
⑤ 按一条规则挑 ──► 挑中「未获」,接到文字末尾

└───────────► 回到 ①,整段重来一遍,算下一个词

图说:**每吐一个词就把 ①–⑤ 完整跑一遍。** 这就是它慢、它贵的全部原因。
概率表里的四个数是为演示编的;12.8 万这个词表规模是一类常见模型的真实量级。

这一节剩下的六个小节,就是把 ①–⑤ 这五步各自拆开讲。

3. 参数:模型里唯一的「内容物」

它是什么

打开一个下载下来的模型文件,里面没有一句英文、没有一条规则、没有一个事实的文字形式。 里面只有一大堆数。

这些数就是参数(第 01 章已经给它命过名了)。一个 700 亿参数的模型, 里面就是 700 亿个这样的数。

这个数要有参照物:

  • 一本 40 万字的长篇小说,大约 40 万个汉字; 700 亿个数,相当于 17 万本长篇小说的字数;
  • 而模型文件之所以是 140GB,正是因为每个数都要占 2 个字节(第 01 章算过这笔账)。

关键的一条性质:每吐一个词,这些数全部参与一遍

这不是修辞。 上面全景图里的第 ③ 步,是让那 38 块数据穿过 80 层; 每一层里的每一次乘法,用的都是这 700 亿个数里的一部分,加起来正好是全部

由此推出两件后面反复要用的事:

  1. 它慢、它贵的原因——生成一句 50 个词的话,这 700 亿个数就要被完整用 50 遍;
  2. 「微调」到底在改什么——就是在改这 700 亿个数中的一部分。 改得多、改得狠,能力变化就大,同时把原来会的东西弄坏的风险也大(第 04 章)。

4. 这些数当初是怎么被调出来的

这一节回答上一节欠下的问题:700 亿个数,总不能是人一个个填的吧?

不是。做法朴素得出奇2:

拿一段真实的文字,比如「腰椎 MRI 未获批准」

① 把「未获」盖住,让模型猜:这里该是什么?

② 它给出一张概率表。假设它给「未获」只打了 0.02

③ 算一个数,表示「它离对的差多远」——这个数叫**损失**
│ 差得越远,损失越大。这里 0.02 很低,所以损失很大

④ 反过来问:这 700 亿个数里,每一个各自该往哪边挪一丁点,
│ 才能让下次这个损失小一点?然后各挪一丁点

└──► 换下一段文字,回到 ①。重复几万亿次。

图说:整个过程里**没有一条规则是人写的**。
语法、常识、写公文的口吻,全是「让损失小一点」这件事的副产品。
(0.02 这个数是为演示编的。)

第 ④ 步那个「各挪一丁点」的过程,名字叫梯度下降。 「梯度」在这里的意思很朴素:朝哪个方向挪,损失降得最快。 整件事就是顺着这个方向一小步一小步往下走。

而「一小步」有多小,是个旋钮,它的名字叫学习率。 你在任何一份训练配置文件里都会看到 learning_rate 这一行, 而第 04、05 章会告诉你,这一行填错就是微调最常见的翻车原因。3

一个很重要的顺带结论: 上面这套流程,微调用的是同一套,一个字都没改。 唯一的区别是喂进去的文字换成了你的数据、挪的幅度变小了。 第 05 章开头会把这句话再说一遍,因为很多人以为微调是另一种技术。

5. 第 ① 步:它读的不是字,是「块」

现象先行:为什么它数不清 strawberry 里有几个 r

模型看到的不是一个个字母,也不是一个个词。

它先把文字切成一些统计上常见的小块。 这些块的正式名字叫 token (中文文档里也写作「词元」或「标记」,是同一件事)。这个名字必须留住—— 你出门看任何一份接口文档、任何一张报价单,计费单位写的都是 token。

切法不是按语法切的,是按「这一串字符在海量文本里一起出现得够不够频繁」切的。 作者对这件事的定性很坦白:语言学上有意义的边界不保证会落在切口上, 但它们相当频繁地碰巧落在那里——这是些「幸运的意外」4

为什么不按词切、也不按字母切

作者把两头的死路都写清楚了5:

走极端会死在哪
每个词一个编号词表大到没法管;而且丢掉了词与词之间的联系(un- 前缀表示否定这种规律全丢了)
每个字母一个编号表小了,但一个词要占好多步,模型很难学到词一级的意思

所以现在的做法是折中:常见的整词留成一块,不常见的拆成几块。

主走查:这句话被切成了什么

拿我们那段输入走一遍(切法与块数是为演示编的,但切碎的方向是真的):

「腰椎 MRI 未获批准」

[腰][椎][ MRI][ 未][获][批准] ← 6 块

「electroencephalography」(脑电图)

[elect][ro][ence][ph][al][ography] ← 6 块,**这一组是书里给的真实切法**

第二行是这一节的要害。 一个神经科医生脑子里的「脑电图」是一个概念; 懂希腊词根的人会拆成 electro-en-cephalo-graphy 四块有意义的; 而模型拿到的是六块毫无意义的碎片6

作者点破了原因:切法是从通用语料里统计出来的, 词表预算全花在通用文本里常见的模式上; 专业术语在通用文本里罕见,拿不到自己的块,只能拿通用碎片拼7

这条伏笔第 14 章还: 领域术语被切碎,正是领域适配要处理的第一个具体麻烦, 那里会讲「扩词表」这条路能干什么、代价是什么。

6. 第 ② 步:每一块换成一串数

块本身还是文字,模型算不了。所以每一块要先换成一串数。

这一步没什么玄机:模型内部存着一张大表, 一块 token 对一行数——比如 4096 个数排成一行。查表取出来就行。

这串数的正式名字叫嵌入。 它就是这块 token 进入模型时的初始形态, 你在模型配置里看到的 hidden_size: 4096 说的就是这一串有多长。

那为什么是 4096 个数,不是 1 个?因为一个数只能表达「多」和「少」这一条线, 而一个词的意思有很多个面——这 4096 个数各自负责一个说不清是什么的面8

走查里的样子(这些数是为演示编的):

[腰] → (0.21, −1.04, 0.88, …) 共 4096 个数
[椎] → (0.19, −0.97, 0.91, …) ← 和「腰」这一行很像,因为它们常一起出现
[ MRI] → (−1.33, 0.42, −0.05, …) ← 和上面两行差得远

注意这里还没有任何上下文。 此刻的「[未]」和一句话里任何别处的「[未]」 拿到的是完全相同的一串数。让它们变得不同,是下一节的事。

7. 第 ③ 步:每个位置去看别的位置

这是整台机器的核心零件,也是这一章唯一一个必须讲透的机制

它解决什么问题

上一节结束时,每一块都只带着自己那份孤立的意思。 但「未获」这个词该不该出现,取决于前面那句「拒付代码 CT-06」。 所以必须有一步,让每个位置把别处的信息掺进自己这份里。

在 2017 年之前,主流做法是从左到右一个个过,把信息一路往后传。 作者写了它的两个毛病9:

  1. 传不远。 早期位置的信息要活过很多步才影响得了后面的预测;
  2. 不能并行。 每一步都要等上一步算完,训练慢得让为并行设计的硬件白白空着

怎么做的:打分、归一、按分数掺

2017 年那篇论文换了个做法:不再一步步传,而是让每个位置一次性看向所有位置10

具体三步,拿我们的走查算一遍 (下面的分数是为演示编的,真实模型里这些数不可读):

正在处理的位置:[未] ——它要决定自己这份意思该掺谁的

第一步:给前面每个位置打一个「跟我多有关系」的分
[拒] 8.2 [付] 7.9 [代码] 6.1 [CT] 5.8 [-06] 5.5
[腰] 1.2 [椎] 1.1 [ MRI] 2.4 [保单] 0.4 [P] 0.1

第二步:把这些分压成加起来正好等于 1 的一组比例
[拒] 0.31 [付] 0.24 [代码] 0.11 [CT] 0.09 [-06] 0.08
[腰] 0.01 [椎] 0.01 [ MRI] 0.02 [保单] 0.00 [P] 0.00

第三步:按这个比例,把各个位置那串数掺进 [未] 这一串里
→ [未] 这一串数里,现在有三成来自「拒」、两成多来自「付」

图说:掺完之后,「[未]」这一串数就不再是那个孤立的「未」了,
它已经**知道自己身处一封拒付信里**。所以下一步它接「获」的可能性会很高。

这套动作的名字叫注意力。 它内部把每个位置拆成三个角色: 一个负责问「我在找什么」、一个负责答「我这儿有什么」、 一个负责交出「那把我这份信息拿去」——作者把它形容成一张软的查找表11

为什么这么做有效: 因为「哪些位置该被看重」不再是人定的规则, 而是模型自己从数据里学出来的;而且所有位置的分可以一次性算完, 硬件能并行,训练才跑得动。这两条正好治的是上面那两个毛病。

一个位置不止看一遍

模型不会只算一组分,而是同时算好几组,每一组盯着一种不同的关系—— 有的盯语法搭配,有的盯语义关联,有的盯位置远近; 算完拼在一起12。这件事叫多头,num_attention_heads 这一行配置说的就是它的组数。

8. 第 ④⑤ 步:输出是一张概率表,不是一句话

这是最容易被误解的一步,也是后面四章的落点。

模型最后一层吐出来的不是一个词,是一张覆盖整个词表的概率表。 词表有多大,这张表就有多少行——常见的量级是十几万行

走查里那一刻的表(这四个数是为演示编的):

当前文字:「……您申请的腰椎 MRI」
┌──────────┬────────┐
│ 候选 │ 概率 │
├──────────┼────────┤
│ 未获 │ 0.31 │
│ 不予 │ 0.22 │
│ 已 │ 0.04 │
│ 被 │ 0.03 │
│ …(还有 12.8 万行,绝大多数接近 0) │
└──────────┴────────┘

然后要从这张表里挑一个。挑法有两种:

挑法做什么后果
永远挑最高的每次都选「未获」同一个输入永远同一个答案;但整段文字容易发僵、发绕
按概率抽签三成一的机会抽到「未获」,两成二抽到「不予」每次答案不完全一样;文字更自然

抽签的松紧,由一个旋钮控制,它的名字叫 temperature。 调低它,高概率的更容易被抽中,输出趋于稳定;调高它,冷门候选也有机会,输出更花13

这一节还了三笔账,后面各章直接取用:

  1. 第 03 章那句「同一句话问两遍答案不一样」的机制,就在这里—— 不是模型不稳定,是抽签这一步本来就带随机;
  2. 第 05 章说的「损失」,量的就是「正确那个词在这张表上拿到了多少概率」;
  3. 第 08、09 章反复出现的「概率比」,比的就是同一个词在两张这样的表上的两个数。

9. 层是分工的——这一条直接决定第 04 章的策略

前面全景图里说「一层层往上算」,好像每层在干同一件事。不是。

有一类研究专门查这件事:拿一个小小的探针模型,去某一层的中间结果里 试着读出特定的语言学特征,看读不读得出来。结果相当一致14:

在管什么一句话说明
早期层眼前这几个字的搭配词性、短语结构、就近的歧义;表示还紧贴着字面本身
中间层这句话在说什么事概念、实体、关系;语法属性的峰值出现在这里
后期层下一个词该是什么把中层的抽象表示,变成词表上那张概率表

然后是这一章最重要的一句话:

微调一个模型时,变化最大的是后期层。 中层和早期层在很大程度上保住了预训练时的结构15

为什么这句话值一整节: 因为它把第 04 章那个策略变成了显然的—— 既然任务适配主要发生在后期层,那冻住前面、只训后面就该既省钱又不伤能力。 作者写道,基于这条结构关系的做法叫逐层递减学习率: 给早期层小一点的学习率,让后期层快速适应、早期层慢慢变、保住通用能力; 做到极端就是干脆冻住早期层、只训后面16

这一步的走查: 那句「您申请的腰椎 MRI 未获批准」——

第 1–20 层:认出「腰椎」和「MRI」是一个名词短语,「未」后面大概率接动词
第 21–60 层:认出这整段在说「一项影像检查被拒了」,并把 CT-06 与它挂上钩
第 61–80 层:把这个理解压成词表上那张概率表,「未获」拿到 0.31

→ 你要教它「本公司的拒付信该用什么口吻」,改的主要是最后这一段。
(层的区间划分是为演示编的;「后期层变化最大」是书里的结论。)

10. 最后两件:信息是叠加的,事实存在哪儿

这一节的两件事,在后面第 12 章和第 14 章各用到一次,这里先埋下。

每一层是往上加,不是覆盖

有一个很好用的看法:任意一层的中间状态,等于此前所有层贡献之和17。 层与层之间有直通的旁路,信息一路加上去,没有哪一层会抹掉前面的东西

两个推论,作者都写明了:

  1. 只微调一层,会改变之后所有层拿到的东西——影响不是局部的;
  2. 预训练学到的表示是被补充,不是被摧毁的——这解释了微调为什么大多数时候不会把模型毁掉。

事实大致存在「前馈层」里

每一层里除了上面讲的注意力,还有另一块,叫前馈层。 近年的研究认为它的作用像一张键值表: 第一步拿输入去和一堆学出来的「键」比相似度,命中哪些由一个非线性挑一挑, 第二步把对应的「值」取出来18

作者由此给出一句很硬的话:

改前馈层的参数时,你是在字面意义上编辑模型存下来的知识。 那个存着「巴黎是法国的首都」的前馈层,可以被改成再存别的事实19

注意力那一块管的是信息怎么在位置之间流动,两者分工不同。

这条分工有直接的实用后果: 后面第 12 章那条「只挂一小块旁路」的技法, 挂的位置正是注意力和前馈层的投影——现在你知道那不是随便挑的。

顺带提一句研究前沿:已经有做法能定位到底是哪几个前馈神经元存着某一条事实, 然后直接改它(两个方法叫 ROME 和 MEMIT)。 但作者说得很明白:这些仍是研究工具,不是能上生产的方法20

11. 作者的判断与证据:这一章哪些是书里的,哪些是我们补的

这一章是全书唯一一章大部分内容不来自这本书的,所以来源必须逐条摊开。

说法谁说的说明
层的分工(早/中/后)、后期层变化最大书里,有证据引的是那类「拿小探针去各层里读特征」的研究,书给了两条尾注14
注意力的三个角色像一张软查找表书里作者自己的比方,后面接了确切的公式11
切词是「幸运的意外」、专业术语被切碎书里脑电图切成六块是书里给的实例46
信息是叠加的、前馈层像键值表书里,标注为「近期研究认为」作者用的措辞是「recent research suggests」,并说这个解释「有数学依据」——不是定论18
定点改事实的那两个方法能用了吗书里明说不能原话是仍属研究工具,不是生产级方法20
参数、损失、梯度下降、学习率是什么我们补的书假定读者已懂1;我们从自己书架上取23
嵌入是什么、为什么是一串数不是一个数我们补的同上8
输出是概率表、temperature 怎么起作用我们补的书里在别处用到这些概念,但没有从头解释13

12. 边界与局限

  1. 这一章刻意只讲了「后面会用到的」。 位置信息怎么编码、 归一化那一层在干什么、为什么注意力公式里要除以一个数——全部略过。 略过的理由是:后面十八章一次都用不到它们。
  2. 走查里的数几乎全是编的。 真实模型里这些中间数值人是读不懂的—— 不是保密,是它们本来就没有可读的含义。编数字是为了让步骤能被指认, 不要指望在真实模型里看到这些值
  3. 「层的分工」是统计倾向,不是硬分界。 书里给的是探针实验的一致模式, 不是说第 20 层和第 21 层之间有一条线
  4. 前馈层存事实这个说法还在演进。 作者自己标的是「近期研究认为」。 如果这个解释被推翻,第 12 章那条「挂在哪儿」的经验做法不会失效 (它是实测出来的),但解释会需要重写
  5. 书里为什么不讲这些,它自己说了理由: 它的读者被设定成 「已经拿到一个模型、被要求把它变得有用」的工程师1我们的读者不是,所以这一章是我们加的,不是书的一部分。

13. 可带走的

  1. 模型文件里只有数,没有规则、没有文字形式的事实。 这些数叫参数;
  2. 每吐一个词,全部参数都要参与一遍计算 —— 这是它慢、它贵的全部原因;
  3. 这些数是「猜 → 看差多远 → 各挪一丁点」重复几万亿次调出来的, 没有一条规则是人写的;微调用的是同一套流程,只是数据换了、步子变小了;
  4. 它读的不是字,是统计上常见的小块(token) —— 计费单位、上下文长度,量的都是它;
  5. 专业术语在通用切法下会被切得稀碎(脑电图切成六块), 这是领域适配要处理的第一个具体麻烦(第 14 章);
  6. 注意力做的事是:打分 → 压成比例 → 按比例把别人的信息掺进自己这份; 它替换掉了「一步步往后传」,同时治好了传不远和不能并行两个毛病;
  7. 模型输出的是一张覆盖整个词表的概率表,不是一句话; 从表里挑一个的松紧由 temperature 控制 —— 这就是「同一句问两遍答案不同」的来源;
  8. 层是分工的:早期管字面搭配、中间管意思、后期管下一个词 —— 微调时后期层变化最大,所以「冻住前面只训后面」既省又稳(第 04 章);
  9. 层与层是叠加的,不是覆盖 —— 预训练学到的东西是被补充,不是被摧毁;
  10. 事实大致存在前馈层里,注意力管信息怎么流动 —— 这解释了第 12 章那条旁路为什么正好挂在这两处。

14. 原文地图

主题原书章原文位置
书假定读者已懂神经网络基础INTRODUCTIONtext/08-fm-introduction.txt:13(搜「backpropagation」)
一步步往后传的两个毛病A Practitioner's Guide to Transformer Anatomytext/17-fm-a-practitioner-s-guide-to-transformer-anatomy.txt:15(搜「two problems」) · :17(搜「prevented parallelization」)
2017 年那篇论文换了什么A Practitioner's Guide to Transformer Anatomytext/17-fm-a-practitioner-s-guide-to-transformer-anatomy.txt:19(搜「Attention Is All You Need」) · :25(搜「decoder-only」)
注意力的三个角色、软查找表A Practitioner's Guide to Transformer Anatomytext/17-fm-a-practitioner-s-guide-to-transformer-anatomy.txt:51(搜「soft lookup table」)
多头各盯一种关系WHY THE SCALING FACTOR?text/18-fm-why-the-scaling-factor.txt:5(搜「multiple heads」)
层的分工三档WHY THE SCALING FACTOR?text/18-fm-why-the-scaling-factor.txt:13(搜「probing classifiers」) · :17(搜「Early layers」的下一段起) · :21(搜「syntactic properties peak」) · :25(搜「these later layers typically change the most」)
逐层递减学习率、冻早期层WHY THE SCALING FACTOR?text/18-fm-why-the-scaling-factor.txt:29(搜「Layer-wise learning-rate decay」) · :31(搜「capital of France」)
信息是叠加的WHY THE SCALING FACTOR?text/18-fm-why-the-scaling-factor.txt:33(搜「residual stream」)
前馈层像键值表、编辑存下来的知识WHY THE SCALING FACTOR?text/18-fm-why-the-scaling-factor.txt:45(搜「key-value memories」) · :47(搜「literally editing」) · :49(搜「remain research tools」)
为什么不按词切也不按字母切Tokenization and Its Consequencestext/19-fm-tokenization-and-its-consequences.txt:13(搜「unmanageably large」) · :15(搜「happy accidents」)
专业术语拿不到自己的块CAN YOU CHANGE THE TOKENIZER?text/20-fm-can-you-change-the-tokenizer.txt:25(搜「vocabulary budgets」) · :27(搜「electroencephalography」)

Footnotes

  1. 出处:「INTRODUCTION」第 13 段(text/08-fm-introduction.txt:13,搜「backpropagation」)。书里明确写着它假定读者熟悉 Transformer 架构、反向传播与梯度下降,而后训练本身的概念则从零建起。这就是这一章存在的全部理由。 2 3

  2. 补充(不在书里,依据我们的 book 书架):这套「看差多远 → 各挪一丁点」的流程,书里一个字没解释。 依据: shelf=ai-book-reference/little-book-of-deep-learning#04-gradient-descent-backprop.md 事实=那一章讲的是「在参数空间里沿着『损失降得最快』的方向一小步一小步下山,步长(学习率)太大太小都不行」。 2

  3. 补充(不在书里,依据我们的 book 书架):学习率这个旋钮在这本书里从第 04 章起被反复使用,但从没被定义过。 依据: shelf=ai-book-reference/little-book-of-deep-learning#04-gradient-descent-backprop.md 事实=同一章把学习率定义为下山的步长,并说明「因为数据有冗余,每次只用一小批样本估方向反而更快」——后面第 05 章讲的「批大小」正是这件事。 2

  4. 出处:「Tokenization and Its Consequences」第 15 段(text/19-fm-tokenization-and-its-consequences.txt:15,搜「happy accidents」)。原文说切词是「统计手段做出的折中」,语言学上有意义的边界不保证会落在切口上,但相当频繁地会碰巧落在那里。前一段(第 11 段,:11,搜「presuppose an understanding」)解释了为什么放弃语言学的分层做法:那些做法预设了我们正想要理解的那件事 2

  5. 出处:「Tokenization and Its Consequences」第 13 段(text/19-fm-tokenization-and-its-consequences.txt:13,搜「unmanageably large」)。原文两头的论证:每个词都当作不同的,词表会大到没法管、而且会丢掉有价值的信息(英语里 un- 或 in- 前缀通常表示否定,差这个前缀的两个词多半有否定关系);但也不能完全依赖这种规律。切词的这套算法(BPE)本身来自 1994 年一篇数据压缩的论文,2016 年才被搬进机器翻译(第 19 段,:19,搜「Philip Gage」)。

  6. 出处:「CAN YOU CHANGE THE TOKENIZER?」第 27 段(text/20-fm-can-you-change-the-tokenizer.txt:27,搜「electroencephalography」)。原文给的六块是 elect / ro / ence / ph / al / ography;并对比说学过希腊语的人会拆成 electro / en / cephalo / graphy,而神经科医生「只会把它记成一个概念」。 2

  7. 出处:「CAN YOU CHANGE THE TOKENIZER?」第 25 段(text/20-fm-can-you-change-the-tokenizer.txt:25,搜「vocabulary budgets」)。作者把这称为预训练固有的一种妥协:模型首先必须获得广泛的通用能力。他还写明(第 29 段,:29,搜「computationally extremely demanding」)换掉切法在算力上代价极大,而只是扩充词表通常收效有限——所以实践中另有别的路子,第 14 章讲。

  8. 补充(不在书里,依据我们的 book 书架):「一块 token 换成一串数」这件事,本书只在讲多模态时顺带提过,从没正面解释。 依据: shelf=ai-book-reference/build-large-language-model#02-text-to-numbers.md 事实=那一章讲的正是「把文字切成一个个词元(token)」再查嵌入矩阵取出对应的一行,并说明位置信息是另外加上去的。 2

  9. 出处:「A Practitioner's Guide to Transformer Anatomy」第 15 段(text/17-fm-a-practitioner-s-guide-to-transformer-anatomy.txt:15,搜「two problems」)与第 17 段(text/17-fm-a-practitioner-s-guide-to-transformer-anatomy.txt:17,搜「prevented parallelization」)。原文说得很具体:早期位置的信息必须活过很多处理步骤才能影响后面的预测,而训练时梯度也要往回穿过同样多的步骤;而顺序性使得「即使在为并行计算设计的硬件上,训练也很慢」。

  10. 出处:「A Practitioner's Guide to Transformer Anatomy」第 19 段(text/17-fm-a-practitioner-s-guide-to-transformer-anatomy.txt:19,搜「Attention Is All You Need」)。作者顺带评了一句:这篇论文当时主要针对机器翻译,「可以说是科学史上那类远远超出发明者所预见的狭窄影响的伟大发明之一」。第 25 段(:25,搜「decoder-only」)说明现代大模型收敛到了「只留解码器、训练目标是预测下一个 token」的构型。

  11. 出处:「A Practitioner's Guide to Transformer Anatomy」第 51 段(text/17-fm-a-practitioner-s-guide-to-transformer-anatomy.txt:51,搜「soft lookup table」)。原文把三个角色写成三句问答:查询问「我在找什么」、键说「我这儿有什么」、值说「这是可以取走的信息」。书里还给了确切的公式(第 53–57 段),我们这一章不用,第 08 章会在讲另一件事时回来用它的一部分。 2

  12. 出处:「WHY THE SCALING FACTOR?」第 5 段(text/18-fm-why-the-scaling-factor.txt:5,搜「multiple heads」)。原文举的三种关系是句法依存、语义关系、位置模式。

  13. 补充(不在书里,依据我们的 book 书架):这本书从第 05 章起反复使用「概率」「采样」这些说法,但没有从头解释输出是一张概率表。 依据: shelf=ai-book-reference/build-large-language-model#07-decoding-and-weights.md 事实=那一章讲的正是「温度管分布的锐度、top-k 砍掉长尾防胡说」这一对挑选规则。另一个同样常用的旋钮叫 top-p:不设松紧,而是把候选按可能性排队、凑够某个比例就不再往下看。 2

  14. 出处:「WHY THE SCALING FACTOR?」第 13 段(text/18-fm-why-the-scaling-factor.txt:13,搜「probing classifiers」)。所谓探针分类器,是一些小的有监督模型,专门训练来从某一层的表示里抽取特定的语言学特征。书里给了两条尾注(编号 43、44)。 2

  15. 出处:「WHY THE SCALING FACTOR?」第 25 段(text/18-fm-why-the-scaling-factor.txt:25,搜「these later layers typically change the most」)。原文:当我们为特定任务微调模型时,这些后期层通常变化最大,把预测机构适配到新目标上,而中层与早期层在很大程度上保住了预训练时的结构。中层的细节在第 21 段(:21,搜「syntactic properties peak」)。

  16. 出处:「WHY THE SCALING FACTOR?」第 29 段(text/18-fm-why-the-scaling-factor.txt:29,搜「Layer-wise learning-rate decay」)与第 31 段(:31,搜「capital of France」)。后一段有一句玩笑话值得记:我们例行去问一个任务专用模型「法国的首都是哪」,不是在向 Hugging Face 致敬,而是在监控灾难性遗忘——遗忘这件事第 04 章整节讲。

  17. 出处:「WHY THE SCALING FACTOR?」第 33 段(text/18-fm-why-the-scaling-factor.txt:33,搜「residual stream」)。这个看法有个名字叫「残差流」,原文的说法是:任一层的隐状态都是此前所有层贡献之和,通过跳跃连接累加而成,没有哪一层会替换掉之前的东西

  18. 出处:「WHY THE SCALING FACTOR?」第 45 段(text/18-fm-why-the-scaling-factor.txt:45,搜「key-value memories」)。注意作者的措辞是「近期研究表明」(recent research suggests),他同时说这个解释「有数学依据」——但这是一个解释,不是一条定理。 2

  19. 出处:「WHY THE SCALING FACTOR?」第 47 段(text/18-fm-why-the-scaling-factor.txt:47,搜「literally editing」)。原文还举了另一个例子:一个学会了用美式格式写日期的前馈层,可以被调成用英式格式。同一段说明了分工——前馈层似乎存着相当一部分事实知识与习得的关联,而注意力处理的是信息路由与关系推理。

  20. 出处:「WHY THE SCALING FACTOR?」第 49 段(text/18-fm-why-the-scaling-factor.txt:49,搜「remain research tools」)。两个方法的全名是 rank-one model editing(ROME)与 mass-editing memory in a transformer(MEMIT),书给了两条尾注(编号 47、48)。 2