文本介绍DeepFM的理论和实现
- 原始论文: DeepFM: A Factorization-Machine based Neural Network for CTR Prediction, IJCAI 2017
- 参考博客: https://www.jianshu.com/p/6f1c2643d31b
回顾特征组合的问题
传统解决方案
- FM: (Factorization Machines, FM)因子分解机
- FMM: (Field Factorization Machines, FFM)
存在问题
- 只能二阶特征组合,无法做到高阶特征组合
- 理论上来讲FM经过简单的拓展后可以组合高阶特征,但是那样的话参数会爆炸增加,所以实际上使用时一般只是二阶特征.
DNN建模高阶组合特征
优点
- 理论上DNN建模高阶组合特征是可行的
缺点
- 由于离散特征中我们使用One-Hot编码,会导致输入维度增加,网络参数很多
解决方案
- 利用FFM中的思想,特征分为不同的Field
- 基本思想是从One-Hot编码换成Dense Vector
- 进一步加上两个全连接层(隐藏层),让刚刚学到的Dense Vector进行组合,于是得到高阶组合特征
- 此时,高阶和低阶的特征体现在隐藏层中,我们希望把低阶特征组合单独建模,然后融合高阶特征组合
- 将DNN与FM进行一个合理的融合
- 二者的融合分两种方式: 串行结构和并行结构
DeepFM
是一种并行化的解决方案
包含 FM 和 DNN 两个部分, FM 负责低阶组合特征的提取,DNN 负责高阶组合特征的提取,两部分共享同样的输入
DeepFM的预测结果可以表示为如下的形式
$$\hat{y} = sigmoid(y_{FM} + y_{DNN})$$
FM部分
- 输出如下
$$ y(x) = w_0+ \sum_{i=1}^n w_i x_i + \sum_{i=1}^n \sum_{j=i+1}^n w_{ij} x_i x_j $$
DNN部分
- DNN部分是一个前馈神经网络
- 与图像语音的区别:
- 图像语音输入为连续且密集的
- CTR中使用的一般是稀疏的
- 在进入隐藏层之前,使用一个嵌入层(DenseEmbeddings): 将高维稀疏输入向量压缩为低维稠密向量