NingG +

AI 系列:Embedding 训练细节 & 数学原理

Embedding model,几个典型问题:

Embedding model(嵌入模型 / 向量表示模型)的原理,核心是:把离散的文本、图片、音频等信号,映射到连续的高维向量空间中,使得语义相似的输入,在向量空间的距离也更近

下文按原理训练过程,拆开讲。

1. 核心思想

2. 模型结构

常见的 embedding 模型和大语言模型结构相似,主要分:

2.1.Embedding vs LLM

embedding 模型(比如 BERT、SimCSE、BGE、M3E 等)和大语言模型(GPT、LLaMA、DeepSeek 等)在结构上确实有很多相似之处,但在训练目标、架构细节和使用方式上有差异。从以下几个维度对比。

2.1.1. 相似之处

  1. 底层架构:都是 Transformer

    • embedding 模型和 LLM 都是基于 Transformer 编码器/解码器结构
    • 主要组件相同:多头自注意力(Multi-head Self-Attention)、前馈网络(FFN)、层归一化(LayerNorm)、残差连接
    • 因此,它们都能学习到 上下文依赖语义信息
  2. 输入表示

    • 都需要将文本分词(tokenization),再映射到向量空间(embedding layer)。
    • 常用 BPE、SentencePiece 等分词算法
    • 都会加入位置编码(Positional Encoding)。
  3. 预训练数据规模

    • 都依赖大规模文本语料,利用无监督/自监督学习。

2.1.2. 差异之处

  1. 训练目标不同

    • Embedding 模型:目标是得到一个语义向量,常见训练方式:
      • MLM(Masked Language Modeling) 掩码语言模型 → BERT
      • 对比学习(Contrastive Learning)SimCSE, BGE, M3E
      • 多任务联合 → 融合检索/排序/分类任务
    • LLM:目标是生成下一个 token(自回归 LM),优化目标是最大化 token 序列的似然。
  2. 架构差异

    • Embedding 模型:常用 Encoder-only(如 BERT),得到整段文本的语义向量。
    • LLM 模型:常用 Decoder-only(如 GPT、LLaMA),适合生成任务。
    • 也有 Encoder-Decoder(如 T5、mBART),既能做 embedding,也能做生成。
  3. 输出形式

    • Embedding 模型:输出一个定长向量(句子/段落语义表示),通常取 [CLS] token 或平均池化
    • LLM:输出一个 token 分布序列,可以生成文本。
  4. 推理/使用方式

    • Embedding 模型:常用于相似度计算、检索、聚类、分类。使用时一般是一次性编码,得到向量即可。
    • LLM:常用于对话、写作、推理。使用时是逐 token 解码,带有上下文记忆。
  5. 参数规模

    • Embedding 模型:参数量相对较小(几十 M 到几百 M)。
    • LLM:参数量更大(几十 B 起步)。

2.1.3. 总结表格

维度 Embedding 模型 大语言模型 (LLM)
底层结构 Transformer Transformer
常用架构 Encoder-only Decoder-only
训练目标 语义表示(MLM/对比学习) 文本生成(自回归 LM)
输出形式 固定向量 Token 序列
应用方向 检索、聚类、排序、语义匹配 对话、写作、推理、代码生成
参数规模 较小(M~B 级) 较大(B~T 级)

可以这样理解:

2.2.输出向量

Embedding 模型:输出一个定长向量(句子/段落语义表示),通常取 [CLS] token 或平均池化

2.2.1. [CLS] token 是什么?

2.2.2. 为什么可以取 [CLS] 向量作为句子 embedding?

2.2.3. 取 [CLS] vs 平均池化

常见的两种做法:

  1. [CLS] 向量
    • 直接拿最后一层 [CLS] hidden state(比如 768 维)。
    • 优点:计算简单,语义浓缩
    • 缺点:依赖预训练时的任务设计,有时候泛化性不如平均池化,不稳定。
  2. 平均池化(mean pooling)
    • 对所有 token 的 hidden states 求平均,得到句子表示。
    • 优点:更稳定,不依赖模型是否专门训练过 [CLS]
    • 缺点:可能稀释掉一些重要 token 的权重。

2.2.4. 实例

假设输入句子:

[CLS] 我 喜欢 学习 embedding 模型 [SEP]

2.2.5. 现代 embedding 模型的选择

3. 训练方法

通过 对比学习 + 排序损失 + 多任务增强-训练,来学习“语义空间”。

embedding 模型和普通语言模型不同,核心是相对相似性学习contrastive learning)。

3.1.对比学习(Contrastive Learning)

3.2.语义等价约束(CoSENT / Triplet Loss)

3.3.多任务监督

embedding 模型通常用多种任务联合训练:

4. 评估指标

5. 常见模型分类

Embedding model 的原理就是 把语义相似度转化为几何相似度,通过 对比学习 / 排序损失 / 多任务训练 来学习一个“语义空间”。

6.训练方法-要点

Embedding 模型,常见的训练方法:

  1. 联合训练:损失函数,加权求和
  2. 交替训练
  3. 分阶段训练:先无监督预训练 pre-train,再有监督 fine-tune,这种复杂度低

常见做法,细节:

  1. 联合训练(simultaneous):总损失,为各种损失函数的加权求和

    \[L_{total}=\sum_i \alpha_i L_i\]
    • 直接在同一 batch / 同一次反向传播里同时优化。
    • 优点:共享表征、正则化效应;
    • 缺点:不同任务/损失会有梯度冲突或量级差异,导致某些任务被“淹没”。可用 GradNorm / PCGrad 等方法缓解。
  2. 交替 / 轮换训练(alternating):每个 step 或每个 epoch 切换任务(或用不同 task-specific batches)。缓解权重调参问题,但训练调度更复杂。
  3. 分阶段(pretrain → finetune):先大规模用 InfoNCE/contrastive 无监督预训练,再用监督损失(如 CoSENT / MSE / ranking)微调(这是很常见且稳定的流程)。

下面会对每种损失函数,讨论其:公式、参数含义、物理(几何)含义、梯度直觉、优缺点和实战建议。

6.1.InfoNCE / Contrastive loss(包括检索场景下的 softmax 形式)

公式(query-style),给定 query \(q\)、一个正例 \(p\) 和负例集合 \(\mathcal{N}\):

\[\mathcal{L}_{\text{InfoNCE}} = -\log\frac{\exp(\operatorname{sim}(q,p)/\tau)}{\exp(\operatorname{sim}(q,p)/\tau)+\sum_{n\in\mathcal{N}}\exp(\operatorname{sim}(q,n)/\tau)}\]

要点:

InfoNCE 全称是 Information Noise-Contrastive Estimation,最初用于互信息最大化,现在是对比学习里最常用的损失函数。

NCE (Noise-Contrastive Estimation 噪声对比估计),是一种统计方法,用来把复杂的概率密度估计问题,转化为一个二分类对比问题:区分“真实样本”和“噪声样本”。

L2 归一化(也叫 向量标准化),是把向量长度缩放到 1,这样相似度计算就只和方向有关,而与长度无关。

6.2.NT-Xent(Normalized Temperature-scaled Cross Entropy,SimCLR 中的形式)

公式(对称版本,2N views):对 batch 中每一对正样本 (i,j)

\[\ell_{i,j}=-\log\frac{\exp(\operatorname{sim}(z_i,z_j)/\tau)}{\sum_{k=1}^{2N,\;k\neq i}\exp(\operatorname{sim}(z_i,z_k)/\tau)}\]

总体 loss 对所有正对求平均(同时对称计算 \((i,j)\) 和 \((j,i)\))。

6.3. Triplet Loss(锚-正-负)

公式(距离版):

\[\mathcal{L}_{\text{triplet}}=\max\big(0,\; d(a,p)-d(a,n)+m\big)\]

或相似度版:

\[\max\big(0,\; s(a,n)-s(a,p)+m\big)\]

要点:

6.4. Pairwise margin / Ranking loss(用于排序/检索)

常见形式:

\[\mathcal{L}=\max\big(0,\; \text{margin} - (s(q,p)-s(q,n))\big)\]

或用 logistic/sigmoid 平滑:

\[\mathcal{L}=\log\big(1+\exp(-\lambda (s(q,p)-s(q,n)))\big)\]

6.5. Cross-entropy(softmax 分类式检索)

在检索任务中,把所有候选看作类(或把正例当作“正确类别”),用普通 Cross-Entropy 交叉熵损失:

\[p_i=\frac{\exp(\operatorname{sim}(q,d_i)/\tau)}{\sum_j\exp(\operatorname{sim}(q,d_j)/\tau)},\quad \mathcal{L}=-\log p_{\text{pos}}\]

这在实现上和 InfoNCE 是等价的(当每个 query 只有一个正例时)。因此 InfoNCE 可看作一种 softmax-CE 的对比式写法

6.6. Supervised Contrastive Loss(SupCon)

公式(Khosla et al.),对样本 \(i\) 令 \(P(i)\) 为同一类的其他样本集合:

\[\mathcal{L}_i = -\frac{1}{|P(i)|}\sum_{p\in P(i)}\log\frac{\exp(\operatorname{sim}(z_i,z_p)/\tau)}{\sum_{a\neq i}\exp(\operatorname{sim}(z_i,z_a)/\tau)}\]

再对 batch 求均值。

含义:把同类样本聚成簇,同时将不同类簇分开;把有标签信息的优势直接用在 contrastive 框架里(比单纯 CE 更强调表征簇结构)。

6.7. CoSENT(排名/一致性损失,针对 STS)

CoSENT 全称是 Contrastive Sentence (Embedding) Ordering Loss,是一种用于句子排序的损失函数。

STS = Semantic Textual Similarity(语义文本相似度),是一种用于衡量句子语义相似度的任务。

CoSENT 的核心思想不是直接回归 label 到 cosine,而是利用标注的相对排名信息,用 pairwise 的 log-sum-exp 来保持“相似度排序一致性”。论文里给出的一个(interaction)形式是:

\[\mathcal{L}_{\text{CoSENT}}=\log\!\Big(1+\sum_{(k,l):\; \text{label}(i,j)>\text{label}(k,l)}\exp\big(\lambda\big(f(k,l)-f(i,j)\big)\big)\Big)\]

要点:

CoSENT 损失函数,主要用在 STS(Semantic Textual Similarity)语义文本相似度(排序)场景。

CoSENT = Cosine Sentence (Embedding) Loss

在 STS 任务里,常见做法是:

问题:MSE 强制相似度标签的数值接近,但实际下游任务只关心 排序关系,而不是数值拟合。比如:

即便模型预测 0.8 vs 0.7 也足够了,不需要强制预测 4.9/5

CoSENT 的核心思想

把 STS 看作一个排序问题,而不是回归问题。

CoSENT 的一种常见写法:

\[L = \log\Big(1+\sum_{(i,j)} \exp\big(\lambda \cdot (\cos(u_j,v_j)-\cos(u_i,v_i))\big)\Big)\]

其中:

参数与物理含义:

优势:

应用场景:

一句话总结CoSENT 是一种基于余弦相似度的排序型损失函数,专门为 STS 设计,它不再回归具体分数,而是直接优化“语义相似度的排序关系”,训练与预测保持一致,效果更稳定。

6.8. MSE / Cosine-regression(直接回归相似度)

公式(若 label 在 [-1,1] 或 [0,5] 需先归一化):

\[\mathcal{L}_{\text{MSE}}=(\operatorname{sim}(u,v)-y)^2\]

6.9. 损失合并(Joint multi-loss)与权重策略

常见合并:

\[L_{\text{total}}=\alpha \cdot L_{\text{InfoNCE}} + \beta \cdot L_{\text{CoSENT}} + \gamma \cdot L_{\text{CE}} + \dots\]

6.10. 超参数/工程实战建议(汇总)

6.11. 小结(一句话)

多数现代 sentence/embedding pipeline 会结合多种损失

M3E: Moka Massive Mixed Embedding Model,3个M

关联资料

RAG两大核心利器: M3E-embedding和bge-rerank

原文地址:https://ningg.top/ai-series-embedding-model-details/
微信公众号 ningg, 联系我

同类文章:

微信搜索: 公众号 ningg, 联系我, 交个朋友.

Top