crackcell's dustbin home projects
首页 > Wide & Deep模型小结 > 正文

Wide & Deep模型小结

1 前言

Wide & Deep1是Google 2016年提出的一个模型,最初用在Google Play的推荐场景。创造性的将浅层模型(Wide)和深度神经网络(Deep)结合在一起。

这种结合整合了2个模型各自的优点的同时弥补了各自的缺点:

  • Wide模型通过特征交叉,对于特征之间的相互作用,具有良好的记忆能力和可解释性。但若想模型具备更好的泛化能力,需要比较多的特征工程工作
  • Deep模型不需要太多的特征工程,通常具有良好的泛化能力。但在高维稀疏场景,容易“过泛化(over-generalize)”

2 模型结构

wide_deep_arch.png

Figure 1: Wide & Deep模型结构

  • 中间的是WD的模型结构,左右两边是单独的Wide模型和Deep模型的对比
  • Wide部分:跟LR模型一样
  • Deep部分:
    • CTR数据非常稀疏,不能直接输入给神经网络。需要先经过一层Embedding,将稀疏数据嵌入到低维稠密向量中,再输入神经网络。论文中使用的是一个32维的向量
    • 隐层是3层ReLU
  • 最终Wide和Deep部分都共享一个Sigmoid输出层: \(P(Y=1|x)=\sigma(w_{wide}^T[x,\phi(x)]) + w_{deep}^T(a^{(l_f)}) + b\) , \(\sigma\) 是sigmoid函数, \(\phi\) 是特征交叉操作

3 模型训练

Wide & Deep采用“联合训练(joint training)”。

联合训练是相对于“ensemble”来说的:

  • Ensemble在训练时,对两个模型分别训练,只是在预测时将两个模型的预测进行整合。为了达到合适的效果,通常需要两个模型都更大
  • Joint training将两个模型一起训练

论文1中对wide部分使用带L1正则的FTRL,deep部分使用AdaGrad来训练。

3.1 初始化权重

每次重新训练使用前一次模型wide部分线性权重和deep部分的Embedding作为初始权值。

Footnotes:

1

Cheng, H. T. , Koc, L. , Harmsen, J. , Shaked, T. , Chandra, T. , & Aradhye, H. , et al. (2016). Wide & deep learning for recommender systems.

Date: Mon Feb 25 14:33:37 2019

Author: Menglong TAN

Created: 2019-02-25 Mon 16:32

Validate

Modified theme and code from Tom Preston-Werner.