简介:Embedding(向量表示)是深度学习中把词语、商品、图像等离散对象映射为连续向量的核心技术,是连接现实世界信息与模型计算的关键桥梁。本文从定义出发,系统解析其核心思想、Embedding矩阵、训练原理、相似性计算、典型应用场景与使用注意事项,帮助你建立完整清晰的概念认知。
Embedding(中文常译为“嵌入”或“向量表示”),是机器学习中的一种基础表示技术:它将现实世界中难以直接计算的对象——如一个词、一件商品、一位用户、一张图片——映射为一个固定长度的连续向量,使得“语义或特征上相近的对象,在向量空间中的位置也彼此相近”。
可以用一句话概括它的本质:Embedding 把“符号世界”翻译成“几何世界”,用空间中的距离与方向来承载对象之间的关系信息。
为了更立体地理解,可以从三个视角分别看待:
1. 神经网络的天然限制:只会算数字
神经网络本质上是一系列矩阵乘法与非线性变换的组合,其输入必须是数值。一句话在计算机的原生形态下只是一串字符编码,对模型而言没有任何语义。要让模型处理文本等符号信息,第一步必须先把符号变成数字。
2. 简单编号无法表达“相似性”
最直观的做法是给每个对象分配一个整数 ID:猫→1、狗→2、汽车→3。但这种表示存在根本缺陷:ID 只是一个“标签”,1 和 2 之间并不蕴含“猫与狗相似”的含义,在 ID 上做任何算术运算都没有意义。在人类的认知里,“猫”和“狗”明显比“猫”和“汽车”更相似,这种常识在整数编号中被完全丢弃了。
3. One-hot 编码的局限
另一种经典方案是 one-hot:用一个长度等于词表大小的向量表示每个词,对应位置为 1,其余为 0。它解决了“编号大小无意义”的问题,却带来两个新麻烦:
4. Embedding 的价值
Embedding 的出现正是为了同时解决上述问题,其价值可归纳为三点:
Embedding 的关键思想可以浓缩为一句话:用向量表示对象,用空间中的距离刻画对象之间的关系。 即每个词不再是一个数字,而是一个向量 word → v ∈ R^d。
以一个 3 维示意为例:
可以直观看到:“猫”与“狗”的向量几乎重叠,距离很近;“汽车”的向量则明显偏向另一个方向。于是,“猫和狗语义相似、猫和汽车语义无关”这一人类常识,被转化成了向量空间中的几何事实。
更进一步,高质量的 Embedding 空间中甚至能涌现方向性规律。经典的例子是:在词向量空间中,“国王”的向量减去“男人”的向量再加上“女人”的向量,落点非常接近“女王”的向量。这说明 Embedding 不仅记录了“谁与谁相近”,还可能把性别、时态、从属关系等抽象语义编码为空间中的平移方向。严格来说,Embedding 并非让模型真正“理解”了世界,而是把语义关系结构化地保存进了几何空间,使模型可以对其进行运算。
在实际模型中,Embedding 通常以一个矩阵的形式存在:
E ∈ R^(V×d)
其中:V 为词表(对象表)大小;d 为向量维度。矩阵的第 i 行就是第 i 个对象的向量:v_i = E[i]。
当输入一个词的 ID 时,Embedding 层所做的本质上是一次“查表操作”,这是深度学习框架中高度优化的基础算子:
# 伪代码:Embedding 查表逻辑输入:一批对象 ID,形如 [i1, i2, ..., in]输出:对应的向量序列vectors = E[ids] # 从矩阵中取出对应的行# 输出形状为 n × d,每一行是一个对象的向量
值得注意的是:Embedding 矩阵是模型参数的一部分,参与端到端训练。查表只是“读取”动作,而向量取什么值完全由训练决定——这正是 Embedding 与人工设计特征的本质区别。
Embedding 不是人为规定的,而是在任务训练中自动学出来的,整个过程可拆解为三个环节。
1. 理论依据:分布式假设
计算语言学中有一条经典的分布式假设:一个词的含义,由它经常出现的上下文决定。上下文相似的词,语义大概率也相似——“猫”和“狗”都会出现在“喂食”“可爱”等上下文中,而“汽车”则更多出现在“发动机”“高速”等语境里。这条假设把“语义相似”这个模糊概念,转化成了“上下文分布相似”这个可统计、可优化的目标。
2. 训练目标:让“应该相似的向量”靠近
以语言模型任务为例:给定“猫会 喵喵叫”这样的句子,模型学习根据上文预测下一个词。为了降低预测误差,梯度下降会持续微调 Embedding 矩阵:
这一过程没有任何人工标注“哪些词相似”,相似性完全是从海量文本的统计规律中“涌现”出来的。
3. 编码什么语义,取决于训练任务
一个常被忽略的要点:Embedding 中“相似”的含义,取决于训练它的任务。用语言建模任务训练,得到的是语言学意义上的相似;用推荐系统中“用户—物品共现”任务训练,得到的是行为兴趣意义上的相似;用对比学习任务训练图像编码器,得到的是视觉内容上的相似。因此,脱离任务谈“Embedding 好不好”没有意义,关键看它编码的关系是否与业务目标对齐。
有了向量之后,“相似性”就变成了可计算的数学量,业界最常用的三种度量是:
选择建议:文本语义相似优先用余弦;大规模召回系统中为效率常用“点积 + 归一化”;需要度量绝对差异时用欧氏距离。无论选择哪种,都应与下游检索、排序环节保持度量一致,避免训练目标与使用目标错位。
回到定义本身:Embedding 是把离散的符号对象映射为连续稠密向量,并用空间几何关系承载语义与结构信息的技术。 它之所以无处不在,是因为它精确填补了“现实世界的符号信息”与“神经网络的数值运算”之间的鸿沟:向量化让符号可计算,训练目标让可计算的向量携带语义,相似度度量让语义可以被检索和比较。
理解 Embedding 可以归结为三句话:它是一种低维稠密表示;它由任务驱动自动学出,编码什么关系取决于训练目标;它的价值在于“把模糊的相似性变成精确的几何关系”。掌握这一概念,是理解现代搜索、推荐与大模型应用的起点。