FM

LR + 特征交叉项:进行特征组合增强模型泛化能力。

$$ y=w_{0}+\sum_{i=1}^{n}{w_{i}x_{i}}+\sum_{i=1}^{n}{\sum_{i+1}^{n}{<v_{i},v_{j}>x_{i}x_{j}}} $$

式中$v_i$为特征的embedding向量

FFM

FM + Field:将特征按照事先规则分多个场。每个特征将被映射为多个隐向量,每个隐向量对应一个场。当两个特征组合时,用对方对应的场对应的隐向量做内积。FM可看做只有一个场的FFM。

$$ y=w_{0}+\sum_{i=1}^{n}{w_{i}x_{i}}+\sum_{i=1}^{n}{\sum_{i+1}^{n}{<v_{i,f_j}, v_{j,f_i}>x_{i}x_{j}}} $$

Wide & Deep

Wide + Deep:由浅层(或单层)的Wide部分神经网络和深层的Deep部分多层神经网络组成,输出层采用softmax或logistics regression综合Wide和Deep部分的输出。Wide部分有利于增强模型的“记忆能力”,Deep部分有利于增强模型的“泛化能力”。

$$ P(Y=1|x)=\sigma(W^T_{wide}[x, \phi (x)] + W^T_{deep}a^{l_f} + b) $$

Wide & Deep
Wide & Deep 网络架构

DeepFM

Deep + FM:用FM做特征间低阶组合,用Deep NN部分做特征间高阶组合,并行方式组合。DeepFM不需要预训练和人工特征工程。

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

DeepFM
DeepFM 网络架构

tf.nn.embedding_lookup_sparse() 多值离散特征的embedding处理

DCN

Deep + Cross: 深度神经网络+应用显式特征交叉。特征交叉部分公式为:

$$x_{l+1}=x_0x^T_lw_l+b_l+x_l=f(x_l, w_l, b_l)+x_l$$

Deep&Cross
Deep & Cross 网络架构

面试问题

  1. DeepFM和Wide&Deep的deep部分有什么不同?
    原生的wide&deep里面的deep输入是onehot,数值特征和标签特征都有;DeepFM中的deep是连续数值的embedding输入,且与FM的embedding共享,训练更快更准确。

参考资料