通过FM系列—FM+FFM详解我们知道:FM通过对于每一维特征的隐变量内积来提取特征组合。虽然理论上来讲FM可以对高阶特征组合进行建模,但实际上因为计算复杂度的原因一般都只用到了二阶特征组合。那么对于高阶的特征组合,则通过多层的神经网络即DNN去解决。
DeepFM
背景
DeepFM模型包含FM和DNN两部分,FM模型可以抽取low-order特征,DNN可以抽取high-order特征。
在CTR中,通常将特征转为one-hot的形式,但如果将这些特征输入到DNN中,会导致网络参数太多,如下图所示:
为了解决这个问题,我们借鉴FFM的思想,将特征分为不同的field:
再加两层的全链接层,让Dense Vector进行组合,那么高阶特征的组合就出来了
但是低阶和高阶特征组合隐含地体现在隐藏层中,如果我们希望把低阶特征组合单独建模,然后融合高阶特征组合。
即将DNN与FM进行一个合理的融合:
二者的融合总的来说有两种形式,一是串行结构,二是并行结构:
这样就实现了:DeepFM模型包含FM和DNN两部分,FM模型可以抽取low-order特征,DNN可以抽取high-order特征。
DeepFM模型
DeepFM的模型结构如下:
DeepFM包含两部分:神经网络部分与因子分解机部分,分别负责低阶特征的提取和高阶特征的提取。这两部分共享同样的输入。DeepFM的预测结果可以写为:
y ^ = s i g m o i d ( y F M + y D N N ) \hat y = sigmoid(y_{FM} + y_{DNN}) y^=sigmoid(yFM+y