推荐系统-重排序-CTR-DCN-CIN-xDeepFM

一个总结
https://www.cnblogs.com/xianbin7/p/10661572.html

特征交叉的 元素级bit-wise VS 向量级vector-wise

元素级别的特征交叉,典型的就是神经网络。向量级特征交叉典型的就是向量点乘。


两者区别就是,对于特征交叉来说,从直观上,vector-wise的形式更能理解。而bit-wise则显得更加隐晦。同时,vector-wise会引入更少的参数。

我们的目的是引入更多的交叉特征,至于交叉特征的权重,我们交由模型去学习。但是,有效地提供交叉特征这一步,有很多困难。
FM实现了二阶交叉特征。但是,当涉及更高阶的交叉特征时,就会因为参数太多而乏力。
DNN实现了更高阶的特征交叉,但是,这些特种特征交叉是bitwise的,同样也有参数过多的问题。
现在我们思考这个问题。要实现特征交叉,就必然会面临指数级增长的参数。但是,并不是所有特征交叉都是有用的。如果我们能使用高阶交叉特征,同时又减小参数,那么就需要做一件事---压缩。把高阶特征数量压缩下来。

DCN(Deep&Cross Network )

推荐系统-重排序-CTR-DCN-CIN-xDeepFM_第1张图片
dcn.png

这里最关键的就是中间左侧黄点框。即cross-network


这里面 都是列向量即

\begin{alignedat}{2} x_1&=x_0x_0^Tw_0+b_0+x_0\\ &=\begin{bmatrix} x_{01}x_{01} &x_{01}x_{02} &... &x_{01}x_{0n} \\ x_{02}x_{01} &x_{02}x_{02} &... &x_{02}x_{0n} \\ ... &... &... &... \\ x_{0n}x_{01} &x_{01}x_{02} &... &x_{0n}x_{0n} \\ \end{bmatrix} \begin{bmatrix} w_{01}\\ w_{02}\\ ...\\ w_{0n} \end{bmatrix} +b_0+x_0 \\ &=\begin{bmatrix} w_{01}x_{01}x_{01}+w_{02}x_{01}x_{02}+...+w_{0n}x_{01}x_{0n}+b_{01}+x_{01} \\ w_{01}x_{02}x_{01}+w_{02}x_{02}x_{02}+...+w_{0n}x_{02}x_{0n}+b_{02}+x_{02} \\ ... \\ w_{01}x_{0n}x_{01}+w_{02}x_{0n}x_{02}+...+w_{0n}x_{0n}x_{0n}+b_{0n}+x_{0n} \end{bmatrix} \\ &=\begin{bmatrix} (w_{01}x_{01}+w_{02}x_{02}+...+w_{0n}x_{0n}+1)x_{01}+b_{01} \\ (w_{01}x_{01}+w_{02}x_{02}+...+w_{0n}x_{0n}+1)x_{02}+b_{02} \\ ... \\ (w_{01}x_{01}+w_{02}x_{02}+...+w_{0n}x_{0n}+1)x_{0n}+b_{0n} \end{bmatrix} \\ &=x_0(x_0^T w_0)+x_0+b_0 \\ &=a^1x_0+b_0 \\ \\ hare\\a^1&=x_0^T w_0+1 \\\\ let\\b_l&=0 \\ \\ x_1&=a^1x_0\\ x_2&=x_0x_1^Tw_1+x_1\\ &=x_0(a^1x_0^Tw_1 ) +a^1x_0 \\ &=x_0(a^1(x_0^Tw_1+1)) \\ let\\a^2&=x_0^Tw_1+1 \\ \text{we get} \\x_2&=a^1a^2x_0\\ ... \\ x_l&=(\prod_{i=1}^{l-1}a^i)x_0 \\ a^l&=x_0^T w_{l-1} +1 \end{alignedat}

这些推导下来,在中间发现确实有特征交叉,但是最后发现,因为是实数,所以最终变成了 的倍数变化。即高阶特征交叉和一阶特征有很大的相关。

这说明DCN虽然可以自如地控制和使用高阶特征交叉,但是在高阶特征交叉方面还是有一定局限性的。同时特征交叉依旧是bitwise的。

CIN 压缩交互网络

一个m*D的矩阵
m是初始稀疏特征数
D是每一个特征的Embedding维度
就是m个Embedding向量组合
表示未做特征组合的原始向量

表示做k-1阶特征组合,它有个D维向量组成
那么
是由 与 以某种形式组合而成的,具体来说
与 相当于分别个和个D维向量
那么 与分别代表第一个k-1阶特征的D维向量和第一个原始向量
定义
也是一个D维向量
这样的话,因为 与 分别有个和个D维向量
那么就有个
则就是一个的三维矩阵(张量)
而现在的目的是,把这个三维张量压缩成维的二维向量

推荐系统-重排序-CTR-DCN-CIN-xDeepFM_第2张图片
CIN.png

也可以看成个D维向量。我们对这个D维向量用加权求和会得到一个D维向量。
这样,我们设置个分别做加权求和,就能得到个D维向量。这样,就完成了压缩。得到了而

推荐系统-重排序-CTR-DCN-CIN-xDeepFM_第3张图片
CIN2.jpg

最终得到1阶2阶。。k阶的特征组合,每一阶都有个D维向量。
最后把D维sum成1维,我们就得到了 个数,这些数组成一个向量p
即上图的黄点方框

CIN 结合了CNN的思想。不是把特征的Embedding向量拼接组成一行,而是组成了一个矩阵。特征交叉变成了两个矩阵的操作。这个操作把结果变成了一个3维矩阵。然后在把3维变2维的过程中,使用了卷积层的概念。使用个卷积核每个卷积核可以把一个3维矩阵变成1维向量(长度为D)。在最后一步,使用了pooling层的概念。
CIN实现了vector-wise的高阶特征交叉,同时带有压缩。

xDeepFM

理解了CIN就比较好理解xDeepFM 了


推荐系统-重排序-CTR-DCN-CIN-xDeepFM_第4张图片
xdeepfm.png

你可能感兴趣的:(推荐系统-重排序-CTR-DCN-CIN-xDeepFM)