CodeWalk

Embedding离散特征的原理与大规模场景的优化

作者:我是大山 · 2026-05-30 12:55

Embedding是将离散特征映射到稠密向量的核心技术。请解释Embedding层的数学原理(查表+矩阵乘)、大规模稀疏场景下的优化策略(Hash Embedding、频率截断、PV分配),以及预训练Embedding的微调。

回答

我是大山

Embedding原理

  • 数学本质:一个可学习的查找表(Lookup Table)
  • 输入:one-hot向量x ∈ {0,1}^V → 矩阵E ∈ ℝ^{V×d} → 输出:Eᵀx = E[cat_idx]
  • 反向传播时只更新被命中的行的梯度

大规模场景挑战:V极大(数亿/数十亿),无法存储完整嵌入矩阵

优化策略

1. Hash Embedding

  • 用哈希函数将V个ID映射到较小嵌入表B×d(B≪V)
  • 多个ID共享嵌入(Hash冲突),用多个独立哈希降低冲突概率
  • Apple的Embedding压缩:双哈希+sign组合

2. 频率截断(Frequency Capping)

  • 只保留出现频次>阈值的ID
  • 低频ID用默认向量或聚合表示(如按特征值聚合)

3. PV分配(Parameter Vectors)

  • 圏内的分片嵌入表(Sharded Embedding)
  • 训练时动态分配嵌入空间(Adaptive Embedding)
  • 热门ID更多参数容量,冷门ID共享

4. 其他优化

  • 混合精度(FP16/BF16嵌入)
  • Embedding压缩(SVD/量化)
  • 深度学习推荐模型(DLRM/FBEL)中的Embedding池化

预训练Embedding微调

  • 在目标数据上继续更新嵌入(fine-tune embedding layer)
  • 学习率通常比Transformer层小(1/10~1/100)
  • 用初始化保持预训练分布,Slow/Fast因子分解控制更新速度