DeepFM: A Factorization-Machine based Neural Network for CTR Prediction


目录
  • 主要内容
    • 数据
    • FM 部分
    • Deep 部分
    • Joint
    • 其它细节
  • 代码

Guo H., Tang R., Ye Y., Li Z. and He X. DeepFM: a factorization-machine based neural network for CTR prediction. In International Joint Conference on Artificial Intelligence (IJCAI), 2017.

作者认为特征的low-order交叉和high-order交叉对于预测都是同等重要的, 但是之前的工作要么偏向low-order, 要么偏向high-order, 要么依赖特征工程. 本文就提出一种能够自动学习的DeepFM.

主要内容

数据

假设数据形为 \((x, y)\), 其中 \(x\) 包含 \(m\)-fields:

\[x = [x_{field_1}, x_{field_2}, \cdots, x_{field_m}]. \]

每一个field就是某一种特征属性, 对于类别型的field, \(x_{field}\)是 one-hot 向量 (如性别等属性), 而对于连续型的 field \(x_{field}\)就是值本身 (比如年龄等属性). 通常 \(x\) 是一个非常稀疏的向量.

标签 \(y \in \{0, 1\}\) 则表示该 item 是否被点击了.

FM 部分

FM 部分实际上就是:

  1. Addition 模块:

\[\langle w, x \rangle = \sum_{i} w_i x_i. \]

  1. 交叉模块 (内积):

\[\sum_{i=1}\sum_{j = i + 1} \langle V_i, V_j \rangle x_i \cdot x_j, \]

其中 \(V_i \in \mathbb{R}^k\)\(x_i\) 所对应的 embedding.

  1. 最后

\[y_{FM} = \langle w, x \rangle = \sum_{i} w_i x_i + \sum_{i=1}\sum_{j = i + 1} \langle V_i, V_j \rangle x_i \cdot x_j. \]

问: 为什么不 field-aware ?

Deep 部分

  1. 通过 embedding layer 为每个 field 提取 embedding \(e\), 最后得到:

\[a^{(0)} = [e_1, e_2, \cdots, e_m]. \]

  1. 通过 MLP 获得 high-order 的信息:

\[a^{(l+1)} = \sigma (W^{(l)}a^{(l)} + b^{(l)}), \\ y_{DNN} = a^{(H + 1)}. \]

这里 \(\sigma(\cdot)\) 仅仅代表激活函数.

Joint

最后通过

\[\hat{y} = sigmoid(y_{FM} + y_{DNN}) \]

进行预测.

其它细节

  1. FM, Deep 部分共享 \(V\);
  2. dropout: 0.5;
  3. MLP: 400-400-400;
  4. optimizer: Adam;
  5. Actication: ReLU

代码

[official]
[PyTorch]
[TensorFlow]