DeepFM

论文:DeepFM: A Factorization-Machine based Neural Network for CTR Prediction

DeepFM分成两部分:FM部分和Deep部分。

FM部分

1、图中的Field就是FFM中的特征域的概念。
2、这张图反映的就是FM的公式:
y=w_0+\sum_{i=1}^nw_ix_i+\sum_{i=1}^{n-1}\sum_{j=i+1}^nw_{ij}x_ix_j
=w_0+\sum_{i=1}^nw_ix_i+\sum_{i=1}^{n-1}\sum_{j=i+1}^n\langle v_{i},v_{j}\rangle x_ix_j
=w_0+\sum_{i=1}^nw_ix_i+\sum_{i=1}^{n-1}\sum_{j=i+1}^n(v_{i}\cdot v_{j})x_ix_j
=w_0+\sum_{i=1}^nw_ix_i+\sum_{i=1}^{n-1}\sum_{j=i+1}^n(v_{i}^T v_{j})x_ix_j

Addition部分,即sparse Features输入到FM layer中的加法神经元中,这部分LR,对应公式w_0+\sum_{i=1}^nw_ix_i;sparse Features是增广向量,即包含偏置特征1;

Inner Product部分即两个embedding后的向量点乘,得到的结果是个标量就等同于(v_{i}^T v_{j})x_ix_j,所以DeepFM中的交叉是两个特征域的交叉。m个Field得到m个Embedding特征向量。这m个Embedding特征向量输入l个乘法神经元中,每一个乘法神经元代表的是任意两个Embedding特征向量的交叉。对于Fieldi和Fieldj,embedding后的向量为X_iX_j,长度都为d

下面一句话待确认
每一个embedding后的特征向量都对应一个d*k的矩阵V,那么FM layer中的每一个乘法神经元的输出为:\sum_{t=1}^d(V_{f_i^{(t)}}^TV_{f_j^{(t)}})*(X_i^{(t)}X_j^{(t)})

Deep部分

Deep部分就是将所有Field的Embedding向量,拼接起来作为神经网络的输入。

Embedding细节

完整结构

最终预测结果为:
\hat y=sigmoid(y_{FM}+y_{DNN})

可以看到FM部分和Deep部分共用相同的特征,只是在输入时特征的组织方式不同。FM输入了原始的sparse features以及特征交叉,Deep部分只输入了dense features。

python实现参考:https://www.cnblogs.com/wkang/p/9881921.html

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容