跳到主要内容

嵌入 — 让「意义」变成可以计算的东西

这一章讲三件事: 为什么必须有这一步、那串数是怎么被学出来的、 以及由此得到的那个「意义空间」长什么样。 作者自己说,嵌入是这本书的中心思想1;中文版导读序也把这一节评为 「我见过的对这一概念最好的解释」2

1. 先看现象:它似乎「懂」词的意思

这一节回答:为什么必须有这一章。

你大概注意到过这类事:

  • 你说「苹果公司」和说「Apple 公司」,它知道是一回事;
  • 你打错一个字,它照样明白你要什么;
  • 你换个说法重问,它给的答案基本一致。

它看起来「懂意思」。可上一章刚说过,网络里只有数字。

那问题就来了:「猫」这个词,在网络里到底是哪个数字?

2. 最笨的办法为什么不行

最直接的想法是编号: 给字典里五万个常用词各分一个号。 这不是假想 —— GPT-2 里 the 真的就是 914,cat 真的就是 35423

但编号有个致命缺陷:编号是任意的。

914 = the 915 = ? 它们之间有关系吗?没有。
3542 = cat 3543 = ? 它们是近义词吗?不是。

图说:编号只是标签。网络拿到一堆毫无结构的标签,只能死记硬背。

死记硬背意味着:没见过的组合它什么都推不出来 —— 这正是第 01 章说的那条死路。

3. 嵌入是什么

一句话:

不给一个数,给一串数;并且让「意思相近的词」,这串数也相近。4

这串数就叫这个词的嵌入。实际用的很长:GPT-2 是 768 个数,GPT-3 是 12 288 个数。 把它压到平面上画出来,你能亲眼看到植物类的词聚成一堆、动物类的词聚成另一堆。

这串数是从哪来的? 靠一条朴素到近乎废话的观察:

出现环境相似的词,意思就相近。

书里的例子很直白:alligator(短吻鳄)和 crocodile(鳄鱼) 经常出现在几乎可以互换的句子里,所以它们在这个空间里靠得近; 而 turnip(芜菁)和 eagle(鹰)不会出现在相似的句子里,就离得远。

这套嵌入是从互联网上五十亿个词里学出来的——听着多,其实只是 ChatGPT 训练用量的百分之几 (那边是几百亿个词,见第 04 章)5

主走查:三个词,各给三个数

下面这三串数是为演示编的,不是真实数值。 真实的一串有 768 个或 12 288 个, 这里砍到 3 个,只是为了能写在纸上看清楚。

它的那串数
[0.82, 0.11, −0.05]
[0.79, 0.15, −0.02]
桌子[−0.30, 0.64, 0.41]

现在把它们逐位相减,看差多少:

猫 − 狗 = [ 0.03, −0.04, −0.03] 三个位置都差不到 0.05 → 很近
猫 − 桌子 = [ 1.12, −0.53, −0.46] 头一个位置就差了 1.12,是上面那行的三十多倍 → 很远

图说:「差得小」就是「意思近」。这就是「意义变成了距离」这句话的全部内容。

注意这里没有任何一处写着「猫和狗都是动物」。 那句话谁也没告诉它; 它只是让猫和狗那两串数长得像,于是「是不是同类」就变成了「差多少」。

4. 机制:不直接教「相似」,让它在别的事情上被迫决定

这一节是本章的核心,也是最容易读漏的一步。

先想想难在哪

你想让网络知道「哪些词意思相近」。可是 —— 这件事没有标准答案可以拿来训练。 谁来标?标多少?「苹果」和「梨」有多近,近 0.7 还是 0.8?没人说得清。

作者的解法是绕过去。 他先用图像把这个机制讲透,因为图像更容易看清楚。

拿认数字的网络来演示

上一章那个认手写数字的网络,最后输出 10 个值,对应「这是 0 到 9 各自的可能性」6。 最后一道工序叫 softmax,作用是「逼出一个明确的赢家」—— 把一堆数变成一组加起来等于 1 的可能性,并且放大最大的那个。

现在做一件事:在 softmax 之前把网络拦下来,看看那一层的数。

拦在哪拿到什么有什么用
最后一层(softmax 之后)「这是 4」只剩结论,信息全被压平了
softmax 之前代表 4 的那个数最大,但其他数里也有信息这就是一张「签名」:每个 4 的签名都略有不同,和 8 完全不同
再往前一层500 个数更细的签名,更好用7

这些数就可以直接拿来当嵌入。

关键概念:相似度是「顺带」学到的

作者把这一步的思路点得很清楚8:

我们不直接去表示「哪个图像接近哪个图像」, 而是找一个有明确训练数据的任务(这里是认数字), 然后利用一个事实:网络为了完成这个任务,内部不得不做出相当于「哪些东西接近」的判断。

用大白话说:

想要「哪些东西意思相近」 ← 没有标注数据,没法直接训
↓ 换一个问题
「这张图是几?」 ← 有海量标注数据,好训
↓ 训完之后
从网络中间层把数截出来 ← 它为了答对上面那题,
内部不得不把长得像的东西放到一起

图说:用一个能训的任务,换一个不能训的能力。这是全书最漂亮的一招。

换到词上,一模一样

词这边,那个「能训的任务」是填空:

给定 the ___ cat,各个词填进去的可能性分别是多少? 或者给定 ___ black ___,两侧的词分别可能是什么?9

  • 输入:词的编号 —— the ___ cat 就是 914, 3542;
  • 输出:一个约五万个数的列表,给出每个词填进去的可能性;
  • 嵌入:同样在网络「得出结论之前」拦截,把中间那层的数取出来。

接上第 3 节那条走查,把这三步走实(数是编的,只有 914 和 3542 是书里的):

① 输入 `the ___ cat` → 编号 914, 3542
② 输出 五万个数:cat 0.11 / dog 0.09 / black 0.07 / … 剩下的分掉 0.73
③ 嵌入 不要 ② 那五万个数,回退一层,取那 500 个数

图说:第 ③ 步取到的 500 个数,就是第 3 节那种东西——
只不过每个词是 500 个数,不是 3 个。

「猫」和「狗」的那 500 个数逐位相减,差还是很小;「猫」和「桌子」差得很大。 500 个数只是比 3 个数分得更细,别的什么都没变。

过去十年出现的一系列系统 —— word2vec、GloVe、GPT、BERT (这四个名字你以后会反复撞见;此刻只需要知道它们是四种不同的「把词变成数」的做法)—— 用的网络结构各不相同,但最终都是用几百到几千个数来表示一个词10

这些数单看是几乎没有信息的,一堆看不出意思的数字。 它们的意义完全体现在彼此的距离上。

判断(我们的,不是书里的): 这解释了嵌入为什么必然继承语料里的偏见, 而且不是靠清洗数据就能完全解决的:嵌入学的就是「哪些词出现在相似环境里」。 语料里若某个职业词长期和某个性别词一起出现,它们在空间里就是近的 —— 这不是数据标错了,是嵌入的定义本身。 如果错,会错在: 如果通过改造训练目标(而不是清洗数据)能有效解开这类关联, 那问题就不在定义层面,而在方法层面。

5. 从词到整段:ChatGPT 实际在做的

书里紧接着有一句很关键、很多人读漏的话:

比起用一串数表示一个词,还可以做得更好 —— 可以对一段词、甚至整个文本块这样做。 ChatGPT 内部就是这样处理的。

也就是说,ChatGPT 会把「到目前为止的全部文字」变成一个嵌入, 然后据此给出下一个标记的可能性11

于是全书的第一条链条终于接上了:

整段文字 ──嵌入──> 一串数 ──神经网络──> 另一串数 ──> 五万个候选标记的可能性

「意思相近 = 数值相近」这条约定
让上面这条流水线里的每一步计算都变得有意义

图说:这就是为什么说嵌入是全书的枢纽——没有它,后面全部无从谈起。

顺带把「标记」讲完

也是在这一节的最后,作者才正式交代:ChatGPT 处理的不是词,是标记 —— 既可以是整词,也可以是 pre、ing、ized 这样的片段。 好处是更容易处理生僻词、复合词和非英语词,代价是它会发明新单词(不论结果好坏)12

6. 这个「意义空间」长什么样

作者给了几张投影图,可以据此建立空间的直觉:

观察到什么说明
意思相近的词聚在一起常见名词的投影里,同类词明显成团
名词动词也会分区名词、动词、形容词各自聚在不同的地方
一词多义会分开crane 是「鹤」还是「起重机」?看包含它的整个句子落在哪,就能分辨13
有「平坦性的迹象」相似的词对之间似乎存在类似「平移」的关系,但并不普遍

最后一行要注意作者的措辞。

业界流传的「国王 − 男人 + 女人 = 女王」那一套——把这几串数直接做加减法—— 在书里只被描述为**「一些平坦性的迹象」,并且明确说「这并不是普遍存在的」**。 这是一个非常克制的说法 —— 比很多科普材料把它讲成定律要老实得多。

7. 一段文字 = 空间里的一条轨迹

如果一段文字可以表示成一个点,那么续写就是这个点在空间里走出一条轨迹14

作者由此提了一个漂亮的问题。先交代一个词:「语义」就是「意思」—— 所以下面那个自造的名字直译过来,是「意思是怎么动的」那条定律:

是什么让这条轨迹恰好落在「有意义」的区域里?有没有某种「语义运动定律」?

他做了实证尝试:画出一段开头文字的轨迹、画出每一步高可能性词构成的「扇形」、 画出四十步的三维图。结论很诚实:

这看起来很混乱,没有支持存在「类似数学物理」的语义运动定律。 也许我们只是关注了错的变量、错的坐标系;如果换对了,也许会立刻看到它在做 「像数学物理一样简单」的事。但目前,我们还没准备好从它的内部行为里解码出这些规律。15

判断(我们的,不是书里的): 这一节的价值不在结论(它没有结论), 而在它示范了一次失败的实证尝试,并且如实报告。 这本书里有好几处「我们不知道」写得很直白,这是它比多数同题科普可靠的地方。 如果错,会错在: 如果后续的可解释性研究真的找到了可读的坐标系, 那这一节就只是「当时还没找到」,而不是「原理上找不到」。

8. 可带走的

  1. 神经网络只吃数字,所以必须先把词变成数字;编号法不行,因为编号是任意的;
  2. 嵌入 = 用一串数表示本质,让意思相近的词数值也相近 —— 这是全书的枢纽; 走查上就是「猫 [0.82, 0.11, −0.05] 减 狗 [0.79, 0.15, −0.02],三个位置都差不到 0.05」 (这些数是为演示编的);
  3. 嵌入靠「出现环境相似」学出来,这也解释了它为什么必然继承语料里的关联;
  4. 机制是「借道」:用一个能训的任务(认数字、填空),截取中间层 —— 网络为了答对那题,内部不得不做出接近度判断;
  5. ChatGPT 不是给每个词做嵌入,是给整段文字做一个嵌入;
  6. 它处理的是标记不是词,所以它会造词、也能处理生僻词;
  7. 「把这几串数直接做加减法」在书里只是「平坦性的迹象」,而且不普遍 —— 别把它当定律;
  8. 一段文字 = 空间里的一条轨迹,而「什么样的轨迹才有意义」目前没有答案

9. 原文地图

主题原书章原文位置
嵌入的定义与中心地位“嵌入”的概念text/11-fm.txt:19(搜「意义空间」)
出现环境相似“嵌入”的概念text/11-fm.txt:25(搜「alligator」) · text/11-fm.txt:25(搜「turnip」)
词编号的例子“嵌入”的概念text/11-fm.txt:86(搜「914」) · text/11-fm.txt:86(搜「3542」)
拦在 softmax 之前“嵌入”的概念text/11-fm.txt:59(搜「softmax」) · text/11-fm.txt:31(搜「10个不同的箱」)
更细的嵌入“嵌入”的概念text/11-fm.txt:71(搜「500个数」)
借道任务、顺带学到接近度“嵌入”的概念text/11-fm.txt:37(搜「接近度决策」)
填空任务“嵌入”的概念text/11-fm.txt:83(搜「填空」)
各家系统“嵌入”的概念text/11-fm.txt:89(搜「word2vec」)
整段文字也能嵌入“嵌入”的概念text/11-fm.txt:101(搜「整个文本块」)
标记“嵌入”的概念text/11-fm.txt:104(搜「标记」)
意义空间的样子、一词多义意义空间和语义运动定律text/16-fm.txt:34(搜「crane」) · text/16-fm.txt:40(搜「平坦性」)
语义运动定律这个开放问题意义空间和语义运动定律text/16-fm.txt:1(搜「语义运动定律」) · text/16-fm.txt:76(搜「测地线」)

Footnotes

  1. 出处:「嵌入的概念」第 19 段(text/11-fm.txt:19,搜「意义空间」)。原文:「但有一个重要的思想——也是 ChatGPT 的中心思想——更胜一筹。这就是『嵌入』的思想。」

  2. 出处:「导读序」第 332 段(text/01-fm.txt:332,搜「刘江」)。这是中文版导读序作者的评价,不是 Wolfram 本人的说法。

  3. 出处:「嵌入的概念」第 86 段(text/11-fm.txt:86,搜「914」)与第 86 段(text/11-fm.txt:86,搜「3542」)。这两个是 GPT-2 实际使用的编号。

  4. 出处:「嵌入的概念」第 19 段(text/11-fm.txt:19,搜「意义空间」)。原文的定义是「通过数的数组来表示某些东西『本质』的方法,其特性是『相近的事物』由相近的数表示」。

  5. 出处:「嵌入的概念」第 25 段(text/11-fm.txt:25,搜「alligator」)与第 25 段(text/11-fm.txt:25,搜「turnip」)。五十亿词是书里那个演示所用的语料规模,不是 ChatGPT 的训练规模——后者见第 04 章。

  6. 出处:「嵌入的概念」第 31 段(text/11-fm.txt:31,搜「10个不同的箱」)。

  7. 出处:「嵌入的概念」第 59 段(text/11-fm.txt:59,搜「softmax」)与第 71 段(text/11-fm.txt:71,搜「500个数」)。补充(不在书里,来自通用知识):softmax 是把一组任意实数变成一组和为 1 的可能性的标准操作,几乎所有分类网络的最后一步都是它。

  8. 出处:「嵌入的概念」第 37 段(text/11-fm.txt:37,搜「接近度决策」)。

  9. 出处:「嵌入的概念」第 83 段(text/11-fm.txt:83,搜「填空」)。

  10. 出处:「嵌入的概念」第 89 段(text/11-fm.txt:89,搜「word2vec」)。补充(不在书里):书里点名的这几个系统中,word2vec 出自 2013 年的《Efficient Estimation of Word Representations in Vector Space》(Mikolov 等,2013-01-16 提交),它是把「出现环境相似 ⟹ 意思相近」这条观察工程化的代表作。来源:https://arxiv.org/abs/1301.3781(查阅于 2026-08-25)。

  11. 出处:「嵌入的概念」第 101 段(text/11-fm.txt:101,搜「整个文本块」)。

  12. 出处:「嵌入的概念」第 104 段(text/11-fm.txt:104,搜「标记」)。

  13. 出处:「意义空间和语义运动定律」第 34 段(text/16-fm.txt:34,搜「crane」);「平坦性」的说法见同章第 40 段(text/16-fm.txt:40,搜「平坦性」)。

  14. 出处:「意义空间和语义运动定律」第 1 段(text/16-fm.txt:1,搜「语义运动定律」)。

  15. 出处:「意义空间和语义运动定律」第 76 段(text/16-fm.txt:76,搜「测地线」)。补充(不在书里,来自通用知识):测地线是弯曲空间里两点之间「最直」的那条路径——作者拿它当「如果真有运动定律,它可能长这样」的类比。