星闪乐途
论文:地址: 论文题目:《xDeepFM: Combining Explicit and Implicit Feature Interactions for Recommender Systems》 为什么要介绍这篇论文呢,因为面试的时候面试官提到了这篇论文还要我推导公式,但是我自己忘了,太尬了,所以决定来复习下了。。。 在前面的文章里面,我们介绍过DeepFM,在这篇论文中,FM将不同特征进行了自动交叉,如果不用FM的话,就需要工作人员自己进行手工特征交叉任务。对于预测性的系统来说,特征工程起到了至关重要的作用。特征工程中,挖掘交叉特征是至关重要的。交叉特征指的是两个或多个原始特征之间的交叉组合。在广告系统中,CTR是一个重要的评价指标,而在ctr预估任务中,各种特征都是至关重要的,有时候多加一个特征都可以让整个广告的ctr提高一点。 但是在特征有限的系统中,该如何去挖掘那些潜在交叉特征呢? 挖掘交叉特征主要依靠人工提取,这种做法主要有以下三种缺点: 1)重要的特征都是与应用场景息息相关的,针对每一种应用场景,算法工程师们都需要首先花费大量时间和精力深入了解数据的规律之后才能设计、提取出高效的高阶交叉特征,因此人力成本高昂; 2)原始数据中往往包含大量稀疏的特征,例如用户和物品的ID,交叉特征的维度空间是原始特征维度的乘积,因此很容易带来维度灾难的问题; 3)人工提取的交叉特征无法泛化到未曾在训练样本中出现过的模式中。 基于以上的分析,我们就必须要设计一种能自动进行特征交叉任务的网络来替代手工制作的交叉特征,让模型的泛化能力更强。在deepfm,dcn中都有自动特征交叉的模块,值得一提的是,在这些模型中,特种的交叉是发生在bit级别的,也就是bit wise级别的特征交叉。什么是bit wise级别的特征交叉呢? 举个例子,比如特征1 = (a,b,c),特征2 = (d,e,f) 那么他们之间的bit wise的特征交叉就是f(w1*a*d, w2*b*e, w3*c*f)比如在DCN中: 可以看到在Cross Network中,特征向量的交叉是bit wise的交叉方式,就是每个level的x都和x0进行bit wise级别的交叉。 另一种特征交叉的方式有vector wise的交叉方式,这种交叉方式的表述为f(w(a*d, b*e,c*f)),可以看到这两个特征是先进行内积操作后才和权值矩阵进行运算的,所以是vector wise的交叉方式。 论文中还提到了两个定义: explicitly VS implicitly 显式的特征交互和隐式的特征交互。以两个特征为例xi和xj,在经过一系列变换后,我们可以表示成 wij * (xi * xj)的形式,就可以认为是显式特征交互,否则的话,是隐式的特征交互。 老规矩,先上模型: 先看图c,xdeepfm是通过一个CIN将得到的向量concat后送到DNN中做ctr预估,这篇论文的关键就是整个CIN了,CIN全称是Compressed Interaction Network,下面来详细介绍下CIN是怎么做的。 为了实现自动学习显式的高阶特征交互,同时使得交互发生在向量级上,文中首先提出了一种新的名为压缩交互网络(Compressed Interaction Network,简称CIN)的神经模型。在CIN中,隐向量是一个单元对象,因此我们将输入的原特征和神经网络中的隐层都分别组织成一个矩阵,记为X0和 Xk。其中,每个Xk都是从上一个的Xk-1推导而来的: ps:面试的时候这个公式没推导清楚,还是好好讲一下这个公式的计算过程吧。。 CIN的计算分为两个步骤,第一个是利用 和 来计算 我们看这个图: 我们要弄明白 的计算过程,就要先知道几个概念。 inner product:(a,b,c) . (1,2,3) = (1*a,2*b,3*c) outer product: (a,b,c) 。(1,2,3) =[ [ 1a,2a,3a] , [1b,2b,3b], [1c,2c,3c] ] 弄清楚这两个概念后就可以来看看这个的计算过程了。 首先,我们明确计算方向,我们是沿着D这个方向来计算外积的,所以计算出来的z的深度是D,这个是没有问题的。那么在沿着D上面的截面的计算方式就是我们上面说的outer product的方式来计算了。注意,计算D上每一个维度的切面的时候都是每个维度上单独计算的,举个例子: = [a,b,c], [1,2,3], [d,e,f] = [x,y,z], [4,5,6] 那么z的计算就为(先忽略w,后面再介绍w的使用) 我们沿着D这个维度,需要计算三个切面。 第一个切面:需要计算(a,1,d) 和(x,4)的外积: 计算的结果为:[[a*x,1*x,d*x] ,[a*4,1*4,d*4]] ,shape = 2*3 第二个切面:需要计算(b,2,e)和(y,5)的外积: 第三个切面同理,就不列出结果了。 三个切面计算玩,我们就得到了shape为3*2*3的 。 这个计算过程还可以用一张图形象的表示出来: 这里的计算跟上面是一样的,也可以计算每个d维向量的内积然后拼接成柱状体。对于每个切面,我们对这个切面进行加权求和得到一个值,权值矩阵W也成为卷积核的shape跟切面的shape大小一样,我们总共有D个切面,所以就有D个值,这样,我们就将一个三维向量转化成了一维向量: 在上面这张图中,我们可以清楚的知道,如果有 个卷积核w,我们就可以得到 个向量,也就是得到了下一个X: ,这个X的维度为 *D。 CIN的宏观框架可以总结为下图: 我们总共需要进行k个CIN过程的计算,得到k个一维向量。可以看出,它的特点是,最终学习出的特征交互的阶数是由网络的层数决定的,每一层隐层都通过一个池化操作连接到输出层,从而保证了输出单元可以见到不同阶数的特征交互模式。同时不难看出,CIN的结构与循环神经网络RNN是很类似的,即每一层的状态是由前一层隐层的值与一个额外的输入数据计算所得。不同的是,CIN中不同层的参数是不一样的,而在RNN中是相同的;RNN中每次额外的输入数据是不一样的,而CIN中额外的输入数据是固定的,始终是X0。 CIN计算交叉特征的方式是vector wise的, x1,h的计算方式为: x2,h的计算方式为: xk,h的计算方式: 所以是vector-wise的计算方式。这个结构其实跟DeepFM是一样的,左边是交叉特征的计算过程,右边是DNN部分。CTR计算方式为:损失函数为: 我们今天介绍的xDeepFM模型,这个模型跟我们之前学习的DeepFM还有DCN是一个类型的网络,都是交叉特征+DNN组成,在xDeepFM中主要是CIN的推导是重点,只要掌握了CIN的计算过程就知道了这篇论文的核心:vector-wise方式的特征交叉。
史瑞克0111
本篇文章介绍了阿里妈妈定向广告团队的最新作品:Co-Action Net(以下简称CAN)。CAN提出了一种全新的特征交互思路,将待交互的特征(用户侧和商品侧特征)分别作为DNN的输入和权重,用DNN的输出作为特征交互的结果。CAN在提升了特征交互的表达能力同时,降低了传统的笛卡尔积交叉所需要的计算复杂度。 论文地址: . 作者的知乎专栏:
在CTR预估任务中,特征间的交互一直是业界研究的热点。由于DNN以一个隐式的方式来学习输入特征,很难单纯依靠DNN来从庞大的稀疏特征集中学习到有效的特征交互,因此许多工作都在特征工程中采用了了手动特征交互,FM, FNN, PNN, DCN和DeepFM等都从不同的方面阐述了这一点,感兴趣的同学可以参考笔者之前的文章: 《从FM到DeepFM:浅谈推荐系统中的模型演化》 。
在推荐系统模型的构建中,特征工程占有十分重要的地位。在海量的输入特征中,用户行为(user behaviors)和推荐商品(recommended item)两者的交互可以准确地建模用户兴趣,论文作者将这种交互特征统一命名为co-action. 如图1所示:A和B代表模型的输入,Target可以为ctr的预估值。一般来说,可以由DNN来学习A和B之间的关系。但如果我们在输入端就手动将A、B进行交互,学习的难度会大大降低。
对于特征交互,最基本的方式就是做 笛卡尔积(Cartesian Product) 。在tensorflow中,这个操作就是cross column[1]. 对于特征A和B,笛卡尔积将两者组合成一个新特征(A, B);改变A或B的值,就会得到一个全新的特征。这种方式可以刻画出A、B间的所有组合。在训练样本充足,不考虑性能的情况下,笛卡尔积是最好的特征交互方式。但笛卡尔积有两个缺点:
顾名思义,CAN的目的在于建模不同特征之间的Co-Action,可以理解为一种新的特征交互方式。简单来说,该论文实现了一个pluggable的CAN网络单元,将待交互的两类特征分别作为CAN网络的输入和权重,网络的输出作为特征交互的结果。
图2展示了CAN的基本结构。输入特征可以分为用户行为序列(user behavior sequence),候选商品(target item),用户画像特征(user age 等)和其他特征。其中user sequence、target item和other feature通过embedding层后输入到DIEN网络结构。对于CAN部分,user sequence和target item的embedding被用作CAN的输入和权重参数,最后输出的结果sum pooling起来,与DIEN的输出concat在一起过后面的DNN部分。下面重点介绍一下整个网络结构中的关键:Co-Action Unit.
CAN的整体实现逻辑还是比较简单的。将CAN中的全连接网络记为 ,候选商品特征 作为 网络的weight和bias,而用户行为序列特征 则是 网络的输入。这里 是所有unique ID的个数,即item ID的参数空间; 和 是embedding size,且 < . 在广告系统中,与用户点击过的商品相比,target item的个数较少,因此用 来作为 的参数。 由于 包含了 多层的参数,因此其维度需要大于 ,即 < . 通过split和reshape操作转化为weight和bias参数,这一过程可以表述如下:
与其他特征交互方式相比,CAN有以下几个优点:
前述的CAN结构只能显示地建模一阶特征交互。对于更高阶的情况,可以通过高阶输入来实现,即
其中c是特征交互的阶数。
论文中引入了3种做法来保证CAN学习的独立性。
由Table 2可以看出,CAN在两个实验数据集上的AUC指标均优于PNN,NCF[2],DeepFM;除此之外,笛卡尔积(Cartesian)作为最基础的特征交互手段,其结果是优于PNN,NCF和DeepFM的。但CAN的实验结果甚至比笛卡尔积还要好,这里的原因我想有两点:
为了验证CAN的泛化性,作者将test数据集中的那些在训练集中出现过的特征组合都删除,构造了一个冷数据测试集,该测试集中所有的特征组合都是模型之前没有见过的。实验结果如Table 5 所示:
可以看出,NCF和DeepFM的结果要优于笛卡尔积。与Table 2中的结论相比,证明笛卡尔积的泛化性确实存在问题;同时,CAN的AUC最高,也证明了CAN结构的泛化性明显强于笛卡尔积以及其他的特征交互方式。
笔者认为这是本论文最精华的部分之一。 作者在本节中详细论述了CAN模型在部署到阿里巴巴展示广告系统时遇到的一些困难和解决方案,对复杂ctr预估模型的落地有很大的指导意义。
特征交互,是在原始特征的基础上对特征对(feature pair)进行额外的组合,势必会引入额外的存储和计算开销。我们知道,CTR模型的大部分参数都集中在embedding部分,而笛卡尔积会让embedding大小线性增加。对于两个维度( 此处维度指unique IDs的数目 )为M和N的特征,笛卡尔积需要引入一个(M x N, embedding_size)大小的embedding矩阵;除此之外,新增的embedding也会引入更多的lookup操作,严重影响模型的响应时间,latency增大。作者提到即使采用了IDs frequency filtering(个人理解是根据ID出现的频率,过滤掉一部分低频ID来减小参数量,即低频过滤)也无法缓解。
对于CAN模型,虽然参数大大减小,但以上问题还是会影响到模型的部署。论文中使用了6个ad侧特征和15个用户侧特征进行交互,理论上这样会引入15 x 6 = 90个特征组合。而用户侧特征多为用户的行为序列,普遍长度都超过100,会带来更大的负担。
为了解决以上问题,论文中采用了以下方案:
特征间的交互对ctr预估模型具有重要的意义。本论文阐述了笛卡尔积和一些常用模型结构(FM,PNN,DeepFM等)的不足,提出了一种新型网络CAN来建模Feature Co-Action。CAN用DNN的输入和权重来建模特征交互,既解决了笛卡尔积的空间复杂度和泛化性问题,又能够获得较好的特征交互效果(体现在模型auc的指标上)。同时,引入了多阶输入(multiorder enhancement )和模块间的独立性(multi-level independence)使CAN的功能更加完备。最后介绍了模型上线遇到的困难和解决方案,对大型ctr预估模型的部署有很大的借鉴意义。
.
根据自己专业所提出的要求写自己所需要的论文,我是旅游管理专业,我的毕业论文是做一篇线路设计,在做论文的时候要有摘要同时也要附英文的摘要,然后就是题目,清楚的罗列
论文:地址: 论文题目:《xDeepFM: Combining Explicit and Implicit Feature Interactions f
接上面。(二)观点要创新 毕业论文的创新是其价值所在。文章的创新性,一般来说,就是要求不能简单地重复前人的观点,而必须有自己的独立见解。学术论文之所以要有创新性
写作点拨:可根据会计这个职业写一写自己的长期、短期内的规划,自己的优缺点、以及自己希望自己专业知识有哪些方面的提升等方面来写,例文如下: 1、职业兴趣 我比较喜
毕业论文没有通过,是无法拿到毕业证的。建议:毕业论文每位同学在答辩的时候,尽量尽早进行答辩,这样可以给自己后期预留更多应对突发状态的时间。论文答辩一次没有通过,