Embedding离散特征的原理与大规模场景的优化
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因子分解控制更新速度