Learn AI · 模型硬功底(由内而外)
第 5 课 / 经典论文 P04  ·  阶段一:地基(Mikolov et al., 2013)

word2vec:
词 = 向量,语义 = 几何
——你天天说的「embedding」从哪来

前四课你一直在用「token 的向量」「意思向量」「embedding」——但从没拆过:这些向量到底哪来的?为什么意思相近的词,向量会靠在一起? 这一课往最底走一层。读完你还会看清一件事:word2vec 给每个词一个固定向量,而你刚拿下的 self-attention 之所以了不起,正是因为它把这个固定的东西变活了
把词从「每个词一座孤岛」,
搬进一个稠密向量空间里当一个点
意思相近 → 距离相近;更炸的是,关系变成了方向——
国王 − 男人 + 女人 ≈ 王后

一、立靶:老办法 one-hot,词和词之间「零关系」

word2vec 之前,词怎么喂给模型?one-hot:词表多大,向量就多长,只有自己那一位是 1,其余全 0。

猫  = [0,0,1,0,0,…,0]
狗  = [0,1,0,0,0,…,0]
桌子= [0,0,0,0,1,…,0]
two 宗罪后果
① 维度爆炸 + 稀疏词表几万到几十万,向量就几万到几十万维,全是 0。又大又浪费。
② 任意两词都「正交、等距」「猫」到「狗」的距离 = 「猫」到「桌子」的距离。向量里没有任何语义——模型看不出猫狗相近。

论文要的:给每个词一个低维(如 300 维)的稠密向量,让意思相近的词、向量也相近。

二、抽框架:让上下文来「定义」一个词

靠什么学出这种向量?一个朴素到深刻的假设——分布假说「一个词的意思,由它常和哪些词一起出现决定。」(You shall know a word by the company it keeps.) 「咖啡」和「茶」总出现在相似的上下文里(喝、杯、热),所以它们意思相近。

word2vec 把这个假设变成一个预测任务,两种方向(二选一):

架构干什么
CBOW上下文中心词:「the cat ___ on」→ 猜「sat」。
Skip-gram反过来,用中心词上下文:「sat」→ 猜「the / cat / on」。罕见词上更准,更常用。
最关键、最反直觉的一点

你要的不是「预测得准」,而是预测时被顺手学出来的那组向量。 为了把上下文预测对,模型被逼着把「出现在相似语境里的词」的向量调得相似——词向量是这个预测任务的副产品。 训练完,预测任务丢掉,留下的那张「词 → 向量」查找表,就是 embedding

论文标题里的 Efficient 才是它当年的卖点:砍掉隐藏层非线性、用 negative sampling,使它能在十亿词级语料上飞快训练——这才让「词向量」从论文走进工业界。

二·五、换个说法:看你跟谁混,就知道你是谁(通俗版)

分布假说翻成大白话,就是「近朱者赤」——一个词的人设,由它的「朋友圈」定义。

生活里对应 word2vec
你不认识一个人,但发现他天天和健身教练、营养师、马拉松群混一个生词,总出现在「跑、训练、配速」这些词周围
你立刻猜:他大概也是个健身的——圈子相似 → 人设相似语境相似 → 向量相似 → 意思相近
把所有人按「圈子」摆进一个大厅,健身的自然聚一堆、搞艺术的聚另一堆把所有词摆进向量空间,近义词自然聚成簇

三、动手玩:关系,变成了可加减的「方向」

word2vec 最炸的发现:向量空间里,同一种语义关系 = 同一个方向。点不同的类比,看那条「平行四边形」——从一个词出发、沿某个方向平移,就落到了答案附近。

选一组类比: 
A C B D 关系方向 同样的方向 →

四、对照表:词表示的三代

维度one-hotword2vec(静态 embedding)
本篇 P04
语境化 embedding
(self-attention / BERT)
维度几万~几十万,稀疏几百,稠密几百~几千,稠密
有没有语义无(全等距)有:近义聚堆、关系成方向有,且随语境变
一个词几个向量一个一个(固定)随上下文变
「bank」(银行/河岸)一个向量只能给一个,混在一起 ✗两句话里两个不同表示 ✓

看最后两行——word2vec 给每个词一个固定向量,分不清「bank」的两个意思。 你刚学的 self-attention 正是来破这个的:同一个词,按上下文吸收邻居信息,生成不同的新表示(那个「它」的例子)。word2vec 是静态地基,attention 让它活了起来。

五、映射到你的项目

你工作里的东西其实就是这篇论文的什么
RAG 里的 bge-small-zh 把一段话编码成向量word2vec 思想的现代后代(升到句子级、且语境化),但内核没变:语义 = 几何
向量检索 / 余弦相似度 / 向量库召回整套「把意思相近的东西在空间里找出来」的范式,就是这篇确立的。
king−man+woman」那种方向可加减做风格迁移 / 属性编辑(图像、语音生成里「往某个方向调一点」)的直觉来源——属性是空间里的方向。
为什么 RAG 要切块、不能一个向量装一篇长文静态/单向量的表达力上限:一个点压不下太多语义——做 RAG 时纠结切块策略的老问题,根在这。

六、检索练习(关掉上文,凭记忆答)

1. one-hot 表示词,最致命的问题是?
2. word2vec 的词向量是怎么来的?
3. word2vec 的「静态」局限,被后来的什么破掉了?

七、常见问题 FAQ

把这一课和你刚拿下的 attention 接起来的关键一问。点开看答。

word2vec 的词向量,和我刚学的 self-attention 是什么关系?

一句话:word2vec 给「起点」,attention 给「语境」。

word2vec(及现代它的后代)产出的是静态 embedding——每个词一个固定向量,是 token 刚进模型时的初始表示(就是你默写时说的「它原来有一个 token 值」)。但「bank」只有一个向量,分不清银行还是河岸。

self-attention 接着上场:让每个词的这个初始向量,按当前句子吸收邻居的信息,生成一个语境化的新表示——同一个「它」「bank」在不同句子里变成不同向量。

所以流水线是:word2vec 类的 embedding(静态起点) → 叠 N 层 self-attention(按语境加工) → 语境化表示。你这两课,正好接成了一条链。🔮

king − man + woman ≈ queen 到底怎么理解?(用一个二维玩具坐标看穿)

一句话:「关系」不存在于某个词里,存在于「词与词之间的那个方向」。

每个词是空间里一个,向量能加减,于是算式每一步都是一个几何动作:

步骤几何上在干嘛
king − man从 man 指向 king 的位移向量——把「男性」约掉,提纯出「王权」这个方向(从平民到君主要加的那一坨)。
+ woman把这个「王权方向」搬到 woman 头上:保留女性身份,叠加王权。
≈ queen落点正好在 queen 附近。

假设空间只有两根轴——横轴=王权,纵轴=性别(上男下女),真实是几百维但道理一样:

man   = [0,  1]   (无王权, 男)
woman = [0, -1]   (无王权, 女)
king  = [1,  1]   (有王权, 男)
queen = [1, -1]   (有王权, 女)

king − man + woman
= [1,1] − [0,1] + [0,-1]
= [1, −1]
= queen   ✓

成立的原因:「王权」和「性别」成了两根大致独立、稳定的方向man→kingwoman→queen同一个王权方向、近似平行等长,四点连起来就是上面那个平行四边形。没人教它,是训练时为了预测对上下文,被逼着用同一个方向编码同一种语义,从语料里自己长出来的。

诚实的 caveat:是 (约等于 + 最近邻),不是精确相等;实操要排除输入的三个词本身、做归一化才漂亮,且这现象有被夸大的成分。但「方向编码语义」这个核心直觉是真的——做风格迁移/属性编辑时「往某个方向调一点」的直觉,根就在这。🔮

本课主源

读原典:Mikolov et al. — Efficient Estimation of Word Representations in Vector Space (arXiv:1301.3781)。 (想看类比实验,配读姊妹篇 Distributed Representations…, arXiv:1310.4546。)

建立直觉首选:Jay Alammar — The Illustrated Word2vec(图解 skip-gram 和 negative sampling)。

阶段一(地基)到此读完。下一篇起进阶段二·预训练范式(P05 BERT)——把这些零件拼成真正能预训练的语言模型。

我是你的老师,随时提问。 比如:「negative sampling 到底在干嘛?」「CBOW 和 skip-gram 我该用哪个?」 「为什么 king−man+woman 真能等于 queen,是巧合吗?」——别带着模糊往下走。

参考:
Mikolov et al., Efficient Estimation of Word Representations in Vector Space, 2013;Alammar, The Illustrated Word2vec.