推荐系统高阶交叉—DCN,DCN_v2,PNN万文详解

技术

前言:

之前文章介绍了特征交叉的一些方式和几种推荐系统中关于特征交叉的一些论文。上篇文章中主要介绍了wide&deep,deepFM,和NFM模型。其中wide&deep,和deepFM模型的特征交叉就一阶,属于浅度的特征交叉,NFM可以实现更深的高阶特征交叉。这篇文章将介绍两种经典的推荐模型,它们可以实现更深度的特征交叉。分别为DCN,DCN_v2和PNN。

1:DCN

论文名称 :Deep & Cross Network for Ad Click Predictions

论文链接https://arxiv.org/pdf/1708.05123.pdf

论文结构picture.image(4)上方结构: 将左侧和右侧得到的两个embedding直接concat起来成为一个大的embedding,经过一个浅层的神经网络输出一个一维数字,再经过一个sigmoid函数就是最终的结果了。

2:DCN_V2

论文名称 :DCN V2: Improved Deep & Cross Network and Practical Lessons for Web-scale Learning to Rank Systems

论文地址https://arxiv.org/pdf/2008.13535v2.pdf

看论文的名字,就知道该模型与DCN很相似了,该模型确实基于DCN的一个改进模型。与DCN最大的区别是特征交叉的地方有一点点地差异picture.image一篇论文肯定不会这么简单嘛,工作量这么少的论文也发不了顶会呀。于是作者们又对DCN进行了改进,原因是DCN_V2中计算的复杂度太高了。

模型改进:

改进的地方同样来自于特征交叉的地方,论文中说的让人有点不能理解,我们直接看修改的部分吧:

(1):矩阵低阶分解降低复杂性 由于将特征embedding之后再拼接起来成了一个维的向量,这个太大了,而矩阵的维度是。所有导致这个计算的复杂度就很高了,于是我们可以,类似于矩阵分解的方法,将维度比较大的矩阵分解成两个维度小一些的矩阵 。其中远小于。这种方法叫做矩阵的低阶分解,和SVD有点类似 。这也我们的交叉公式就发生了变化: 原来 :现在:参数的数量和运算的复杂度都有效的变低了。

(2):MOE结构

受到今年比较受欢迎的 Mixture-of-Experts (MoE)的影响 ,作者将这种结构也放入了交叉中之中。于是我们的交叉的公式又变为了以下的形式:

其中就是一个门函数,可以是sigmoid或者是softmax。

(3):增加非线性。

注:论文中用的是点乘,但是从浅梦大佬的代码中用的是正常的矩阵乘法。我也认为是矩阵乘法,否则最后的维度对不上,如果是矩阵乘法的话,那么的维度则为。

改进的后模型据作者所说在降低了30%的复杂度的情况下,保留了模型的精度 ,模型可以称之为:the mixture of low-rank DCN(DCN-Mix)。

大佬的代码地址:https://github.com/shenweichen/DeepCTR-Torch/blob/bc881dcd417fec64f840b0cacce124bc86b3687c/deepctr\_torch/layers/interaction.py#L464-L537

灵魂问答

这篇文章比较有趣的是关于实现部分是采用问答的形式展开的,总共有5个问题,同样也给出了答案。担忧翻译问题于是我附上了英文。(文中对mDCN应该就是DCN-Mix的意思,命名有点混乱,希望我没弄错)

(1):什么时候特征交互学习方法会比基于relu的DNN更有效? (When would feature interaction learning methods become more efficient than ReLU-based DNN)

从论文后续的答案中,作者从三个方面回答了该问题(不过更像是回答怎样可以提升DCN_v2的效果)

a:提升交叉的复杂度 文中使用了三种二维的交叉方法(代表的是某个特征),按照交叉的复杂程度有以下三种。picture.image总结 :总而言之,即使使用更深更大的网络,ReLU 在捕获显式特征交叉(乘法关系)方面效率低下。 当交叉模式变得更复杂时,精度会大大降低。 DCN 准确地捕获了简单的交叉模式,但无法捕捉更复杂的交叉模式。 另一方面,DCN-V2 对复杂的交叉模式保持准确和高效

(2):如果去除掉DNN结构的话,各种交叉方法的表现是怎么样的? (How does the feature-interaction component of each baseline perform without integrating with DNN) picture.image 总结:高阶方法表现出优于二阶方法的性能。 这表明高阶交叉在该数据集中是有意义的。在高阶方法中,交叉网络取得了最好的性能,与 DNN 相比略胜一筹。

(3):DCN-Mix的于基础的DCN_v2相比表现如何,我们应该这么在模型的精确度和模型的消耗之间进行平衡(以DCN为例)。 (How does the proposed mDCN approaches compare to the baselines? Could we achieve healthier trade-off between model accuracy and cost through mDCN and the mixture of low-rank DCN)

picture.image总结:在所有方法中,DCN-V2效果最好,同时相比性能不差DCN-Mix 进一步降低了模型消耗,在模型性能和效果之间取得了更好的平衡 。(作者主要对比了DCN_v2和DCN-Mix与其它模型之间的效果)

(4):DCN-Mix参与与模型效果之间的关系 (Q4 How does the settings in mDCN affect model quality) picture.image上图左边展现的是DNN模型和Cross NetWork在不同网络层数下的效果。右侧是展现在不同的矩阵维度情况下的效果 。(这个matrix rank就是在改进模型中中的大小,也就是从高维分解为低维中,低维的数量)。

(5):DCN-Mix是否捕捉到了重要的特征交叉?模型的解释性如何? (Q5 Is mDCN capturing important feature crosses? Does the model provide good understandabilit) picture.image作者直接从实验结果回答了该问题。左侧是DCN_v2中的权重矩阵,右侧显示的特征交叉,颜色越深代表者交叉越重要,从两张图的重合程度可以看出还是学到了一些重要的显示交叉特征 ,比如gender-UserId和Movied-UserId。

作为近年来推荐系统中的SOTA模型,这篇论文还是有很多启发的。DCN的改进,高阶矩阵分解等操作还是很有学习的意义。并且实验阶段给我们展示了很多扩展性的工作。

PNN

论文名称 :Product-based Neural Networks for User Response

Prediction

论文地址https://arxiv.org/pdf/1611.00144v1.pdf

模型结构picture.image首先看模型结构,从下面往上面看,第一层input就到embedding就不需要再解释了吧。

(1) :就是简单地将所有feature地embedding直接复制过去。 其中,就是特征的embedding。

(2) :,,其中,可以看出就是特征之间交叉的结果。至于怎么交叉,我们稍后再说。

(3):** 从层到达我感觉是我看这篇论文没有想到的。** 在我看来,应该就是将展开,再将展开,然后concat成一个一维的向量,然后再经过一层网络得到L1,但其实并不是这样的。

我们介绍L1的构成:

可以看出三个一维的向量相同位置加起来再经过relu得到的L1。与我看模型结构时的猜想并不一致。

首先我们来介绍的构成:

可以看出,时一个维度与完全相同的矩阵,最后的维度有多少(),则的个数有多少。

同理我们可以得到:。但是在求处作者提出了两种方法。

第一种是IPNN

picture.image这种就是最常见的交叉了,受到FM模型的启发 ,将转化为两个向量。即:。

因此原来的等式就可以变为:

此时:。可得。引入这种方法与FM的初衷也是一样,为了降低计算的复杂度,同时也可以减少参数的数量。

本来计算的时间复杂度为:(是特征的数量,为特征embedding的维度,为最后的维度)。由于只需要计算一次,时间复杂度并不是直接的。通过降维后时间复杂度为。

这种通过矩阵分解的方式减少参数数量,降低计算的复杂度在推荐模型中应用还是很多的,上面的DCN-M同样也应用到了。

第二种是OPNN

picture.image这种交叉比较少见,。在IPNN中p_{i,j}是一个数字,但是在OPNN中,则是一个矩阵,的维度为。此时再也不是根据,而是这样的:

总结来说,有N个特征,那么就会交叉N的平方次,每次交叉都会形成一个矩阵,将N的平方和矩阵相加起来就可以得到了。直观来说就是将上面那个正方形的矩阵层层叠加,最后得到一个相同大小的矩阵 。该矩阵的维度同样为。此时计算的复杂度达到惊人的。

同样上面的公式还是可以进行优化的:

其中。然后直接采用公式就可以得到我们要的结果。

以上就是关于推荐系统中经典模型DCN,DCN_v2,PNN模型的详细介绍,介绍得很详细,对于我自己来说相当于重新仔细地学习了一遍,收获不浅,更加了解了模型中的具体细节。同时也希望可以给有兴趣学习推荐模型的一些朋友有一定的帮助。

此外,喜欢数据挖掘,推荐系统,nlp的朋友可以关注我们公众号,或者加入我们的推荐群。

picture.image picture.image

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
在火山引擎云搜索服务上构建混合搜索的设计与实现
本次演讲将重点介绍字节跳动在混合搜索领域的探索,并探讨如何在多模态数据场景下进行海量数据搜索。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论