推荐系统论文阅读(21) -DeepFM升级xDeepFM
地址:有自动特征交叉模块。值得一提的是,在这些模型中,特殊交叉发生在比特级,即比特级的特征交叉。什么是逐位级特征交叉?
比如特征1 = (a,b,c),特征2 = (d,e,f)。
那么它们之间的逐位特征交集就是f(w1*a*d,w2*b*e,w3*c*f)。例如,在DCN:
可以看出,在交叉网络中,特征向量的交集是逐位交集,即每一级的X与x0逐位交叉。
另一种特征交叉方式是向量式交叉方式,表示为f(w(a*d,b*e,c*f))。可以看出,这两个特征是用内积运算后的权重矩阵进行运算的,所以是向量式的交叉方式。
论文中还提到了两个定义:
显式与隐式
显性特征交互和隐性特征交互。以xi和xj两个特征为例,经过一系列的变换,我们可以用wij * (xi * xj)的形式来表示,可以认为是显性的特征交互,否则就是隐性的特征交互。
照例,模型第一:
先看图C。xdeepfm通过CIN将获得的向量concat发送到DNN用于ctr估计。本文的重点是整个CIN,其全称是压缩相互作用网络。下面我们来详细介绍一下CIN是怎么做的。
为了实现自动学习显式高阶特征交互,并使交互发生在矢量级,提出了一种新的神经模型——压缩交互网络(CIN)。在CIN中,隐向量是一个单位对象,因此我们将输入的原始特征和神经网络中的隐层组织成一个矩阵,分别表示为X0和Xk。其中每个Xk都是从前一个Xk-1派生而来的:
Ps:面试的时候没有推导清楚这个公式。先说一下这个公式的计算过程。。
CIN的计算分为两步。第一步是使用和计算。
让我们来看看这张图片:
要理解计算过程,首先要知道几个概念。
内积:(a,b,c)。(1,2,3) = (1*a,2*b,3*c)
外积:(a,b,c)?。(1,2,3) =,
那么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)的外积;
第三节也一样,所以结果就不列了。
通过计算和玩三段,得到一个3*2*3的形状。
这个计算过程也可以用一张图直观的表示出来:
这里的计算同上,或者可以计算每个D维向量的内积,然后拼接成一列。对于每个切片,我们对切片求和得到一个值,权重矩阵W也变成卷积核的形状,和切片的形状一样。我们总是有d个切片,所以有d个值。这样,我们将一个三维向量转换成一个一维向量:
在上图中,我们可以清楚地知道,如果有一个卷积核w,就可以得到一个向量,也就是可以得到下一个x:,这个x的维数是* d。
CIN的宏观框架可以概括如下:
我们总是需要计算k个CIN过程,得到k个一维向量。可以看出,它的特点是最终学习到的特征交互的顺序由网络的层数决定,每个隐层通过一个池化操作连接到输出层,从而保证输出单元可以看到不同顺序的特征交互模式。同时,不难看出,CIN的结构与RNN非常相似,即每一层的状态都是通过前一个隐藏层的值和一个额外的输入数据计算出来的。不同的是,CIN不同层的参数不一样,但在RNN是一样的。RNN的额外输入数据每次都不一样,而CIN的额外输入数据是固定的,总是X0。
CIN计算交叉特征的方式是矢量方式,
X1,h计算如下:
X2,h计算如下:
xk和h的计算方法:
所以这是矢量计算。
这个结构其实和DeepFM一样,左边是十字特征的计算过程,右边是DNN部分。CTR的计算方法如下:
损失函数是:
我们今天介绍的xDeepFM模型是我们之前研究过的一种具有DeepFM和DCN的网络类型,它由交叉特征+DNN组成。在xDeepFM中,CIN的推导是关键。只要掌握了CIN的计算过程,就会知道本文的核心:向量式模式的特征交叉。