嵌入:意思的几何
模型读一个词、看一张图,交出来的是一串数,也就是一个方向。训练让意思相近的东西指向相近的方向,“像不像”于是变成了“夹角有多大”。这只球是一个真实的三维空间:上面每张小图、每块铭牌的位置,都是本页一个小模型算出来的。
向下滚动
一个方向,一个意思
球面上的每张小图,是一张 16×16 像素的图片;每块黄铜铭牌,是一句两个词的说明,比如“红色 圆”。一个小模型把它们各自换成三个数,再缩放到长度为 1,就成了球面上的一个点:一支从球心出发的箭头的尖。球上开了一扇窗,看得见这些箭头:每根细钢针都从球心伸向一个点。
这个模型在本页训练过。训练之后,图片和它自己的说明几乎指向同一处,细银丝把它们连在一起。CLIP 这样的模型做的是同一件事,只是每个点有几百个数,比如 512 或 768。
16 张说明 · 32 张图 · 每个点 3 个数 · 长度都是 1
夹角就是相似度
两支箭头之间的夹角,说明它们有多像。黄铜量角弧搭在两个点之间,读出的就是这个角。夹角的余弦等于两个单位向量的点积:三个数对应相乘,再相加。0° 的余弦是 1,90° 是 0,180° 是 −1。
这张红色方块的图,离它自己的说明 3.9°,离“红色圆” 56.7°,离“黄色三角” 109.6°:余弦分别约是 1.00、0.55 和 −0.34。
余弦相似度 = cos θ = a · b(a、b 长度为 1)
词也是方向
2013 年的 word2vec 让这个想法流行起来:让模型从一个词猜它旁边的词,或者反过来,用法相近的词会得到相近的向量。现在球上是 GloVe 的三个词向量,它们来自 60 亿个词的维基百科和新闻语料,每个有 100 个数。
100 维画不出来,可是任意三个方向张成的只是一个三维空间,它们正好落在那个空间的单位球上,彼此的夹角一点不变。cat 和 dog 相隔 28°,cat 和 car 相隔 72°。
三个 100 维的词向量,在它们张成的三维空间里 · 夹角为实算
国王 − 男人 + 女人
从 man 到 woman 的那一步,加到 king 上,落在哪里?球上的空心环就是 king − man + woman 的方向。离它最近的词,除了 king 本身,是 queen。word2vec 的作者在 2013 年用这个例子说明,词向量的差也带着意思。
它没有看起来那么可靠。按通常的算法,king、man、woman 三个词本身不算答案;如果算进去,离空心环最近的反而是 king。word2vec 的类比测试题里,有 3,859 道的词都在本页这批向量中:不算题目里的词,答对 77%;算进去,只答对 44%。
空心环 = king − man + woman · 离它最近:king 0.84 · queen 0.77(余弦,实算)
图和字,同一个空间
CLIP 由 OpenAI 在 2021 年发表。它有两个编码器:一个读图,一个读字,输出的向量在同一个空间里。训练用的是从网上收集的 4 亿对图片和配文。
本页的小模型也是两半。读图的一半只有一层:768 个像素值进去,3 个数出来;读字的一半给每个词一支箭头,一句说明就是它的词的箭头相加。训练开始前,图片大多挤在一片里:任意两张之间的夹角,中位数只有 39°,说明之间却是 97°。没学过的那一层看哪张图都差不多,满眼是纸色。
读图:768 → 3 · 读字:每个词 3 个数,相加 · 共 2,331 个数
对角线上是配对
训练每一步取一批配对:本页一批 12 对,CLIP 一批 32,768 对。每张图和每句说明都算一次余弦,排成一个方阵,图是行,说明是列。对角线上是本来的配对,其余都是错配。
每一行做一次 softmax,就是这张图在这批说明里选谁的概率;每一列也做一次。损失要求对角线的概率尽量接近 1。这就是 CLIP 的对称交叉熵;这类损失叫 InfoNCE,名字出自 2018 年的一篇论文。CLIP 的一批有 32,768² ≈ 10.7 亿个格子。
每一格:图 i 选说明 j 的概率 · 对角线 = 配对 · 损失 = 两个方向交叉熵的平均
拉近,推开
同一个损失,同时做两件事:把每张图拉向自己的说明,把它推离同一批里的其他说明。没有人告诉模型“红”和“圆”是什么,只给了配对。
1,500 步之后,每张图离它的说明平均 5.6°,开始时是 96°。训练过的 12 句说明,彼此至少隔开 53°。方阵对角线上的概率,平均从 0.03 升到 0.97。
第 0 步 → 第 1,500 步 · 每步 12 对 · 温度 0.1
温度
余弦在进 softmax 之前先除以一个数,叫温度 τ。温度低,最像的那一个几乎拿走全部概率;温度高,概率摊得很平。前面的旋钮只改温度,方阵里的概率跟着变,球上的点不动。
CLIP 的温度也是学出来的:从 0.07 开始,并且规定 1/τ 不超过 100,否则训练会不稳定。2022 年的一项研究发现,CLIP 训练完以后,图片和文字仍各占空间里分开的一片,叫“模态间隙”;原因之一是训练开始时它们就各挤在一小片里,温度低时这段距离会一直保留下来。
p = softmax(cos / τ) · CLIP:τ 从 0.07 学起,1/τ ≤ 100
没见过的组合
训练时,有四种组合一次也没出现过:红色十字、黄色圆、绿色方块、蓝色三角。问它其中一张图是什么,办法是把 16 句说明都写出来,看哪一句最近。这叫零样本分类。
在这只三维的球上,它答对 53%(瞎猜是 1/16,约 6%);换不同的初始值训练二十次,平均 49.5%,最少的一次只有 4%。给同样的模型 8 个数,二十次平均答对 99.8%;还是 3 个数、把温度调到 1,平均 87.8%。空间有多大、训练得多“狠”,都会改变它能不能举一反三。CLIP 用同样的办法,不看 ImageNet 那 128 万张带标签的训练图,在 ImageNet 上答对 76.2%,和当年在这些图上训练的 ResNet-50 一样。
零样本:把类别写成说明,选最近的一句 · 机会水平 1/16
用字找图
反过来,给一句说明,找离它最近的图,就是搜索。图片库只需事先把每张图换成一个向量存好,查询时比的只是夹角。很多图片搜索和“相似推荐”就是这样做的。
球上升起来的,是离“蓝色圆”最近的几张图。CLIP 在 Flickr30k 上不经任何专门训练:用一句话找图,第一张就对的有 68.7%;用一张图找它的配文,88.0%。
最近邻:按余弦从大到小排列
它也会错
模型总会给出答案。一张紫色的方块,颜色它从没见过,它还是在 16 句说明里挑了一句:红色方块,概率 87%。softmax 加起来总是 1,里面没有“都不是”。CLIP 也会被字骗:一个青苹果,其中一个版本的 CLIP 认作 Granny Smith 苹果的概率是 85.6%;贴上一张写着 iPod 的纸条,它认作 iPod 的概率变成 99.7%。
向量学的是人写下的东西,连同其中的偏见。在本页的 GloVe 向量里,离 doctor − man + woman 最近的是 nurse;可如果允许原词作答,最近的是 doctor 本身。2020 年的一篇论文指出,有些著名的“偏见类比”正是因为原词不许作答才得出来的。偏见是真的,例子也可能被夸大。CLIP 的论文报告,在一组人脸照片上加入“大猩猩”等类别后,4.9% 的照片被分进了非人类的类别,黑人照片约 14%,其他人群都低于 8%。
紫色方块:从没见过的颜色 · 答案仍然只在 16 句里挑
实验台
可以调温度重新训练、拨动训练进度,拿一张图去问模型(包括它没见过的颜色),或者换几个词放上球。球上和方阵里的每个数都按你的选择实时重算。
试一试在实验台上把温度调到 1,重新训练。没见过的四种组合,这次答对多少?再换几次初始化试试。
模型省略了什么
本页的模型很小:图片只有 16×16 像素,只有四种颜色、四种形状;读图的一半只有一层,读字的一半只是把词的箭头相加,不管词序;空间只有三维,好放进一只球。CLIP 读的是网上的真实照片和整句文字,图像编码器是 ResNet 或 Vision Transformer,文字编码器是一个 Transformer(基础大小 6300 万个参数);它的一批 32,768 对,训练 32 遍、4 亿对数据。球上三个词的位置之所以是精确的,是因为任意三个方向本来就张成三维;空心环(king − man + woman)在这三个词张成的空间里,也是精确的;queen 不在那个空间里,球上只保证它到 king 和到空心环的夹角是真的。本页的 GloVe 向量是 40 万个词里最常见的 6,000 个左右,取 8 位整数存放;类比测试也只在这批词里做,词越少,题目越容易。
一个常见的误解
向量里的每个数并不各自对应一个意思,比如“第 37 个数表示性别”。有意思的是方向和夹角:换一个坐标系,把整个空间转一下,所有夹角都不变,模型的表现也不变。另外,“夹角小”只说明模型把两样东西放得近,不说明它理解它们:本页的小模型只见过颜色和形状,紫色它照样会硬塞进某一句说明里。
常见问题 · 4
- 余弦相似度是什么?
夹角的余弦等于两个单位向量的点积:三个数对应相乘,再相加。
02夹角就是相似度 ↑- 国王 − 男人 + 女人真的等于女王吗?
按通常的算法,king、man、woman 三个词本身不算答案;如果算进去,离空心环最近的反而是 king。
04国王 − 男人 + 女人 ↑- CLIP 的训练在做什么?
同一个损失,同时做两件事:把每张图拉向自己的说明,把它推离同一批里的其他说明。
07拉近,推开 ↑- 对比学习里的温度是什么?
余弦在进 softmax 之前先除以一个数,叫温度 τ。温度低,最像的那一个几乎拿走全部概率;温度高,概率摊得很平。
08温度 ↑
资料来源
- Radford 等(2021):Learning Transferable Visual Models From Natural Language Supervision(CLIP),arXiv:2103.00020(4 亿对、批量 32,768、温度、损失、零样本 76.2%、检索、偏见)
- OpenAI:CLIP 代码与模型说明(MIT 许可)
- van den Oord 等(2018):Representation Learning with Contrastive Predictive Coding,arXiv:1807.03748(InfoNCE)
- Mikolov 等(2013):Efficient Estimation of Word Representations in Vector Space,arXiv:1301.3781(word2vec、类比测试)
- Mikolov、Yih、Zweig(2013):Linguistic Regularities in Continuous Space Word Representations,NAACL(king − man + woman)
- Mikolov 等(2013):Distributed Representations of Words and Phrases and their Compositionality,arXiv:1310.4546
- word2vec 代码与类比测试题(Apache 2.0 许可)
- Pennington、Socher、Manning(2014):GloVe,EMNLP;词向量 glove.6B(PDDL 1.0)
- Linzen(2016):Issues in evaluating semantic spaces using word analogies,arXiv:1606.07736
- Nissim、van Noord、van der Goot(2020):Fair Is Better than Sensational: Man Is to Doctor as Woman Is to Doctor,Computational Linguistics 46(2)
- Liang 等(2022):Mind the Gap: Understanding the Modality Gap in Multi-modal Contrastive Representation Learning,arXiv:2203.02053
- Goh 等(2021):Multimodal Neurons in Artificial Neural Networks,Distill(文字攻击:贴着 iPod 的苹果)
- Kingma、Ba(2014):Adam,arXiv:1412.6980(本页模型的优化器)
数据
Word vectors: GloVe (Jeffrey Pennington, Richard Socher and Christopher D. Manning, Stanford, 2014), glove.6B, 100 dimensions, trained on Wikipedia 2014 and Gigaword 5; a slice of 6,008 words, made available under the Public Domain Dedication and License v1.0. Analogy questions: the test set of the word2vec project (Tomas Mikolov et al., Google), Apache License 2.0; the 3,859 questions whose words are all in the slice. The small model on the globe, its pictures and its training are the site’s own: src/topics/embeddings/sim.js (one layer for pictures, one arrow per word, CLIP’s loss, Adam).
本页的文字、图片和模型采用 CC BY-NC 4.0 许可:可以免费用于教学和其他非商业用途,可以修改,请注明出自 world.lapla.si。上面列出的第三方素材仍按各自的许可。
引用这幅图版
拉普拉斯的迷你世界,图版 F22《嵌入:意思的几何》,https://world.lapla.si/zh/embeddings/,CC BY-NC 4.0,2026-10-19 更新。


