端到端的高低阶特征学习——DeepFM模型

paper

解决痛点

DeepFM模型对比了FNN、PNN、Deep&wide,在其缺点上进行了改进,得到了DeepFM模型。
端到端的高低阶特征学习——DeepFM模型
这三种模型的结构如上图所示,其不足分别如下:

FNN

缺点如下:

  1. FNN底层通过为FM预训练得到向量,预训练有两个缺点:
    (1)FNN embedding矩阵的参数会受到预训练结果的影响
    (2)预训练的引入使得模型的效率降低
  2. FNN只能学到高阶特征组合,学习不到低阶特征
PNN
  1. 无法学些到低阶特征(可以理解为输入直接过了若干层网络,只学习到了高阶组合)
deep&wide
  1. LR部分需要进行手动的特征的组合(原论文说LR部分输入的是原始的特征和二阶特征组合)
  2. deep 和wide部分分别对特征做了不同的embedding,效率和效果较差

所以希望能提出一个模型可以解决上述三种模型的不足。

网络结构

端到端的高低阶特征学习——DeepFM模型
模型整体结构如图所示,j结构上有点类似deep&wide。

输出

输出为FM部分和DNN部分的组合,并通过sigmoid函数转化为(0,1):
y^=sigmoid(yFM+yDNN)\hat{y}=\operatorname{sigmoid}\left(y_{F M}+y_{D N N}\right)

最底层

原始输入,不同filed构成的sparse Features

Dense层

将原始输入进行embedding,得到dense层向量。与deep&wide不同的是,。
这里有两个tick:

  • embedding过程的权重V和得到的dense向量在FM部分和deep部分是共享的
  • 不同的filed的维度可能不同,但是得到embedding向量的维度却是相同的
FM部分

端到端的高低阶特征学习——DeepFM模型
即FM模型,可以学习到一阶特征和二阶特征,FM的表达式如下:
yFM=w,x+i=1dj=i+1dVi,Vjxixjy_{F M}=\langle w, x\rangle+\sum_{i=1}^{d} \sum_{j=i+1}^{d}\left\langle V_{i}, V_{j}\right\rangle x_{i} \cdot x_{j}加号左右两边分别表示一阶和二阶的部分。

Deep部分

端到端的高低阶特征学习——DeepFM模型
DNN结构图如上,其中第ll个隐藏层的表达式如下:
a(l+1)=σ(W(l)a(l)+b(l))a^{(l+1)}=\sigma\left(W^{(l)} a^{(l)}+b^{(l)}\right)
dense部分的输入为:
a(0)=[e1,e2,,em]a^{(0)}=\left[e_{1}, e_{2}, \ldots, e_{m}\right]这里有m个filed,eme_m表示每个filed 经过embedding后得到的等维度的向量。

最终通过FM和Deep部分得到最终的输出。

总结

从下表可以看出,DeepFM拥有其他三种模型都有的优点,并解决了对应的缺点。
端到端的高低阶特征学习——DeepFM模型
总的来说,DeepFM:

  1. 不需要预训练
  2. 不需要任何的特征工程,实现端到端
  3. 可以学习到高阶和低阶特征
  4. FM和Deep模块的embedding是共享的,可以进行联合训练,效果更好。