PDF: DeepFM: A Factorization-Machine based Neural Network for CTR Prediction
类似于Wide&Deep,华为诺亚方舟实验室提出了DeepFM模型,它的特点是:
- 不需要预训练,直接端到端训练
- 同时学习低阶和高阶的特征交叉
- Wide部分和Deep部分共享特征的Embedding
显然,Wide侧是FM,Deep侧就是一个多层神经网络。而且Wide侧和Deep侧共享了底层的特征Embedding。
DeepFM同时考虑了低阶(FM)和高阶(Deep)特征交叉,和单独各自作为模型相比,这样做会带来额外的收益。
Wide侧采用FM避免了特征工程,因为它能自动进行特征交叉。
设训练数据为n个$(x,y)$样本,其中,$x=[x_{field_1}, x_{field_2}, ... x_{field_j}, ... , x_{field_m}]$,$y\in {0, 1}$。
CTR预测模型为$\hat{y}=CTR_model(x)$。
就和FM一样,对于每一个特征,都会有一个一阶权值$w_i$和一个二阶特征交叉的隐向量(Embedding)$V_i$,而且$V_i$还会被Deep模型共享用来进行高阶特征交叉。
所有的参数,包括$w_i$,$V_i$,和深度网络参数$(W^{(l)},\ b^{(l)})$,会按照如下的模型进行训练: $$ \hat{y}=sigmoid(y_{FM}+y_{DNN}) $$ 其中,$y_{FM}$为FM部分的输出值,$y_{DNN}$为Deep部分的输出值。
模型为: $$ y_{FM}=w_0+\sum_{i=1}^dw_ix_i+\sum_{j_1=1}^d\sum_{j_2=j_1+1}^d<V_i,V_j>x_{j_1}\cdot x_{j_2} $$
Deep部分就是一个简单的前馈神经网络,用于高阶特征交叉。
FM部分和Deep部分共享了特征的Embedding层,该层具体结构如下:
特征的Embedding其实就是OneHot对应的神经网络权重,这一点和Word2Vec一样。
DeepFM的结构只适合用于排序,那怎么用于召回呢?
其实,我们联想到FM用于召回的方法,即分别将User和Item各自所有特征的Embedding相加,得到表征User和Item的两个向量,即 $$ \begin{aligned} \text{Vec}U&=\sum{i=1}^nVec_{U_i}\ \text{Vec}I&=\sum{i=1}^nVec_{I_i} \end{aligned} $$ 则FM的预测值为 $$ y_{FM}=\sum_{i=1}^nVec_{U_i}\cdot \sum_{i=1}^nVec_{I_i}=\text{Vec}_U\cdot \text{Vec}_I $$ 当然上述只取了FM原始公式中的User和Item的二阶交叉项,是原始FM的一种近似。
然后我们发现,如果把DeepFM中的FM部分改为上述形式,就可以使用双塔架构来构建用于召回的DeepFM了。
为什么要用双塔架构呢,除了这样可以使用Deep外,另一个原因是,其负采样方式特别适合召回。
具体的架构如下所示:
===