Day 3 · Embedding:语义地图
AI 怎么知道「猫」和「狗」是亲戚?
昨天我们把文字拆成 token、变成了编号。但编号本身没有意思——421 和 422 只是排队挨着,不代表意思接近。今天讲 AI 的第二步:给每个 token 发一串「坐标」,让意思相近的 token 在地图上挨得近 。更妙的是:这张地图没有人手工画,是训练里自己长出来的。
学完你能回答
token 编号 421 和 422,为什么不代表意思接近?
学完你能回答
「国王 − 男人 + 女人 ≈ 女王」是怎么回事?
1 起点:这些你早就会了
今天只讲一个核心概念:语义地图 。它的每一块砖,你在生活中都见过:
你已经会的 AI 世界里对应的东西
学号:3 号和 4 号只是报到顺序挨着 token 编号 :只是查表用的流水号,相邻不代表意思相近
地图经纬度:北京和天津坐标近,和悉尼远 Embedding(嵌入) :每个 token 领到一串「坐标」,意思近的坐标挨得近
图书馆上架:同类书放同一排 语义地图 :用法相近的 token 在坐标空间里自动聚成一片
输入法联想:打「深度」自动联想「学习」 共现 :语料里谁常和谁做邻居,是画地图的原材料
错题本:做错 → 订正 → 下次更准 反向传播 :猜错就把坐标往回「调整」一点(Day 5 细讲训练)
学过 7 天版 Day 1 的读者可以快翻,但注意:今天会把「地图怎么学成的」这条因果链讲到面试深度。
2 编号没有语义:421 和 422 并不更熟
回顾一下 Day 2 的流水线:文字 → 拆成 token → 查词表变成编号。比如「深度学习」拆成「深度」「学习」两个 token,编号分别是 513、2077(示意)。
现在问一个问题:421 和 422 这两个编号,意思接近吗? 答案是:不知道,而且大概率不接近。编号是词表按收录顺序发的流水号,跟学号一模一样——3 号和 4 号同学只是报到那天排得近,不代表他们兴趣相投。意思几乎一样的两个 token,编号可能差出去几万号;编号紧挨着的两个 token,也可能八竿子打不着。
这就麻烦了:AI 的全部本领是做算术,可「编号 422 − 编号 421 = 1」这个算式对意思毫无参考价值。我们需要的表示得满足一条:意思上多近,数字上就多近 ——这样「找规律」才能变成「做算术」。
小结: token 编号只解决「计算机能认」的问题,不解决「意思可计算」的问题。后者要靠坐标。
3 给每个 token 发坐标:语义地图
办法很直接:再查一次表。词表里每个编号还对应着一串数字——这个 token 的「坐标」 (数学上叫「向量」,就是一串有顺序的数)。这张「编号 → 坐标」的大表,学名叫 Embedding(嵌入) 。发坐标的规则只有一条:意思相近的 token,坐标挨得近 。
Embedding:编号查表变成坐标,语义相近的 token 坐标距离近
编号 421 查坐标表得到一串坐标数字;语义地图上猫狗鱼聚成一片,编译器函数代码聚成另一片
第一步:查坐标表,给编号发坐标
421
坐标表(每个编号一行)
421 号 → 它那一行坐标
一串坐标数字
(示意)
第二步:语义地图(真实坐标有上千维,这里压成平面示意)
近
远
近
猫
狗
鱼
编译器
函数
代码
意思相近的 token → 坐标挨得近;这张地图是训练自动学出来的,无人手工标注
图 1 · 从编号到语义地图: 编号 421 查坐标表,领到一串坐标数字;在坐标空间里,「猫」「狗」「鱼」聚成一片,「编译器」「函数」「代码」聚成另一片。从这一刻起,AI 的所有计算都拿坐标做——后面第 2 周的注意力、第 3 周的专家混合,全是坐标之间的算术。
打个比方
语义地图就是地图经纬度:北京和天津的坐标挨得近,北京和悉尼离得远。「猫」和「狗」是语义上的京津,「猫」和「编译器」是语义上的北京和悉尼。严格来说 ,这张地图不是平面而是上千维的空间,人脑想象不出来,只能压扁成二维示意;而且「近」指的是坐标距离近,是统计意义上的近,不是词典释义相同。
记住这个词
Embedding(嵌入) :把 token 编号变成一串坐标数字的那张大表。「嵌入」的意思就是——把一个离散的编号,「嵌」进一个可以做算术的连续空间里。
4 地图是谁画的?没有人,是训练「长」出来的
接下来是最反直觉、也最容易被面试追问的一点:这张地图没有任何人手工标注 。没有人告诉 AI「猫和狗都是宠物」——它是自己在训练里悟出来的。整条因果链只有三步:
① 开工前:坐标是随机乱发的。 训练第一天,「猫」的坐标可能离「编译器」比离「狗」还近——反正都是乱数,远近毫无意义。
② 训练中:共现提供证据。 训练任务还是那个接龙——看上文猜下一个 token(Day 1)。关键在:「猫」和「狗」出现的上下文高度重合——「我养了一只__」「__在吃粮」「带__去打针」。如果模型对这两个 token 的预测差得很远,就会频繁猜错;猜错就触发反向传播 (把「该怎么调」的信号一路传回去),调整这两个 token 的坐标,让它们下次给出相近的预测。
③ 亿万次之后:地图自动成形。 上下文相似的 token 被一遍遍往一起拉,上下文不同的被推远。重复亿万次,「近义做邻居」的地图就自己长出来了。
语义地图的形成:随机初始坐标经过训练被逐步拉近
三个阶段:开工前坐标随机乱发;训练中猫和狗因上下文相似被拉近;训练后近义 token 自动聚成邻居
① 开工前:随机乱发
每个 token 的初始坐标
都是一串随机数
② 训练中:猜错就调
语境:「我养了一只 __」
猫
狗
猫和狗的上下文很像,
坐标就被一点点互相拉近
③ 训练后:近义做邻居
猫
狗
鱼
编译器
用法相近的 token
自动聚到一起(示意)
图 2 · 地图自己长出来的三步: 随机乱发 → 共现当证据、猜错就调坐标 → 近义自动做邻居。整条链上没有任何一步需要人类标注「猫和狗是亲戚」 ——「意思相近」这件事,是「上下文可互换」在坐标空间里留下的化石。
一句话记住因果链: 共现预测(上下文很像)→ 预测不同就猜错 → 反向传播调整坐标 → 亿万次后近义做邻居。「近」不是定义出来的,是被猜错的惩罚一点点推出来的。
进阶小注 · (给懂点数学/编程的你,可跳过)Embedding 是一张可学习的矩阵 E ∈ R^{V×d}(V = 词表大小,d = 坐标维度),查表就是取第 id 行 e = E[id]。训练时反向传播 会同时更新 E 和网络的其余参数——坐标表本身也是要学的参数。
5 彩蛋:坐标还能做加减法
既然「意思」变成了坐标,那坐标的加减法就对应「意思」的加减法。词向量研究里最出名的例子(2013 年 word2vec ,一个经典的词向量工具,知道有这个词即可):
「国王」的坐标 −「男人」的坐标 +「女人」的坐标 ≈「女王」的坐标。
怎么理解?「国王」到「女王」的差别,和「男人」到「女人」的差别,在坐标空间里是方向相似的两次位移 。也就是说,语义地图不只「位置」有含义,「方向」也有含义——某个方向大致对应「性别」,换个方向可能对应「单复数」「时态」。加减坐标 ≈ 加减语义。
严格来说 ,这是早期词向量上干净漂亮的演示;今天大模型的坐标是高维的、纠缠的,算术关系没有这么理想化。但「坐标承载语义、方向承载关系」的直觉,到今天依然成立。
6 面试视角
面试视角
面试官可能会问:「都说意思相近的词在向量空间里距离近——这个『近』是怎么来的?」
八股答 「是训练出来的。embedding 经过大规模语料训练之后,语义相近的词向量距离就会比较近。」——等于把题干复述了一遍,面试官追问「训练怎么就让距离变近了」,就卡壳了。
本课答 「一开始每个 token 的坐标是随机发的,远近毫无意义。训练时模型反复做『看上文猜下一个 token』:像『猫』和『狗』,出现的上下文高度重合——『我养了一只__』后面接它俩都合理。如果模型对它俩给出差很多的预测就会频繁猜错,反向传播就会调整它俩的坐标,让预测趋近。亿万次迭代之后,上下文相似的 token 坐标自然靠拢。所以这个『近』不是谁定义的规则,是共现统计通过猜错惩罚,在坐标空间里沉淀出来的结果。」
7 映射到原文:Attention 论文 §3.4
今天的内容在 2017 年《Attention Is All You Need》里只有一小节(§3.4 Embeddings and Softmax),因为论文面向的是专业读者,一句话就带过了。但这一句把今天讲的全部要点都点到了:
Attention 论文原文(§3.4,2017)
“…we use learned embeddings to convert the input tokens and output tokens to vectors of dimension d_model. …we share the same weight matrix between the two embedding layers and the pre-softmax linear transformation…”
引文里的 softmax (和 pre-softmax)是什么?别急,明天 Day 4 就讲它。
逐词翻译:
learned embeddings :坐标表是「学」出来的——就是今天 §4 讲的「随机开局、训练成形」,不是手工填的。
convert … tokens to vectors :把 token 变成向量(一串坐标数字)——就是 §3 的「查表发坐标」,token 进模型后的第一站。
share the same weight matrix :输入侧(读进来)和输出侧(给候选 token 打分、写出去)共享同一张坐标表 。好处很直觉:同一个 token「读」和「写」用同一套语义,还能省下一大份参数。这个设计影响深远,但今天的模型分化了——一部分模型(如 GPT-2)沿用共享,Llama 系等则输入输出各用一张表,用参数换容量。
1000+
真实坐标维度量级 (示意,非某个具体模型)
2→1
输入、输出共享 同一张坐标表(论文 §3.4)
一句话总结今天
编号无语义,坐标有语义。Embedding 给每个 token 发一串坐标,意思相近的挨得近;这张语义地图没有制图师,是「共现预测 → 猜错 → 调整坐标」亿万次滚出来的;从 2017 年的论文到今天的大模型,这一步始终是 token 进模型的第一道门。
8 自测题(先自己答,再点开看解析)
Q1 token 编号 421 和 422,为什么不代表意思接近?
因为编号是词表按收录顺序发的流水号 ,作用只是查表,跟学号一样不含任何意思。意思几乎一样的 token 编号可能差几万号,编号挨着的也可能毫无关系。想让「意思」变得可计算,就得把编号换成坐标——这就是 Embedding 存在的理由。
Q2 语义地图是谁画出来的?
没有人画。 初始坐标是随机乱发的;训练时模型做「看上文猜下一个 token」,猜错就被反向传播调整坐标;上下文相似的 token 被一遍遍往一起拉,亿万次之后地图自动成形。整条链上没有一步需要人工标注。
Q3 「国王 − 男人 + 女人 ≈ 女王」是怎么回事?
坐标不只位置有含义,方向也有含义 :「国王→女王」的位移和「男人→女人」的位移方向相近,大致对应「性别」这个语义维度,所以加减坐标 ≈ 加减语义。注意边界:这是早期词向量(word2vec)上的干净演示,真实大模型的高维坐标里关系没这么理想化。
Q4 为什么「猫」和「狗」的坐标会挨得近?请说出完整因果链。
它俩出现的上下文高度重合 (「我养了一只__」接谁都行)→ 模型若对它俩的预测差很多就会频繁猜错 → 反向传播把它俩的坐标往相似方向调整一点 → 亿万次迭代后坐标自然靠拢。近不是规则,是共现统计 + 猜错惩罚滚出来的结果。
Q5 教程把语义地图画成平面,真实的地图是几维的?
真实坐标有上千维 (量级示意),人脑画不出也想象不出,只能投影成二维、三维做示意。所以要留个心眼:二维图里看着挤成一团的点,在真实的其他维度上可能还差得很远。
明天 · Day 4概率与采样:打分怎么凑成 100% 坐标算完,AI 给每个候选 token 打了个分——可这些分数怎么变成「合计 100%」的概率?温度调高,AI 为什么会开始「放飞自我」?
进入 Day 4 →