xDeepFM

基本信息

字段 内容
标题 xDeepFM: Combining Explicit and Implicit Feature Interactions for Recommender Systems
作者 Jianxun Lian, Xiaohuan Zhou, Fuzheng Zhang, Zhongxia Chen, Xing Xie, Guangzhong Sun
机构 University of Science and Technology of China; Microsoft Research Asia
年份 2018 (KDD’18)
方向 Compressed Interaction Network, Vector-wise Feature Crossing, DNN + CIN
场景 CTR 预估中的向量级显式特征交叉
arXiv https://arxiv.org/abs/1803.05170

xDeepFM: Combining Explicit and Implicit Feature Interactions for Recommender Systems

extreme Deep Factorization Machine

从名字上看是从DeepFM延伸过来的,但其实最大的改进是基于DCN做的。xDeepFM整体架构上采用了类似Wide&Deep的方案,不过Wide侧替换为了作者提出的CIN架构,CIN架构是在改进DCN的基础上得来的,作者在论文中证明了DCN的一些问题。

动机/背景/创新

作者认为传统特征工程有三个问题:

  1. 高质量特征需要有比较高的代价(时间/人力)
  2. 大规模的预测系统产生大量特征数据,人工提取难度很大
  3. 人工交叉的特征没有泛化性

作者认为传统FM存在以下问题:

  1. FM会去对所有特征进行交叉,可能会导致一些无用的组合,引入噪音导致模型退化。

作者认为DNN存在以下问题:

  1. DNN模型对高阶特征进行隐式建模,没有理论依据,无法界定其交互到多少阶合适
  2. DNN模型的特征交互式bit-wise level的,即是基于拼接好的每个元素的,没有Filed Feature的概念,传统FM是vector-wise的

作者在文章中重点强调了显式建模和隐式建模,认为不能只有隐式建模。

创新点:

  1. 提出了xDeepFM,能够同时显式和隐式地对特征进行交叉建模
  2. 提出CIN网络,用于显式地且vector-wise地学习高阶特征
  3. 实验证明SOTA

模型改进

DCN问题分析

img

作者认为DCN的显式高阶特征交叉虽然有不错的效率,但是会将高阶特征限制在一个特殊的形式,即原始输入的倍数(这不代表输出和输入存在线性关系,但是输出的形式确实被限制住了)。此外DCN特征交互是bit-wise的,作者认为不如vetcor-wise,从直觉上理解也确实如此。

CIN模型

Compressed Interaction Network

img

作者认为提出的CIN模型有三个优势:

  1. 显式高阶特征交叉
  2. vector-wise建模方式
  3. 计算复杂度不会随交互阶数呈指数增长

CIN中间层有好几层X矩阵,每个矩阵宽度为vector数量,长度为embedding维度,每层X中的vector都会SumPooling成标量输出,并拼接在一起作为完整输出,从输入输出和训练流程角度来看有点像RNN。

X的计算方式如下,第k层的每个vector和第0层的每个vector分别做Hadamard乘积,最后加权求和得到一个D维向量作为Xk的第h层向量:

img

其特征交叉的方式有点像CNN。

img

每层X都会对vector沿着dimmension进行SumPooling,类似于FM计算内积。

img

最后使用Sigmoid得到最后输出。

为了简便,作者将每层X的H数设定为相同大小。

由此可见,CIN之所以叫压缩感知层,是因为CIN在计算过程中每次矩阵W都会将两两交互的特征压缩成一维

CIN复杂度分析

空间复杂度:

img

直接上论文,作者称如果必要的话,W可以做矩阵分解,但是实际上CIN的复杂度与dimmension维度无关。

如果使用矩阵分解,则复杂度变为img

时间复杂度:

img

多项式估计

这块没看,后面慢慢补上。

整体架构

img

Wide+Deep

最后的预测值计算方式如下:

img

其中a是原始特征(未经过Embedding),激活函数:Sigmoid

损失函数 log loss+L2-Norm:

img

img

作者认为设定CIN层数为1且feature map向量为1时,CIN其实就是DeepFM中FM层的推广,其中FM层的每个特征交叉都学习了不同的权重。去掉DNN部分,使用SumPooling的feature map就等同于传统的FM模型

实验设计

数据集:

  1. Criteo Dataset:CTR预测任务的工业数据集
  2. DianPing Dataset: 大众点评数据集
  3. Bing News Dataset

评估指标:

  1. AUC 用于评估排序准确性
  2. LogLoss 用于评估预测值准确性(作者认为比较类似评估排序收益)

Baseline:

  1. LR
  2. FM
  3. DNN
  4. PNN (better one from iPNN/oPNN)
  5. Wide&Deep
  6. DCN
  7. DeepFM

作者认为实验的目的是验证特征交互的效果,所以作者并没有添加人工交叉特征

实验方案:

  1. 针对CIN/CrossNet/FM/DNN四个模块的效果比较
  2. 针对不同模块组合(Baseline)的模型效果比较
  3. 不同超参数设置的模型效果探讨

未来工作

  1. 研究分布式版本的xDeepFM方案,因为xDeepFM复杂度过高
  2. 研究对包含多值的特征更好的聚合方案(现有方案是SumPooling),可能会参考DIN的Attention做法

注意点

  1. 作者在实验部分并为对模型训练效率开展实验,结尾部分也提及模型复杂度太高,需要优化