首页 / 概念 / 语义空间
01 / 语义空间 · EMBEDDING

每个词,都是这个空间里的一个坐标。

在它开口、注意、预测之前,要先解决一个更原始的问题:怎么把"词"变成机器能算的东西?它的答案出奇地朴素——给每个词分配一个坐标,把整门语言摊成一张星图。意思近的词,坐标就相邻。

"猫"和"狗",
挨着的两个点。
"猫"和"积分",
隔了半张星图
意思,
就这样变成了距离

浅层 · 一句话:想象一张铺满整个房间的巨大星图,几万个词,每个词是一颗星。意思相近的词被放在一起——"猫""狗""老虎""宠物"挤成一团,"积分""函数""算法"在房间的另一头抱团,而"咖啡""清晨""安静"又自成一片。

这张星图有个正式名字:词嵌入(embedding)——把每个词"嵌入"到一个连续空间里的一个点。这一整页,都在拆这张星图是怎么来的、为什么"位置"竟然能装下"意思",以及它惊艳又危险的地方在哪。

亲手拨一下这张星图

把鼠标移上去,看相近的词被同一片引力聚拢。

下面每个光点是一个真实的词。把鼠标当成一只手伸进这片空间,靠近的词会被你吸过来——而本就意思相近、彼此连着线的词,会一起被聚拢。这就是 embedding 在做的事:让"近"变得可触摸。

SEMANTIC SPACE · 实时投影移动鼠标 = 施加引力
// 连线 = 两个词的坐标足够近。真实空间有几千维,这里把它压扁成 2D 让你能看见——但"近的抱团"这件事是真的。
12,288一个词的坐标维度(GPT-3)
≈ 5 万词表里的词,全有坐标
0人工标注 —— 全从文本里自己学
它从没人教,怎么知道谁挨着谁

"位置"不是人摆的,是它从陪伴里猜出来的。

中层 · 它怎么做到:没有人坐下来标注"猫和狗很近"。它靠的是一条朴素到惊人的规律——经常出现在相似上下文里的词,就给它们相近的坐标。"猫"和"狗"周围反复出现"养、喂、可爱、宠物";"积分"和"函数"周围反复是"求、导数、连续"。看谁总和谁一起出现,就把谁放在一起。

语言学里这叫分布式假设(distributional hypothesis):一个词的意思,藏在它常出现的语境里——"观其友,知其人"。模型在整个互联网的文本里数了无数遍"谁和谁同框",数着数着,星图上的位置就自己长了出来。

辅助 · 不必记的细节:所以它学到的"近",是共现意义上的近,不是常识意义上的近。"医生"和"护士"近,因为它们总同框;"医生"和"律师"也颇近,因为都活在"职业、专业、执照"这类语境里。位置背后,全是统计,没有理解。

"位置"具体长什么样

一个词,被翻译成一串数字。

"坐标"听起来抽象,落到实处它就是一行数字。"猫"这个字进去,出来的是一长串小数;这串数字,就唯一地指向星图上的某一个点。

① 词 ② 编码 查它的坐标 ③ 向量 [ 0.21, −0.53, 0.88, … ] ×12288 ④ 空间里的一个点 宠物 积分
词 → 一串数字 → 星图上唯一的一个点 · 这串数字就是"猫"的坐标

所以"AI 理解一个词"这句话,翻译成它的语言就是:查出这个词对应的那一串数字。整个语言被它装进了一张数字表——每个词一行,每行几千个数。后面所有的"思考",都建立在对这些数字做加减乘除之上。

"几千维"到底有多大

那一串数字,长得超乎想象。

上面写"…"省略掉了大部分。真实情况是:这一行数字不止三个、十个,而是上万个。下面每一根细柱代表"猫"这串坐标里的一个维度——你看到的只是其中一小撮,真实的它要长得多。

"猫" 的坐标向量每根柱 = 一个维度的取值
↑ 此处仅画出 48 维示意实际 GPT-3:12,288 维 · 即每个词都是 12288 个数

为什么要这么多维?因为意思有太多侧面。一个维度也许悄悄编码了"是不是动物",另一个"是不是温暖的",再一个"褒义还是贬义"——没人指定哪一维管什么,但几千个维度合起来,才装得下一个词意思的全部细微差别。

辅助 · 不必记的细节:维度一多,我们这种住在三维世界里的脑子就彻底想象不出了——你没法"看见"一个 12288 维的空间。但数学不在乎:不管多少维,两点之间照样能算距离、算方向。高维是它的舒适区,却是我们的盲区。这也是为什么必须把它压成 2D,我们才看得见。

想清楚一件事

它操作的是位置,从来不是意义。

深层 · 反直觉:它没有"懂"猫是毛茸茸、会喵喵叫、爱睡懒觉的小动物。它眼里的"猫",从头到尾只是一串数字、一个坐标。它做的全部事情,是在挪动坐标、丈量距离、比较方向——纯粹的几何,没有一丝一毫的"意义"。

意思相近,被它兑换成了"可计算的距离"。这正是它能力的来源:既然近义=近距离,它就能用算术处理语言。但同一枚硬币的反面是——位置对,不代表事实对。两个词坐标挨着,只说明它们常出现在相似语境,不保证你把它们拼成的那句话是真的。

这就是它日后"一本正经地胡说"的最深的根:它在一个意思=位置的几何空间里运算,而几何空间里没有"真 / 假"这根轴。顺、近、像——它都会;真不真,它无从判断。记住这一点,你后面看它所有的聪明和所有的离谱,都能对上号。

embedding 最惊艳的一幕

既然方向也有含义——国王 − 男人 + 女人 ≈ 女王。

如果"意思"真的变成了"位置",那两点之间的方向,会不会也有意义?答案是会。从"男人"指向"国王"的那个方向,和从"女人"指向"女王"的方向——几乎平行。这条方向,编码的正是"性别 → 王室身份"这层关系。

语义空间(2D 投影) 男人 国王 女人 女王 + "王室身份" 方向 同一个方向,平行搬一遍 ↑ "性别" 方向 国王 − 男人 + 女人 ≈ 女王   ·   减去性别,加回性别,落在女王附近
两条 teal 箭头平行 = "王室身份"是一个稳定方向;两条粉色虚线平行 = "性别"是另一个方向

这就是 embedding 最让人起鸡皮疙瘩的地方:关系,变成了可以做加减法的方向。没有人教它"国王和男人差了个王室身份",它纯靠数文本里的共现,就让这条关系自己沉淀成了空间里一个稳定的方向。意思变成位置之后,连"类比"都成了算术。

辅助 · 别神化它:这个例子真实存在,但别以为它每次都这么干净。现实里向量运算常常只是"大致落在附近",还会被语料偏见带歪(比如把"医生"默认推向"男")。它揭示的是一个深刻的事实——方向有含义——但不是一台精准的语义计算器。

意思变成位置之后,能干什么

把"懂不懂"变成"近不近",很多事突然就能算了。

一旦语言被摊成一张可丈量的星图,那些原本需要"理解"才能做的事,统统降级成了"几何运算"——而几何,机器最擅长。

SEARCH · 找邻居

找近义词 / 搜索

"开心"的近义词?不用查字典,只需找出它坐标周围最近的几个点——"高兴""愉快""喜悦"自动浮现。语义搜索、推荐,底层都是这一步。

ANALOGY · 做类比

类比 / 推关系

就是上一节那招:坐标方向相加减。"巴黎 − 法国 + 日本 ≈ 东京"——首都关系成了一个方向,搬到哪国都成立。关系也能被算出来。

CROSS-LINGUAL · 跨语言

跨语言对齐

把中文的"猫"和英文的"cat"放进同一个空间,让它们落到几乎同一个点。意思相同的词不分语种地重合——机器翻译的地基之一。

CLUSTER · 聚类

自动归类 / 聚类

不给标签,光看谁挨着谁,就能把一堆词、一批文章自动分成主题群。星图上的"星座",就是天然的类别。

所以它的"理解",是哪种理解

它不知道猫是毛茸茸的,只知道"猫"周围站着谁。

中层 · 把话说透:对它而言,"理解一个词"=知道这个词的坐标,以及坐标周围都站着哪些词。它对"猫"的全部认识,就是"猫"这个点附近聚着"狗、宠物、可爱、喵、睡觉"——而不是任何关于真实猫的感官经验。它从没摸过猫,也永远不会。

这是一种关系性的、几何性的理解:意思 = 一个词在词与词关系网中的位置。它很强大——足以让它谈论几乎任何话题;但它也很空——里面没有任何指向真实世界的锚点。它懂的是"词和词怎么相处",不是"词和世界怎么对应"。

辅助 · 一句话收口:把这一页浓缩成一句——在它的世界里,"意义"就是"几何"。记住这把钥匙,它后面所有的注意力、所有的预测,都只是在这张几千维的星图上,继续做几何而已。

位置有了——每个词都站到了星图上自己的坐标。但光有一堆点还不够:一句话是一串词,读到"它"的时候,怎么知道"它"指的是前面哪个词?怎么把孤立的坐标连起来理解成一句话的意思?这正是下一站要解决的事——注意力