嵌入空间可以简单理解为:把原本不好直接计算的对象,映射成向量以后所在的空间。

比如:

  • 一段文本 → 一个 768 维向量
  • 一张图片 → 一个 512 维向量
  • 一个用户 → 一个 64 维向量
  • 一个节点、药物、蛋白质、商品、类别 → 一个向量

这些向量所在的向量空间,就可以叫嵌入空间。它的核心作用是:让机器能够用距离、角度、内积等数学方式来表达对象之间的相似性、差异性和结构关系。

例如在一个好的文本嵌入空间里:

“猫” 和 “狗” 距离较近
“猫” 和 “汽车发动机” 距离较远

这说明模型把语义相近的对象放在了空间中相近的位置。

机器学习和深度学习中的嵌入空间是不是同一个概念?

基本上是同一个大概念,但实现方式和表达能力不同。

在传统机器学习中,嵌入空间可以来自人工设计的特征映射。例如:

  • PCA 把高维数据降到低维空间
  • LDA 把样本投影到判别空间
  • 核方法把数据隐式映射到高维特征空间
  • TF-IDF 把文本表示成词频向量空间
  • 手工设计图像特征、统计特征后形成的特征空间

这些都可以看成某种“嵌入”。

在深度学习中,嵌入空间通常是由神经网络学习出来的。例如:

  • Word2Vec、BERT 学习词或句子的嵌入空间
  • CNN/ViT 学习图像嵌入空间
  • GNN 学习图节点嵌入空间
  • 推荐系统学习用户和商品嵌入空间
  • 对比学习学习“相似样本靠近、不相似样本远离”的空间

所以二者概念相通:都是把对象映射到向量空间。区别在于,传统机器学习中嵌入往往更依赖人工特征或明确数学变换;深度学习中嵌入更多是端到端学习出来的。

嵌入空间是固有的,还是设计出来的?

不是完全固有的。更准确地说:数据本身可能有某种潜在结构,但嵌入空间是通过设计和学习得到的。

可以分三层理解:

  1. 数据中可能存在潜在结构

比如图像中有形状、纹理、类别结构;文本中有语义、句法结构;用户行为中有兴趣偏好结构。这些结构不是模型凭空造出来的。

  1. 嵌入空间的形式需要设计

你需要决定:

  • 用多少维向量表示
  • 用什么模型提取嵌入
  • 用什么损失函数训练
  • 用欧氏距离、余弦相似度还是内积衡量关系
  • 希望空间保留什么性质:类别可分?语义相似?排序关系?局部邻域?全局几何?

这些都是设计选择。

  1. 嵌入空间的具体形状是学习出来的

同一批数据,用不同模型、不同损失函数、不同训练目标,会得到不同的嵌入空间。

例如,同样是人脸图像:

  • 用分类损失训练,空间可能强调身份类别
  • 用对比损失训练,空间可能强调人脸相似度
  • 用年龄预测训练,空间可能强调年龄连续变化
  • 用表情识别训练,空间可能强调表情差异

所以嵌入空间不是唯一的,也不是天然固定存在的。它是“数据结构 + 建模目标 + 表示方法 + 训练过程”共同形成的。

一句话总结:

嵌入空间就是把对象表示成向量后形成的表示空间;机器学习和深度学习中的嵌入空间本质上是同一概念;它不是完全固有的,而是围绕任务目标设计并通过数据学习得到的。


用卷积神经网络 CNN 来看,嵌入空间通常不是某一个“固定层名”,而是你选定某一层的输出向量作为样本表示时,这些向量所在的空间

以图像分类 CNN 为例:

输入图像
→ 卷积层 Conv1/Conv2/Conv3 ...
→ 特征图 feature maps
→ 全局平均池化 GAP 或 Flatten
→ 全连接层 FC
→ 分类器 Softmax
→ 类别概率

一般最常被称为“嵌入”的位置是:

Softmax 分类层之前的那一层向量

也就是模型做最终分类之前的高层特征表示。

例如 ResNet 中常见结构是:

图像
→ 多个卷积模块
→ Global Average Pooling
→ 2048 维特征向量
→ 全连接分类层
→ Softmax 概率

这里的 2048 维特征向量所在的空间,就可以看作图像的嵌入空间。

为什么通常选 Softmax 前一层?因为这层已经把图像压缩成了一个语义较强的向量:

  • 同一类别的图像通常更接近
  • 不同类别的图像通常更远
  • 它保留了对分类任务有用的信息
  • 它还不是最终概率,所以比 Softmax 输出更适合作为通用表示

不过,CNN 中不止这一层可以形成嵌入空间。

早期卷积层的输出也可以看作嵌入,但它们表示的是低级特征:

浅层卷积特征空间:边缘、角点、纹理
中层卷积特征空间:局部结构、部件、形状
深层卷积特征空间:语义类别、对象级特征

比如:

  • Conv1 输出的特征图空间:更像边缘/纹理嵌入空间
  • Conv3/Conv4 输出的特征图空间:更像局部结构嵌入空间
  • 最后卷积块或 GAP 后的向量空间:更像语义嵌入空间
  • 分类层前的 FC 向量空间:最常被用作图像嵌入空间

举个简单例子:

假设一个 CNN 输出流程是:

Input: 224×224×3 图像

Conv Block 1 → 112×112×64
Conv Block 2 → 56×56×128
Conv Block 3 → 28×28×256
Conv Block 4 → 14×14×512
Global Average Pooling → 512 维向量
FC → 128 维向量
Classifier → 10 类概率

那么:

512 维向量所在空间:可以是一个嵌入空间
128 维向量所在空间:也可以是一个嵌入空间
10 类概率空间:通常不叫嵌入空间

如果你的任务是图像检索、人脸识别、度量学习、对比学习,通常会专门加一个 embedding layer:

CNN Backbone
→ Global Average Pooling
→ Linear Projection
→ 128维或512维 embedding
→ normalize
→ 用 contrastive loss / triplet loss / ArcFace 等训练

这时 Linear Projection 输出的 128 维或 512 维向量,就是明确设计出来的嵌入;这些向量构成的空间就是嵌入空间。

所以回答你的问题:

在 CNN 中,通常把最后分类层之前的特征向量所在空间称为嵌入空间;但从广义上说,任何一层输出经过向量化后都可以形成一个嵌入空间,只是不同层的嵌入表达的语义层次不同。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐