4

xDeepFM--Combining Explicit and Implicit Feature Interactions for Recommender Sy...

 2 years ago
source link: https://tfeima.github.io/2019/03/08/xDeepFM/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

xDeepFM--Combining Explicit and Implicit Feature Interactions for Recommender Systems阅读笔记

发表于 2019-03-08

| 分类于 论文阅读

字数统计: 1.2k

构造特征、特征之间的组合往往是推荐系统成功的关键,而人工构造特征是一件费时费力的事情,所以已经有一些模型用来构造特征之间的交叉组合,比如FM模型可以学习到二阶交叉特征,基于DNN的模型能够学到更高阶的特征,而DeepFM和Wide&Deep等模型同时利用低阶和高阶特征,所以这篇论文的目标也是希望能够同时学习低阶和高阶的特征而不需要太多地人工构造特征。这篇论文提出了一种新的网络结构---CIN(Compressed Interaction Network),这个网络结构可以显式地(explicit)学习到向量级别的特征交互。xDeepFM还包括了DNN结构和线性模型结构,DNN结构隐式地学习到高阶特征交叉,线性模型结构学习到低阶特征。

​ 一般我们会对离散特征进行热编码,比如论文中给的例子:

使用FM可以为每一个特征(热编码后的)学习一个隐向量(假设每个隐向量都固定维度D),因为一个field(热编码前的特征)包含多个编码,所以每一个field就包含多个隐向量。对于一个样本,每一个field只有一个或几个隐向量出现,即热编码后特征为1的特征的隐向量,若field中只有一个隐向量出现,那么这个特征的隐向量就作为field的隐向量,若有多个隐向量出现,多个隐向量的和作为field的隐向量。

隐式高阶交叉特征

​ 由DNN学习到的特征就叫做隐式的高阶交叉特征(Implicit High-order Interactions),如下图,DeepFM和PNN的结构画在了一起,两者都可以学习到低阶特征和隐式的高阶特征,但他俩的区别在于DeepFM是用FM层学习低阶交叉特征,PNN用product层学习低阶交叉特征。

显式高阶交叉特征

​ CrossNet能够学习到显式高阶交叉特征(Explicit High-order Interactions),它的网络结构如下图,

网络之间的传播公式为

xk=x0xTk−1wk+bk+xk−1xk=x0xk−1Twk+bk+xk−1

本文提出的CIN的结构就借鉴了CrossNet的网络结构。

CIN(Compressed Interaction Network)

CIN考虑:

  1. 向量级别的特征交互
  2. 显式的高阶特征交互
  3. 网络的复杂度不能随着交叉的阶数指数增长

CIN的网络结构可以种下列三个图解释:

​ 如(c)图所示,网络的输入为field的嵌入,并且用矩阵X0∈Rm×D​X0∈Rm×D​表示,其中m表示field的个数,D表示嵌入的维度,它的第i行即为第i个field的嵌入。网络的输出用Xk∈RHk×D​Xk∈RHk×D​表示,Hk​Hk​表示第k层特征向量的个数。网络之间的传播公式为

Xkh,∗=∑i=1Hk−1∑j=1mWk,hi,j(Xk−1i,∗∘X0j,∗)Xh,∗k=∑i=1Hk−1∑j=1mWi,jk,h(Xi,∗k−1∘Xj,∗0)

∘​∘​的定义为(a,b,c)∘(x,y,z)=(ax,by,cz)​(a,b,c)∘(x,y,z)=(ax,by,cz)​。由于下一个隐藏层的输出依赖于上一个隐藏层的输入,所以CIN的结构与RNN非常类似。

​ 从上面的传播公式还能够看出CIN还有类似CNN的结构,如上图(a)所示,xk​xk​的一列(Hk=3​Hk=3​维)与x0​x0​的一列(m=4​m=4​维)作用可以生成一个3∗4​3∗4​的矩形,总共有D列,所以最终生成了D个这样的矩形,也就是一个Hk×m×D​Hk×m×D​维的tensor,所生成到每个矩阵的权重矩阵Wk,h​Wk,h​可以视作一个滤波器,最终如图(b)所示,每个生成的 Hk×m​Hk×m​ 矩阵映射为一个 Hk+1​Hk+1​ 维向量。

​ 假设CIN有T个隐藏层,每个隐藏层的XkXk的行向量都做一个sum pooling:

pki=∑j=1DXki,jpik=∑j=1DXi,jk
,最终能够得到一个pooling后的向量,pk=[pk1,⋯,pkHk]pk=[p1k,⋯,pHkk],正如图(c)的输出层所示,T个这样的隐藏层的输出单元即为p+=[p1,⋯,pT]p+=[p1,⋯,pT].如果使用CIN直接只用作二分类,则输出单元可以为
y=11+exp(p+Two)y=11+exp⁡(p+Two)

CIN分析

空间复杂度

CIN共包含∑Tk=1Hk×Hk−1×m+∑Tk=1Hk∑k=1THk×Hk−1×m+∑k=1THk个参数

时间复杂度

O(mHD+H2T)O(mHD+H2T)

多项式近似

​ 假设每一层特征映射的维度都为m。第一层第h个特征映射:

x1h=∑i,jmW1,hi,j(x0i∘x0j),​xh1=∑i,jmWi,j1,h(xi0∘xj0),​

可以看出这是一个二阶特征交叉。第二层的第h个特征映射为:

x2h=∑mi,jW2,hi,j(x1i∘x0j), =∑mi,j∑ml,kW2,hi,jW1,il,k(x0l∘x0k∘x0j)xh2=∑i,jmWi,j2,h(xi1∘xj0),=∑i,jm∑l,kmWi,j2,hWl,k1,i(xl0∘xk0∘xj0)

容易看出这是输入特征的3阶特征交互。能够推出第k层的特征为输入特征的k+1阶特征交互,这也叫做CIN的显示高阶特征交互的特性。

与隐式网络的组合

​ DNN能够学习出隐式高阶特征,所以DNN与CIN再加上线性模型就一起构成了xDeepFM,如下图所示即为xDeepFM的结构。

整个xDeepFM的输出单元为

y^=σ(wTlineara+wTdnnxkdnn+wTcinp++b)y^=σ(wlinearTa+wdnnTxdnnk+wcinTp++b)

损失函数为
L=−1N∑Ni=1{yilogy^i+(1−yi)log(1−y^i)}+λ∗∥Θ∥​L=−1N∑i=1N{yilog⁡y^i+(1−yi)log⁡(1−y^i)}+λ∗‖Θ‖​
后面一项为正则项。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK