返回
Featured image of post Wide & Deep,异构模型奠基者

Wide & Deep,异构模型奠基者

详细介绍 Wide & Deep 模型的原理、优势及代码实现

Wide & Deep Learning for Recommender Systems

模型简介

Wide & Deep 模型是 Google 在 2016 年提出的一个推荐系统模型,它巧妙地结合了线性模型的记忆能力(Memorization)和深度神经网络的泛化能力(Generalization),在 Google Play 商店的应用推荐中取得了显著效果。

Wide 侧:精准的特征记忆能力

模型结构

Wide 部分是一个广义线性模型: $y = w^T x + b$ 其中 $y$ 是预测值,$x = [x_1, x_2, …, x_d]$ 是特征向量,$w = [w_1, w_2, …, w_d]$ 是模型参数,$b$ 是偏置项。

特征交叉

  • 交叉特征变换:$$\varphi_k(x) = \prod_{i=1}^{d} x_i^{c_{ki}},c_{ki}\in {0,1}$$
  • 作用:捕捉特征间的相互作用,为模型引入非线性
  • 示例AND(gender=female, language=en) 特征,仅当两个条件同时满足时为1

Wide 侧的优势

  1. 强大的记忆能力:能够准确记住历史数据中的重要特征组合
  2. 模型简洁:参数量少,主要通过特征交叉来获取复杂模式
  3. 可解释性强:特征权重直观反映特征重要性
  4. 优化高效:采用 FTRL 算法配合 L1 正则化,适合处理稀疏特征

Deep 侧:强大的特征泛化能力

网络结构

  1. Embedding 层

    • 将高维稀疏特征转换为低维稠密向量
    • 维度一般在 10-100 之间
    • 通过端到端训练学习得到
  2. 隐藏层 每层的计算:$$a^{(l+1)} = f(W^{(l)}a^{(l)} + b^{(l)})$$

    • 使用 ReLU 激活函数
    • 多层非线性变换提供强大的特征抽取能力
    • AdaGrad 优化器自适应调整学习率

Deep 侧的优势

  1. 强大的泛化能力:可以发现未出现过的特征组合
  2. 自动特征抽取:减少人工特征工程
  3. 处理高维特征:通过 Embedding 有效降维

模型融合与训练

联合预测

$$P(Y = 1 | x) = \sigma(w_{\text{wide}}^T [x, \varphi(x)] + w_{\text{deep}}^T a^{(l_f)} + b)$$

训练策略

  1. 联合训练:同时优化 Wide 和 Deep 两部分
  2. 互补性:Wide 侧记忆特定模式,Deep 侧负责泛化
  3. 增量训练:支持在线学习,可以持续优化模型

应用场景

  1. 推荐系统(用户-物品匹配)
  2. 广告点击率预测
  3. 搜索排序
  4. 任何需要同时处理记忆与泛化的场景

优缺点对比

维度 Wide 部分 Deep 部分
优势 记忆性强、可解释性好 泛化性强、自动特征组合
局限性 依赖特征工程、难以处理新组合 需要大量数据、计算成本较高
特征处理 离散特征交叉 连续/离散特征Embedding
优化算法 FTRL + L1 正则 AdaGrad

论文细节

Google Play 实践经验

  1. Wide 侧:重点使用用户已安装应用与候选应用的交叉特征
  2. Deep 侧:使用全量特征,三层 ReLU 网络(1200→256)
  3. 增量训练:复用历史模型参数快速更新

实验效果

  1. 实验设置

    • 对照组:1% 用户使用优化的 Wide-only 模型
    • 实验组:1% 用户使用 Wide & Deep 模型
    • 特征配置:两组使用相同特征集
  2. 在线效果

    • Wide & Deep vs Wide-only: +3.9% 应用获取率提升
    • Wide & Deep vs Deep-only: +1.0% 应用获取率提升
    • 所有提升均具有统计显著性
  3. 离线评估

    • 指标:ROC 曲线下面积 (AUC)
    • Wide & Deep 模型略优于基线模型
    • 线上效果优于离线效果,作者推测原因:离线数据集展示和标签固定,在线系统可以探索性推荐,具有实时学习用户反馈

常见面试问题

Q1: 为什么要将 Wide 和 Deep 模型结合?

  • 记忆与泛化互补:Wide 部分通过特征交叉记忆高频模式,Deep 部分通过 Embedding 泛化低频组合
  • 工程实践平衡:Wide 保证关键规则不丢失,Deep 挖掘潜在关联
  • 在线学习支持:Wide 部分可以快速更新响应数据变化

Q2: Wide 部分为什么使用 FTRL 优化器?

  • 适应稀疏特征:FTRL 的稀疏解特性配合 L1 正则化能自动特征选择
  • 在线学习友好:支持增量更新,适合处理流式数据
  • 内存效率高:对不活跃特征自动置零,节省存储

Q3: 如何处理特征交叉?两种方式对比

Wide 侧显式交叉 Deep 侧隐式交叉
实现方式 人工设计交叉特征 Embedding 自动组合
计算复杂度 随特征维度指数增长 线性增长
可发现性 只能捕获已知组合 能发现未知组合
可解释性 权重明确反映特征重要性 黑箱难以解释

Q4: 模型训练有哪些注意事项?

  1. 特征去重:避免 Wide 和 Deep 侧输入完全相同特征
  2. 正则化配置:Wide 侧用 L1 正则,Deep 侧用 L2 正则
  3. 学习率调整:Wide 部分学习率通常比 Deep 部分小 10 倍
  4. 数据分布:确保在线/离线数据分布一致

Q5: 与 DeepFM 的区别?

  • 特征交叉方式:DeepFM 用 FM 替代 Wide 部分,自动进行二阶特征交叉
  • 参数共享:DeepFM 的 FM 和 Deep 共享 Embedding
  • 工程复杂度:Wide&Deep 需要人工特征工程,DeepFM 自动化程度更高
Licensed under CC BY-NC-SA 4.0
© 2023 - 2025 壹壹贰捌· 0Days
共书写了258.6k字·共 93篇文章 京ICP备2023035941号-1