DeepFM
PDF: DeepFM: A Factorization-Machine based Neural Network for CTR Prediction
类似于Wide&Deep,华为诺亚方舟实验室提出了DeepFM模型,它的特点是:
Wide部分和Deep部分共享特征的Embedding
DeepFM架构
显然,Wide侧是FM,Deep侧就是一个多层神经网络。而且Wide侧和Deep侧共享了底层的特征Embedding。
DeepFM同时考虑了低阶(FM)和高阶(Deep)特征交叉,和单独各自作为模型相比,这样做会带来额外的收益。
Wide侧采用FM避免了特征工程,因为它能自动进行特征交叉。
DeepFM原理
设训练数据为n个(x,y)样本,其中,x=[xfield1,xfield2,...xfieldj,...,xfieldm],y∈0,1。
CTR预测模型为y^=CTR_model(x)。
就和FM一样,对于每一个特征,都会有一个一阶权值wi和一个二阶特征交叉的隐向量(Embedding)Vi,而且Vi还会被Deep模型共享用来进行高阶特征交叉。
所有的参数,包括wi,Vi,和深度网络参数(W(l), b(l)),会按照如下的模型进行训练:
y^=sigmoid(yFM+yDNN) 其中,yFM为FM部分的输出值,yDNN为Deep部分的输出值。
FM部分
模型为:
yFM=w0+i=1∑dwixi+j1=1∑dj2=j1+1∑d<Vi,Vj>xj1⋅xj2 Deep部分
Deep部分就是一个简单的前馈神经网络,用于高阶特征交叉。
特征的Embedding层
FM部分和Deep部分共享了特征的Embedding层,该层具体结构如下:
特征的Embedding其实就是OneHot对应的神经网络权重,这一点和Word2Vec一样。
基于双塔架构的DeepFM用于召回
DeepFM的结构只适合用于排序,那怎么用于召回呢?
其实,我们联想到FM用于召回的方法,即分别将User和Item各自所有特征的Embedding相加,得到表征User和Item的两个向量,即
VecUVecI=i=1∑nVecUi=i=1∑nVecIi 则FM的预测值为
yFM=i=1∑nVecUi⋅i=1∑nVecIi=VecU⋅VecI 当然上述只取了FM原始公式中的User和Item的二阶交叉项,是原始FM的一种近似。
然后我们发现,如果把DeepFM中的FM部分改为上述形式,就可以使用双塔架构来构建用于召回的DeepFM了。
为什么要用双塔架构呢,除了这样可以使用Deep外,另一个原因是,其负采样方式特别适合召回。
具体的架构如下所示:
参考资料
===
CTR预估算法之FM, FFM, DeepFM及实践
FFM及DeepFFM模型在推荐系统的探索
翻译:DeepFM:基于因子分解 -机器的CTR预测神经网络
【通俗易懂】手把手带你实现DeepFM!
推荐系统遇上深度学习(三)--DeepFM模型理论和实践
推荐算法——从FM到XDeepFM
[带你撸论文]之Deep FM算法代码级精讲