第 131 题:Wide&Deep的工程实践,Wide侧特征的手工设计原则?
题目
Wide&Deep的工程实践,Wide侧特征的手工设计原则?
完整讲解
一、Wide&Deep 的结构
Wide 侧:线性模型 $\boldsymbol{w}^\top \boldsymbol{x} + b$,输入为手工设计的原始特征与交叉特征,负责记忆(memorization)、拟合历史共现与规则。Deep 侧:嵌入 + 多层 MLP,负责泛化(generalization)、学习稠密表示的组合。输出为
\(P(y=1) = \sigma\left( \boldsymbol{w}_{\text{wide}}^\top \boldsymbol{x} + \boldsymbol{w}_{\text{deep}}^\top \boldsymbol{a}^{(L)} + b \right).\)
两路联合训练、联合 serving。
二、Wide 侧特征的手工设计原则
- 原始特征:单特征(user_id、item_id、年龄、类目等)经嵌入或 one-hot 输入 Wide;Wide 侧通常用离散化/分桶后的 ID 与类别,便于线性拟合。
- 交叉特征:关键交叉必须显式放进 Wide,否则线性部分学不到。典型:user 与 item 的交叉(user_id × item_id、user_group × item_category)、上下文与 item 的交叉(position × item_id、device × category)。原则:业务上「共现即强信号」的组合应作为 Wide 的输入,使模型能直接记住「A 与 B 同时出现时点击高」。
- 稀疏与可解释:Wide 侧特征多稀疏、可解释;避免把高维稠密向量直接塞进 Wide(参数量爆炸),用离散交叉与 ID 即可。
- 避免 Deep 重复:若某交叉已在 Deep 的嵌入与 MLP 中可表达,Wide 可不必重复;Wide 重点放「规则性强、需记忆」的少量核心交叉。
三、工程实践
- 特征工程与交叉枚举需与业务强结合;常用 GBDT 或经验确定重要交叉后加入 Wide。
- Wide 参数量 = 特征维度(若 one-hot 则等于总 bucket 数);需哈希或限制 bucket 数以控规模。
- 联合训练时 Wide 与 Deep 的 loss 一致(如 CTR 交叉熵),无需分阶段;可对 Wide 加 L1 做稀疏。
面试要点
- 能说明 Wide 侧为线性、输入为手工原始+交叉特征,负责记忆;Deep 负责泛化。
- 能说清 Wide 特征设计原则:关键交叉显式加入、业务强共现信号、稀疏可解释、避免与 Deep 完全重复。
- 能列举典型 Wide 交叉:user×item、position×item、device×category 等,以及参数量与哈希控制。
记忆要点
- Wide=线性+手工特征与交叉,记忆;Deep=嵌入+MLP,泛化;输出两路相加再 sigmoid。
- Wide 设计:关键交叉显式、共现即强信号、稀疏可解释、控参数量(哈希/bucket)。
- 典型交叉:user×item、position×item、上下文×item;联合训练、可 Wide 加 L1。