论文阅读 (008): Deep Learning CTR Prediction (xDeepFM)

1,105 阅读5分钟

阅读论文--xDeepFM: Combining Explicit and Implicit Feature Interactions for Recommender Systems

背景

针对CTR预测问题,文章从特征组合的角度开展研究,在DeepFM、Wide & Deep的基础上,提出了Compressed Interaction Network(CIN),CIN实现了

  1. 使用vector-wise的形式进行特征交互,取代之前的bit-wise形式
  2. 高阶特征的交互方式是显示的(可以明确最大特征交叉阶数为多少)
  3. 网络的复杂度不会随着交互的程度呈指数增长

与vector-wise概念相对应的是bit-wise,在最开始的FM模型当中,通过特征隐向量之间的点积来表征特征之间的交叉组合。特征交叉参与运算的最小单位为向量,且同一隐向量内的元素并不会有交叉乘积,这种方式称为vector-wise。后续FM的衍生模型,尤其是引入DNN模块后,常见的做法是,将embedding之后的特征向量拼接到一起,然后送入后续的DNN结构模拟特征交叉的过程。这种方式与vector-wise的区别在于,各特征向量concat在一起成为一个向量,抹去了不同特征向量的概念,后续模块计算时,对于同一特征向量内的元素会有交互计算的现象出现,这种方式称为bit-wise。

将常见的bit-wise方式改为vector-wise,使模型与FM思想更贴切,这也是xDeepFM的Motivation之一。这里需要提醒的是,vector-wise的方式其实在之前介绍的PNN、NFM、AFM与DeepFM中都有使用,但是并没有单独拎出来说明清楚。

文章使用CIN+DNN+Linear构建了eXtreme Deep Factorization Machine(xDeepFM)模型,并且在数据集上验证了模型的效果。

预备知识

embedding layer

使用01表示特征时,特征是高阶的,稀疏的,如下图所示

使用embedding layer将原始特征变为embedding表示,形式为:e=[e1,e2,...,em]e=[e_1, e_2, ...,e_m],其中eiRDe_i\in R^D,embedding的长度为m×Dm\times D。embedding layer表示如下图所示

隐式高阶相互作用

神经网络中特征运算如下所示,其中同一个field的embedding也会互相影响。DNN不能推断出具体学到了多少阶的交叉特征,因此被称之为隐式特征交互。

x1=σ(W(1)e+b1)\mathbf{x}^{1}=\sigma\left(\mathbf{W}^{(1)} \mathbf{e}+\mathbf{b}^{1}\right)

xk=σ(W(k)x(k1)+bk)\mathbf{x}^{k}=\sigma\left(\mathbf{W}^{(k)} \mathbf{x}^{(k-1)}+\mathbf{b}^{k}\right)

显示高阶相互作用

在Cross Network(CrossNet)中,显示交互表示为:xk=x0xk1Twk+bk+xk1\mathbf{x}_{k}=\mathbf{x}_{0} \mathbf{x}_{k-1}^{T} \mathbf{w}_{k}+\mathbf{b}_{k}+\mathbf{x}_{k-1},文中推导得到如下

xi+1=x0xiTwi+1+xi=x0((αix0)Twi+1)+αix0=αi+1x0\begin{aligned} \mathbf{x}_{i+1} &=\mathbf{x}_{0} \mathbf{x}_{i}^{T} \mathbf{w}_{i+1}+\mathbf{x}_{i} \\ &=\mathbf{x}_{0}\left(\left(\alpha^{i} \mathbf{x}_{0}\right)^{T} \mathbf{w}_{i+1}\right)+\alpha^{i} \mathbf{x}_{0} \\ &=\alpha^{i+1} \mathbf{x}_{0} \end{aligned}

其中αi+1=αi(x0Twi+1+1)\alpha^{i+1} = \alpha^{i}(x^T_0 w_{i+1} + 1),因此可以推导出特征交互的阶数,CrossNet的表示有如下的缺点

  1. Cross-Network的输出以特殊形式限制,每个隐藏层是x0x_0标量的倍数
  2. 特征交互以bit-wise方式进行。

CIN模型

文中将embedding表示为矩阵的形式,其中输入为X0Rm×DX^0 \in R^{m\times D},在CIN中第k层的embedding表示为XkRHk×DX^k\in R^{H_k\times D},其中HkH_k表示特征向量的个数,Xi,0X_{i,*}^0X0X^0的第i行特征。

CIN中,XkX^k的计算方式如下

Xh,k=i=1Hk1j=1mWijk,h(Xi,k1Xj,0)\mathbf{X}_{h, *}^{k}=\sum_{i=1}^{H_{k-1}} \sum_{j=1}^{m} \mathbf{W}_{i j}^{k, h}\left(\mathbf{X}_{i, *}^{k-1} \circ \mathbf{X}_{j, *}^{0}\right)

其中1hHk,Wk,hRHk1×m1 \leq h \leq H_{k}, \mathbf{W}^{k, h} \in \mathbb{R}^{H_{k-1} \times m}\circ为Hadamard product, a1,a2,a3b1,b2,b3=a1b1,a2b2,a3b3⟨a1, a2, a3⟩ \circ ⟨b1,b2,b3⟩ = ⟨a1b1, a2b2, a3b3⟩

XkX^k的计算可以形象表示为两步,

  1. XkX^kX0X^0两两求Hadamard积,构成了HkmH_{k}*m个D维度的tensor,文中记为Zk+1Z^{k+1},如下左图所示
  2. 然后在进行求和,如下右图所示。

对于Xk,k[1,T]X^k ,k\in [1,T],对每一层进行sum pooling,即pik=j=1DXi,jkp_{i}^{k}=\sum_{j=1}^{D} \mathbf{X}_{i, j}^{k}XkX^k经过pooling后的向量为pk=[p1k,p2k,,pHkk]\mathbf{p}^{k}=\left[p_{1}^{k}, p_{2}^{k}, \ldots, p_{H_{k}}^{k}\right],将1到T得到的pk\mathbf{p}^{k}进行拼接为:p+=[p1,p2,,pT]Ri=1THi\mathbf{p}^{+}=\left[\mathbf{p}^{1}, \mathbf{p}^{2}, \ldots, \mathbf{p}^{T}\right] \in \mathbb{R}^{\sum_{i=1}^{T} H_{i}},经过线性模型进行预测方式为:y=11+exp(p+Two)y=\frac{1}{1+\exp \left(\mathrm{p}^{+T} \mathbf{w}^{o}\right)}

文中从Space Complexity、Time Complexity、Polynomial Approximation对CIN进行分析。

Space Complexity

  • CIN参数量为:k=1THk×(1+Hk1×m)\sum_{k=1}^{T} H_{k} \times\left(1+H_{k-1} \times m\right),参数复杂度为:O(mTH2)O(mTH^2)
  • DNN参数量为:m×D×H1+HT+k=2THk×Hk1m \times D \times H_{1}+H_{T}+\sum_{k=2}^{T} H_{k} \times H_{k-1},参数复杂度为:O(mDH+TH2)O(mDH+TH^2)和D相关

Time Complexity

  • CIN时间复杂度:O(mH2DT)O(mH^2DT)
  • DNN时间复杂度:O(mHD+H2T)O(mHD+H^2T)

Polynomial Approximation

第k层的第h个特征向量可以表示如下,个人理解也就是特征的k阶表示。

xhk=i[m]Wi,jk,h(xik1xj0)=j[m]i[m]r[m]l[m]Wi,jk,hWl,s1,r(xj0xs0xl0)t[m]s[m]\begin{aligned} \mathbf{x}_{h}^{k} &=\sum_{i \in[m]} \mathbf{W}_{i, j}^{k, h}\left(\mathbf{x}_{i}^{k-1} \circ \mathbf{x}_{j}^{0}\right) \\ &=\sum_{j \in[m]} \ldots \sum_{i \in[m]} \ldots \sum_{r \in[m]} \sum_{l \in[m]} \mathbf{W}_{i, j}^{k, h} \ldots \mathbf{W}_{l, s}^{1, r}(\underbrace{\left.\mathbf{x}_{j}^{0} \circ \ldots \circ \mathbf{x}_{s}^{0} \circ \mathbf{x}_{l}^{0}\right)}_{t \in[m] s \in[m]}\end{aligned}

XDeepFM模型

XDeepFM由CIN、DNN、Linear组成,包括了低阶和高阶的特征交互。

  • 网络表示为:y^=σ(wlinear Ta+wdnnTxdnnk+wcinTp++b)\hat{y}=\sigma\left(\mathbf{w}_{\text {linear }}^{T} \mathbf{a}+\mathbf{w}_{d n n}^{T} \mathbf{x}_{d n n}^{k}+\mathbf{w}_{c i n}^{T} \mathbf{p}^{+}+b\right)

  • 损失函数为Cross entropy损失函数:L=1Ni=1Nyilogy^i+(1yi)log(1y^i)\mathcal{L}=-\frac{1}{N} \sum_{i=1}^{N} y_{i} \log \hat{y}_{i}+\left(1-y_{i}\right) \log \left(1-\hat{y}_{i}\right),在损失函数中加入正则项,最终损失函数为:J=L+λΘ\mathcal{J}=\mathcal{L}+\lambda_{*}\|\Theta\|

网络结构如下图所示

实验

实验探索了3个问题

  1. 提出的CIN在高阶特征交互学习中表现如何?
  2. 推荐系统是否需要结合隐式特征交互和显示特征交互?
  3. 网络设置如何影响xDeepFM的性能?

实验数据集如下,使用AUC(Area Under the ROC curve)和Logloss(cross entropy)进行评价,具体参数可参考论文。

问题1:CIN效果

实验结果如下,其中层数为最优的网络层数(通过搜索得到),得到的结论有:

  1. 稀疏特征上的高阶交互是必要的,这一点可以通过DNN、CrossNet和CIN在三个数据集上的性能明显优于FM得到验证
  2. CIN是最好的模型,这表明CIN在建模显式高阶特征交互方面的有效性。k层CIN可以模拟k度特征交互作用。同样有趣的是,CIN需要5层才能在Bing新闻数据集上产生最佳结果。

问题2:隐式特征交互+显示特征交互

使用结果如下所示,结论有

  1. LR比其他所有模型都差得多,这说明基于因子分解的模型对于测量稀疏特征是必不可少的
  2. Wide&Deep, DCN, DeepFM和xDeepFM都明显优于DNN,这直接反映了混合组件虽然简单,但对于提高预测系统的准确性是很重要的
  3. 提出的xDeepFM在所有数据集上都取得了最好的性能,这表明将显式和隐式高阶相结合是可行的
  4. 深度超参数的典型设置是2和3,xDeepFM的最佳深度设置是3,这表明我们学习的交互最多为4阶

问题3:参数探索

研究以下问题,结论如下图所示

  • Depth of Network
  • Number of Neurons per Layer
  • Activation Function

总结

在DeepFM的基础上对特征表示更加进了一步,个人觉得模型也更加复杂了,不知道在实际业务中是否有大量应用,应用在实际业务中效果如何。

参考资料

  1. 推荐系统 - 排序 - xDeepFM
  2. CTR预估 论文精读(十)--xDeepFM: Combining Explicit and Implicit Feature Interactions for Recommender Systems