Embedding 特征在传统机器学习中如何使用?
简化版
Embedding 将高基数离散 ID 映射成稠密向量。向量可在当前任务端到端训练,也可由合规的历史数据预训练后作为固定特征供逻辑回归、树模型等传统模型使用。它能压缩表示并表达训练目标下的相似性,但必须定义聚合、切分、冷启动、版本和泄漏边界。
详细版
-
词表映射和 unknown ID 是模型契约的一部分。
-
表参数量等于 vocabulary_size×embedding_dim。
-
稀有 ID 梯度少,向量估计方差高。
-
多值特征需用 mean/sum/attention 聚合并处理长度。
-
预训练 embedding 也要按目标任务和时间切分验证。
-
供传统模型使用时,要明确冻结还是联合训练;传统模型通常消费冻结后的向量或其聚合统计。
完整版教学
一、Embedding 是向量表示,不是天然语义
one-hot 经过线性层等价于选取权重矩阵的一行,端到端 Embedding 把这一步直接实现成索引查表。传统模型不能通过自身梯度更新一张独立的 embedding 表时,可先在训练期语料或辅助任务上学向量,再把每个样本查出的向量维度作为普通数值特征。
相似性来自共同优化目标,而非 ID 数字接近。
向量维度控制容量:太小表达不足,太大增加内存并容易记忆;没有只由词表大小决定的最优公式。
二、底层机制与公式
E in R^(V x D)
e_i=E[id_i]
params=V*D
三、带数字的推演
词表 100 万、维度 64、FP32 表占 1,000,000×64×4≈256MB;换 FP16 约 128MB。
若线上每请求查 20 个 ID,访存和分布式查表也会成为成本。
四、方案对比
| 方案/对象 | 核心特点 | 代价或边界 |
|---|---|---|
| One-hot | 无训练相似性假设 | 高维稀疏 |
| 随机初始化 Embedding | 随任务联合学习 | 冷 ID 不稳 |
| 预训练 Embedding | 利用外部共现 | 可能域偏移/泄漏 |
五、两种使用方式与执行流程
- 端到端方式:Embedding 表与下游神经网络一起训练,损失可直接更新命中的行。
- 冻结特征方式:只用训练时间窗内的数据训练或选取预训练表,随后冻结;对单 ID 直接查向量,对 ID 集合做 mean/sum/attention 或统计池化,再输入逻辑回归、GBDT 等。若用目标标签学习 embedding,这一步也必须在每个训练折内部完成。
训练期建词表 -> 保留 PAD/UNK -> 仅用训练范围学习/加载向量
-> 查表并按固定规则聚合 -> 联合训练或冻结后交给传统模型
-> 保存词表、表权重和聚合版本 -> 线上同映射 -> 监控 OOV
六、边界条件与工程代价
推荐系统若用未来交互预训练 embedding,再评估过去时点,会产生时间穿越;预训练语料也必须遵守 cutoff。
新 ID 全落到同一个 UNK 会丢失差异,可结合元数据、哈希桶或冷启动模型,但要验证碰撞和偏差。
记忆钩子:记住 embedding 是“用 ID 取一行、靠任务梯度塑造空间”。
七、常见误区与追问
-
误区:ID 数字相近会得到相似向量。 ID 只是行索引,相似性由训练信号决定。
-
追问:维度怎么选? 按验证收益、表内存和稀有度做消融。
-
误区:Embedding 总比 one-hot 好。 小词表线性任务中 one-hot 更透明且足够。
-
追问:OOV 怎么办? 固定 UNK/哈希/元数据回退并保持映射版本。
-
追问:表为何可能成为瓶颈? 参数和访问以 V×D 增长,常受内存带宽限制。
-
追问:怎样交给 GBDT? 冻结向量后将 D 个维度作为 D 个数值特征;多 ID 先用固定池化得到定长向量,且全部拟合步骤必须遵守训练折和时间截止。
八、加强记忆
记住 embedding 是“用 ID 取一行、靠任务梯度塑造空间”。
回答时区分端到端更新与冻结后供传统模型使用,同时算 V×D 内存,并补齐聚合、稀有 ID、切分泄漏与线上 OOV。