推荐系统(二十)——Kdd'18「微软」xDeepFM,兼具DeepFM和DCN的优势

2022-09-19 11:48:59 浏览数 (2)

image.png

xDeepFM: Combining Explicit and Implicit Feature Interactions for Recommender Systemshttps://arxiv.org/pdf/1803.05170.pdfcode:https://github.com/Leavingseason/xDeepFM

背景

从方法名中就可以知道这篇文章分享的是FM的进一步改进版,xDeepFM是将DeepFM和DCN结合的一篇文章,将多层特征交叉和Field的概念结合起来。在DCN的推文中我们在总结部分就提到,DCN相对于FM的不同之处在于FM系列方法是可以根据不同的field来做特征交叉的,而DCN是直接在整个特征向量上做特征交叉,没有field的概念。xDeepFM就是将两者结合。

方法

上图为xDeepFM的总体框架图,DNN部分没有改动,主要创新部分在于CIN部分。

Compressed Interaction Network(CIN)

CIN考虑了一下几个方面:

  • 在向量层面(vector level)而不是元素层面(bit-wise level)进行特征交叉
  • 结合了DCN的方式进行高阶的特征交叉
  • 网络的复杂度不会随着交互的程度而呈指数增长

CIN中,第k层的输入为一个矩阵

X^kin mathbb{R}^{H_ktimes D}

,其中k表示第k层,D表示该field embedding向量的维度,

H_k

表示向量个数。第k层的特征交叉计算方式如下:

mathbf{X}_{h, *}^{k}=sum_{i=1}^{H_{k-1}} sum_{j=1}^{m} mathbf{w}_{i j}^{k, h}left(mathbf{X}_{i, *}^{k-1} circ mathbf{X}_{j, *}^{0}right)

其中h表示输入矩阵中的第h行(个)向量,w为可学习权重,向量之间两两做哈达玛积。最终得到

H_{k-1}times H_0

个D维的向量,在文中H0=m因此也就是

H_{k-1}times m

上图为CIN层的总体计算过程,对每一层的X和输入做完交叉后,做sum pooling,

p_i^k=sum_{j=1}^D{X_{i,j}^k}

。其中i为第i行,得到一个

H_k

维的向量

p^k=[p_1^k,...,p_{H_k}^k]

。然后将每一层的p拼接起来得到

p^

,最后通过全连接层和sigmoid得到预测值

y=frac{1}{1 expleft({p^ }^Twright)}

计算方式

计算方式和CIN名字的由来有点相关,不过这里只讲计算方式。CIN中,将

x^k

x^0

以outer product的形式来得到

z^{k 1}

,outer product就是将

x^k_{*,i}cdot {x^{0}_{*,j}}^T

,最后得到的是

H_ktimes m times D

,然后权重w按D维度逐层相乘。

结果

实验结果表明所提方法是有效的,并且和FM和CrossNet对比可以发现CIN中将两者的思想结合是有作用的。

0 人点赞